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 2019/05/24 14:46:26 UTC
svn commit: r1859886 [2/12] - in /tinkerpop/site:
docs/3.3.7-SNAPSHOT/dev/developer/ docs/3.3.7-SNAPSHOT/dev/io/
docs/3.3.7-SNAPSHOT/dev/provider/ docs/3.3.7-SNAPSHOT/recipes/
docs/3.3.7-SNAPSHOT/reference/
docs/3.3.7-SNAPSHOT/tutorials/getting-started...
Modified: tinkerpop/site/docs/3.3.7-SNAPSHOT/recipes/index.html
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.3.7-SNAPSHOT/recipes/index.html?rev=1859886&r1=1859885&r2=1859886&view=diff
==============================================================================
--- tinkerpop/site/docs/3.3.7-SNAPSHOT/recipes/index.html (original)
+++ tinkerpop/site/docs/3.3.7-SNAPSHOT/recipes/index.html Fri May 24 14:46:24 2019
@@ -908,10 +908,10 @@ provide some basic building blocks for v
traversal on the paths found between them. Consider the following examples using the modern toy graph:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254315-1" type="radio" name="radio-set-1553254315-1" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254315-1" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254315-2" type="radio" name="radio-set-1553254315-1" class="tab-selector-2" />
- <label for="tab-1553254315-2" class="tab-label-2">groovy</label>
+ <input id="tab-1558704361-1" type="radio" name="radio-set-1558704361-1" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704361-1" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704361-2" type="radio" name="radio-set-1558704361-1" class="tab-selector-2" />
+ <label for="tab-1558704361-2" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -986,10 +986,10 @@ scenarios. For one such example, conside
vertices:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254315-3" type="radio" name="radio-set-1553254315-3" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254315-3" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254315-4" type="radio" name="radio-set-1553254315-3" class="tab-selector-2" />
- <label for="tab-1553254315-4" class="tab-label-2">groovy</label>
+ <input id="tab-1558704361-3" type="radio" name="radio-set-1558704361-3" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704361-3" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704361-4" type="radio" name="radio-set-1558704361-3" class="tab-selector-2" />
+ <label for="tab-1558704361-4" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -1038,10 +1038,10 @@ to extract the known job, the company th
the known person completed an application.</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254315-5" type="radio" name="radio-set-1553254315-5" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254315-5" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254315-6" type="radio" name="radio-set-1553254315-5" class="tab-selector-2" />
- <label for="tab-1553254315-6" class="tab-label-2">groovy</label>
+ <input id="tab-1558704361-5" type="radio" name="radio-set-1558704361-5" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704361-5" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704361-6" type="radio" name="radio-set-1558704361-5" class="tab-selector-2" />
+ <label for="tab-1558704361-6" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -1177,10 +1177,10 @@ demonstrate how some of these different
edges associated to each vertex. The following examples use the modern toy graph:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254350-1" type="radio" name="radio-set-1553254350-1" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254350-1" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254350-2" type="radio" name="radio-set-1553254350-1" class="tab-selector-2" />
- <label for="tab-1553254350-2" class="tab-label-2">groovy</label>
+ <input id="tab-1558704404-1" type="radio" name="radio-set-1558704404-1" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704404-1" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704404-2" type="radio" name="radio-set-1558704404-1" class="tab-selector-2" />
+ <label for="tab-1558704404-2" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -1275,10 +1275,10 @@ graph for demonstration purposes:</p>
<p><span class="image"><img src="../images/betweeness-example.png" alt="betweeness example" width="600"></span></p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254350-3" type="radio" name="radio-set-1553254350-3" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254350-3" class="tab-label-1">console (groovy )</label>
- <input id="tab-1553254350-4" type="radio" name="radio-set-1553254350-3" class="tab-selector-2" />
- <label for="tab-1553254350-4" class="tab-label-2">groovy </label>
+ <input id="tab-1558704404-3" type="radio" name="radio-set-1558704404-3" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704404-3" class="tab-label-1">console (groovy )</label>
+ <input id="tab-1558704404-4" type="radio" name="radio-set-1558704404-3" class="tab-selector-2" />
+ <label for="tab-1558704404-4" class="tab-label-2">groovy </label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -1406,10 +1406,10 @@ pairs).
other reachable vertices in the graph. The following examples use the modern toy graph:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254350-5" type="radio" name="radio-set-1553254350-5" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254350-5" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254350-6" type="radio" name="radio-set-1553254350-5" class="tab-selector-2" />
- <label for="tab-1553254350-6" class="tab-label-2">groovy</label>
+ <input id="tab-1558704404-5" type="radio" name="radio-set-1558704404-5" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704404-5" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704404-6" type="radio" name="radio-set-1558704404-5" class="tab-selector-2" />
+ <label for="tab-1558704404-6" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -1515,10 +1515,10 @@ relative importance of adjacent vertices
give it the highest rank. Consider the following example using the Grateful Dead graph:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254350-7" type="radio" name="radio-set-1553254350-7" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254350-7" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254350-8" type="radio" name="radio-set-1553254350-7" class="tab-selector-2" />
- <label for="tab-1553254350-8" class="tab-label-2">groovy</label>
+ <input id="tab-1558704404-7" type="radio" name="radio-set-1558704404-7" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704404-7" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704404-8" type="radio" name="radio-set-1558704404-7" class="tab-selector-2" />
+ <label for="tab-1558704404-8" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -1596,6 +1596,39 @@ can shorten the time required to get a r
<a href="http://tinkerpop.apache.org/docs/3.3.7-SNAPSHOT/reference/#pagerank-step">pageRank()</a>-step which is designed to work with
<code>GraphComputer</code> (OLAP) based traversals.</p>
</div>
+<section class="tabs tabs-2">
+ <input id="tab-1558704404-9" type="radio" name="radio-set-1558704404-9" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704404-9" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704404-10" type="radio" name="radio-set-1558704404-9" class="tab-selector-2" />
+ <label for="tab-1558704404-10" class="tab-label-2">groovy</label>
+ <div class="tabcontent">
+ <div class="tabcontent-1">
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="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.3047200907912248</span>
+==><span class="float">0.145985401527191</span>
+==><span class="float">0.145985401527191</span>
+==><span class="float">0.11375510357865536</span>
+==><span class="float">0.11375510357865536</span>
+==><span class="float">0.17579889899708226</span></code></pre>
+</div>
+</div>
+ </div>
+ </div>
+ <div class="tabcontent">
+ <div class="tabcontent-2">
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy">g = graph.traversal().withComputer()
+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>)</code></pre>
+</div>
+</div>
+ </div>
+ </div>
+</section>
</div>
</div>
</div>
@@ -1625,10 +1658,10 @@ patterns described in this section.</p>
appear by way of some side-effect steps like <code>store()</code>:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-1" type="radio" name="radio-set-1553254395-1" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-1" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-2" type="radio" name="radio-set-1553254395-1" class="tab-selector-2" />
- <label for="tab-1553254395-2" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-1" type="radio" name="radio-set-1558704464-1" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-1" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-2" type="radio" name="radio-set-1558704464-1" class="tab-selector-2" />
+ <label for="tab-1558704464-2" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -1657,10 +1690,10 @@ g.V().store(<span class="string"><span c
similar fashion to lists:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-3" type="radio" name="radio-set-1553254395-3" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-3" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-4" type="radio" name="radio-set-1553254395-3" class="tab-selector-2" />
- <label for="tab-1553254395-4" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-3" type="radio" name="radio-set-1558704464-3" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-3" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-4" type="radio" name="radio-set-1558704464-3" class="tab-selector-2" />
+ <label for="tab-1558704464-4" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -1693,10 +1726,10 @@ means than what is demonstrated.</p>
<p>It may seem simple, but the most obvious choice to modifying what is in a list is to simply <code>unfold()</code> the <code>List</code>:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-5" type="radio" name="radio-set-1553254395-5" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-5" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-6" type="radio" name="radio-set-1553254395-5" class="tab-selector-2" />
- <label for="tab-1553254395-6" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-5" type="radio" name="radio-set-1558704464-5" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-5" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-6" type="radio" name="radio-set-1558704464-5" class="tab-selector-2" />
+ <label for="tab-1558704464-6" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -1736,10 +1769,10 @@ traverser as it just flattens <code>List
result, but consider what happens when there is more than one:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-7" type="radio" name="radio-set-1553254395-7" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-7" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-8" type="radio" name="radio-set-1553254395-7" class="tab-selector-2" />
- <label for="tab-1553254395-8" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-7" type="radio" name="radio-set-1558704464-7" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-7" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-8" type="radio" name="radio-set-1558704464-7" class="tab-selector-2" />
+ <label for="tab-1558704464-8" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -1781,10 +1814,10 @@ While this approach may be acceptable, t
structure of the <code>List</code> traversers "locally" <code>unfold()</code> the lists to transform them:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-9" type="radio" name="radio-set-1553254395-9" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-9" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-10" type="radio" name="radio-set-1553254395-9" class="tab-selector-2" />
- <label for="tab-1553254395-10" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-9" type="radio" name="radio-set-1558704464-9" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-9" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-10" type="radio" name="radio-set-1558704464-9" class="tab-selector-2" />
+ <label for="tab-1558704464-10" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -1819,10 +1852,10 @@ thus maintaining two traverser results.<
<p>This pattern for unfolding and folding <code>List</code> traversers ends up having other applications:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-11" type="radio" name="radio-set-1553254395-11" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-11" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-12" type="radio" name="radio-set-1553254395-11" class="tab-selector-2" />
- <label for="tab-1553254395-12" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-11" type="radio" name="radio-set-1558704464-11" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-11" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-12" type="radio" name="radio-set-1558704464-11" class="tab-selector-2" />
+ <label for="tab-1558704464-12" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -1900,10 +1933,10 @@ especially in cases where the expected o
form of a <code>List</code>. For example, consider the following three traversals:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-13" type="radio" name="radio-set-1553254395-13" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-13" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-14" type="radio" name="radio-set-1553254395-13" class="tab-selector-2" />
- <label for="tab-1553254395-14" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-13" type="radio" name="radio-set-1558704464-13" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-13" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-14" type="radio" name="radio-set-1558704464-13" class="tab-selector-2" />
+ <label for="tab-1558704464-14" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -1984,10 +2017,10 @@ three results (i.e. triple) that could t
the use of <code>store()</code> to aid in construction of this <code>List</code>:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-15" type="radio" name="radio-set-1553254395-15" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-15" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-16" type="radio" name="radio-set-1553254395-15" class="tab-selector-2" />
- <label for="tab-1553254395-16" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-15" type="radio" name="radio-set-1558704464-15" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-15" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-16" type="radio" name="radio-set-1558704464-15" class="tab-selector-2" />
+ <label for="tab-1558704464-16" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2098,10 +2131,10 @@ means that each traverser can effectivel
vertices each:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-17" type="radio" name="radio-set-1553254395-17" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-17" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-18" type="radio" name="radio-set-1553254395-17" class="tab-selector-2" />
- <label for="tab-1553254395-18" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-17" type="radio" name="radio-set-1558704464-17" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-17" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-18" type="radio" name="radio-set-1558704464-17" class="tab-selector-2" />
+ <label for="tab-1558704464-18" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2128,10 +2161,10 @@ vertices each:</p>
results.</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-19" type="radio" name="radio-set-1553254395-19" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-19" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-20" type="radio" name="radio-set-1553254395-19" class="tab-selector-2" />
- <label for="tab-1553254395-20" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-19" type="radio" name="radio-set-1558704464-19" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-19" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-20" type="radio" name="radio-set-1558704464-19" class="tab-selector-2" />
+ <label for="tab-1558704464-20" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2198,10 +2231,10 @@ the stream from <code>union()</code> to
to end up with a <code>Map</code> is with <code>valueMap()</code>:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-21" type="radio" name="radio-set-1553254395-21" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-21" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-22" type="radio" name="radio-set-1553254395-21" class="tab-selector-2" />
- <label for="tab-1553254395-22" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-21" type="radio" name="radio-set-1558704464-21" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-21" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-22" type="radio" name="radio-set-1558704464-21" class="tab-selector-2" />
+ <label for="tab-1558704464-22" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2228,10 +2261,10 @@ property stored as a <code>List</code>.
by avoiding use of <code>valueMap()</code>:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-23" type="radio" name="radio-set-1553254395-23" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-23" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-24" type="radio" name="radio-set-1553254395-23" class="tab-selector-2" />
- <label for="tab-1553254395-24" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-23" type="radio" name="radio-set-1558704464-23" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-23" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-24" type="radio" name="radio-set-1558704464-23" class="tab-selector-2" />
+ <label for="tab-1558704464-24" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2261,10 +2294,10 @@ by avoiding use of <code>valueMap()</cod
generally applicable to processing any <code>Map</code> instances with any sorts of values:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-25" type="radio" name="radio-set-1553254395-25" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-25" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-26" type="radio" name="radio-set-1553254395-25" class="tab-selector-2" />
- <label for="tab-1553254395-26" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-25" type="radio" name="radio-set-1558704464-25" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-25" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-26" type="radio" name="radio-set-1558704464-25" class="tab-selector-2" />
+ <label for="tab-1558704464-26" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2314,10 +2347,10 @@ desired output before taking this approa
unavoidable extraneous keys in the output <code>Map</code>:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-27" type="radio" name="radio-set-1553254395-27" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-27" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-28" type="radio" name="radio-set-1553254395-27" class="tab-selector-2" />
- <label for="tab-1553254395-28" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-27" type="radio" name="radio-set-1558704464-27" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-27" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-28" type="radio" name="radio-set-1558704464-27" class="tab-selector-2" />
+ <label for="tab-1558704464-28" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2357,10 +2390,10 @@ every single vertex in the traversal str
supplied. While this may be an acceptable output, it is possible to shape the <code>Map</code> to be "nicer":</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-29" type="radio" name="radio-set-1553254395-29" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-29" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-30" type="radio" name="radio-set-1553254395-29" class="tab-selector-2" />
- <label for="tab-1553254395-30" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-29" type="radio" name="radio-set-1558704464-29" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-29" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-30" type="radio" name="radio-set-1558704464-29" class="tab-selector-2" />
+ <label for="tab-1558704464-30" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2410,10 +2443,10 @@ prior to reconstructing the <code>Map</c
earlier to flatten <code>List</code> values within a <code>Map</code>:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-31" type="radio" name="radio-set-1553254395-31" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-31" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-32" type="radio" name="radio-set-1553254395-31" class="tab-selector-2" />
- <label for="tab-1553254395-32" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-31" type="radio" name="radio-set-1558704464-31" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-31" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-32" type="radio" name="radio-set-1558704464-31" class="tab-selector-2" />
+ <label for="tab-1558704464-32" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2463,10 +2496,10 @@ here involves the use of a <code>union()
reconstructed as a new <code>Map</code> that has been merged together:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254395-33" type="radio" name="radio-set-1553254395-33" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254395-33" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254395-34" type="radio" name="radio-set-1553254395-33" class="tab-selector-2" />
- <label for="tab-1553254395-34" class="tab-label-2">groovy</label>
+ <input id="tab-1558704464-33" type="radio" name="radio-set-1558704464-33" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-33" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-34" type="radio" name="radio-set-1558704464-33" class="tab-selector-2" />
+ <label for="tab-1558704464-34" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2480,7 +2513,7 @@ reconstructed as a new <code>Map</code>
group().
by(keys).
by(select(values).unfold())
-==>[<span class="key">id</span>:<span class="integer">1</span>,<span class="key">label</span>:person,<span class="key">degree</span>:<span class="integer">3</span>,<span class="key">name</span>:marko,<span class="key">age</span>:<span class="integer">29</span>]</code></pre>
+==>[<span class="key">id</span>:<span class="integer">1</span>,<span class="key">degree</span>:<span class="integer">3</span>,<span class="key">name</span>:marko,<span class="key">label</span>:person,<span class="key">age</span>:<span class="integer">29</span>]</code></pre>
</div>
</div>
</div>
@@ -2523,6 +2556,53 @@ supplied to <code>union()</code>, they w
a <code>List</code> back for all the values of the new <code>Map</code>. With some added logic the <code>Map</code> values can be flattened out of
<code>List</code> instances when necessary:</p>
</div>
+<section class="tabs tabs-2">
+ <input id="tab-1558704464-35" type="radio" name="radio-set-1558704464-35" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704464-35" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704464-36" type="radio" name="radio-set-1558704464-35" class="tab-selector-2" />
+ <label for="tab-1558704464-36" class="tab-label-2">groovy</label>
+ <div class="tabcontent">
+ <div class="tabcontent-1">
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy">gremlin> g.V().
+ has(<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">marko</span><span class="delimiter">'</span></span>).
+ union(valueMap(<span class="predefined-constant">true</span>),
+ project(<span class="string"><span class="delimiter">'</span><span class="content">age</span><span class="delimiter">'</span></span>).
+ by(constant(<span class="integer">100</span>))).
+ unfold().
+ group().
+ by(keys).
+ by(select(values).
+ unfold().
+ fold().
+ choose(count(local).is(eq(<span class="integer">1</span>)), unfold()))
+==>[<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">age</span>:[<span class="integer">29</span>,<span class="integer">100</span>]]</code></pre>
+</div>
+</div>
+ </div>
+ </div>
+ <div class="tabcontent">
+ <div class="tabcontent-2">
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy">g.V().
+ has(<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">marko</span><span class="delimiter">'</span></span>).
+ union(valueMap(<span class="predefined-constant">true</span>),
+ project(<span class="string"><span class="delimiter">'</span><span class="content">age</span><span class="delimiter">'</span></span>).
+ by(constant(<span class="integer">100</span>))).
+ unfold().
+ group().
+ by(keys).
+ by(select(values).
+ unfold().
+ fold().
+ choose(count(local).is(eq(<span class="integer">1</span>)), unfold()))</code></pre>
+</div>
+</div>
+ </div>
+ </div>
+</section>
</div>
</div>
<div class="sect1">
@@ -2536,10 +2616,10 @@ in a graph. Consider the following graph
<p><span class="image"><img src="../images/connected-components.png" alt="connected components" width="600"></span></p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254508-1" type="radio" name="radio-set-1553254508-1" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254508-1" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254508-2" type="radio" name="radio-set-1553254508-1" class="tab-selector-2" />
- <label for="tab-1553254508-2" class="tab-label-2">groovy</label>
+ <input id="tab-1558704603-1" type="radio" name="radio-set-1558704603-1" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704603-1" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704603-2" type="radio" name="radio-set-1558704603-1" class="tab-selector-2" />
+ <label for="tab-1558704603-2" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2579,10 +2659,10 @@ in a graph. Consider the following graph
<p>One way to detect the various subgraphs would be to do something like this:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254508-3" type="radio" name="radio-set-1553254508-3" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254508-3" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254508-4" type="radio" name="radio-set-1553254508-3" class="tab-selector-2" />
- <label for="tab-1553254508-4" class="tab-label-2">groovy</label>
+ <input id="tab-1558704603-3" type="radio" name="radio-set-1558704603-3" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704603-3" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704603-4" type="radio" name="radio-set-1558704603-3" class="tab-selector-2" />
+ <label for="tab-1558704603-4" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2662,6 +2742,43 @@ see the output at each point.
approach, but one more suited for OLAP execution looks quite similar but does not use <code>dedup</code> as heavily (thus
<code>GraphComputer</code> is forced to analyze far more paths):</p>
</div>
+<section class="tabs tabs-2">
+ <input id="tab-1558704603-5" type="radio" name="radio-set-1558704603-5" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704603-5" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704603-6" type="radio" name="radio-set-1558704603-5" class="tab-selector-2" />
+ <label for="tab-1558704603-6" class="tab-label-2">groovy</label>
+ <div class="tabcontent">
+ <div class="tabcontent-1">
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy">gremlin> g.withComputer().V().emit(cyclicPath().or().not(both())).repeat(both()).until(cyclicPath()).
+ aggregate(<span class="string"><span class="delimiter">"</span><span class="content">p</span><span class="delimiter">"</span></span>).by(path()).cap(<span class="string"><span class="delimiter">"</span><span class="content">p</span><span class="delimiter">"</span></span>).unfold().limit(local, <span class="integer">1</span>).
+ map(__.as(<span class="string"><span class="delimiter">"</span><span class="content">v</span><span class="delimiter">"</span></span>).select(<span class="string"><span class="delimiter">"</span><span class="content">p</span><span class="delimiter">"</span></span>).unfold().
+ filter(unfold().where(eq(<span class="string"><span class="delimiter">"</span><span class="content">v</span><span class="delimiter">"</span></span>))).
+ unfold().dedup().order().by(id).fold()
+ ).toSet()
+==>[v[A],v[B],v[C]]
+==>[v[D],v[E]]
+==>[v[F]]</code></pre>
+</div>
+</div>
+ </div>
+ </div>
+ <div class="tabcontent">
+ <div class="tabcontent-2">
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy">g.withComputer().V().emit(cyclicPath().or().not(both())).repeat(both()).until(cyclicPath()).
+ aggregate(<span class="string"><span class="delimiter">"</span><span class="content">p</span><span class="delimiter">"</span></span>).by(path()).cap(<span class="string"><span class="delimiter">"</span><span class="content">p</span><span class="delimiter">"</span></span>).unfold().limit(local, <span class="integer">1</span>).
+ map(__.as(<span class="string"><span class="delimiter">"</span><span class="content">v</span><span class="delimiter">"</span></span>).select(<span class="string"><span class="delimiter">"</span><span class="content">p</span><span class="delimiter">"</span></span>).unfold().
+ filter(unfold().where(eq(<span class="string"><span class="delimiter">"</span><span class="content">v</span><span class="delimiter">"</span></span>))).
+ unfold().dedup().order().by(id).fold()
+ ).toSet()</code></pre>
+</div>
+</div>
+ </div>
+ </div>
+</section>
</div>
</div>
<div class="sect1">
@@ -2675,10 +2792,10 @@ depicted below Gremlin could be use to d
<p><span class="image"><img src="../images/graph-cycle.png" alt="graph cycle" width="250"></span></p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254533-1" type="radio" name="radio-set-1553254533-1" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254533-1" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254533-2" type="radio" name="radio-set-1553254533-1" class="tab-selector-2" />
- <label for="tab-1553254533-2" class="tab-label-2">groovy</label>
+ <input id="tab-1558704639-1" type="radio" name="radio-set-1558704639-1" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704639-1" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704639-2" type="radio" name="radio-set-1558704639-1" class="tab-selector-2" />
+ <label for="tab-1558704639-2" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2752,10 +2869,10 @@ It also respected the directionality of
themselves). To do so, you would need to <code>.emit()</code> a Traverser before the repeat()-loop.</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254533-3" type="radio" name="radio-set-1553254533-3" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254533-3" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254533-4" type="radio" name="radio-set-1553254533-3" class="tab-selector-2" />
- <label for="tab-1553254533-4" class="tab-label-2">groovy</label>
+ <input id="tab-1558704639-3" type="radio" name="radio-set-1558704639-3" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704639-3" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704639-4" type="radio" name="radio-set-1558704639-3" class="tab-selector-2" />
+ <label for="tab-1558704639-4" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2818,10 +2935,10 @@ g.V().as(<span class="string"><span clas
outgoing edges, in the modern graph?</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254533-5" type="radio" name="radio-set-1553254533-5" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254533-5" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254533-6" type="radio" name="radio-set-1553254533-5" class="tab-selector-2" />
- <label for="tab-1553254533-6" class="tab-label-2">groovy</label>
+ <input id="tab-1558704639-5" type="radio" name="radio-set-1558704639-5" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704639-5" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704639-6" type="radio" name="radio-set-1558704639-5" class="tab-selector-2" />
+ <label for="tab-1558704639-6" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2859,10 +2976,10 @@ that happens to have an eighth bridge (t
<p>Gremlin can detect if such a cycle exists with:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254533-7" type="radio" name="radio-set-1553254533-7" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254533-7" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254533-8" type="radio" name="radio-set-1553254533-7" class="tab-selector-2" />
- <label for="tab-1553254533-8" class="tab-label-2">groovy</label>
+ <input id="tab-1558704639-7" type="radio" name="radio-set-1558704639-7" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704639-7" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704639-8" type="radio" name="radio-set-1558704639-7" class="tab-selector-2" />
+ <label for="tab-1558704639-8" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2943,6 +3060,45 @@ the first step above, which would mean t
<p>Unlike Königsberg, with just seven bridges, a Eulerian circuit exists in the case with an eighth bridge. The first
detected circuit can be displayed with:</p>
</div>
+<section class="tabs tabs-2">
+ <input id="tab-1558704639-9" type="radio" name="radio-set-1558704639-9" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704639-9" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704639-10" type="radio" name="radio-set-1558704639-9" class="tab-selector-2" />
+ <label for="tab-1558704639-10" class="tab-label-2">groovy</label>
+ <div class="tabcontent">
+ <div class="tabcontent-1">
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy">gremlin> g.V().sideEffect(outE(<span class="string"><span class="delimiter">"</span><span class="content">bridge</span><span class="delimiter">"</span></span>).aggregate(<span class="string"><span class="delimiter">"</span><span class="content">bridges</span><span class="delimiter">"</span></span>)).barrier().
+ repeat(bothE().or(__.not(select(<span class="string"><span class="delimiter">'</span><span class="content">e</span><span class="delimiter">'</span></span>)),
+ __.not(filter(__.as(<span class="string"><span class="delimiter">'</span><span class="content">x</span><span class="delimiter">'</span></span>).select(all, <span class="string"><span class="delimiter">'</span><span class="content">e</span><span class="delimiter">'</span></span>).unfold().
+ where(eq(<span class="string"><span class="delimiter">'</span><span class="content">x</span><span class="delimiter">'</span></span>))))).as(<span class="string"><span class="delimiter">'</span><span class="content">e</span><span class="delimiter">'</span></span>).otherV()).
+ until(select(all, <span class="string"><span class="delimiter">'</span><span class="content">e</span><span class="delimiter">'</span></span>).count(local).as(<span class="string"><span class="delimiter">"</span><span class="content">c</span><span class="delimiter">"</span></span>).
+ select(<span class="string"><span class="delimiter">"</span><span class="content">bridges</span><span class="delimiter">"</span></span>).count(local).where(eq(<span class="string"><span class="delimiter">"</span><span class="content">c</span><span class="delimiter">"</span></span>))).limit(<span class="integer">1</span>).
+ path().by(id).by(constant(<span class="string"><span class="delimiter">"</span><span class="content"> -> </span><span class="delimiter">"</span></span>)).
+ map {<span class="predefined-type">String</span>.join(<span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span>, <span class="local-variable">it</span>.get().objects())}
+==>orange -> blue -> green -> orange -> red -> green -> red -> orange -> blue</code></pre>
+</div>
+</div>
+ </div>
+ </div>
+ <div class="tabcontent">
+ <div class="tabcontent-2">
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy">g.V().sideEffect(outE(<span class="string"><span class="delimiter">"</span><span class="content">bridge</span><span class="delimiter">"</span></span>).aggregate(<span class="string"><span class="delimiter">"</span><span class="content">bridges</span><span class="delimiter">"</span></span>)).barrier().
+ repeat(bothE().or(__.not(select(<span class="string"><span class="delimiter">'</span><span class="content">e</span><span class="delimiter">'</span></span>)),
+ __.not(filter(__.as(<span class="string"><span class="delimiter">'</span><span class="content">x</span><span class="delimiter">'</span></span>).select(all, <span class="string"><span class="delimiter">'</span><span class="content">e</span><span class="delimiter">'</span></span>).unfold().
+ where(eq(<span class="string"><span class="delimiter">'</span><span class="content">x</span><span class="delimiter">'</span></span>))))).as(<span class="string"><span class="delimiter">'</span><span class="content">e</span><span class="delimiter">'</span></span>).otherV()).
+ until(select(all, <span class="string"><span class="delimiter">'</span><span class="content">e</span><span class="delimiter">'</span></span>).count(local).as(<span class="string"><span class="delimiter">"</span><span class="content">c</span><span class="delimiter">"</span></span>).
+ select(<span class="string"><span class="delimiter">"</span><span class="content">bridges</span><span class="delimiter">"</span></span>).count(local).where(eq(<span class="string"><span class="delimiter">"</span><span class="content">c</span><span class="delimiter">"</span></span>))).limit(<span class="integer">1</span>).
+ path().by(id).by(constant(<span class="string"><span class="delimiter">"</span><span class="content"> -> </span><span class="delimiter">"</span></span>)).
+ map {<span class="predefined-type">String</span>.join(<span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span>, <span class="local-variable">it</span>.get().objects())}</code></pre>
+</div>
+</div>
+ </div>
+ </div>
+</section>
</div>
</div>
<div class="sect1">
@@ -2958,10 +3114,10 @@ label and direction will be considered "
that is duplicative of the "created" edge between vertex "1" and "3".</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254573-1" type="radio" name="radio-set-1553254573-1" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254573-1" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254573-2" type="radio" name="radio-set-1553254573-1" class="tab-selector-2" />
- <label for="tab-1553254573-2" class="tab-label-2">groovy</label>
+ <input id="tab-1558704694-1" type="radio" name="radio-set-1558704694-1" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704694-1" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704694-2" type="radio" name="radio-set-1558704694-1" class="tab-selector-2" />
+ <label for="tab-1558704694-2" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -2989,10 +3145,10 @@ g.V(<span class="integer">1</span>).outE
<p>One way to find the duplicate edges would be to do something like this:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254573-3" type="radio" name="radio-set-1553254573-3" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254573-3" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254573-4" type="radio" name="radio-set-1553254573-3" class="tab-selector-2" />
- <label for="tab-1553254573-4" class="tab-label-2">groovy</label>
+ <input id="tab-1558704694-3" type="radio" name="radio-set-1558704694-3" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704694-3" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704694-4" type="radio" name="radio-set-1558704694-3" class="tab-selector-2" />
+ <label for="tab-1558704694-4" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3055,10 +3211,10 @@ contain duplicate.</p>
that uses less memory might look like this:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254573-5" type="radio" name="radio-set-1553254573-5" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254573-5" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254573-6" type="radio" name="radio-set-1553254573-5" class="tab-selector-2" />
- <label for="tab-1553254573-6" class="tab-label-2">groovy</label>
+ <input id="tab-1558704694-5" type="radio" name="radio-set-1558704694-5" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704694-5" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704694-6" type="radio" name="radio-set-1558704694-5" class="tab-selector-2" />
+ <label for="tab-1558704694-6" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3127,10 +3283,10 @@ value.</p>
<p>Note that the above traversal could also be written using <code>match</code> step:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254573-7" type="radio" name="radio-set-1553254573-7" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254573-7" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254573-8" type="radio" name="radio-set-1553254573-7" class="tab-selector-2" />
- <label for="tab-1553254573-8" class="tab-label-2">groovy</label>
+ <input id="tab-1558704694-7" type="radio" name="radio-set-1558704694-7" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704694-7" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704694-8" type="radio" name="radio-set-1558704694-7" class="tab-selector-2" />
+ <label for="tab-1558704694-8" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3179,10 +3335,10 @@ The previous examples invoke traversal s
as a performance optimization.</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254573-9" type="radio" name="radio-set-1553254573-9" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254573-9" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254573-10" type="radio" name="radio-set-1553254573-9" class="tab-selector-2" />
- <label for="tab-1553254573-10" class="tab-label-2">groovy</label>
+ <input id="tab-1558704694-9" type="radio" name="radio-set-1558704694-9" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704694-9" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704694-10" type="radio" name="radio-set-1558704694-9" class="tab-selector-2" />
+ <label for="tab-1558704694-10" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3238,10 +3394,10 @@ example, a "duplicate" definition could
demonstration, an additional edge is added to the "modern" graph:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254573-11" type="radio" name="radio-set-1553254573-11" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254573-11" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254573-12" type="radio" name="radio-set-1553254573-11" class="tab-selector-2" />
- <label for="tab-1553254573-12" class="tab-label-2">groovy</label>
+ <input id="tab-1558704694-11" type="radio" name="radio-set-1558704694-11" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704694-11" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704694-12" type="radio" name="radio-set-1558704694-11" class="tab-selector-2" />
+ <label for="tab-1558704694-12" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3249,9 +3405,9 @@ demonstration, an additional edge is add
<pre class="CodeRay highlight"><code data-lang="groovy">gremlin> g.V(<span class="integer">1</span>).as(<span class="string"><span class="delimiter">"</span><span class="content">a</span><span class="delimiter">"</span></span>).V(<span class="integer">3</span>).addE(<span class="string"><span class="delimiter">"</span><span class="content">created</span><span class="delimiter">"</span></span>).property(<span class="string"><span class="delimiter">"</span><span class="content">weight</span><span class="delimiter">"</span></span>,<span class="float">0.4d</span>).from(<span class="string"><span class="delimiter">"</span><span class="content">a</span><span class="delimiter">"</span></span>).iterate()
gremlin> g.V(<span class="integer">1</span>).as(<span class="string"><span class="delimiter">"</span><span class="content">a</span><span class="delimiter">"</span></span>).V(<span class="integer">3</span>).addE(<span class="string"><span class="delimiter">"</span><span class="content">created</span><span class="delimiter">"</span></span>).property(<span class="string"><span class="delimiter">"</span><span class="content">weight</span><span class="delimiter">"</span></span>,<span class="float">0.5d</span>).from(<span class="string"><span class="delimiter">"</span><span class="content">a</span><span class="delimiter">"</span></span>).iterate()
gremlin> g.V(<span class="integer">1</span>).outE(<span class="string"><span class="delimiter">"</span><span class="content">created</span><span class="delimiter">"</span></span>).valueMap(<span class="predefined-constant">true</span>)
-==>[<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>]
-==>[<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.4</span>]
-==>[<span class="key">id</span>:<span class="integer">14</span>,<span class="key">label</span>:created,<span class="key">weight</span>:<span class="float">0.5</span>]</code></pre>
+==>[<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]
+==>[<span class="key">id</span>:<span class="integer">13</span>,<span class="key">weight</span>:<span class="float">0.4</span>,<span class="key">label</span>:created]
+==>[<span class="key">id</span>:<span class="integer">14</span>,<span class="key">weight</span>:<span class="float">0.5</span>,<span class="key">label</span>:created]</code></pre>
</div>
</div>
</div>
@@ -3271,6 +3427,46 @@ g.V(<span class="integer">1</span>).outE
<div class="paragraph">
<p>To identify the duplicate with this revised definition, the previous traversal can be modified to:</p>
</div>
+<section class="tabs tabs-2">
+ <input id="tab-1558704694-13" type="radio" name="radio-set-1558704694-13" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704694-13" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704694-14" type="radio" name="radio-set-1558704694-13" class="tab-selector-2" />
+ <label for="tab-1558704694-14" class="tab-label-2">groovy</label>
+ <div class="tabcontent">
+ <div class="tabcontent-1">
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy">gremlin> g.withoutStrategies(LazyBarrierStrategy, PathRetractionStrategy).V().as(<span class="string"><span class="delimiter">"</span><span class="content">ov</span><span class="delimiter">"</span></span>).
+ outE().as(<span class="string"><span class="delimiter">"</span><span class="content">e1</span><span class="delimiter">"</span></span>).
+ inV().as(<span class="string"><span class="delimiter">"</span><span class="content">iv</span><span class="delimiter">"</span></span>).
+ inE().
+ where(neq(<span class="string"><span class="delimiter">"</span><span class="content">e1</span><span class="delimiter">"</span></span>)).
+ where(outV().as(<span class="string"><span class="delimiter">"</span><span class="content">ov</span><span class="delimiter">"</span></span>)).as(<span class="string"><span class="delimiter">"</span><span class="content">e2</span><span class="delimiter">"</span></span>).
+ where(<span class="string"><span class="delimiter">"</span><span class="content">e1</span><span class="delimiter">"</span></span>, eq(<span class="string"><span class="delimiter">"</span><span class="content">e2</span><span class="delimiter">"</span></span>)).by(label).
+ where(<span class="string"><span class="delimiter">"</span><span class="content">e1</span><span class="delimiter">"</span></span>, eq(<span class="string"><span class="delimiter">"</span><span class="content">e2</span><span class="delimiter">"</span></span>)).by(<span class="string"><span class="delimiter">"</span><span class="content">weight</span><span class="delimiter">"</span></span>).valueMap(<span class="predefined-constant">true</span>)
+==>[<span class="key">id</span>:<span class="integer">13</span>,<span class="key">weight</span>:<span class="float">0.4</span>,<span class="key">label</span>:created]
+==>[<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>
+</div>
+</div>
+ </div>
+ </div>
+ <div class="tabcontent">
+ <div class="tabcontent-2">
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy">g.withoutStrategies(LazyBarrierStrategy, PathRetractionStrategy).V().as(<span class="string"><span class="delimiter">"</span><span class="content">ov</span><span class="delimiter">"</span></span>).
+ outE().as(<span class="string"><span class="delimiter">"</span><span class="content">e1</span><span class="delimiter">"</span></span>).
+ inV().as(<span class="string"><span class="delimiter">"</span><span class="content">iv</span><span class="delimiter">"</span></span>).
+ inE().
+ where(neq(<span class="string"><span class="delimiter">"</span><span class="content">e1</span><span class="delimiter">"</span></span>)).
+ where(outV().as(<span class="string"><span class="delimiter">"</span><span class="content">ov</span><span class="delimiter">"</span></span>)).as(<span class="string"><span class="delimiter">"</span><span class="content">e2</span><span class="delimiter">"</span></span>).
+ where(<span class="string"><span class="delimiter">"</span><span class="content">e1</span><span class="delimiter">"</span></span>, eq(<span class="string"><span class="delimiter">"</span><span class="content">e2</span><span class="delimiter">"</span></span>)).by(label).
+ where(<span class="string"><span class="delimiter">"</span><span class="content">e1</span><span class="delimiter">"</span></span>, eq(<span class="string"><span class="delimiter">"</span><span class="content">e2</span><span class="delimiter">"</span></span>)).by(<span class="string"><span class="delimiter">"</span><span class="content">weight</span><span class="delimiter">"</span></span>).valueMap(<span class="predefined-constant">true</span>)</code></pre>
+</div>
+</div>
+ </div>
+ </div>
+</section>
</div>
</div>
<div class="sect1">
@@ -3285,10 +3481,10 @@ group for duplicates.</p>
<p>Consider the following example with some duplicate vertices added to the "modern" graph:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254621-1" type="radio" name="radio-set-1553254621-1" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254621-1" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254621-2" type="radio" name="radio-set-1553254621-1" class="tab-selector-2" />
- <label for="tab-1553254621-2" class="tab-label-2">groovy</label>
+ <input id="tab-1558704751-1" type="radio" name="radio-set-1558704751-1" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704751-1" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704751-2" type="radio" name="radio-set-1558704751-1" class="tab-selector-2" />
+ <label for="tab-1558704751-2" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3334,10 +3530,10 @@ the <code>Map</code> provided by the <co
match the feature. To extract just those vertices that contain duplicates an additional filter can be added:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254621-3" type="radio" name="radio-set-1553254621-3" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254621-3" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254621-4" type="radio" name="radio-set-1553254621-3" class="tab-selector-2" />
- <label for="tab-1553254621-4" class="tab-label-2">groovy</label>
+ <input id="tab-1558704751-3" type="radio" name="radio-set-1558704751-3" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704751-3" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704751-4" type="radio" name="radio-set-1558704751-3" class="tab-selector-2" />
+ <label for="tab-1558704751-4" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3386,10 +3582,10 @@ be created with the same properties and
follows:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254645-1" type="radio" name="radio-set-1553254645-1" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254645-1" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254645-2" type="radio" name="radio-set-1553254645-1" class="tab-selector-2" />
- <label for="tab-1553254645-2" class="tab-label-2">groovy</label>
+ <input id="tab-1558704779-1" type="radio" name="radio-set-1558704779-1" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704779-1" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704779-2" type="radio" name="radio-set-1558704779-1" class="tab-selector-2" />
+ <label for="tab-1558704779-2" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3397,9 +3593,9 @@ follows:</p>
<pre class="CodeRay highlight"><code data-lang="groovy">gremlin> g.V().has(<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">marko</span><span class="delimiter">'</span></span>).
outE().inV().
path().by(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>).by(valueMap(<span class="predefined-constant">true</span>))
-==>[marko,[<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>],lop]
-==>[marko,[<span class="key">id</span>:<span class="integer">7</span>,<span class="key">label</span>:knows,<span class="key">weight</span>:<span class="float">0.5</span>],vadas]
-==>[marko,[<span class="key">id</span>:<span class="integer">8</span>,<span class="key">label</span>:knows,<span class="key">weight</span>:<span class="float">1.0</span>],josh]</code></pre>
+==>[marko,[<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],lop]
+==>[marko,[<span class="key">id</span>:<span class="integer">7</span>,<span class="key">weight</span>:<span class="float">0.5</span>,<span class="key">label</span>:knows],vadas]
+==>[marko,[<span class="key">id</span>:<span class="integer">8</span>,<span class="key">weight</span>:<span class="float">1.0</span>,<span class="key">label</span>:knows],josh]</code></pre>
</div>
</div>
</div>
@@ -3421,10 +3617,10 @@ follows:</p>
the "peter" vertex in a single traversal:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254645-3" type="radio" name="radio-set-1553254645-3" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254645-3" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254645-4" type="radio" name="radio-set-1553254645-3" class="tab-selector-2" />
- <label for="tab-1553254645-4" class="tab-label-2">groovy</label>
+ <input id="tab-1558704779-3" type="radio" name="radio-set-1558704779-3" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704779-3" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704779-4" type="radio" name="radio-set-1558704779-3" class="tab-selector-2" />
+ <label for="tab-1558704779-4" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3441,9 +3637,9 @@ the "peter" vertex in a single traversal
gremlin> g.V().has(<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">marko</span><span class="delimiter">'</span></span>).
outE().inV().
path().by(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>).by(valueMap(<span class="predefined-constant">true</span>))
-==>[marko,[<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>],lop]
-==>[marko,[<span class="key">id</span>:<span class="integer">8</span>,<span class="key">label</span>:knows,<span class="key">weight</span>:<span class="float">1.0</span>],josh]
-==>[marko,[<span class="key">id</span>:<span class="integer">13</span>,<span class="key">label</span>:knows,<span class="key">weight</span>:<span class="float">0.5</span>],peter]</code></pre>
+==>[marko,[<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],lop]
+==>[marko,[<span class="key">id</span>:<span class="integer">8</span>,<span class="key">weight</span>:<span class="float">1.0</span>,<span class="key">label</span>:knows],josh]
+==>[marko,[<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>:knows],peter]</code></pre>
</div>
</div>
</div>
@@ -3495,10 +3691,10 @@ properties to transfer to the new "moved
<p>Checking for whether or not a graph element is present in the graph is simple:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254670-1" type="radio" name="radio-set-1553254670-1" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254670-1" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254670-2" type="radio" name="radio-set-1553254670-1" class="tab-selector-2" />
- <label for="tab-1553254670-2" class="tab-label-2">groovy</label>
+ <input id="tab-1558704808-1" type="radio" name="radio-set-1558704808-1" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704808-1" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704808-2" type="radio" name="radio-set-1558704808-1" class="tab-selector-2" />
+ <label for="tab-1558704808-2" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3529,10 +3725,10 @@ determine whether or not to add a new ve
entire operation can occur in a single traversal.</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254670-3" type="radio" name="radio-set-1553254670-3" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254670-3" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254670-4" type="radio" name="radio-set-1553254670-3" class="tab-selector-2" />
- <label for="tab-1553254670-4" class="tab-label-2">groovy</label>
+ <input id="tab-1558704808-3" type="radio" name="radio-set-1558704808-3" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704808-3" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704808-4" type="radio" name="radio-set-1558704808-3" class="tab-selector-2" />
+ <label for="tab-1558704808-4" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3587,10 +3783,10 @@ then the vertex does not exist and it is
<p>This "get or create" logic can be expanded to be "upsert" like functionality as follows:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254670-5" type="radio" name="radio-set-1553254670-5" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254670-5" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254670-6" type="radio" name="radio-set-1553254670-5" class="tab-selector-2" />
- <label for="tab-1553254670-6" class="tab-label-2">groovy</label>
+ <input id="tab-1558704808-5" type="radio" name="radio-set-1558704808-5" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704808-5" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704808-6" type="radio" name="radio-set-1558704808-5" class="tab-selector-2" />
+ <label for="tab-1558704808-6" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3652,10 +3848,10 @@ execution.
<p>It is possible to do similar sorts of operations with edges using the same pattern:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254670-7" type="radio" name="radio-set-1553254670-7" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254670-7" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254670-8" type="radio" name="radio-set-1553254670-7" class="tab-selector-2" />
- <label for="tab-1553254670-8" class="tab-label-2">groovy</label>
+ <input id="tab-1558704808-7" type="radio" name="radio-set-1558704808-7" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704808-7" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704808-8" type="radio" name="radio-set-1558704808-7" class="tab-selector-2" />
+ <label for="tab-1558704808-8" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3696,10 +3892,10 @@ found between these two vertices, then i
<p>Consider the following traversal over the "modern" toy graph:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254706-1" type="radio" name="radio-set-1553254706-1" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254706-1" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254706-2" type="radio" name="radio-set-1553254706-1" class="tab-selector-2" />
- <label for="tab-1553254706-2" class="tab-label-2">groovy</label>
+ <input id="tab-1558704850-1" type="radio" name="radio-set-1558704850-1" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704850-1" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704850-2" type="radio" name="radio-set-1558704850-1" class="tab-selector-2" />
+ <label for="tab-1558704850-2" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3727,10 +3923,10 @@ different picture of the result. For exa
a domain concept such as "young", "old" and "very old".</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254706-3" type="radio" name="radio-set-1553254706-3" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254706-3" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254706-4" type="radio" name="radio-set-1553254706-3" class="tab-selector-2" />
- <label for="tab-1553254706-4" class="tab-label-2">groovy</label>
+ <input id="tab-1558704850-3" type="radio" name="radio-set-1558704850-3" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704850-3" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704850-4" type="radio" name="radio-set-1558704850-3" class="tab-selector-2" />
+ <label for="tab-1558704850-4" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3782,10 +3978,10 @@ like the following in Java:</p>
there is another option to consider with <code>coalesce</code>:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254706-5" type="radio" name="radio-set-1553254706-5" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254706-5" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254706-6" type="radio" name="radio-set-1553254706-5" class="tab-selector-2" />
- <label for="tab-1553254706-6" class="tab-label-2">groovy</label>
+ <input id="tab-1558704850-5" type="radio" name="radio-set-1558704850-5" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704850-5" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704850-6" type="radio" name="radio-set-1558704850-5" class="tab-selector-2" />
+ <label for="tab-1558704850-6" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3834,10 +4030,10 @@ second ten records and so on, until pote
<p>In Gremlin, a basic approach to paging would look something like the following:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254736-1" type="radio" name="radio-set-1553254736-1" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254736-1" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254736-2" type="radio" name="radio-set-1553254736-1" class="tab-selector-2" />
- <label for="tab-1553254736-2" class="tab-label-2">groovy</label>
+ <input id="tab-1558704883-1" type="radio" name="radio-set-1558704883-1" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704883-1" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704883-2" type="radio" name="radio-set-1558704883-1" class="tab-selector-2" />
+ <label for="tab-1558704883-2" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3903,10 +4099,10 @@ to getting a total count without doing a
removed then the traversals become more simple:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254736-3" type="radio" name="radio-set-1553254736-3" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254736-3" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254736-4" type="radio" name="radio-set-1553254736-3" class="tab-selector-2" />
- <label for="tab-1553254736-4" class="tab-label-2">groovy</label>
+ <input id="tab-1558704883-3" type="radio" name="radio-set-1558704883-3" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704883-3" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704883-4" type="radio" name="radio-set-1558704883-3" class="tab-selector-2" />
+ <label for="tab-1558704883-4" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -3956,10 +4152,10 @@ second traversal, the graph will still r
<p>The only way to completely avoid that problem is to re-use the same traversal instance:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254736-5" type="radio" name="radio-set-1553254736-5" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254736-5" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254736-6" type="radio" name="radio-set-1553254736-5" class="tab-selector-2" />
- <label for="tab-1553254736-6" class="tab-label-2">groovy</label>
+ <input id="tab-1558704883-5" type="radio" name="radio-set-1558704883-5" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704883-5" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704883-6" type="radio" name="radio-set-1558704883-5" class="tab-selector-2" />
+ <label for="tab-1558704883-6" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -4023,10 +4219,10 @@ specific person as to what their opinion
following script generates some data for the graph using that basic schema:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254770-1" type="radio" name="radio-set-1553254770-1" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254770-1" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254770-2" type="radio" name="radio-set-1553254770-1" class="tab-selector-2" />
- <label for="tab-1553254770-2" class="tab-label-2">groovy</label>
+ <input id="tab-1558704916-1" type="radio" name="radio-set-1558704916-1" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704916-1" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704916-2" type="radio" name="radio-set-1558704916-1" class="tab-selector-2" />
+ <label for="tab-1558704916-2" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -4104,10 +4300,10 @@ gremlin> <span class="integer">2</spa
<p>The first step to making a recommendation to "alice" using collaborative filtering is to understand what she bought:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254770-3" type="radio" name="radio-set-1553254770-3" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254770-3" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254770-4" type="radio" name="radio-set-1553254770-3" class="tab-selector-2" />
- <label for="tab-1553254770-4" class="tab-label-2">groovy</label>
+ <input id="tab-1558704916-3" type="radio" name="radio-set-1558704916-3" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704916-3" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704916-4" type="radio" name="radio-set-1558704916-3" class="tab-selector-2" />
+ <label for="tab-1558704916-4" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -4144,10 +4340,10 @@ focus on the neighborhood around that pr
<p>The next step is to determine who else purchased those products:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254770-5" type="radio" name="radio-set-1553254770-5" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254770-5" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254770-6" type="radio" name="radio-set-1553254770-5" class="tab-selector-2" />
- <label for="tab-1553254770-6" class="tab-label-2">groovy</label>
+ <input id="tab-1558704916-5" type="radio" name="radio-set-1558704916-5" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704916-5" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704916-6" type="radio" name="radio-set-1558704916-5" class="tab-selector-2" />
+ <label for="tab-1558704916-6" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -4177,10 +4373,10 @@ focus on the neighborhood around that pr
interest is in what individuals other than herself purchased:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254770-7" type="radio" name="radio-set-1553254770-7" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254770-7" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254770-8" type="radio" name="radio-set-1553254770-7" class="tab-selector-2" />
- <label for="tab-1553254770-8" class="tab-label-2">groovy</label>
+ <input id="tab-1558704916-7" type="radio" name="radio-set-1558704916-7" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704916-7" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704916-8" type="radio" name="radio-set-1558704916-7" class="tab-selector-2" />
+ <label for="tab-1558704916-8" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -4221,10 +4417,10 @@ interest is in what individuals other th
they bought:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254770-9" type="radio" name="radio-set-1553254770-9" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254770-9" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254770-10" type="radio" name="radio-set-1553254770-9" class="tab-selector-2" />
- <label for="tab-1553254770-10" class="tab-label-2">groovy</label>
+ <input id="tab-1558704916-9" type="radio" name="radio-set-1558704916-9" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704916-9" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704916-10" type="radio" name="radio-set-1558704916-9" class="tab-selector-2" />
+ <label for="tab-1558704916-10" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -4271,10 +4467,10 @@ already purchased some of these products
that she already owns. Those products she already purchased can be excluded as follows:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254770-11" type="radio" name="radio-set-1553254770-11" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254770-11" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254770-12" type="radio" name="radio-set-1553254770-11" class="tab-selector-2" />
- <label for="tab-1553254770-12" class="tab-label-2">groovy</label>
+ <input id="tab-1558704916-11" type="radio" name="radio-set-1558704916-11" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704916-11" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704916-12" type="radio" name="radio-set-1558704916-11" class="tab-selector-2" />
+ <label for="tab-1558704916-12" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -4315,10 +4511,10 @@ that she already owns. Those products sh
purposes) to form a ranking:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254770-13" type="radio" name="radio-set-1553254770-13" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254770-13" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254770-14" type="radio" name="radio-set-1553254770-13" class="tab-selector-2" />
- <label for="tab-1553254770-14" class="tab-label-2">groovy</label>
+ <input id="tab-1558704916-13" type="radio" name="radio-set-1558704916-13" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704916-13" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704916-14" type="radio" name="radio-set-1558704916-13" class="tab-selector-2" />
+ <label for="tab-1558704916-14" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -4381,10 +4577,10 @@ vertices that make up the recommendation
who have at least one product in common:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254770-15" type="radio" name="radio-set-1553254770-15" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254770-15" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254770-16" type="radio" name="radio-set-1553254770-15" class="tab-selector-2" />
- <label for="tab-1553254770-16" class="tab-label-2">groovy</label>
+ <input id="tab-1558704916-15" type="radio" name="radio-set-1558704916-15" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704916-15" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704916-16" type="radio" name="radio-set-1558704916-15" class="tab-selector-2" />
+ <label for="tab-1558704916-16" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -4416,10 +4612,10 @@ who have at least one product in common:
<p>Next, do some grouping to find count how many products they have in common:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254770-17" type="radio" name="radio-set-1553254770-17" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254770-17" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254770-18" type="radio" name="radio-set-1553254770-17" class="tab-selector-2" />
- <label for="tab-1553254770-18" class="tab-label-2">groovy</label>
+ <input id="tab-1558704916-17" type="radio" name="radio-set-1558704916-17" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704916-17" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704916-18" type="radio" name="radio-set-1558704916-17" class="tab-selector-2" />
+ <label for="tab-1558704916-18" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -4455,10 +4651,10 @@ who have at least one product in common:
that maximum:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254770-19" type="radio" name="radio-set-1553254770-19" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254770-19" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254770-20" type="radio" name="radio-set-1553254770-19" class="tab-selector-2" />
- <label for="tab-1553254770-20" class="tab-label-2">groovy</label>
+ <input id="tab-1558704916-19" type="radio" name="radio-set-1558704916-19" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704916-19" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704916-20" type="radio" name="radio-set-1558704916-19" class="tab-selector-2" />
+ <label for="tab-1558704916-20" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -4500,10 +4696,10 @@ that maximum:</p>
common:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254770-21" type="radio" name="radio-set-1553254770-21" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254770-21" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254770-22" type="radio" name="radio-set-1553254770-21" class="tab-selector-2" />
- <label for="tab-1553254770-22" class="tab-label-2">groovy</label>
+ <input id="tab-1558704916-21" type="radio" name="radio-set-1558704916-21" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704916-21" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704916-22" type="radio" name="radio-set-1558704916-21" class="tab-selector-2" />
+ <label for="tab-1558704916-22" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -4550,10 +4746,10 @@ common:</p>
purchased:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254770-23" type="radio" name="radio-set-1553254770-23" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254770-23" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254770-24" type="radio" name="radio-set-1553254770-23" class="tab-selector-2" />
- <label for="tab-1553254770-24" class="tab-label-2">groovy</label>
+ <input id="tab-1558704916-23" type="radio" name="radio-set-1558704916-23" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704916-23" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704916-24" type="radio" name="radio-set-1558704916-23" class="tab-selector-2" />
+ <label for="tab-1558704916-24" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -4603,10 +4799,10 @@ purchased:</p>
<p>The above output shows that one product is held in common making it the top recommendation:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254770-25" type="radio" name="radio-set-1553254770-25" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254770-25" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254770-26" type="radio" name="radio-set-1553254770-25" class="tab-selector-2" />
- <label for="tab-1553254770-26" class="tab-label-2">groovy</label>
+ <input id="tab-1558704916-25" type="radio" name="radio-set-1558704916-25" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704916-25" class="tab-label-1">console (groovy)</label>
+ <input id="tab-1558704916-26" type="radio" name="radio-set-1558704916-25" class="tab-selector-2" />
+ <label for="tab-1558704916-26" class="tab-label-2">groovy</label>
<div class="tabcontent">
<div class="tabcontent-1">
<div class="listingblock">
@@ -4666,10 +4862,10 @@ purchased:</p>
recommendation algorithm:</p>
</div>
<section class="tabs tabs-2">
- <input id="tab-1553254770-27" type="radio" name="radio-set-1553254770-27" class="tab-selector-1" checked="checked" />
- <label for="tab-1553254770-27" class="tab-label-1">console (groovy)</label>
- <input id="tab-1553254770-28" type="radio" name="radio-set-1553254770-27" class="tab-selector-2" />
- <label for="tab-1553254770-28" class="tab-label-2">groovy</label>
+ <input id="tab-1558704916-27" type="radio" name="radio-set-1558704916-27" class="tab-selector-1" checked="checked" />
+ <label for="tab-1558704916-27" class="tab-label-1">console (groovy)</label>
[... 1254 lines stripped ...]