Modified: tinkerpop/site/docs/3.4.1-SNAPSHOT/recipes/index.html URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.4.1-SNAPSHOT/recipes/index.html?rev=1855339&r1=1855338&r2=1855339&view=diff ============================================================================== --- tinkerpop/site/docs/3.4.1-SNAPSHOT/recipes/index.html (original) +++ tinkerpop/site/docs/3.4.1-SNAPSHOT/recipes/index.html Tue Mar 12 18:05:28 2019 @@ -914,10 +914,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-1546970733-1" type="radio" name="radio-set-1546970733-1" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970733-1" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970733-2" type="radio" name="radio-set-1546970733-1" class="tab-selector-2" /> - <label for="tab-1546970733-2" class="tab-label-2">groovy</label> + <input id="tab-1552405494-1" type="radio" name="radio-set-1552405494-1" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405494-1" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405494-2" type="radio" name="radio-set-1552405494-1" class="tab-selector-2" /> + <label for="tab-1552405494-2" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -938,7 +938,7 @@ gremlin> g.V(<span class="integer">1< ==>e[<span class="integer">9</span>][<span class="integer">1</span>-created-><span class="integer">3</span>] ==>e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>] gremlin> g.V(<span class="integer">1</span>).out().where(__.in().hasId(<span class="integer">6</span>)) <span class="invisible">//</span><b class="conum">6</b><span class="invisible">\</span> -==><span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>]</code></pre> +==>v[<span class="integer">3</span>]</code></pre> </div> </div> </div> @@ -992,10 +992,10 @@ scenarios. For one such example, conside vertices:</p> </div> <section class="tabs tabs-2"> - <input id="tab-1546970733-3" type="radio" name="radio-set-1546970733-3" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970733-3" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970733-4" type="radio" name="radio-set-1546970733-3" class="tab-selector-2" /> - <label for="tab-1546970733-4" class="tab-label-2">groovy</label> + <input id="tab-1552405494-3" type="radio" name="radio-set-1552405494-3" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405494-3" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405494-4" type="radio" name="radio-set-1552405494-3" class="tab-selector-2" /> + <label for="tab-1552405494-4" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -1008,12 +1008,12 @@ gremlin> g.V(ids).as(<span class="str repeat(bothE().otherV().simplePath()).times(<span class="integer">5</span>).emit(hasId(within(ids))).as(<span class="string"><span class="delimiter">"</span><span class="content">b</span><span class="delimiter">"</span></span>). filter(select(last,<span class="string"><span class="delimiter">"</span><span class="content">a</span><span class="delimiter">"</span></span>,<span class="string"><span class="delimiter">"</span><span class="content">b</span><span class="delimiter">"</span></span>).by(id).where(<span class="string"><span class="delimiter">"</span><span class="content">a</span><span class="delimiter">"</span></span>, lt(<span class="string"><span class="delimiter">"</span><span class="content">b</span><span class="delimiter">"</span></span>))). path().by().by(label) -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>],knows,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],knows,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>]] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>],knows,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],created,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>],created,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>]] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>],knows,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],created,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>],created,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>]] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>],knows,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],knows,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],created,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>],created,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>]] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],created,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>],created,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>]] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],knows,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],created,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>],created,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>]]</code></pre> +==>[v[<span class="integer">2</span>],knows,v[<span class="integer">1</span>],knows,v[<span class="integer">4</span>]] +==>[v[<span class="integer">2</span>],knows,v[<span class="integer">1</span>],created,v[<span class="integer">3</span>],created,v[<span class="integer">4</span>]] +==>[v[<span class="integer">2</span>],knows,v[<span class="integer">1</span>],created,v[<span class="integer">3</span>],created,v[<span class="integer">6</span>]] +==>[v[<span class="integer">2</span>],knows,v[<span class="integer">1</span>],knows,v[<span class="integer">4</span>],created,v[<span class="integer">3</span>],created,v[<span class="integer">6</span>]] +==>[v[<span class="integer">4</span>],created,v[<span class="integer">3</span>],created,v[<span class="integer">6</span>]] +==>[v[<span class="integer">4</span>],knows,v[<span class="integer">1</span>],created,v[<span class="integer">3</span>],created,v[<span class="integer">6</span>]]</code></pre> </div> </div> </div> @@ -1044,10 +1044,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-1546970733-5" type="radio" name="radio-set-1546970733-5" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970733-5" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970733-6" type="radio" name="radio-set-1546970733-5" class="tab-selector-2" /> - <label for="tab-1546970733-6" class="tab-label-2">groovy</label> + <input id="tab-1552405494-5" type="radio" name="radio-set-1552405494-5" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405494-5" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405494-6" type="radio" name="radio-set-1552405494-5" class="tab-selector-2" /> + <label for="tab-1552405494-6" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -1077,13 +1077,13 @@ the known person completed an applicatio addE(<span class="string"><span class="delimiter">"</span><span class="content">created</span><span class="delimiter">"</span></span>).from(<span class="string"><span class="delimiter">"</span><span class="content">blueprints</span><span class="delimiter">"</span></span>).to(<span class="string"><span class="delimiter">"</span><span class="content">blueprintsJob3</span><span class="delimiter">"</span></span>).property(<span class="string"><span class="delimiter">"</span><span class="content">creationDate</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">12/16/2015</span><span class="delimiter">"</span></span>). addE(<span class="string"><span class="delimiter">"</span><span class="content">created</span><span class="delimiter">"</span></span>).from(<span class="string"><span class="delimiter">"</span><span class="content">rexster</span><span class="delimiter">"</span></span>).to(<span class="string"><span class="delimiter">"</span><span class="content">rexsterJob1</span><span class="delimiter">"</span></span>).property(<span class="string"><span class="delimiter">"</span><span class="content">creationDate</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">12/18/2015</span><span class="delimiter">"</span></span>).iterate() gremlin> vBlueprintsJob1 = g.V().has(<span class="string"><span class="delimiter">"</span><span class="content">job</span><span class="delimiter">"</span></span>, <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">job1</span><span class="delimiter">"</span></span>).next() -==><span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">8</span>] +==>v[<span class="integer">8</span>] gremlin> vRexsterJob1 = g.V().has(<span class="string"><span class="delimiter">"</span><span class="content">job</span><span class="delimiter">"</span></span>, <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">job4</span><span class="delimiter">"</span></span>).next() -==><span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">14</span>] +==>v[<span class="integer">14</span>] gremlin> vStephen = g.V().has(<span class="string"><span class="delimiter">"</span><span class="content">person</span><span class="delimiter">"</span></span>, <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">stephen</span><span class="delimiter">"</span></span>).next() -==><span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>] +==>v[<span class="integer">2</span>] gremlin> vBob = g.V().has(<span class="string"><span class="delimiter">"</span><span class="content">person</span><span class="delimiter">"</span></span>, <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">bob</span><span class="delimiter">"</span></span>).next() -==><span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">0</span>] +==>v[<span class="integer">0</span>] gremlin> g.V(vRexsterJob1).as(<span class="string"><span class="delimiter">'</span><span class="content">job</span><span class="delimiter">'</span></span>). inE(<span class="string"><span class="delimiter">'</span><span class="content">created</span><span class="delimiter">'</span></span>).as(<span class="string"><span class="delimiter">'</span><span class="content">created</span><span class="delimiter">'</span></span>). outV().as(<span class="string"><span class="delimiter">'</span><span class="content">company</span><span class="delimiter">'</span></span>). @@ -1092,7 +1092,7 @@ gremlin> g.V(vRexsterJob1).as(<span c constant(<span class="predefined-constant">false</span>)).as(<span class="string"><span class="delimiter">'</span><span class="content">application</span><span class="delimiter">'</span></span>). select(<span class="string"><span class="delimiter">'</span><span class="content">job</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">company</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">created</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">application</span><span class="delimiter">'</span></span>). by().by().by(<span class="string"><span class="delimiter">'</span><span class="content">creationDate</span><span class="delimiter">'</span></span>).by() -==>[<span class="key">job</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">14</span>],<span class="key">company</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>],<span class="key">created</span>:<span class="integer">12</span>/<span class="integer">18</span>/<span class="integer">2015</span>,<span class="key">application</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">20</span>]] +==>[<span class="key">job</span>:v[<span class="integer">14</span>],<span class="key">company</span>:v[<span class="integer">6</span>],<span class="key">created</span>:<span class="integer">12</span>/<span class="integer">18</span>/<span class="integer">2015</span>,<span class="key">application</span>:v[<span class="integer">20</span>]] gremlin> g.V(vRexsterJob1, vBlueprintsJob1).as(<span class="string"><span class="delimiter">'</span><span class="content">job</span><span class="delimiter">'</span></span>). inE(<span class="string"><span class="delimiter">'</span><span class="content">created</span><span class="delimiter">'</span></span>).as(<span class="string"><span class="delimiter">'</span><span class="content">created</span><span class="delimiter">'</span></span>). outV().as(<span class="string"><span class="delimiter">'</span><span class="content">company</span><span class="delimiter">'</span></span>). @@ -1101,8 +1101,8 @@ gremlin> g.V(vRexsterJob1, vBlueprint constant(<span class="predefined-constant">false</span>)).as(<span class="string"><span class="delimiter">'</span><span class="content">application</span><span class="delimiter">'</span></span>). select(<span class="string"><span class="delimiter">'</span><span class="content">job</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">company</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">created</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">application</span><span class="delimiter">'</span></span>). by().by().by(<span class="string"><span class="delimiter">'</span><span class="content">creationDate</span><span class="delimiter">'</span></span>).by() -==>[<span class="key">job</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">14</span>],<span class="key">company</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>],<span class="key">created</span>:<span class="integer">12</span>/<span class="integer">18</span>/<span class="integer">2015</span>,<span class="key">application</span>:<span class="predefined-constant">false</span>] -==>[<span class="key">job</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">8</span>],<span class="key">company</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],<span class="key">created</span>:<span class="integer">12</span>/<span class="integer">20</span>/<span class="integer">2015</span>,<span class="key">application</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">16</span>]]</code></pre> +==>[<span class="key">job</span>:v[<span class="integer">14</span>],<span class="key">company</span>:v[<span class="integer">6</span>],<span class="key">created</span>:<span class="integer">12</span>/<span class="integer">18</span>/<span class="integer">2015</span>,<span class="key">application</span>:<span class="predefined-constant">false</span>] +==>[<span class="key">job</span>:v[<span class="integer">8</span>],<span class="key">company</span>:v[<span class="integer">4</span>],<span class="key">created</span>:<span class="integer">12</span>/<span class="integer">20</span>/<span class="integer">2015</span>,<span class="key">application</span>:v[<span class="integer">16</span>]]</code></pre> </div> </div> </div> @@ -1183,34 +1183,34 @@ 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-1546970796-1" type="radio" name="radio-set-1546970796-1" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970796-1" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970796-2" type="radio" name="radio-set-1546970796-1" class="tab-selector-2" /> - <label for="tab-1546970796-2" class="tab-label-2">groovy</label> + <input id="tab-1552405553-1" type="radio" name="radio-set-1552405553-1" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405553-1" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405553-2" type="radio" name="radio-set-1552405553-1" class="tab-selector-2" /> + <label for="tab-1552405553-2" 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().group().by().by(bothE().count()) <span class="invisible">//</span><b class="conum">1</b><span class="invisible">\</span> -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>]:<span class="integer">3</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>]:<span class="integer">1</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>]:<span class="integer">3</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>]:<span class="integer">3</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">5</span>]:<span class="integer">1</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>]:<span class="integer">1</span>] +==>[v[<span class="integer">1</span>]:<span class="integer">3</span>,v[<span class="integer">2</span>]:<span class="integer">1</span>,v[<span class="integer">3</span>]:<span class="integer">3</span>,v[<span class="integer">4</span>]:<span class="integer">3</span>,v[<span class="integer">5</span>]:<span class="integer">1</span>,v[<span class="integer">6</span>]:<span class="integer">1</span>] gremlin> g.V().group().by().by(inE().count()) <span class="invisible">//</span><b class="conum">2</b><span class="invisible">\</span> -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>]:<span class="integer">0</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>]:<span class="integer">1</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>]:<span class="integer">3</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>]:<span class="integer">1</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">5</span>]:<span class="integer">1</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>]:<span class="integer">0</span>] +==>[v[<span class="integer">1</span>]:<span class="integer">0</span>,v[<span class="integer">2</span>]:<span class="integer">1</span>,v[<span class="integer">3</span>]:<span class="integer">3</span>,v[<span class="integer">4</span>]:<span class="integer">1</span>,v[<span class="integer">5</span>]:<span class="integer">1</span>,v[<span class="integer">6</span>]:<span class="integer">0</span>] gremlin> g.V().group().by().by(outE().count()) <span class="invisible">//</span><b class="conum">3</b><span class="invisible">\</span> -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>]:<span class="integer">3</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>]:<span class="integer">0</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>]:<span class="integer">0</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>]:<span class="integer">2</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">5</span>]:<span class="integer">0</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>]:<span class="integer">1</span>] +==>[v[<span class="integer">1</span>]:<span class="integer">3</span>,v[<span class="integer">2</span>]:<span class="integer">0</span>,v[<span class="integer">3</span>]:<span class="integer">0</span>,v[<span class="integer">4</span>]:<span class="integer">2</span>,v[<span class="integer">5</span>]:<span class="integer">0</span>,v[<span class="integer">6</span>]:<span class="integer">1</span>] gremlin> g.V().project(<span class="string"><span class="delimiter">"</span><span class="content">v</span><span class="delimiter">"</span></span>,<span class="string"><span class="delimiter">"</span><span class="content">degree</span><span class="delimiter">"</span></span>).by().by(bothE().count()) <span class="invisible">//</span><b class="conum">4</b><span class="invisible">\</span> -==>[<span class="key">v</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],<span class="key">degree</span>:<span class="integer">3</span>] -==>[<span class="key">v</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>],<span class="key">degree</span>:<span class="integer">1</span>] -==>[<span class="key">v</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>],<span class="key">degree</span>:<span class="integer">3</span>] -==>[<span class="key">v</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],<span class="key">degree</span>:<span class="integer">3</span>] -==>[<span class="key">v</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">5</span>],<span class="key">degree</span>:<span class="integer">1</span>] -==>[<span class="key">v</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>],<span class="key">degree</span>:<span class="integer">1</span>] +==>[<span class="key">v</span>:v[<span class="integer">1</span>],<span class="key">degree</span>:<span class="integer">3</span>] +==>[<span class="key">v</span>:v[<span class="integer">2</span>],<span class="key">degree</span>:<span class="integer">1</span>] +==>[<span class="key">v</span>:v[<span class="integer">3</span>],<span class="key">degree</span>:<span class="integer">3</span>] +==>[<span class="key">v</span>:v[<span class="integer">4</span>],<span class="key">degree</span>:<span class="integer">3</span>] +==>[<span class="key">v</span>:v[<span class="integer">5</span>],<span class="key">degree</span>:<span class="integer">1</span>] +==>[<span class="key">v</span>:v[<span class="integer">6</span>],<span class="key">degree</span>:<span class="integer">1</span>] gremlin> g.V().project(<span class="string"><span class="delimiter">"</span><span class="content">v</span><span class="delimiter">"</span></span>,<span class="string"><span class="delimiter">"</span><span class="content">degree</span><span class="delimiter">"</span></span>).by().by(bothE().count()). <span class="invisible">//</span><b class="conum">5</b><span class="invisible">\</span> order().by(select(<span class="string"><span class="delimiter">"</span><span class="content">degree</span><span class="delimiter">"</span></span>), desc). limit(<span class="integer">4</span>) -==>[<span class="key">v</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],<span class="key">degree</span>:<span class="integer">3</span>] -==>[<span class="key">v</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>],<span class="key">degree</span>:<span class="integer">3</span>] -==>[<span class="key">v</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],<span class="key">degree</span>:<span class="integer">3</span>] -==>[<span class="key">v</span>:<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>],<span class="key">degree</span>:<span class="integer">1</span>]</code></pre> +==>[<span class="key">v</span>:v[<span class="integer">1</span>],<span class="key">degree</span>:<span class="integer">3</span>] +==>[<span class="key">v</span>:v[<span class="integer">3</span>],<span class="key">degree</span>:<span class="integer">3</span>] +==>[<span class="key">v</span>:v[<span class="integer">4</span>],<span class="key">degree</span>:<span class="integer">3</span>] +==>[<span class="key">v</span>:v[<span class="integer">2</span>],<span class="key">degree</span>:<span class="integer">1</span>]</code></pre> </div> </div> </div> @@ -1281,10 +1281,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-1546970796-3" type="radio" name="radio-set-1546970796-3" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970796-3" class="tab-label-1">console (groovy )</label> - <input id="tab-1546970796-4" type="radio" name="radio-set-1546970796-3" class="tab-selector-2" /> - <label for="tab-1546970796-4" class="tab-label-2">groovy </label> + <input id="tab-1552405553-3" type="radio" name="radio-set-1552405553-3" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405553-3" class="tab-label-1">console (groovy )</label> + <input id="tab-1552405553-4" type="radio" name="radio-set-1552405553-3" class="tab-selector-2" /> + <label for="tab-1552405553-4" class="tab-label-2">groovy </label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -1412,10 +1412,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-1546970796-5" type="radio" name="radio-set-1546970796-5" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970796-5" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970796-6" type="radio" name="radio-set-1546970796-5" class="tab-selector-2" /> - <label for="tab-1546970796-6" class="tab-label-2">groovy</label> + <input id="tab-1552405553-5" type="radio" name="radio-set-1552405553-5" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405553-5" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405553-6" type="radio" name="radio-set-1552405553-5" class="tab-selector-2" /> + <label for="tab-1552405553-6" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -1521,10 +1521,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-1546970796-7" type="radio" name="radio-set-1546970796-7" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970796-7" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970796-8" type="radio" name="radio-set-1546970796-7" class="tab-selector-2" /> - <label for="tab-1546970796-8" class="tab-label-2">groovy</label> + <input id="tab-1552405553-7" type="radio" name="radio-set-1552405553-7" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405553-7" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405553-8" type="radio" name="radio-set-1552405553-7" class="tab-selector-2" /> + <label for="tab-1552405553-8" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -1631,18 +1631,18 @@ 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-1546970880-1" type="radio" name="radio-set-1546970880-1" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-1" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-2" type="radio" name="radio-set-1546970880-1" class="tab-selector-2" /> - <label for="tab-1546970880-2" class="tab-label-2">groovy</label> + <input id="tab-1552405634-1" type="radio" name="radio-set-1552405634-1" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-1" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-2" type="radio" name="radio-set-1552405634-1" class="tab-selector-2" /> + <label for="tab-1552405634-2" 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().fold() -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">5</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>]] +==>[v[<span class="integer">1</span>],v[<span class="integer">2</span>],v[<span class="integer">3</span>],v[<span class="integer">4</span>],v[<span class="integer">5</span>],v[<span class="integer">6</span>]] gremlin> g.V().store(<span class="string"><span class="delimiter">'</span><span class="content">a</span><span class="delimiter">'</span></span>).cap(<span class="string"><span class="delimiter">'</span><span class="content">a</span><span class="delimiter">'</span></span>) -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">5</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>]]</code></pre> +==>[v[<span class="integer">1</span>],v[<span class="integer">2</span>],v[<span class="integer">3</span>],v[<span class="integer">4</span>],v[<span class="integer">5</span>],v[<span class="integer">6</span>]]</code></pre> </div> </div> </div> @@ -1663,17 +1663,17 @@ g.V().store(<span class="string"><span c similar fashion to lists:</p> </div> <section class="tabs tabs-2"> - <input id="tab-1546970880-3" type="radio" name="radio-set-1546970880-3" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-3" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-4" type="radio" name="radio-set-1546970880-3" class="tab-selector-2" /> - <label for="tab-1546970880-4" class="tab-label-2">groovy</label> + <input id="tab-1552405634-3" type="radio" name="radio-set-1552405634-3" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-3" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-4" type="radio" name="radio-set-1552405634-3" class="tab-selector-2" /> + <label for="tab-1552405634-4" 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().out().out().path() -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">5</span>]] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>]]</code></pre> +==>[v[<span class="integer">1</span>],v[<span class="integer">4</span>],v[<span class="integer">5</span>]] +==>[v[<span class="integer">1</span>],v[<span class="integer">4</span>],v[<span class="integer">3</span>]]</code></pre> </div> </div> </div> @@ -1699,10 +1699,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-1546970880-5" type="radio" name="radio-set-1546970880-5" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-5" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-6" type="radio" name="radio-set-1546970880-5" class="tab-selector-2" /> - <label for="tab-1546970880-6" class="tab-label-2">groovy</label> + <input id="tab-1552405634-5" type="radio" name="radio-set-1552405634-5" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-5" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-6" type="radio" name="radio-set-1552405634-5" class="tab-selector-2" /> + <label for="tab-1552405634-6" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -1742,17 +1742,17 @@ 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-1546970880-7" type="radio" name="radio-set-1546970880-7" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-7" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-8" type="radio" name="radio-set-1546970880-7" class="tab-selector-2" /> - <label for="tab-1546970880-8" class="tab-label-2">groovy</label> + <input id="tab-1552405634-7" type="radio" name="radio-set-1552405634-7" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-7" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-8" type="radio" name="radio-set-1552405634-7" class="tab-selector-2" /> + <label for="tab-1552405634-8" 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().union(fold(),fold()) -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">5</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>]] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">5</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>]] +==>[v[<span class="integer">1</span>],v[<span class="integer">2</span>],v[<span class="integer">3</span>],v[<span class="integer">4</span>],v[<span class="integer">5</span>],v[<span class="integer">6</span>]] +==>[v[<span class="integer">1</span>],v[<span class="integer">2</span>],v[<span class="integer">3</span>],v[<span class="integer">4</span>],v[<span class="integer">5</span>],v[<span class="integer">6</span>]] gremlin> g.V().union(fold(),fold()).unfold().values(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>) ==>marko ==>marko @@ -1787,10 +1787,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-1546970880-9" type="radio" name="radio-set-1546970880-9" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-9" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-10" type="radio" name="radio-set-1546970880-9" class="tab-selector-2" /> - <label for="tab-1546970880-10" class="tab-label-2">groovy</label> + <input id="tab-1552405634-9" type="radio" name="radio-set-1552405634-9" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-9" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-10" type="radio" name="radio-set-1552405634-9" class="tab-selector-2" /> + <label for="tab-1552405634-10" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -1825,25 +1825,25 @@ 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-1546970880-11" type="radio" name="radio-set-1546970880-11" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-11" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-12" type="radio" name="radio-set-1546970880-11" class="tab-selector-2" /> - <label for="tab-1546970880-12" class="tab-label-2">groovy</label> + <input id="tab-1552405634-11" type="radio" name="radio-set-1552405634-11" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-11" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-12" type="radio" name="radio-set-1552405634-11" class="tab-selector-2" /> + <label for="tab-1552405634-12" 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().union(limit(<span class="integer">3</span>).fold(),tail(<span class="integer">3</span>).fold()) <span class="invisible">//</span><b class="conum">1</b><span class="invisible">\</span> -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>]] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">5</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>]] +==>[v[<span class="integer">1</span>],v[<span class="integer">2</span>],v[<span class="integer">3</span>]] +==>[v[<span class="integer">4</span>],v[<span class="integer">5</span>],v[<span class="integer">6</span>]] gremlin> g.V().union(limit(<span class="integer">3</span>).fold(),tail(<span class="integer">3</span>).fold()). local(unfold(). <span class="invisible">//</span><b class="conum">2</b><span class="invisible">\</span> order(). by(bothE().count(),desc). limit(<span class="integer">1</span>). fold()) -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>]] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>]] +==>[v[<span class="integer">1</span>]] +==>[v[<span class="integer">4</span>]] gremlin> g.V().union(limit(<span class="integer">3</span>).fold(),tail(<span class="integer">3</span>).fold()). <span class="invisible">//</span><b class="conum">3</b><span class="invisible">\</span> local(unfold(). has(<span class="string"><span class="delimiter">'</span><span class="content">age</span><span class="delimiter">'</span></span>,gte(<span class="integer">29</span>)). @@ -1906,10 +1906,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-1546970880-13" type="radio" name="radio-set-1546970880-13" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-13" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-14" type="radio" name="radio-set-1546970880-13" class="tab-selector-2" /> - <label for="tab-1546970880-14" class="tab-label-2">groovy</label> + <input id="tab-1552405634-13" type="radio" name="radio-set-1552405634-13" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-13" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-14" type="radio" name="radio-set-1552405634-13" class="tab-selector-2" /> + <label for="tab-1552405634-14" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -1990,10 +1990,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-1546970880-15" type="radio" name="radio-set-1546970880-15" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-15" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-16" type="radio" name="radio-set-1546970880-15" class="tab-selector-2" /> - <label for="tab-1546970880-16" class="tab-label-2">groovy</label> + <input id="tab-1552405634-15" type="radio" name="radio-set-1552405634-15" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-15" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-16" type="radio" name="radio-set-1552405634-15" class="tab-selector-2" /> + <label for="tab-1552405634-16" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -2104,17 +2104,17 @@ means that each traverser can effectivel vertices each:</p> </div> <section class="tabs tabs-2"> - <input id="tab-1546970880-17" type="radio" name="radio-set-1546970880-17" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-17" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-18" type="radio" name="radio-set-1546970880-17" class="tab-selector-2" /> - <label for="tab-1546970880-18" class="tab-label-2">groovy</label> + <input id="tab-1552405634-17" type="radio" name="radio-set-1552405634-17" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-17" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-18" type="radio" name="radio-set-1552405634-17" class="tab-selector-2" /> + <label for="tab-1552405634-18" 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().union(limit(<span class="integer">3</span>).fold(),tail(<span class="integer">3</span>).fold()) -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>]] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">5</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>]]</code></pre> +==>[v[<span class="integer">1</span>],v[<span class="integer">2</span>],v[<span class="integer">3</span>]] +==>[v[<span class="integer">4</span>],v[<span class="integer">5</span>],v[<span class="integer">6</span>]]</code></pre> </div> </div> </div> @@ -2134,10 +2134,10 @@ vertices each:</p> results.</p> </div> <section class="tabs tabs-2"> - <input id="tab-1546970880-19" type="radio" name="radio-set-1546970880-19" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-19" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-20" type="radio" name="radio-set-1546970880-19" class="tab-selector-2" /> - <label for="tab-1546970880-20" class="tab-label-2">groovy</label> + <input id="tab-1552405634-19" type="radio" name="radio-set-1552405634-19" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-19" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-20" type="radio" name="radio-set-1552405634-19" class="tab-selector-2" /> + <label for="tab-1552405634-20" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -2146,12 +2146,12 @@ results.</p> local(union(identity(), <span class="invisible">//</span><b class="conum">1</b><span class="invisible">\</span> bothE().count()). fold()) -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],<span class="integer">3</span>] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>],<span class="integer">1</span>] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>],<span class="integer">3</span>] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],<span class="integer">3</span>] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">5</span>],<span class="integer">1</span>] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>],<span class="integer">1</span>] +==>[v[<span class="integer">1</span>],<span class="integer">3</span>] +==>[v[<span class="integer">2</span>],<span class="integer">1</span>] +==>[v[<span class="integer">3</span>],<span class="integer">3</span>] +==>[v[<span class="integer">4</span>],<span class="integer">3</span>] +==>[v[<span class="integer">5</span>],<span class="integer">1</span>] +==>[v[<span class="integer">6</span>],<span class="integer">1</span>] gremlin> g.V(). store(<span class="string"><span class="delimiter">'</span><span class="content">x</span><span class="delimiter">'</span></span>). by(union(select(<span class="string"><span class="delimiter">'</span><span class="content">x</span><span class="delimiter">'</span></span>).count(local), <span class="invisible">//</span><b class="conum">2</b><span class="invisible">\</span> @@ -2159,7 +2159,7 @@ gremlin> g.V(). bothE().count()). fold()). cap(<span class="string"><span class="delimiter">'</span><span class="content">x</span><span class="delimiter">'</span></span>) -==>[[<span class="integer">0</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],<span class="integer">3</span>],[<span class="integer">1</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">2</span>],<span class="integer">1</span>],[<span class="integer">2</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>],<span class="integer">3</span>],[<span class="integer">3</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],<span class="integer">3</span>],[<span class="integer">4</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">5</span>],<span class="integer">1</span>],[<span class="integer">5</span>,<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">6</span>],<span class="integer">1</span>]]</code></pre> +==>[[<span class="integer">0</span>,v[<span class="integer">1</span>],<span class="integer">3</span>],[<span class="integer">1</span>,v[<span class="integer">2</span>],<span class="integer">1</span>],[<span class="integer">2</span>,v[<span class="integer">3</span>],<span class="integer">3</span>],[<span class="integer">3</span>,v[<span class="integer">4</span>],<span class="integer">3</span>],[<span class="integer">4</span>,v[<span class="integer">5</span>],<span class="integer">1</span>],[<span class="integer">5</span>,v[<span class="integer">6</span>],<span class="integer">1</span>]]</code></pre> </div> </div> </div> @@ -2204,10 +2204,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-1546970880-21" type="radio" name="radio-set-1546970880-21" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-21" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-22" type="radio" name="radio-set-1546970880-21" class="tab-selector-2" /> - <label for="tab-1546970880-22" class="tab-label-2">groovy</label> + <input id="tab-1552405634-21" type="radio" name="radio-set-1552405634-21" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-21" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-22" type="radio" name="radio-set-1552405634-21" class="tab-selector-2" /> + <label for="tab-1552405634-22" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -2234,10 +2234,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-1546970880-23" type="radio" name="radio-set-1546970880-23" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-23" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-24" type="radio" name="radio-set-1546970880-23" class="tab-selector-2" /> - <label for="tab-1546970880-24" class="tab-label-2">groovy</label> + <input id="tab-1552405634-23" type="radio" name="radio-set-1552405634-23" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-23" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-24" type="radio" name="radio-set-1552405634-23" class="tab-selector-2" /> + <label for="tab-1552405634-24" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -2267,10 +2267,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-1546970880-25" type="radio" name="radio-set-1546970880-25" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-25" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-26" type="radio" name="radio-set-1546970880-25" class="tab-selector-2" /> - <label for="tab-1546970880-26" class="tab-label-2">groovy</label> + <input id="tab-1552405634-25" type="radio" name="radio-set-1552405634-25" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-25" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-26" type="radio" name="radio-set-1552405634-25" class="tab-selector-2" /> + <label for="tab-1552405634-26" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -2320,10 +2320,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-1546970880-27" type="radio" name="radio-set-1546970880-27" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-27" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-28" type="radio" name="radio-set-1546970880-27" class="tab-selector-2" /> - <label for="tab-1546970880-28" class="tab-label-2">groovy</label> + <input id="tab-1552405634-27" type="radio" name="radio-set-1552405634-27" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-27" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-28" type="radio" name="radio-set-1552405634-27" class="tab-selector-2" /> + <label for="tab-1552405634-28" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -2363,10 +2363,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-1546970880-29" type="radio" name="radio-set-1546970880-29" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-29" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-30" type="radio" name="radio-set-1546970880-29" class="tab-selector-2" /> - <label for="tab-1546970880-30" class="tab-label-2">groovy</label> + <input id="tab-1552405634-29" type="radio" name="radio-set-1552405634-29" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-29" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-30" type="radio" name="radio-set-1552405634-29" class="tab-selector-2" /> + <label for="tab-1552405634-30" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -2416,10 +2416,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-1546970880-31" type="radio" name="radio-set-1546970880-31" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-31" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-32" type="radio" name="radio-set-1546970880-31" class="tab-selector-2" /> - <label for="tab-1546970880-32" class="tab-label-2">groovy</label> + <input id="tab-1552405634-31" type="radio" name="radio-set-1552405634-31" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-31" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-32" type="radio" name="radio-set-1552405634-31" class="tab-selector-2" /> + <label for="tab-1552405634-32" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -2469,10 +2469,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-1546970880-33" type="radio" name="radio-set-1546970880-33" class="tab-selector-1" checked="checked" /> - <label for="tab-1546970880-33" class="tab-label-1">console (groovy)</label> - <input id="tab-1546970880-34" type="radio" name="radio-set-1546970880-33" class="tab-selector-2" /> - <label for="tab-1546970880-34" class="tab-label-2">groovy</label> + <input id="tab-1552405634-33" type="radio" name="radio-set-1552405634-33" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405634-33" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405634-34" type="radio" name="radio-set-1552405634-33" class="tab-selector-2" /> + <label for="tab-1552405634-34" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -2486,7 +2486,7 @@ reconstructed as a new <code>Map</code> group(). by(keys). by(select(values).unfold()) -==>[<span class="key">degree</span>:<span class="integer">3</span>,<span class="key">label</span>:person,<span class="key">name</span>:marko,<span class="key">id</span>:<span class="integer">1</span>,<span class="key">age</span>:<span class="integer">29</span>]</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">label</span>:person,<span class="key">name</span>:marko,<span class="key">age</span>:<span class="integer">29</span>]</code></pre> </div> </div> </div> @@ -2565,10 +2565,10 @@ component membership is stored in the gr <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-1546971108-1" type="radio" name="radio-set-1546971108-1" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971108-1" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971108-2" type="radio" name="radio-set-1546971108-1" class="tab-selector-2" /> - <label for="tab-1546971108-2" class="tab-label-2">groovy</label> + <input id="tab-1552405852-1" type="radio" name="radio-set-1552405852-1" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405852-1" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405852-2" type="radio" name="radio-set-1552405852-1" class="tab-selector-2" /> + <label for="tab-1552405852-2" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -2614,10 +2614,10 @@ described in more detail in the The traversal looks like:</p> </div> <section class="tabs tabs-2"> - <input id="tab-1546971108-3" type="radio" name="radio-set-1546971108-3" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971108-3" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971108-4" type="radio" name="radio-set-1546971108-3" class="tab-selector-2" /> - <label for="tab-1546971108-4" class="tab-label-2">groovy</label> + <input id="tab-1552405852-3" type="radio" name="radio-set-1552405852-3" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405852-3" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405852-4" type="radio" name="radio-set-1552405852-3" class="tab-selector-2" /> + <label for="tab-1552405852-4" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -2625,9 +2625,9 @@ The traversal looks like:</p> <pre class="CodeRay highlight"><code data-lang="groovy">gremlin> g.withComputer().V().connectedComponent(). group().by(ConnectedComponent.component). select(values).unfold() -==>[<span class="error"> </span>[<span class="integer">34</span>mv[D],<span class="error"> </span>[<span class="integer">34</span>mv[E]] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[C],<span class="error"> </span>[<span class="integer">34</span>mv[B],<span class="error"> </span>[<span class="integer">34</span>mv[A]] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[F]]</code></pre> +==>[v[D],v[E]] +==>[v[C],v[A],v[B]] +==>[v[F]]</code></pre> </div> </div> </div> @@ -2661,10 +2661,10 @@ default property key within which the re <p>A straightforward way to detect the various subgraphs with an OLTP traversal is to do this:</p> </div> <section class="tabs tabs-2"> - <input id="tab-1546971108-5" type="radio" name="radio-set-1546971108-5" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971108-5" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971108-6" type="radio" name="radio-set-1546971108-5" class="tab-selector-2" /> - <label for="tab-1546971108-6" class="tab-label-2">groovy</label> + <input id="tab-1552405852-5" type="radio" name="radio-set-1552405852-5" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405852-5" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405852-6" type="radio" name="radio-set-1552405852-5" class="tab-selector-2" /> + <label for="tab-1552405852-6" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -2674,9 +2674,9 @@ default property key within which the re group().by(path().unfold().limit(<span class="integer">1</span>)). <span class="invisible">//</span><b class="conum">3</b><span class="invisible">\</span> by(path().unfold().dedup().fold()). <span class="invisible">//</span><b class="conum">4</b><span class="invisible">\</span> select(values).unfold() <span class="invisible">//</span><b class="conum">5</b><span class="invisible">\</span> -==>[<span class="error"> </span>[<span class="integer">34</span>mv[A],<span class="error"> </span>[<span class="integer">34</span>mv[B],<span class="error"> </span>[<span class="integer">34</span>mv[C]] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[D],<span class="error"> </span>[<span class="integer">34</span>mv[E]] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[F]]</code></pre> +==>[v[A],v[B],v[C]] +==>[v[D],v[E]] +==>[v[F]]</code></pre> </div> </div> </div> @@ -2802,10 +2802,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-1546971185-1" type="radio" name="radio-set-1546971185-1" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971185-1" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971185-2" type="radio" name="radio-set-1546971185-1" class="tab-selector-2" /> - <label for="tab-1546971185-2" class="tab-label-2">groovy</label> + <input id="tab-1552405912-1" type="radio" name="radio-set-1552405912-1" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405912-1" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405912-2" type="radio" name="radio-set-1552405912-1" class="tab-selector-2" /> + <label for="tab-1552405912-2" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -2821,13 +2821,13 @@ depicted below Gremlin could be use to d addE(<span class="string"><span class="delimiter">'</span><span class="content">knows</span><span class="delimiter">'</span></span>).from(<span class="string"><span class="delimiter">'</span><span class="content">c</span><span class="delimiter">'</span></span>).to(<span class="string"><span class="delimiter">'</span><span class="content">d</span><span class="delimiter">'</span></span>).iterate() gremlin> g.V().as(<span class="string"><span class="delimiter">'</span><span class="content">a</span><span class="delimiter">'</span></span>).repeat(out().simplePath()).times(<span class="integer">2</span>). where(out().as(<span class="string"><span class="delimiter">'</span><span class="content">a</span><span class="delimiter">'</span></span>)).path() <span class="invisible">//</span><b class="conum">1</b><span class="invisible">\</span> -==>[<span class="error"> </span>[<span class="integer">34</span>mv[a],<span class="error"> </span>[<span class="integer">34</span>mv[b],<span class="error"> </span>[<span class="integer">34</span>mv[c]] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[b],<span class="error"> </span>[<span class="integer">34</span>mv[c],<span class="error"> </span>[<span class="integer">34</span>mv[a]] -==>[<span class="error"> </span>[<span class="integer">34</span>mv[c],<span class="error"> </span>[<span class="integer">34</span>mv[a],<span class="error"> </span>[<span class="integer">34</span>mv[b]] +==>[v[a],v[b],v[c]] +==>[v[b],v[c],v[a]] +==>[v[c],v[a],v[b]] gremlin> g.V().as(<span class="string"><span class="delimiter">'</span><span class="content">a</span><span class="delimiter">'</span></span>).repeat(out().simplePath()).times(<span class="integer">2</span>). where(out().as(<span class="string"><span class="delimiter">'</span><span class="content">a</span><span class="delimiter">'</span></span>)).path(). dedup().by(unfold().order().by(id).dedup().fold()) <span class="invisible">//</span><b class="conum">2</b><span class="invisible">\</span> -==>[<span class="error"> </span>[<span class="integer">34</span>mv[a],<span class="error"> </span>[<span class="integer">34</span>mv[b],<span class="error"> </span>[<span class="integer">34</span>mv[c]]</code></pre> +==>[v[a],v[b],v[c]]</code></pre> </div> </div> </div> @@ -2879,10 +2879,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-1546971185-3" type="radio" name="radio-set-1546971185-3" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971185-3" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971185-4" type="radio" name="radio-set-1546971185-3" class="tab-selector-2" /> - <label for="tab-1546971185-4" class="tab-label-2">groovy</label> + <input id="tab-1552405912-3" type="radio" name="radio-set-1552405912-3" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405912-3" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405912-4" type="radio" name="radio-set-1552405912-3" class="tab-selector-2" /> + <label for="tab-1552405912-4" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -2945,10 +2945,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-1546971185-5" type="radio" name="radio-set-1546971185-5" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971185-5" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971185-6" type="radio" name="radio-set-1546971185-5" class="tab-selector-2" /> - <label for="tab-1546971185-6" class="tab-label-2">groovy</label> + <input id="tab-1552405912-5" type="radio" name="radio-set-1552405912-5" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405912-5" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405912-6" type="radio" name="radio-set-1552405912-5" class="tab-selector-2" /> + <label for="tab-1552405912-6" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -2956,7 +2956,7 @@ outgoing edges, in the modern graph?</p> <pre class="CodeRay highlight"><code data-lang="groovy">gremlin> g.V().as(<span class="string"><span class="delimiter">'</span><span class="content">a</span><span class="delimiter">'</span></span>).repeat(both().simplePath()).emit(loops().is(gt(<span class="integer">1</span>))). both().where(eq(<span class="string"><span class="delimiter">'</span><span class="content">a</span><span class="delimiter">'</span></span>)).path(). dedup().by(unfold().order().by(id).dedup().fold()) -==>[<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">3</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">4</span>],<span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>]]</code></pre> +==>[v[<span class="integer">1</span>],v[<span class="integer">3</span>],v[<span class="integer">4</span>],v[<span class="integer">1</span>]]</code></pre> </div> </div> </div> @@ -2986,10 +2986,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-1546971185-7" type="radio" name="radio-set-1546971185-7" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971185-7" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971185-8" type="radio" name="radio-set-1546971185-7" class="tab-selector-2" /> - <label for="tab-1546971185-8" class="tab-label-2">groovy</label> + <input id="tab-1552405912-7" type="radio" name="radio-set-1552405912-7" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405912-7" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405912-8" type="radio" name="radio-set-1552405912-7" class="tab-selector-2" /> + <label for="tab-1552405912-8" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -3085,10 +3085,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-1546971263-1" type="radio" name="radio-set-1546971263-1" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971263-1" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971263-2" type="radio" name="radio-set-1546971263-1" class="tab-selector-2" /> - <label for="tab-1546971263-2" class="tab-label-2">groovy</label> + <input id="tab-1552405980-1" type="radio" name="radio-set-1552405980-1" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405980-1" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405980-2" type="radio" name="radio-set-1552405980-1" class="tab-selector-2" /> + <label for="tab-1552405980-2" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -3116,10 +3116,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-1546971263-3" type="radio" name="radio-set-1546971263-3" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971263-3" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971263-4" type="radio" name="radio-set-1546971263-3" class="tab-selector-2" /> - <label for="tab-1546971263-4" class="tab-label-2">groovy</label> + <input id="tab-1552405980-3" type="radio" name="radio-set-1552405980-3" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405980-3" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405980-4" type="radio" name="radio-set-1552405980-3" class="tab-selector-2" /> + <label for="tab-1552405980-4" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -3182,10 +3182,10 @@ contain duplicate.</p> that uses less memory might look like this:</p> </div> <section class="tabs tabs-2"> - <input id="tab-1546971263-5" type="radio" name="radio-set-1546971263-5" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971263-5" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971263-6" type="radio" name="radio-set-1546971263-5" class="tab-selector-2" /> - <label for="tab-1546971263-6" class="tab-label-2">groovy</label> + <input id="tab-1552405980-5" type="radio" name="radio-set-1552405980-5" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405980-5" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405980-6" type="radio" name="radio-set-1552405980-5" class="tab-selector-2" /> + <label for="tab-1552405980-6" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -3254,10 +3254,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-1546971263-7" type="radio" name="radio-set-1546971263-7" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971263-7" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971263-8" type="radio" name="radio-set-1546971263-7" class="tab-selector-2" /> - <label for="tab-1546971263-8" class="tab-label-2">groovy</label> + <input id="tab-1552405980-7" type="radio" name="radio-set-1552405980-7" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405980-7" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405980-8" type="radio" name="radio-set-1552405980-7" class="tab-selector-2" /> + <label for="tab-1552405980-8" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -3306,10 +3306,10 @@ The previous examples invoke traversal s as a performance optimization.</p> </div> <section class="tabs tabs-2"> - <input id="tab-1546971263-9" type="radio" name="radio-set-1546971263-9" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971263-9" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971263-10" type="radio" name="radio-set-1546971263-9" class="tab-selector-2" /> - <label for="tab-1546971263-10" class="tab-label-2">groovy</label> + <input id="tab-1552405980-9" type="radio" name="radio-set-1552405980-9" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405980-9" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405980-10" type="radio" name="radio-set-1552405980-9" class="tab-selector-2" /> + <label for="tab-1552405980-10" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -3365,10 +3365,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-1546971263-11" type="radio" name="radio-set-1546971263-11" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971263-11" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971263-12" type="radio" name="radio-set-1546971263-11" class="tab-selector-2" /> - <label for="tab-1546971263-12" class="tab-label-2">groovy</label> + <input id="tab-1552405980-11" type="radio" name="radio-set-1552405980-11" class="tab-selector-1" checked="checked" /> + <label for="tab-1552405980-11" class="tab-label-1">console (groovy)</label> + <input id="tab-1552405980-12" type="radio" name="radio-set-1552405980-11" class="tab-selector-2" /> + <label for="tab-1552405980-12" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -3412,20 +3412,20 @@ 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-1546971345-1" type="radio" name="radio-set-1546971345-1" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971345-1" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971345-2" type="radio" name="radio-set-1546971345-1" class="tab-selector-2" /> - <label for="tab-1546971345-2" class="tab-label-2">groovy</label> + <input id="tab-1552406059-1" type="radio" name="radio-set-1552406059-1" class="tab-selector-1" checked="checked" /> + <label for="tab-1552406059-1" class="tab-label-1">console (groovy)</label> + <input id="tab-1552406059-2" type="radio" name="radio-set-1552406059-1" class="tab-selector-2" /> + <label for="tab-1552406059-2" 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.addV(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).property(<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">vadas</span><span class="delimiter">'</span></span>).property(<span class="string"><span class="delimiter">'</span><span class="content">age</span><span class="delimiter">'</span></span>, <span class="integer">27</span>) -==><span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">13</span>] +==>v[<span class="integer">13</span>] gremlin> g.addV(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).property(<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">vadas</span><span class="delimiter">'</span></span>).property(<span class="string"><span class="delimiter">'</span><span class="content">age</span><span class="delimiter">'</span></span>, <span class="integer">22</span>) <span class="comment">// not a duplicate because "age" value</span> -==><span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">16</span>] +==>v[<span class="integer">16</span>] gremlin> g.addV(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).property(<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>).property(<span class="string"><span class="delimiter">'</span><span class="content">age</span><span class="delimiter">'</span></span>, <span class="integer">29</span>) -==><span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">19</span>] +==>v[<span class="integer">19</span>] gremlin> g.V().hasLabel(<span class="string"><span class="delimiter">"</span><span class="content">person</span><span class="delimiter">"</span></span>). group(). by(values(<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">age</span><span class="delimiter">"</span></span>).fold()). @@ -3461,10 +3461,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-1546971345-3" type="radio" name="radio-set-1546971345-3" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971345-3" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971345-4" type="radio" name="radio-set-1546971345-3" class="tab-selector-2" /> - <label for="tab-1546971345-4" class="tab-label-2">groovy</label> + <input id="tab-1552406059-3" type="radio" name="radio-set-1552406059-3" class="tab-selector-1" checked="checked" /> + <label for="tab-1552406059-3" class="tab-label-1">console (groovy)</label> + <input id="tab-1552406059-4" type="radio" name="radio-set-1552406059-3" class="tab-selector-2" /> + <label for="tab-1552406059-4" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -3513,10 +3513,10 @@ be created with the same properties and follows:</p> </div> <section class="tabs tabs-2"> - <input id="tab-1546971381-1" type="radio" name="radio-set-1546971381-1" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971381-1" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971381-2" type="radio" name="radio-set-1546971381-1" class="tab-selector-2" /> - <label for="tab-1546971381-2" class="tab-label-2">groovy</label> + <input id="tab-1552406094-1" type="radio" name="radio-set-1552406094-1" class="tab-selector-1" checked="checked" /> + <label for="tab-1552406094-1" class="tab-label-1">console (groovy)</label> + <input id="tab-1552406094-2" type="radio" name="radio-set-1552406094-1" class="tab-selector-2" /> + <label for="tab-1552406094-2" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -3548,10 +3548,10 @@ follows:</p> the "peter" vertex in a single traversal:</p> </div> <section class="tabs tabs-2"> - <input id="tab-1546971381-3" type="radio" name="radio-set-1546971381-3" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971381-3" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971381-4" type="radio" name="radio-set-1546971381-3" class="tab-selector-2" /> - <label for="tab-1546971381-4" class="tab-label-2">groovy</label> + <input id="tab-1552406094-3" type="radio" name="radio-set-1552406094-3" class="tab-selector-1" checked="checked" /> + <label for="tab-1552406094-3" class="tab-label-1">console (groovy)</label> + <input id="tab-1552406094-4" type="radio" name="radio-set-1552406094-3" class="tab-selector-2" /> + <label for="tab-1552406094-4" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -3622,10 +3622,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-1546971420-1" type="radio" name="radio-set-1546971420-1" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971420-1" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971420-2" type="radio" name="radio-set-1546971420-1" class="tab-selector-2" /> - <label for="tab-1546971420-2" class="tab-label-2">groovy</label> + <input id="tab-1552406130-1" type="radio" name="radio-set-1552406130-1" class="tab-selector-1" checked="checked" /> + <label for="tab-1552406130-1" class="tab-label-1">console (groovy)</label> + <input id="tab-1552406130-2" type="radio" name="radio-set-1552406130-1" class="tab-selector-2" /> + <label for="tab-1552406130-2" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -3656,10 +3656,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-1546971420-3" type="radio" name="radio-set-1546971420-3" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971420-3" class="tab-label-1">console (groovy)</label> - <input id="tab-1546971420-4" type="radio" name="radio-set-1546971420-3" class="tab-selector-2" /> - <label for="tab-1546971420-4" class="tab-label-2">groovy</label> + <input id="tab-1552406130-3" type="radio" name="radio-set-1552406130-3" class="tab-selector-1" checked="checked" /> + <label for="tab-1552406130-3" class="tab-label-1">console (groovy)</label> + <input id="tab-1552406130-4" type="radio" name="radio-set-1552406130-3" class="tab-selector-2" /> + <label for="tab-1552406130-4" class="tab-label-2">groovy</label> <div class="tabcontent"> <div class="tabcontent-1"> <div class="listingblock"> @@ -3670,14 +3670,14 @@ entire operation can occur in a single t addV(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>). property(<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>). property(<span class="string"><span class="delimiter">'</span><span class="content">age</span><span class="delimiter">'</span></span>,<span class="integer">29</span>)) -==><span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">1</span>] +==>v[<span class="integer">1</span>] gremlin> g.V().has(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>,<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">stephen</span><span class="delimiter">'</span></span>). fold(). coalesce(unfold(), addV(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>). property(<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">stephen</span><span class="delimiter">'</span></span>). property(<span class="string"><span class="delimiter">'</span><span class="content">age</span><span class="delimiter">'</span></span>,<span class="integer">34</span>)) -==><span class="error"> </span>[<span class="integer">34</span>mv[<span class="integer">13</span>]</code></pre> +==>v[<span class="integer">13</span>]</code></pre> </div> </div> </div> @@ -3714,10 +3714,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-1546971420-5" type="radio" name="radio-set-1546971420-5" class="tab-selector-1" checked="checked" /> - <label for="tab-1546971420-5" class="tab-label-1">console (groovy)</label>
[... 1885 lines stripped ...]
