You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2017/01/12 13:05:26 UTC
svn commit: r1778430 [4/4] - in /tinkerpop/site/docs/3.2.4-SNAPSHOT:
dev/provider/index.html recipes/index.html reference/index.html
tutorials/getting-started/index.html tutorials/the-gremlin-console/index.html
Modified: tinkerpop/site/docs/3.2.4-SNAPSHOT/tutorials/the-gremlin-console/index.html
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.2.4-SNAPSHOT/tutorials/the-gremlin-console/index.html?rev=1778430&r1=1778429&r2=1778430&view=diff
==============================================================================
--- tinkerpop/site/docs/3.2.4-SNAPSHOT/tutorials/the-gremlin-console/index.html (original)
+++ tinkerpop/site/docs/3.2.4-SNAPSHOT/tutorials/the-gremlin-console/index.html Thu Jan 12 13:05:26 2017
@@ -915,10 +915,8 @@ create an empty TinkerGraph as follows:<
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> graph = TinkerGraph.open() <span class="comment">//</span><b>(1)</b>
-==>tinkergraph[<span class="key">vertices</span>:<span class="integer">0</span> <span class="key">edges</span>:<span class="integer">0</span>]
-gremlin> g = graph.traversal() <span class="comment">//</span><b>(2)</b>
-==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">0</span> <span class="key">edges</span>:<span class="integer">0</span>], standard]</code></pre>
+<pre>graph = TinkerGraph.open() <b>(1)</b>
+g = graph.traversal() <b>(2)</b></pre>
</div>
</div>
<div class="colist arabic">
@@ -973,10 +971,8 @@ labels are defined and the "weight" edge
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> graph = TinkerFactory.createModern()
-==>tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">6</span>]
-gremlin> g = graph.traversal()
-==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">6</span>], standard]</code></pre>
+<pre>graph = TinkerFactory.createModern()
+g = graph.traversal()</pre>
</div>
</div>
<div class="paragraph">
@@ -989,11 +985,9 @@ However, if you find that a larger graph
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> graph = TinkerGraph.open()
-==>tinkergraph[<span class="key">vertices</span>:<span class="integer">0</span> <span class="key">edges</span>:<span class="integer">0</span>]
-gremlin> graph.io(gryo()).readGraph(<span class="string"><span class="delimiter">'</span><span class="content">data/grateful-dead.kryo</span><span class="delimiter">'</span></span>)
-gremlin> graph
-==>tinkergraph[<span class="key">vertices</span>:<span class="integer">808</span> <span class="key">edges</span>:<span class="integer">8049</span>]</code></pre>
+<pre>graph = TinkerGraph.open()
+graph.io(gryo()).readGraph('data/grateful-dead.kryo')
+graph</pre>
</div>
</div>
<div class="paragraph">
@@ -1026,41 +1020,7 @@ be accessed within the console itself wi
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> :help
-
-For information about Groovy, <span class="key">visit</span>:
- <span class="key">http</span>:<span class="comment">//groovy-lang.org</span>
-
-Available <span class="key">commands</span>:
- :help (:h ) Display <span class="local-variable">this</span> help message
- ? (:? ) Alias <span class="key">to</span>: :help
- :exit (:x ) Exit the shell
- :quit (:q ) Alias <span class="key">to</span>: :exit
- <span class="keyword">import</span> (:<span class="include">i</span> ) <span class="include">Import</span> <span class="include">a</span> <span class="include">class</span> <span class="include">into</span> <span class="include">the</span> <span class="include">namespace</span>
- :display (:d ) Display the current buffer
- :clear (:c ) Clear the buffer and reset the prompt counter
- :show (:S ) Show variables, classes or imports
- :inspect (:n ) Inspect a variable or the last result with the GUI object browser
- :purge (:p ) Purge variables, classes, imports or preferences
- :edit (:e ) Edit the current buffer
- :load (:l ) Load a file or <span class="predefined-type">URL</span> into the buffer
- . (:. ) Alias <span class="key">to</span>: :load
- :save (:s ) Save the current buffer to a file
- :record (:r ) Record the current session to a file
- :history (:H ) Display, manage and recall edit-line history
- :alias (:a ) Create an alias
- :register (:rc ) Register a <span class="keyword">new</span> command with the shell
- :doc (:D ) Open a browser window displaying the doc <span class="keyword">for</span> the argument
- :set (:= ) <span class="predefined-type">Set</span> (or list) preferences
- :uninstall (:- ) Uninstall a Maven library and its dependencies from the Gremlin Console
- :install (:+ ) Install a Maven library and its dependencies into the Gremlin Console
- :plugin (:pin) Manage plugins <span class="keyword">for</span> the Console
- :remote (:rem) Define a remote connection
- :submit (:> ) Send a Gremlin script to Gremlin Server
-
-For help on a specific command <span class="key">type</span>:
- :help command
-</code></pre>
+<pre>:help</pre>
</div>
</div>
<div class="paragraph">
@@ -1070,12 +1030,7 @@ addition to the ones provided by TinkerP
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> :help :remote
-
-<span class="key">usage</span>: :remote [current|connect <type-of-remote> [<args>]|config <args>|list|next|prev|choose <index>|close]
-
-Define and manage remote connections to use <span class="keyword">in</span> conjunction with the :submit command, which will send Gremlin scripts to the specified remote agent <span class="keyword">for</span> processing.
-</code></pre>
+<pre>:help :remote</pre>
</div>
</div>
<div class="paragraph">
@@ -1190,8 +1145,7 @@ the IDE and execute it in the console an
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> g.V(<span class="integer">1</span>).outE().group().by(label).by(inV())
-==>[<span class="key">created</span>:v[<span class="integer">3</span>],<span class="key">knows</span>:v[<span class="integer">2</span>]]</code></pre>
+<pre>g.V(1).outE().group().by(label).by(inV())</pre>
</div>
</div>
<div class="paragraph">
@@ -1204,9 +1158,7 @@ detects that type it steps through each
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> g.V(<span class="integer">1</span>).outE().group().by(label).by(inV()).next()
-==>created=v[<span class="integer">3</span>]
-==>knows=v[<span class="integer">2</span>]</code></pre>
+<pre>g.V(1).outE().group().by(label).by(inV()).next()</pre>
</div>
</div>
<div class="paragraph">
@@ -1217,10 +1169,8 @@ when you want to work with a <code>Trave
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> t = g.V(<span class="integer">1</span>).outE().group().by(label).by(inV());<span class="predefined-constant">null</span>
-gremlin> t.next()
-==>created=v[<span class="integer">3</span>]
-==>knows=v[<span class="integer">2</span>]</code></pre>
+<pre>t = g.V(1).outE().group().by(label).by(inV());null
+t.next()</pre>
</div>
</div>
<div class="admonitionblock tip">
@@ -1273,9 +1223,7 @@ can remedy that by adding <code>fold()</
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> g.V(<span class="integer">1</span>).outE().group().by(label).by(inV().fold()).next()
-==>created=[v[<span class="integer">3</span>]]
-==>knows=[v[<span class="integer">2</span>], v[<span class="integer">4</span>]]</code></pre>
+<pre>g.V(1).outE().group().by(label).by(inV().fold()).next()</pre>
</div>
</div>
<div class="paragraph">
@@ -1306,9 +1254,8 @@ as follows:</p>
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-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>).drop()
-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>).count()
-==><span class="integer">0</span></code></pre>
+<pre>g.V().has('name','marko').drop()
+g.V().has('name','marko').count()</pre>
</div>
</div>
<div class="paragraph">
@@ -1384,16 +1331,10 @@ the data of the "person" vertices in the
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> graph = TinkerFactory.createTheCrew()
-==>tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">14</span>]
-gremlin> g = graph.traversal()
-==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">14</span>], standard]
-gremlin>
-gremlin> g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).valueMap()
-==>[<span class="key">name</span>:[marko],<span class="key">location</span>:[san diego,santa cruz,brussels,santa fe]]
-==>[<span class="key">name</span>:[stephen],<span class="key">location</span>:[centreville,dulles,purcellville]]
-==>[<span class="key">name</span>:[matthias],<span class="key">location</span>:[bremen,baltimore,oakland,seattle]]
-==>[<span class="key">name</span>:[daniel],<span class="key">location</span>:[spremberg,kaiserslautern,aachen]]</code></pre>
+<pre>graph = TinkerFactory.createTheCrew()
+g = graph.traversal()
+
+g.V().hasLabel('person').valueMap()</pre>
</div>
</div>
<div class="paragraph">
@@ -1404,23 +1345,9 @@ has <a href="http://tinkerpop.apache.org
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).as(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).
- properties(<span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span>).as(<span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span>).
- select(<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">location</span><span class="delimiter">'</span></span>).by(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>).by(valueMap())
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:[<span class="key">startTime</span>:<span class="integer">1997</span>,<span class="key">endTime</span>:<span class="integer">2001</span>]]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:[<span class="key">startTime</span>:<span class="integer">2001</span>,<span class="key">endTime</span>:<span class="integer">2004</span>]]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:[<span class="key">startTime</span>:<span class="integer">2004</span>,<span class="key">endTime</span>:<span class="integer">2005</span>]]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:[<span class="key">startTime</span>:<span class="integer">2005</span>]]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:[<span class="key">startTime</span>:<span class="integer">1990</span>,<span class="key">endTime</span>:<span class="integer">2000</span>]]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:[<span class="key">startTime</span>:<span class="integer">2000</span>,<span class="key">endTime</span>:<span class="integer">2006</span>]]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:[<span class="key">startTime</span>:<span class="integer">2006</span>]]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:[<span class="key">startTime</span>:<span class="integer">2004</span>,<span class="key">endTime</span>:<span class="integer">2007</span>]]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:[<span class="key">startTime</span>:<span class="integer">2007</span>,<span class="key">endTime</span>:<span class="integer">2011</span>]]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:[<span class="key">startTime</span>:<span class="integer">2011</span>,<span class="key">endTime</span>:<span class="integer">2014</span>]]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:[<span class="key">startTime</span>:<span class="integer">2014</span>]]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:[<span class="key">startTime</span>:<span class="integer">1982</span>,<span class="key">endTime</span>:<span class="integer">2005</span>]]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:[<span class="key">startTime</span>:<span class="integer">2005</span>,<span class="key">endTime</span>:<span class="integer">2009</span>]]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:[<span class="key">startTime</span>:<span class="integer">2009</span>]]</code></pre>
+<pre>g.V().hasLabel('person').as('person').
+ properties('location').as('location').
+ select('person','location').by('name').by(valueMap())</pre>
</div>
</div>
<div class="paragraph">
@@ -1440,10 +1367,9 @@ the "person" vertices, as this will be t
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> firstYear = g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).
- local(properties(<span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span>).values(<span class="string"><span class="delimiter">'</span><span class="content">startTime</span><span class="delimiter">'</span></span>).min()).
- max().next()
-==><span class="integer">2004</span></code></pre>
+<pre>firstYear = g.V().hasLabel('person').
+ local(properties('location').values('startTime').min()).
+ max().next()</pre>
</div>
</div>
<div class="paragraph">
@@ -1473,25 +1399,13 @@ settings in <code>bin/gremlin.sh</code>
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> firstYear = g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).
- local(properties(<span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span>).values(<span class="string"><span class="delimiter">'</span><span class="content">startTime</span><span class="delimiter">'</span></span>).min()).
- max().next()
-==><span class="integer">2004</span>
-gremlin> l = g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).as(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).
- properties(<span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span>).or(has(<span class="string"><span class="delimiter">'</span><span class="content">endTime</span><span class="delimiter">'</span></span>,gt(firstYear)),hasNot(<span class="string"><span class="delimiter">'</span><span class="content">endTime</span><span class="delimiter">'</span></span>)).as(<span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span>).
- valueMap().as(<span class="string"><span class="delimiter">'</span><span class="content">times</span><span class="delimiter">'</span></span>).
- select(<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">location</span><span class="delimiter">'</span></span>,<span class="string"><span class="delimiter">'</span><span class="content">times</span><span class="delimiter">'</span></span>).by(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>).by(value).by().toList()
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:brussels,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2004</span>,<span class="key">endTime</span>:<span class="integer">2005</span>]]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:santa fe,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2005</span>]]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:dulles,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2000</span>,<span class="key">endTime</span>:<span class="integer">2006</span>]]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:purcellville,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2006</span>]]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:bremen,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2004</span>,<span class="key">endTime</span>:<span class="integer">2007</span>]]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:baltimore,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2007</span>,<span class="key">endTime</span>:<span class="integer">2011</span>]]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:oakland,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2011</span>,<span class="key">endTime</span>:<span class="integer">2014</span>]]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:seattle,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2014</span>]]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:spremberg,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">1982</span>,<span class="key">endTime</span>:<span class="integer">2005</span>]]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:kaiserslautern,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2005</span>,<span class="key">endTime</span>:<span class="integer">2009</span>]]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:aachen,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2009</span>]]</code></pre>
+<pre>firstYear = g.V().hasLabel('person').
+ local(properties('location').values('startTime').min()).
+ max().next()
+l = g.V().hasLabel('person').as('person').
+ properties('location').or(has('endTime',gt(firstYear)),hasNot('endTime')).as('location').
+ valueMap().as('times').
+ select('person','location','times').by('name').by(value).by().toList()</pre>
</div>
</div>
<div class="paragraph">
@@ -1502,80 +1416,16 @@ see for your rows and columns style outp
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> firstYear = g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).
- local(properties(<span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span>).values(<span class="string"><span class="delimiter">'</span><span class="content">startTime</span><span class="delimiter">'</span></span>).min()).
- max().next()
-==><span class="integer">2004</span>
-gremlin> l = g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).as(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).
- properties(<span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span>).or(has(<span class="string"><span class="delimiter">'</span><span class="content">endTime</span><span class="delimiter">'</span></span>,gt(firstYear)),hasNot(<span class="string"><span class="delimiter">'</span><span class="content">endTime</span><span class="delimiter">'</span></span>)).as(<span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span>).
- valueMap().as(<span class="string"><span class="delimiter">'</span><span class="content">times</span><span class="delimiter">'</span></span>).
- select(<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">location</span><span class="delimiter">'</span></span>,<span class="string"><span class="delimiter">'</span><span class="content">times</span><span class="delimiter">'</span></span>).by(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>).by(value).by().toList()
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:brussels,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2004</span>,<span class="key">endTime</span>:<span class="integer">2005</span>]]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:santa fe,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2005</span>]]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:dulles,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2000</span>,<span class="key">endTime</span>:<span class="integer">2006</span>]]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:purcellville,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2006</span>]]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:bremen,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2004</span>,<span class="key">endTime</span>:<span class="integer">2007</span>]]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:baltimore,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2007</span>,<span class="key">endTime</span>:<span class="integer">2011</span>]]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:oakland,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2011</span>,<span class="key">endTime</span>:<span class="integer">2014</span>]]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:seattle,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2014</span>]]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:spremberg,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">1982</span>,<span class="key">endTime</span>:<span class="integer">2005</span>]]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:kaiserslautern,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2005</span>,<span class="key">endTime</span>:<span class="integer">2009</span>]]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:aachen,<span class="key">times</span>:[<span class="key">startTime</span>:<span class="integer">2009</span>]]
-gremlin> l.collect{
- row->((<span class="predefined-type">Math</span>.max(row.times.startTime,firstYear))..((row.times.endTime?:<span class="integer">2017</span>)-<span class="integer">1</span>)).collect{
- year->[<span class="key">person</span>:row.person,<span class="key">location</span>:row.location,<span class="key">year</span>:year]}}.flatten()
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:brussels,<span class="key">year</span>:<span class="integer">2004</span>]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:santa fe,<span class="key">year</span>:<span class="integer">2005</span>]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:santa fe,<span class="key">year</span>:<span class="integer">2006</span>]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:santa fe,<span class="key">year</span>:<span class="integer">2007</span>]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:santa fe,<span class="key">year</span>:<span class="integer">2008</span>]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:santa fe,<span class="key">year</span>:<span class="integer">2009</span>]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:santa fe,<span class="key">year</span>:<span class="integer">2010</span>]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:santa fe,<span class="key">year</span>:<span class="integer">2011</span>]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:santa fe,<span class="key">year</span>:<span class="integer">2012</span>]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:santa fe,<span class="key">year</span>:<span class="integer">2013</span>]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:santa fe,<span class="key">year</span>:<span class="integer">2014</span>]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:santa fe,<span class="key">year</span>:<span class="integer">2015</span>]
-==>[<span class="key">person</span>:marko,<span class="key">location</span>:santa fe,<span class="key">year</span>:<span class="integer">2016</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:dulles,<span class="key">year</span>:<span class="integer">2004</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:dulles,<span class="key">year</span>:<span class="integer">2005</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:purcellville,<span class="key">year</span>:<span class="integer">2006</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:purcellville,<span class="key">year</span>:<span class="integer">2007</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:purcellville,<span class="key">year</span>:<span class="integer">2008</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:purcellville,<span class="key">year</span>:<span class="integer">2009</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:purcellville,<span class="key">year</span>:<span class="integer">2010</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:purcellville,<span class="key">year</span>:<span class="integer">2011</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:purcellville,<span class="key">year</span>:<span class="integer">2012</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:purcellville,<span class="key">year</span>:<span class="integer">2013</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:purcellville,<span class="key">year</span>:<span class="integer">2014</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:purcellville,<span class="key">year</span>:<span class="integer">2015</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">location</span>:purcellville,<span class="key">year</span>:<span class="integer">2016</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:bremen,<span class="key">year</span>:<span class="integer">2004</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:bremen,<span class="key">year</span>:<span class="integer">2005</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:bremen,<span class="key">year</span>:<span class="integer">2006</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:baltimore,<span class="key">year</span>:<span class="integer">2007</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:baltimore,<span class="key">year</span>:<span class="integer">2008</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:baltimore,<span class="key">year</span>:<span class="integer">2009</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:baltimore,<span class="key">year</span>:<span class="integer">2010</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:oakland,<span class="key">year</span>:<span class="integer">2011</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:oakland,<span class="key">year</span>:<span class="integer">2012</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:oakland,<span class="key">year</span>:<span class="integer">2013</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:seattle,<span class="key">year</span>:<span class="integer">2014</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:seattle,<span class="key">year</span>:<span class="integer">2015</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">location</span>:seattle,<span class="key">year</span>:<span class="integer">2016</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:spremberg,<span class="key">year</span>:<span class="integer">2004</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:kaiserslautern,<span class="key">year</span>:<span class="integer">2005</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:kaiserslautern,<span class="key">year</span>:<span class="integer">2006</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:kaiserslautern,<span class="key">year</span>:<span class="integer">2007</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:kaiserslautern,<span class="key">year</span>:<span class="integer">2008</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:aachen,<span class="key">year</span>:<span class="integer">2009</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:aachen,<span class="key">year</span>:<span class="integer">2010</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:aachen,<span class="key">year</span>:<span class="integer">2011</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:aachen,<span class="key">year</span>:<span class="integer">2012</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:aachen,<span class="key">year</span>:<span class="integer">2013</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:aachen,<span class="key">year</span>:<span class="integer">2014</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:aachen,<span class="key">year</span>:<span class="integer">2015</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">location</span>:aachen,<span class="key">year</span>:<span class="integer">2016</span>]</code></pre>
+<pre>firstYear = g.V().hasLabel('person').
+ local(properties('location').values('startTime').min()).
+ max().next()
+l = g.V().hasLabel('person').as('person').
+ properties('location').or(has('endTime',gt(firstYear)),hasNot('endTime')).as('location').
+ valueMap().as('times').
+ select('person','location','times').by('name').by(value).by().toList()
+l.collect{
+ row->((Math.max(row.times.startTime,firstYear))..((row.times.endTime?:2017)-1)).collect{
+ year->[person:row.person,location:row.location,year:year]}}.flatten()</pre>
</div>
</div>
<div class="paragraph">
@@ -1598,10 +1448,8 @@ you wish to use. To do this, you need to
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> <span class="keyword">import</span> <span class="include">java.time.Year</span>
-==>groovy.grape.Grape, org.apache.commons.configuration.*, org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.*, org.apache.tinkerpop.gremlin.process.computer.bulkloading.*, org.apache.tinkerpop.gremlin.process.computer.traversal.*, org.apache.tinkerpop.gremlin.util.function.*, org.apache.tinkerpop.gremlin.structure.io.*, org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.*, groovy.sql.*, org.apache.tinkerpop.gremlin.groovy.loaders.*, groovy.json.*, org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.*, org.apache.tinkerpop.gremlin.structure.*, org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.*, org.apache.tinkerpop.gremlin.process.traversal.engine.*, org.apache.tinkerpop.gremlin.groovy.jsr223.*, org.apache.tinkerpop.gremlin.structure.io.gryo.*, org.apache.tinkerpop.gremlin.process.remote.*, org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.*, org.apache.tinkerpop.gremlin.process.traversal.step.util.event.*,
org.apache.tinkerpop.gremlin.util.*, org.apache.tinkerpop.gremlin.structure.util.*, org.apache.tinkerpop.gremlin.structure.io.graphml.*, org.apache.tinkerpop.gremlin.process.computer.*, org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.*, org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.*, org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.*, org.apache.tinkerpop.gremlin.structure.util.detached.*, org.apache.tinkerpop.gremlin.structure.io.graphson.*, org.apache.tinkerpop.gremlin.process.traversal.*, org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.*, org.apache.tinkerpop.gremlin.process.computer.bulkdumping.*, org.apache.tinkerpop.gremlin.structure.util.empty.*, org.apache.tinkerpop.gremlin.process.traversal.util.*, org.apache.tinkerpop.gremlin.groovy.function.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.SackFunctions.Barrier.*, <span class="direct
ive">static</span> org.apache.tinkerpop.gremlin.util.TimeUtil.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.structure.Direction.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.Pop.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent.Pick.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.P.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.Order.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.structure.io.IoCore.*, <span class="directive">stati
c</span> org.apache.tinkerpop.gremlin.process.traversal.Scope.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.structure.Column.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.computer.Computer.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.structure.T.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.Operator.*, org.apache.tinkerpop.gremlin.driver.ser.*, org.apache.tinkerpop.gremlin.driver.message.*, org.apache.tinkerpop.gremlin.driver.exception.*, org.apache.tinkerpop.gremlin.driver.remote.*, org.apache.tinkerpop.gremlin.driver.*, <span class="directive">static</span> groovyx.gbench.BenchmarkStaticExtension.*, <span class="directive">static</span> groovyx.gprof.ProfileStaticExtension.*, groovyx.gprof.*, groovyx.gbench.*, org.apache.tinkerpop.gremlin.giraph.process.computer.*, org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat, org.apache.hadoop.hdfs.*, org.apa
che.hadoop.mapreduce.lib.input.*, org.apache.tinkerpop.gremlin.hadoop.structure.io.*, org.apache.tinkerpop.gremlin.hadoop.process.computer.mapreduce.*, org.apache.hadoop.conf.*, org.apache.hadoop.util.*, org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.*, org.apache.tinkerpop.gremlin.hadoop.structure.*, org.apache.hadoop.io.compress.*, org.apache.tinkerpop.gremlin.hadoop.*, org.apache.tinkerpop.gremlin.hadoop.structure.io.graphson.*, org.apache.hadoop.io.*, org.apache.log4j.*, org.apache.hadoop.mapreduce.lib.output.*, org.apache.tinkerpop.gremlin.hadoop.structure.io.script.*, org.apache.tinkerpop.gremlin.hadoop.structure.util.*, org.apache.hadoop.fs.*, org.apache.tinkerpop.gremlin.groovy.plugin.dsl.credential.CredentialGraph, <span class="directive">static</span> org.apache.tinkerpop.gremlin.groovy.plugin.dsl.credential.CredentialGraph.*, org.apache.tinkerpop.gremlin.neo4j.structure.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.neo4j.process.traversal.La
belP.*, org.apache.tinkerpop.gremlin.spark.process.computer.*, org.apache.tinkerpop.gremlin.spark.structure.*, org.apache.tinkerpop.gremlin.spark.structure.io.*, org.apache.tinkerpop.gremlin.tinkergraph.structure.*, org.apache.tinkerpop.gremlin.tinkergraph.process.computer.*, java.time.Year
-gremlin> Year.now()
-==><span class="integer">2017</span></code></pre>
+<pre>import java.time.Year
+Year.now()</pre>
</div>
</div>
<div class="paragraph">
@@ -1610,71 +1458,13 @@ to produce the set of years to have for
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> <span class="keyword">import</span> <span class="include">java.time.Year</span>
-==>groovy.grape.Grape, org.apache.commons.configuration.*, org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.*, org.apache.tinkerpop.gremlin.process.computer.bulkloading.*, org.apache.tinkerpop.gremlin.process.computer.traversal.*, org.apache.tinkerpop.gremlin.util.function.*, org.apache.tinkerpop.gremlin.structure.io.*, org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.*, groovy.sql.*, org.apache.tinkerpop.gremlin.groovy.loaders.*, groovy.json.*, org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.*, org.apache.tinkerpop.gremlin.structure.*, org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.*, org.apache.tinkerpop.gremlin.process.traversal.engine.*, org.apache.tinkerpop.gremlin.groovy.jsr223.*, org.apache.tinkerpop.gremlin.structure.io.gryo.*, org.apache.tinkerpop.gremlin.process.remote.*, org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.*, org.apache.tinkerpop.gremlin.process.traversal.step.util.event.*,
org.apache.tinkerpop.gremlin.util.*, org.apache.tinkerpop.gremlin.structure.util.*, org.apache.tinkerpop.gremlin.structure.io.graphml.*, org.apache.tinkerpop.gremlin.process.computer.*, org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.*, org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.*, org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.*, org.apache.tinkerpop.gremlin.structure.util.detached.*, org.apache.tinkerpop.gremlin.structure.io.graphson.*, org.apache.tinkerpop.gremlin.process.traversal.*, org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.*, org.apache.tinkerpop.gremlin.process.computer.bulkdumping.*, org.apache.tinkerpop.gremlin.structure.util.empty.*, org.apache.tinkerpop.gremlin.process.traversal.util.*, org.apache.tinkerpop.gremlin.groovy.function.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.SackFunctions.Barrier.*, <span class="direct
ive">static</span> org.apache.tinkerpop.gremlin.util.TimeUtil.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.structure.Direction.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.Pop.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent.Pick.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.P.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.Order.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.structure.io.IoCore.*, <span class="directive">stati
c</span> org.apache.tinkerpop.gremlin.process.traversal.Scope.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.structure.Column.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.computer.Computer.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.structure.T.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.Operator.*, org.apache.tinkerpop.gremlin.driver.ser.*, org.apache.tinkerpop.gremlin.driver.message.*, org.apache.tinkerpop.gremlin.driver.exception.*, org.apache.tinkerpop.gremlin.driver.remote.*, org.apache.tinkerpop.gremlin.driver.*, <span class="directive">static</span> groovyx.gbench.BenchmarkStaticExtension.*, <span class="directive">static</span> groovyx.gprof.ProfileStaticExtension.*, groovyx.gprof.*, groovyx.gbench.*, org.apache.tinkerpop.gremlin.giraph.process.computer.*, org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat, org.apache.hadoop.hdfs.*, org.apa
che.hadoop.mapreduce.lib.input.*, org.apache.tinkerpop.gremlin.hadoop.structure.io.*, org.apache.tinkerpop.gremlin.hadoop.process.computer.mapreduce.*, org.apache.hadoop.conf.*, org.apache.hadoop.util.*, org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.*, org.apache.tinkerpop.gremlin.hadoop.structure.*, org.apache.hadoop.io.compress.*, org.apache.tinkerpop.gremlin.hadoop.*, org.apache.tinkerpop.gremlin.hadoop.structure.io.graphson.*, org.apache.hadoop.io.*, org.apache.log4j.*, org.apache.hadoop.mapreduce.lib.output.*, org.apache.tinkerpop.gremlin.hadoop.structure.io.script.*, org.apache.tinkerpop.gremlin.hadoop.structure.util.*, org.apache.hadoop.fs.*, org.apache.tinkerpop.gremlin.groovy.plugin.dsl.credential.CredentialGraph, <span class="directive">static</span> org.apache.tinkerpop.gremlin.groovy.plugin.dsl.credential.CredentialGraph.*, org.apache.tinkerpop.gremlin.neo4j.structure.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.neo4j.process.traversal.La
belP.*, org.apache.tinkerpop.gremlin.spark.process.computer.*, org.apache.tinkerpop.gremlin.spark.structure.*, org.apache.tinkerpop.gremlin.spark.structure.io.*, org.apache.tinkerpop.gremlin.tinkergraph.structure.*, org.apache.tinkerpop.gremlin.tinkergraph.process.computer.*, java.time.Year
-gremlin> firstYear = g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).
- local(properties(<span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span>).values(<span class="string"><span class="delimiter">'</span><span class="content">startTime</span><span class="delimiter">'</span></span>).min()).
- max().next()
-==><span class="integer">2004</span>
-gremlin> g.V().hasLabel(<span class="string"><span class="delimiter">"</span><span class="content">person</span><span class="delimiter">"</span></span>).as(<span class="string"><span class="delimiter">"</span><span class="content">person</span><span class="delimiter">"</span></span>).
- constant((firstYear..(Year.now().value)).toList()).unfold().as(<span class="string"><span class="delimiter">"</span><span class="content">year</span><span class="delimiter">"</span></span>).
- select(<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">year</span><span class="delimiter">'</span></span>).by(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>).by()
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2004</span>]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2005</span>]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2006</span>]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2007</span>]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2008</span>]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2009</span>]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2010</span>]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2011</span>]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2012</span>]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2013</span>]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2014</span>]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2015</span>]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2016</span>]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2017</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2004</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2005</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2006</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2007</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2008</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2009</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2010</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2011</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2012</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2013</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2014</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2015</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2016</span>]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2017</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2004</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2005</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2006</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2007</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2008</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2009</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2010</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2011</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2012</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2013</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2014</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2015</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2016</span>]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2017</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2004</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2005</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2006</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2007</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2008</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2009</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2010</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2011</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2012</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2013</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2014</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2015</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2016</span>]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2017</span>]</code></pre>
+<pre>import java.time.Year
+firstYear = g.V().hasLabel('person').
+ local(properties('location').values('startTime').min()).
+ max().next()
+g.V().hasLabel("person").as("person").
+ constant((firstYear..(Year.now().value)).toList()).unfold().as("year").
+ select('person','year').by('name').by()</pre>
</div>
</div>
<div class="paragraph">
@@ -1682,75 +1472,17 @@ gremlin> g.V().hasLabel(<span class="
</div>
<div class="listingblock">
<div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin> <span class="keyword">import</span> <span class="include">java.time.Year</span>
-==>groovy.grape.Grape, org.apache.commons.configuration.*, org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.*, org.apache.tinkerpop.gremlin.process.computer.bulkloading.*, org.apache.tinkerpop.gremlin.process.computer.traversal.*, org.apache.tinkerpop.gremlin.util.function.*, org.apache.tinkerpop.gremlin.structure.io.*, org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.*, groovy.sql.*, org.apache.tinkerpop.gremlin.groovy.loaders.*, groovy.json.*, org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.*, org.apache.tinkerpop.gremlin.structure.*, org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.*, org.apache.tinkerpop.gremlin.process.traversal.engine.*, org.apache.tinkerpop.gremlin.groovy.jsr223.*, org.apache.tinkerpop.gremlin.structure.io.gryo.*, org.apache.tinkerpop.gremlin.process.remote.*, org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.*, org.apache.tinkerpop.gremlin.process.traversal.step.util.event.*,
org.apache.tinkerpop.gremlin.util.*, org.apache.tinkerpop.gremlin.structure.util.*, org.apache.tinkerpop.gremlin.structure.io.graphml.*, org.apache.tinkerpop.gremlin.process.computer.*, org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.*, org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.*, org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.*, org.apache.tinkerpop.gremlin.structure.util.detached.*, org.apache.tinkerpop.gremlin.structure.io.graphson.*, org.apache.tinkerpop.gremlin.process.traversal.*, org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.*, org.apache.tinkerpop.gremlin.process.computer.bulkdumping.*, org.apache.tinkerpop.gremlin.structure.util.empty.*, org.apache.tinkerpop.gremlin.process.traversal.util.*, org.apache.tinkerpop.gremlin.groovy.function.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.SackFunctions.Barrier.*, <span class="direct
ive">static</span> org.apache.tinkerpop.gremlin.util.TimeUtil.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.structure.Direction.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.Pop.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent.Pick.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.P.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.Order.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.structure.io.IoCore.*, <span class="directive">stati
c</span> org.apache.tinkerpop.gremlin.process.traversal.Scope.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.structure.Column.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.computer.Computer.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.structure.T.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.process.traversal.Operator.*, org.apache.tinkerpop.gremlin.driver.ser.*, org.apache.tinkerpop.gremlin.driver.message.*, org.apache.tinkerpop.gremlin.driver.exception.*, org.apache.tinkerpop.gremlin.driver.remote.*, org.apache.tinkerpop.gremlin.driver.*, <span class="directive">static</span> groovyx.gbench.BenchmarkStaticExtension.*, <span class="directive">static</span> groovyx.gprof.ProfileStaticExtension.*, groovyx.gprof.*, groovyx.gbench.*, org.apache.tinkerpop.gremlin.giraph.process.computer.*, org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat, org.apache.hadoop.hdfs.*, org.apa
che.hadoop.mapreduce.lib.input.*, org.apache.tinkerpop.gremlin.hadoop.structure.io.*, org.apache.tinkerpop.gremlin.hadoop.process.computer.mapreduce.*, org.apache.hadoop.conf.*, org.apache.hadoop.util.*, org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.*, org.apache.tinkerpop.gremlin.hadoop.structure.*, org.apache.hadoop.io.compress.*, org.apache.tinkerpop.gremlin.hadoop.*, org.apache.tinkerpop.gremlin.hadoop.structure.io.graphson.*, org.apache.hadoop.io.*, org.apache.log4j.*, org.apache.hadoop.mapreduce.lib.output.*, org.apache.tinkerpop.gremlin.hadoop.structure.io.script.*, org.apache.tinkerpop.gremlin.hadoop.structure.util.*, org.apache.hadoop.fs.*, org.apache.tinkerpop.gremlin.groovy.plugin.dsl.credential.CredentialGraph, <span class="directive">static</span> org.apache.tinkerpop.gremlin.groovy.plugin.dsl.credential.CredentialGraph.*, org.apache.tinkerpop.gremlin.neo4j.structure.*, <span class="directive">static</span> org.apache.tinkerpop.gremlin.neo4j.process.traversal.La
belP.*, org.apache.tinkerpop.gremlin.spark.process.computer.*, org.apache.tinkerpop.gremlin.spark.structure.*, org.apache.tinkerpop.gremlin.spark.structure.io.*, org.apache.tinkerpop.gremlin.tinkergraph.structure.*, org.apache.tinkerpop.gremlin.tinkergraph.process.computer.*, java.time.Year
-gremlin> firstYear = g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).
- local(properties(<span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span>).values(<span class="string"><span class="delimiter">'</span><span class="content">startTime</span><span class="delimiter">'</span></span>).min()).
- max().next()
-==><span class="integer">2004</span>
-gremlin> g.V().hasLabel(<span class="string"><span class="delimiter">"</span><span class="content">person</span><span class="delimiter">"</span></span>).as(<span class="string"><span class="delimiter">"</span><span class="content">person</span><span class="delimiter">"</span></span>).
- constant((firstYear..(<span class="keyword">new</span> <span class="predefined-type">Date</span>().getYear() + <span class="integer">1900</span>)).toList()).unfold().as(<span class="string"><span class="delimiter">"</span><span class="content">year</span><span class="delimiter">"</span></span>).
- select(<span class="string"><span class="delimiter">"</span><span class="content">person</span><span class="delimiter">"</span></span>).coalesce(
- properties(<span class="string"><span class="delimiter">"</span><span class="content">location</span><span class="delimiter">"</span></span>).filter(values(<span class="string"><span class="delimiter">"</span><span class="content">startTime</span><span class="delimiter">"</span></span>).where(gte(<span class="string"><span class="delimiter">"</span><span class="content">year</span><span class="delimiter">"</span></span>))).
- order().by(<span class="string"><span class="delimiter">"</span><span class="content">startTime</span><span class="delimiter">"</span></span>).limit(<span class="integer">1</span>),
- properties(<span class="string"><span class="delimiter">"</span><span class="content">location</span><span class="delimiter">"</span></span>).hasNot(<span class="string"><span class="delimiter">"</span><span class="content">endTime</span><span class="delimiter">"</span></span>)).value().as(<span class="string"><span class="delimiter">"</span><span class="content">location</span><span class="delimiter">"</span></span>).
- select(<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">year</span><span class="delimiter">"</span></span>,<span class="string"><span class="delimiter">"</span><span class="content">location</span><span class="delimiter">"</span></span>).by(<span class="string"><span class="delimiter">"</span><span class="content">name</span><span class="delimiter">"</span></span>).by().by()
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2004</span>,<span class="key">location</span>:brussels]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2005</span>,<span class="key">location</span>:santa fe]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2006</span>,<span class="key">location</span>:santa fe]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2007</span>,<span class="key">location</span>:santa fe]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2008</span>,<span class="key">location</span>:santa fe]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2009</span>,<span class="key">location</span>:santa fe]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2010</span>,<span class="key">location</span>:santa fe]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2011</span>,<span class="key">location</span>:santa fe]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2012</span>,<span class="key">location</span>:santa fe]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2013</span>,<span class="key">location</span>:santa fe]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2014</span>,<span class="key">location</span>:santa fe]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2015</span>,<span class="key">location</span>:santa fe]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2016</span>,<span class="key">location</span>:santa fe]
-==>[<span class="key">person</span>:marko,<span class="key">year</span>:<span class="integer">2017</span>,<span class="key">location</span>:santa fe]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2004</span>,<span class="key">location</span>:purcellville]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2005</span>,<span class="key">location</span>:purcellville]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2006</span>,<span class="key">location</span>:purcellville]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2007</span>,<span class="key">location</span>:purcellville]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2008</span>,<span class="key">location</span>:purcellville]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2009</span>,<span class="key">location</span>:purcellville]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2010</span>,<span class="key">location</span>:purcellville]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2011</span>,<span class="key">location</span>:purcellville]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2012</span>,<span class="key">location</span>:purcellville]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2013</span>,<span class="key">location</span>:purcellville]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2014</span>,<span class="key">location</span>:purcellville]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2015</span>,<span class="key">location</span>:purcellville]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2016</span>,<span class="key">location</span>:purcellville]
-==>[<span class="key">person</span>:stephen,<span class="key">year</span>:<span class="integer">2017</span>,<span class="key">location</span>:purcellville]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2004</span>,<span class="key">location</span>:bremen]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2005</span>,<span class="key">location</span>:baltimore]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2006</span>,<span class="key">location</span>:baltimore]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2007</span>,<span class="key">location</span>:baltimore]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2008</span>,<span class="key">location</span>:oakland]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2009</span>,<span class="key">location</span>:oakland]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2010</span>,<span class="key">location</span>:oakland]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2011</span>,<span class="key">location</span>:oakland]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2012</span>,<span class="key">location</span>:seattle]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2013</span>,<span class="key">location</span>:seattle]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2014</span>,<span class="key">location</span>:seattle]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2015</span>,<span class="key">location</span>:seattle]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2016</span>,<span class="key">location</span>:seattle]
-==>[<span class="key">person</span>:matthias,<span class="key">year</span>:<span class="integer">2017</span>,<span class="key">location</span>:seattle]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2004</span>,<span class="key">location</span>:kaiserslautern]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2005</span>,<span class="key">location</span>:kaiserslautern]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2006</span>,<span class="key">location</span>:aachen]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2007</span>,<span class="key">location</span>:aachen]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2008</span>,<span class="key">location</span>:aachen]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2009</span>,<span class="key">location</span>:aachen]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2010</span>,<span class="key">location</span>:aachen]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2011</span>,<span class="key">location</span>:aachen]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2012</span>,<span class="key">location</span>:aachen]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2013</span>,<span class="key">location</span>:aachen]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2014</span>,<span class="key">location</span>:aachen]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2015</span>,<span class="key">location</span>:aachen]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2016</span>,<span class="key">location</span>:aachen]
-==>[<span class="key">person</span>:daniel,<span class="key">year</span>:<span class="integer">2017</span>,<span class="key">location</span>:aachen]</code></pre>
+<pre>import java.time.Year
+firstYear = g.V().hasLabel('person').
+ local(properties('location').values('startTime').min()).
+ max().next()
+g.V().hasLabel("person").as("person").
+ constant((firstYear..(new Date().getYear() + 1900)).toList()).unfold().as("year").
+ select("person").coalesce(
+ properties("location").filter(values("startTime").where(gte("year"))).
+ order().by("startTime").limit(1),
+ properties("location").hasNot("endTime")).value().as("location").
+ select("person","year","location").by("name").by().by()</pre>
</div>
</div>
<div class="admonitionblock tip">
@@ -1926,7 +1658,7 @@ knowledge on what the console can do for
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2017-01-10 13:42:54 -05:00
+Last updated 2017-01-12 07:47:53 -05:00
</div>
</div>
</body>