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 2018/03/22 22:54:17 UTC
svn commit: r1827535 [1/17] - in /tinkerpop/site: docs/3.2.8-SNAPSHOT/
docs/3.2.8-SNAPSHOT/dev/developer/ docs/3.2.8-SNAPSHOT/dev/provider/
docs/3.2.8-SNAPSHOT/images/ docs/3.2.8-SNAPSHOT/logs/
docs/3.2.8-SNAPSHOT/recipes/ docs/3.2.8-SNAPSHOT/reference...
Author: spmallette
Date: Thu Mar 22 22:54:14 2018
New Revision: 1827535
URL: http://svn.apache.org/viewvc?rev=1827535&view=rev
Log:
Deploy docs for TinkerPop 3.2.8-SNAPSHOT
Added:
tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-anatomy-filter.png (with props)
tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-anatomy-group.png (with props)
tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-anatomy-navigate.png (with props)
tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-anatomy.png (with props)
tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-dotnet-logo.png (with props)
tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-dotnet-logo_256x256.png (with props)
tinkerpop/site/docs/3.2.8-SNAPSHOT/static/images/gremlin-anatomy-filter.png (with props)
tinkerpop/site/docs/3.2.8-SNAPSHOT/static/images/gremlin-anatomy-group.png (with props)
tinkerpop/site/docs/3.2.8-SNAPSHOT/static/images/gremlin-anatomy-navigate.png (with props)
tinkerpop/site/docs/3.2.8-SNAPSHOT/static/images/gremlin-anatomy.png (with props)
tinkerpop/site/docs/3.2.8-SNAPSHOT/static/images/gremlin-dotnet-logo.png (with props)
tinkerpop/site/docs/3.2.8-SNAPSHOT/static/images/gremlin-dotnet-logo_256x256.png (with props)
tinkerpop/site/docs/3.2.8-SNAPSHOT/tutorials/gremlins-anatomy/
tinkerpop/site/docs/3.2.8-SNAPSHOT/tutorials/gremlins-anatomy/index.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.MultiScopeVertexWithEdgeFunctionProgram.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/class-use/GraphComputerTest.MultiScopeVertexWithEdgeFunctionProgram.html
Modified:
tinkerpop/site/docs/3.2.8-SNAPSHOT/dev/developer/index.html
tinkerpop/site/docs/3.2.8-SNAPSHOT/dev/provider/index.html
tinkerpop/site/docs/3.2.8-SNAPSHOT/index.html
tinkerpop/site/docs/3.2.8-SNAPSHOT/logs/gremlin-server.log
tinkerpop/site/docs/3.2.8-SNAPSHOT/recipes/index.html
tinkerpop/site/docs/3.2.8-SNAPSHOT/reference/index.html
tinkerpop/site/docs/3.2.8-SNAPSHOT/upgrade/index.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/core/org/apache/tinkerpop/gremlin/jsr223/console/RemoteAcceptor.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/core/org/apache/tinkerpop/gremlin/process/computer/package-tree.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/core/org/apache/tinkerpop/gremlin/process/traversal/Order.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/core/org/apache/tinkerpop/gremlin/process/traversal/package-tree.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/core/org/apache/tinkerpop/gremlin/structure/package-tree.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/allclasses-frame.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/allclasses-noframe.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/constant-values.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/deprecated-list.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/index-all.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/LoadGraphWith.GraphData.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/class-use/FeatureRequirements.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/class-use/LoadGraphWith.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/groovy/engine/class-use/GremlinExecutor.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/groovy/plugin/RemoteAcceptor.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/hadoop/jsr223/HadoopRemoteAcceptor.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/jsr223/console/RemoteAcceptor.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/package-tree.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.MultiScopeVertexProgram.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.VertexProgramA.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/GraphComputerTest.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/class-use/GraphComputer.Persist.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/class-use/GraphComputer.ResultGraph.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/class-use/Memory.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/class-use/MessageScope.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/class-use/Messenger.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/class-use/VertexComputeKey.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/class-use/VertexProgram.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/package-frame.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/package-summary.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/package-tree.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/util/StaticVertexProgram.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/computer/util/class-use/StaticVertexProgram.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/Order.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/class-use/Path.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/class-use/Traversal.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/class-use/TraversalStrategy.OptimizationStrategy.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/package-tree.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalTest.Traversals.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalTest.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.Traversals.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/branch/UnionTest.Traversals.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/branch/UnionTest.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndTest.Traversals.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndTest.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/filter/FilterTest.Traversals.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/filter/FilterTest.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.Traversals.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.Traversals.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexTest.Traversals.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexTest.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.CountMatchTraversals.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.GreedyMatchTraversals.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.Traversals.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectTest.Traversals.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectTest.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/step/package-tree.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/strategy/class-use/TraversalStrategyProxy.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategy.Builder.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SubgraphStrategyProcessTest.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/class-use/SubgraphStrategy.Builder.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/process/traversal/strategy/package-use.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/python/jsr223/GremlinJythonScriptEngine.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/python/jsr223/JythonTranslator.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/server/Channelizer.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/server/Settings.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/server/channel/HttpChannelizer.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/server/channel/NioChannelizer.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizer.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/server/channel/WsAndHttpChannelizer.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/server/class-use/Channelizer.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/server/class-use/GraphManager.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/server/class-use/Settings.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/server/handler/OpSelectorHandler.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/server/handler/WsAndHttpChannelizerHandler.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/server/handler/package-summary.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/server/handler/package-tree.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/server/package-use.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/structure/class-use/Edge.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/structure/class-use/Vertex.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/structure/class-use/VertexProperty.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTokens.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTypeSerializer.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/structure/io/graphson/package-tree.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/structure/io/gryo/package-tree.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/structure/package-tree.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/structure/util/package-tree.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerFactory.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/tinkergraph/structure/class-use/TinkerGraph.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/org/apache/tinkerpop/gremlin/util/function/Lambda.TwoArgLambda.html
tinkerpop/site/javadocs/3.2.8-SNAPSHOT/full/overview-tree.html
Modified: tinkerpop/site/docs/3.2.8-SNAPSHOT/dev/developer/index.html
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.2.8-SNAPSHOT/dev/developer/index.html?rev=1827535&r1=1827534&r2=1827535&view=diff
==============================================================================
--- tinkerpop/site/docs/3.2.8-SNAPSHOT/dev/developer/index.html (original)
+++ tinkerpop/site/docs/3.2.8-SNAPSHOT/dev/developer/index.html Thu Mar 22 22:54:14 2018
@@ -846,7 +846,14 @@ table.CodeRay td.code>pre{padding:0}
<li><a href="#_deprecation">Deprecation</a></li>
<li><a href="#_developing_tests">Developing Tests</a>
<ul class="sectlevel2">
-<li><a href="#_gremlin_language_test_cases">Gremlin Language Test Cases</a></li>
+<li><a href="#_gremlin_language_test_cases">Gremlin Language Test Cases</a>
+<ul class="sectlevel3">
+<li><a href="#_scenario_name">Scenario Name</a></li>
+<li><a href="#_given">Given</a></li>
+<li><a href="#_when">When</a></li>
+<li><a href="#_then">Then</a></li>
+</ul>
+</li>
</ul>
</li>
<li><a href="#_developing_benchmarks">Developing Benchmarks</a></li>
@@ -1876,13 +1883,16 @@ distinguished from other changes in the
<p><code>tp32</code> - 3.2.x (bug fixes and documentation updates only)</p>
</li>
<li>
-<p><code>master</code> - 3.3.x</p>
+<p><code>tp33</code> - 3.3.x (current development)</p>
+</li>
+<li>
+<p><code>master</code> - 3.4.x (future development)</p>
</li>
</ul>
</div>
<div class="paragraph">
-<p>Changes to <code>tp32</code> should merge to <code>master</code>. Please read more about this process in the <a href="#pull-requests">Pull Requests</a>
-section.</p>
+<p>Changes to <code>tp32</code> should merge to <code>tp33</code> and then <code>tp33</code> to <code>master</code>. Please read more about this process in the
+<a href="#pull-requests">Pull Requests</a> section.</p>
</div>
<div class="paragraph">
<p>Other branches may be created for collaborating on features or for RFC’s that other developers may want to inspect.
@@ -2091,7 +2101,24 @@ for an example.</p>
<div class="sect2">
<h3 id="_gremlin_language_test_cases">Gremlin Language Test Cases</h3>
<div class="paragraph">
-<p>When writing a test case for a Gremlin step, be sure to use the following conventions.</p>
+<p>Test cases for the Gremlin Language currently requires that the newly developed test be added in three places:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>As a test written in Java in the <code>gremlin-test</code> module within the subpackages of
+<code>org.apache.tinkerpop.gremlin.process.traversal.step</code></p>
+</li>
+<li>
+<p>As a test written in Groovy in the <code>gremlin-groovy-test</code> module within the same subpackage structure as <code>gremlin-test</code></p>
+</li>
+<li>
+<p>As a test written in Gherkin in the <code>gremlin-test</code> module in the <code>/features</code> subdirectory</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>When writing a Java test case for a Gremlin step, be sure to use the following conventions.</p>
</div>
<div class="ulist">
<ul>
@@ -2149,6 +2176,307 @@ for an example.</p>
</li>
</ul>
</div>
+<div class="paragraph">
+<p>Groovy tests are implemented by extending the Java test and implementing the abstract method that produces the
+traversal. Simply follow existing patterns in those tests - they are self-evident.</p>
+</div>
+<div class="paragraph">
+<p>Gherkin tests follow some important conventions and have a sub-language that must be adhered to for the tests to
+function properly. Note that Gherkin tests are designed to support the testing of GLVs and at some point will likely
+replace the Java tests (Groovy tests have already been removed in 3.3.x). If a new Java test is added and an associated
+Gherkin tests is not, the overall build will fail the <code>FeatureCoverageTest</code> of <code>gremlin-test</code> which validates that all
+tests written in Java are also implemented in Gherkin.</p>
+</div>
+<div class="paragraph">
+<p>The basic syntax of a Gherkin test is as follows:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="gherkin">Scenario: g_VX1X_unionXrepeatXoutX_timesX2X__outX_name
+ Given the modern graph
+ And using the parameter v1Id defined as "v[marko].id"
+ And the traversal of
+ """
+ g.V(v1Id).union(__.repeat(__.out()).times(2), __.out()).values("name")
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | ripple |
+ | lop |
+ | lop |
+ | vadas |
+ | josh |</code></pre>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_scenario_name">Scenario Name</h4>
+<div class="paragraph">
+<p>The name of the scenario needs to match the name of the Java test. If it does not then the <code>FeatureCoverageTest</code> will
+fail.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_given">Given</h4>
+<div class="paragraph">
+<p>"Given" sets the context of the test. Specifically, it establishes the graph that will be used for the test. It
+conforms to the pattern of "Given the <em>xxx</em> graph" where the "xxx" may be one of the following:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>empty</p>
+</li>
+<li>
+<p>modern</p>
+</li>
+<li>
+<p>classic</p>
+</li>
+<li>
+<p>crew</p>
+</li>
+<li>
+<p>sink</p>
+</li>
+<li>
+<p>grateful</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Never modify the data of any of the graphs except for the "empty" graph. The "empty" graph is the only graph that is
+guaranteed to be refreshed between tests. The "empty" graph maybe be modified by the traversal under test or by an
+additional "Given" option:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="gherkin">Given the empty graph
+And the graph initializer of
+ """
+ g.addV("person").property(T.id, 1).property("name", "marko").property("age", 29).as("marko").
+ addV("person").property(T.id, 2).property("name", "vadas").property("age", 27).as("vadas").
+ addV("software").property(T.id, 3).property("name", "lop").property("lang", "java").as("lop").
+ addV("person").property(T.id, 4).property("name","josh").property("age", 32).as("josh").
+ addV("software").property(T.id, 5).property("name", "ripple").property("lang", "java").as("ripple").
+ addV("person").property(T.id, 6).property("name", "peter").property("age", 35).as('peter').
+ addE("knows").from("marko").to("vadas").property(T.id, 7).property("weight", 0.5).
+ addE("knows").from("marko").to("josh").property(T.id, 8).property("weight", 1.0).
+ addE("created").from("marko").to("lop").property(T.id, 9).property("weight", 0.4).
+ addE("created").from("josh").to("ripple").property(T.id, 10).property("weight", 1.0).
+ addE("created").from("josh").to("lop").property(T.id, 11).property("weight", 0.4).
+ addE("created").from("peter").to("lop").property(T.id, 12).property("weight", 0.2)
+ """</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The above configuration will use the "empty" graph and initialize it with the specified traversal. In this case, that
+traversal loads the "empty" graph with the "modern" graph.</p>
+</div>
+<div class="paragraph">
+<p>Once the graph for the test is defined, the context can be expanded to include parameters that will be applied to the
+traversal under test. Any variable value being used in the traversal under test, especially ones that require a
+specific type, should be defined as parameters. The structure for parameter definition looks like this:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="gherkin">Given the modern graph
+And using the parameter v1Id defined as "v[marko].id"</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>In the above example, "v1Id" is the name of the parameter that will be used in the traversal. The end of that line in
+quotes is the value of that parameter and should use the type system notation that has been developed for the TinkerPop
+Gherkin tests. The type system notation ensures that different language variants have the ability to construct the
+appropriate types expected by the tests.</p>
+</div>
+<div class="paragraph">
+<p>The syntax of the type notation involves a prefix character to help denote the type, a value between two square
+brackets, optionally suffixed with some additional notation depending on the primary type.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Edge - <strong>e[<em>xxx</em>]</strong> - The "xxx" should be replaced with a representation of an edge in the form of the
+<code>vertex_name-edgelabel→vertex_name</code>. This syntax may also include the <code>.id</code> suffix which would indicate getting the
+edge identifier or the <code>.sid</code> suffix which gets a string representation of the edge identifier.</p>
+</li>
+<li>
+<p>Lambda - <strong>c[<em>xxx</em>]</strong> - The "xxx" should contain a lambda written in Groovy.</p>
+</li>
+<li>
+<p>List - <strong>l[<em>xxx</em>,<em>yyy</em>,<em>zzz</em>,…​]</strong> - A comma separated collection of values that make up the list should be added to
+between the square brackets. These values respect the type system thus allowing for creation of lists of vertices,
+edges, maps, and any other available type.</p>
+</li>
+<li>
+<p>Map - <strong>m[<em>xxx</em>]</strong> - The "xxx" should be replaced with a JSON string. Note that keys and values will be parsed using
+the type notation system so that it is possible to have maps containing arbitrary keys and values.</p>
+</li>
+<li>
+<p>Numeric - <strong>d[<em>xxx</em>].<em>y</em></strong> - The "xxx" should be replaced with a number. The suffix denoted by "y" should always be
+included to further qualify the type of numeric. The following options are available:</p>
+<div class="ulist">
+<ul>
+<li>
+<p><strong>d</strong> - 32-bit Double</p>
+</li>
+<li>
+<p><strong>f</strong> - 32-bit Float</p>
+</li>
+<li>
+<p><strong>i</strong> - 32-bit Integer</p>
+</li>
+<li>
+<p><strong>l</strong> - 64-bit Long</p>
+</li>
+<li>
+<p><strong>m</strong> - Arbitrary-precision signed decimal numbers (i.e. BigDecimal in Java)</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>Path - <strong>p[<em>xxx</em>,<em>yyy</em>,<em>zzz</em>,…​]</strong> - A comma separated collection of values that make up the <code>Path</code> should be added to
+between the square brackets. These values respect the type system thus allowing for creation of <code>Path</code> of vertices,
+edges, maps, and any other available type.</p>
+</li>
+<li>
+<p>Set - <strong>s[<em>xxx</em>,<em>yyy</em>,<em>zzz</em>,…​]</strong> - A comma separated collection of values that make up the set should be added to
+between the square brackets. These values respect the type system thus allowing for creation of sets of vertices,
+edges, maps, and any other available type.</p>
+</li>
+<li>
+<p>String - Any value not using the system notation will be interpreted as a string.</p>
+</li>
+<li>
+<p>T - <strong>t[<em>xxx</em>]</strong> - The "xxx" should be replaced with a value of the <code>T</code> enum, such as <code>id</code> or <code>label</code>.</p>
+</li>
+<li>
+<p>Vertex - <strong>v[<em>xxx</em>]</strong> - The "xxx" should be replaced with the "name" property of a vertex in the graph. This syntax may
+include the <code>.id</code> suffix which would indicate getting the vertex identifier or the <code>.sid</code> suffix which gets a string
+representation of the edge identifier.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Finally, specify the traversal under test with the "Given" option "and the traversal":</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="gherkin">And the traversal of
+ """
+ g.V(v1Id).union(__.repeat(__.out()).times(2), __.out()).values("name")
+ """</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>It will be the results of this traversal that end up being asserted by Gherkin. When writing these test traversals,
+be sure to always use the method and enum prefixes. For example, use <code>__.out()</code> for an anonymous traversal rather
+than just <code>out()</code> and prefer <code>Scope.local</code> rather than just <code>local</code>.</p>
+</div>
+<div class="paragraph">
+<p>If a particular test cannot be written in Gherkin for some reason or cannot be otherwise supported by a GLV, first,
+consider whether or not this test can be re-written in Java so that it will work for GLVs and then, second, if it
+cannot, then use the following syntax for unsupported tests:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="gherkin">Scenario: g_V_outXcreatedX_groupCountXxX_capXxX
+ Given an unsupported test
+ Then nothing should happen because
+ """
+ The result returned is not supported under GraphSON 2.x and therefore cannot be properly asserted. More
+ specifically it has vertex keys which basically get toString()'d under GraphSON 2.x. This test can be supported
+ with GraphSON 3.x.
+ """</code></pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_when">When</h4>
+<div class="paragraph">
+<p>The "When" options get the result from the traversal in preparation for assertion. There are two options to iterate:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>"When iterated to list" - iterates the entire traversal into a list result that is asserted</p>
+</li>
+<li>
+<p>"When iterated next" - gets the first value from the traversal as the result to be asserted</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>There should be only one "When" defined in a scenario.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_then">Then</h4>
+<div class="paragraph">
+<p>The "Then" options handle the assertion of the result. There are several options to consider:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>"the result should have a count of <em>xxx</em>" - assumes a list value in the result and counts the number of values
+in it</p>
+</li>
+<li>
+<p>"the result should be empty" - no results</p>
+</li>
+<li>
+<p>"the result should be ordered" - the exact results and should appear in the order presented</p>
+</li>
+<li>
+<p>"the result should be unordered" - the exact results but can appear any order</p>
+</li>
+<li>
+<p>"the result should be of" - results can be any of the specified values and in any order (use when guarantees
+regarding the exact results cannot be pre-determined easily - see the <code>range()</code> step tests for examples)</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>These final three types of assertions mentioned above should be followed by a Gherkin table that has one column, where
+each row value in that column represents a value to assert in the result. These values are type notation respected as
+shown in the following example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="gherkin">Then the result should be unordered
+ | result |
+ | ripple |
+ | lop |
+ | lop |
+ | vadas |
+ | josh |</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Another method of assertion is to test mutations in the original graph. Again, mutations should only occur on the
+"empty" graph, but they can be validated as follows:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="gherkin">Scenario: g_V_outE_drop
+ Given the empty graph
+ And the graph initializer of
+ """
+ g.addV().as("a").addV().as("b").addE("knows").to("a")
+ """
+ And the traversal of
+ """
+ g.V().outE().drop()
+ """
+ When iterated to list
+ Then the result should be empty
+ And the graph should return 2 for count of "g.V()"
+ And the graph should return 0 for count of "g.E()"</code></pre>
+</div>
+</div>
+</div>
</div>
</div>
</div>
@@ -2889,7 +3217,8 @@ of the published documentation on the de
<div class="paragraph">
<p>A release candidate is an unofficial release that is represented by a tagged version in the Git repository. It is
offered in cases where there is significant change in a particular version and the potential for upgrades and problems
-might be high.</p>
+might be high. Release candidates do not require a vote thread. Lazy consensus is acceptable for confirming their
+deployment.</p>
</div>
<div class="olist arabic">
<ol class="arabic">
@@ -2944,6 +3273,15 @@ might be high.</p>
</li>
</ol>
</div>
+<div class="paragraph">
+<p>Note that release candidates need not require the release of all artifacts. For example, if the risk is with one
+particular GLV, then a release candidate can be prepared of just that particular artifact. In those cases, a tag on
+the commit that represents the release candidate is sufficient and does not necessarily require that the versions
+be bumped to reflect the actual "-rc" version. In other words, if preparing a release candidate for .NET, then there
+is no need to go through the processing of bumping versions in Java artifacts and all GLVs. Nor is it necessary to
+alter the version of .NET to include the release candidate versioning. It can simply be altered locally by the
+release manager and deployed.</p>
+</div>
</div>
</div>
<div class="sect1">
@@ -4238,7 +4576,7 @@ roadmap:</p>
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2018-02-02 19:59:37 EST
+Last updated 2018-03-22 18:50:37 EDT
</div>
</div>
</body>
Modified: tinkerpop/site/docs/3.2.8-SNAPSHOT/dev/provider/index.html
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.2.8-SNAPSHOT/dev/provider/index.html?rev=1827535&r1=1827534&r2=1827535&view=diff
==============================================================================
--- tinkerpop/site/docs/3.2.8-SNAPSHOT/dev/provider/index.html (original)
+++ tinkerpop/site/docs/3.2.8-SNAPSHOT/dev/provider/index.html Thu Mar 22 22:54:14 2018
@@ -2525,9 +2525,9 @@ twenty. Under this model, the amount of
<pre class="CodeRay highlight"><code data-lang="groovy">gremlin> cluster = Cluster.open()
==>localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>
gremlin> client = cluster.connect()
-==>org.apache.tinkerpop.gremlin.driver.Client<span class="error">$</span>ClusteredClient<span class="error">@</span><span class="integer">77020328</span>
+==>org.apache.tinkerpop.gremlin.driver.Client<span class="error">$</span>ClusteredClient<span class="annotation">@b339a08</span>
gremlin> aliased = client.alias(<span class="string"><span class="delimiter">"</span><span class="content">g</span><span class="delimiter">"</span></span>)
-==>org.apache.tinkerpop.gremlin.driver.Client<span class="error">$</span>AliasClusteredClient<span class="error">@</span><span class="integer">2838</span>eb
+==>org.apache.tinkerpop.gremlin.driver.Client<span class="error">$</span>AliasClusteredClient<span class="error">@</span><span class="float">6d</span>a646b8
gremlin> g = org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph.INSTANCE.traversal() <span class="invisible">//</span><b class="conum">1</b><span class="invisible">\</span>
==>graphtraversalsource[emptygraph[empty], standard]
gremlin> rs = aliased.submit(g.V().both().barrier().both().barrier()).all().get() <span class="invisible">//</span><b class="conum">2</b><span class="invisible">\</span>
@@ -3119,7 +3119,7 @@ find it.
* set to {@code false}.
* <p/>
* A {@code RemoteAcceptor} should only return {@code true} for this method if it expects that all activities it
- * supports are executed through the {@code :sumbit} command. If the users interaction with the remote requires
+ * supports are executed through the {@code :submit} command. If the users interaction with the remote requires
* working with both local and remote evaluation at the same time, it is likely best to keep this method return
* {@code false}. A good example of this type of plugin would be the Gephi Plugin which uses {@code :remote config}
* to configure a local {@code TraversalSource} to be used and expects calls to {@code :submit} for the same body
@@ -3151,7 +3151,7 @@ to provide a way to dynamically evaluate
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2018-02-02 18:58:06 EST
+Last updated 2018-03-22 18:00:05 EDT
</div>
</div>
</body>
Added: tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-anatomy-filter.png
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-anatomy-filter.png?rev=1827535&view=auto
==============================================================================
Binary file - no diff available.
Propchange: tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-anatomy-filter.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-anatomy-group.png
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-anatomy-group.png?rev=1827535&view=auto
==============================================================================
Binary file - no diff available.
Propchange: tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-anatomy-group.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-anatomy-navigate.png
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-anatomy-navigate.png?rev=1827535&view=auto
==============================================================================
Binary file - no diff available.
Propchange: tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-anatomy-navigate.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-anatomy.png
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-anatomy.png?rev=1827535&view=auto
==============================================================================
Binary file - no diff available.
Propchange: tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-anatomy.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-dotnet-logo.png
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-dotnet-logo.png?rev=1827535&view=auto
==============================================================================
Binary file - no diff available.
Propchange: tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-dotnet-logo.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-dotnet-logo_256x256.png
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-dotnet-logo_256x256.png?rev=1827535&view=auto
==============================================================================
Binary file - no diff available.
Propchange: tinkerpop/site/docs/3.2.8-SNAPSHOT/images/gremlin-dotnet-logo_256x256.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: tinkerpop/site/docs/3.2.8-SNAPSHOT/index.html
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.2.8-SNAPSHOT/index.html?rev=1827535&r1=1827534&r2=1827535&view=diff
==============================================================================
--- tinkerpop/site/docs/3.2.8-SNAPSHOT/index.html (original)
+++ tinkerpop/site/docs/3.2.8-SNAPSHOT/index.html Thu Mar 22 22:54:14 2018
@@ -882,6 +882,11 @@ A gentle introduction to TinkerPop and t
Provides a detailed look at The Gremlin Console and how it can be used when working with TinkerPop.</p></td>
</tr>
<tr>
+<td class="tableblock halign-center valign-top"><p class="tableblock"><span class="image"><img src="images/gremlin-anatomy.png" alt="gremlin anatomy" width="125"></span></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="http://tinkerpop.apache.org/docs/3.2.8-SNAPSHOT/tutorials/gremlins-anatomy/">Gremlin’s Anatomy</a>
+Identifies and explains the component parts of a Gremlin traversal.</p></td>
+</tr>
+<tr>
<td class="tableblock halign-center valign-top"><p class="tableblock"><span class="image"><img src="images/gremlin-chef.png" alt="gremlin chef" width="125"></span></p></td>
<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="http://tinkerpop.apache.org/docs/3.2.8-SNAPSHOT/recipes/">Gremlin Recipes</a>
A collection of best practices and common traversal patterns for Gremlin.</p></td>
@@ -923,6 +928,9 @@ A getting started guide for users of gra
<div class="ulist">
<ul>
<li>
+<p>Mallette, S.P., <a href="https://www.slideshare.net/StephenMallette/gremlins-anatomy-88713465">"Gremlin’s Anatomy,"</a> DataStax User Group, February 2018.</p>
+</li>
+<li>
<p>Rodriguez, M.A., <a href="https://www.slideshare.net/slidarko/gremlin-1013-on-your-fm-dial">"Gremlin 101.3 On Your FM Dial,"</a> DataStax Support and Engineering Summits, Carmel California and Las Vegas Nevada, May 2017.</p>
</li>
<li>
@@ -995,7 +1003,7 @@ Reference Documentation for providers an
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2018-02-02 19:59:37 EST
+Last updated 2018-03-22 18:50:38 EDT
</div>
</div>
</body>
Modified: tinkerpop/site/docs/3.2.8-SNAPSHOT/logs/gremlin-server.log
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.2.8-SNAPSHOT/logs/gremlin-server.log?rev=1827535&r1=1827534&r2=1827535&view=diff
==============================================================================
--- tinkerpop/site/docs/3.2.8-SNAPSHOT/logs/gremlin-server.log (original)
+++ tinkerpop/site/docs/3.2.8-SNAPSHOT/logs/gremlin-server.log Thu Mar 22 22:54:14 2018
@@ -19,6 +19,8 @@
[INFO] TraversalOpProcessor - Initialized cache for TraversalOpProcessor with size 1000 and expiration time of 600000 ms
[INFO] GremlinServer - Executing start up LifeCycleHook
[INFO] Logger$info - Loading 'modern' graph data.
+[INFO] GremlinServer - idleConnectionTimeout was set to 0 which resolves to 0 seconds when configuring this value - this feature will be disabled
+[INFO] GremlinServer - keepAliveInterval was set to 0 which resolves to 0 seconds when configuring this value - this feature will be disabled
[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo-stringd with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0
Modified: tinkerpop/site/docs/3.2.8-SNAPSHOT/recipes/index.html
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.2.8-SNAPSHOT/recipes/index.html?rev=1827535&r1=1827534&r2=1827535&view=diff
==============================================================================
--- tinkerpop/site/docs/3.2.8-SNAPSHOT/recipes/index.html (original)
+++ tinkerpop/site/docs/3.2.8-SNAPSHOT/recipes/index.html Thu Mar 22 22:54:14 2018
@@ -811,6 +811,7 @@ table.CodeRay td.code>pre{padding:0}
<li><a href="#betweeness-centrality">Betweeness Centrality</a></li>
<li><a href="#closeness-centrality">Closeness Centrality</a></li>
<li><a href="#eigenvector-centrality">Eigenvector Centrality</a></li>
+<li><a href="#pagerank-centrality">PageRank Centrality</a></li>
</ul>
</li>
<li><a href="#collections">Collections</a></li>
@@ -1340,6 +1341,28 @@ can shorten the time required to get a r
</ol>
</div>
</div>
+<div class="sect2">
+<h3 id="pagerank-centrality">PageRank Centrality</h3>
+<div class="paragraph">
+<p>While not technically a recipe, it’s worth noting here in the "Centrality Section" that
+<a href="https://en.wikipedia.org/wiki/PageRank">PageRank</a> centrality can be calculated with Gremlin with the
+<a href="http://tinkerpop.apache.org/docs/3.2.8-SNAPSHOT/reference/#pagerank-step">pageRank()</a>-step which is designed to work with
+<code>GraphComputer</code> (OLAP) based traversals.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy">gremlin> g = graph.traversal().withComputer()
+==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">6</span>], graphcomputer]
+gremlin> g.V().pageRank().by(<span class="string"><span class="delimiter">'</span><span class="content">pageRank</span><span class="delimiter">'</span></span>).values(<span class="string"><span class="delimiter">'</span><span class="content">pageRank</span><span class="delimiter">'</span></span>)
+==><span class="float">0.19250000000000003</span>
+==><span class="float">0.19250000000000003</span>
+==><span class="float">0.15000000000000002</span>
+==><span class="float">0.15000000000000002</span>
+==><span class="float">0.23181250000000003</span>
+==><span class="float">0.4018125</span></code></pre>
+</div>
+</div>
+</div>
</div>
</div>
<div class="sect1">
@@ -1830,7 +1853,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">name</span>:marko,<span class="key">id</span>:<span class="integer">1</span>,<span class="key">label</span>:person,<span class="key">age</span>:<span class="integer">29</span>]</code></pre>
+==>[<span class="key">id</span>:<span class="integer">1</span>,<span class="key">degree</span>:<span class="integer">3</span>,<span class="key">name</span>:marko,<span class="key">age</span>:<span class="integer">29</span>,<span class="key">label</span>:person]</code></pre>
</div>
</div>
<div class="colist arabic">
@@ -1867,7 +1890,7 @@ a <code>List</code> back for all the val
unfold().
fold().
choose(count(local).is(eq(<span class="integer">1</span>)), unfold()))
-==>[<span class="key">name</span>:marko,<span class="key">id</span>:<span class="integer">1</span>,<span class="key">label</span>:person,<span class="key">age</span>:[<span class="integer">29</span>,<span class="integer">100</span>]]</code></pre>
+==>[<span class="key">id</span>:<span class="integer">1</span>,<span class="key">name</span>:marko,<span class="key">age</span>:[<span class="integer">29</span>,<span class="integer">100</span>],<span class="key">label</span>:person]</code></pre>
</div>
</div>
</div>
@@ -2271,9 +2294,9 @@ demonstration, an additional edge is add
<pre class="CodeRay highlight"><code data-lang="groovy">gremlin> g.V(<span class="integer">1</span>).as(<span class="string"><span class="delimiter">"</span><span class="content">a</span><span class="delimiter">"</span></span>).V(<span class="integer">3</span>).addE(<span class="string"><span class="delimiter">"</span><span class="content">created</span><span class="delimiter">"</span></span>).property(<span class="string"><span class="delimiter">"</span><span class="content">weight</span><span class="delimiter">"</span></span>,<span class="float">0.4d</span>).from(<span class="string"><span class="delimiter">"</span><span class="content">a</span><span class="delimiter">"</span></span>).iterate()
gremlin> g.V(<span class="integer">1</span>).as(<span class="string"><span class="delimiter">"</span><span class="content">a</span><span class="delimiter">"</span></span>).V(<span class="integer">3</span>).addE(<span class="string"><span class="delimiter">"</span><span class="content">created</span><span class="delimiter">"</span></span>).property(<span class="string"><span class="delimiter">"</span><span class="content">weight</span><span class="delimiter">"</span></span>,<span class="float">0.5d</span>).from(<span class="string"><span class="delimiter">"</span><span class="content">a</span><span class="delimiter">"</span></span>).iterate()
gremlin> g.V(<span class="integer">1</span>).outE(<span class="string"><span class="delimiter">"</span><span class="content">created</span><span class="delimiter">"</span></span>).valueMap(<span class="predefined-constant">true</span>)
-==>[<span class="key">weight</span>:<span class="float">0.4</span>,<span class="key">id</span>:<span class="integer">9</span>,<span class="key">label</span>:created]
-==>[<span class="key">weight</span>:<span class="float">0.4</span>,<span class="key">id</span>:<span class="integer">13</span>,<span class="key">label</span>:created]
-==>[<span class="key">weight</span>:<span class="float">0.5</span>,<span class="key">id</span>:<span class="integer">14</span>,<span class="key">label</span>:created]</code></pre>
+==>[<span class="key">id</span>:<span class="integer">9</span>,<span class="key">weight</span>:<span class="float">0.4</span>,<span class="key">label</span>:created]
+==>[<span class="key">id</span>:<span class="integer">13</span>,<span class="key">weight</span>:<span class="float">0.4</span>,<span class="key">label</span>:created]
+==>[<span class="key">id</span>:<span class="integer">14</span>,<span class="key">weight</span>:<span class="float">0.5</span>,<span class="key">label</span>:created]</code></pre>
</div>
</div>
<div class="paragraph">
@@ -2289,8 +2312,8 @@ gremlin> g.V(<span class="integer">1<
where(outV().as(<span class="string"><span class="delimiter">"</span><span class="content">ov</span><span class="delimiter">"</span></span>)).as(<span class="string"><span class="delimiter">"</span><span class="content">e2</span><span class="delimiter">"</span></span>).
where(<span class="string"><span class="delimiter">"</span><span class="content">e1</span><span class="delimiter">"</span></span>, eq(<span class="string"><span class="delimiter">"</span><span class="content">e2</span><span class="delimiter">"</span></span>)).by(label).
where(<span class="string"><span class="delimiter">"</span><span class="content">e1</span><span class="delimiter">"</span></span>, eq(<span class="string"><span class="delimiter">"</span><span class="content">e2</span><span class="delimiter">"</span></span>)).by(<span class="string"><span class="delimiter">"</span><span class="content">weight</span><span class="delimiter">"</span></span>).valueMap(<span class="predefined-constant">true</span>)
-==>[<span class="key">weight</span>:<span class="float">0.4</span>,<span class="key">id</span>:<span class="integer">13</span>,<span class="key">label</span>:created]
-==>[<span class="key">weight</span>:<span class="float">0.4</span>,<span class="key">id</span>:<span class="integer">9</span>,<span class="key">label</span>:created]</code></pre>
+==>[<span class="key">id</span>:<span class="integer">13</span>,<span class="key">weight</span>:<span class="float">0.4</span>,<span class="key">label</span>:created]
+==>[<span class="key">id</span>:<span class="integer">9</span>,<span class="key">weight</span>:<span class="float">0.4</span>,<span class="key">label</span>:created]</code></pre>
</div>
</div>
</div>
@@ -2364,9 +2387,9 @@ follows:</p>
<pre class="CodeRay highlight"><code data-lang="groovy">gremlin> g.V().has(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>,<span class="string"><span class="delimiter">'</span><span class="content">marko</span><span class="delimiter">'</span></span>).
outE().inV().
path().by(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>).by(valueMap(<span class="predefined-constant">true</span>))
-==>[marko,[<span class="key">id</span>:<span class="integer">9</span>,<span class="key">weight</span>:<span class="float">0.4</span>,<span class="key">label</span>:created],lop]
-==>[marko,[<span class="key">id</span>:<span class="integer">7</span>,<span class="key">weight</span>:<span class="float">0.5</span>,<span class="key">label</span>:knows],vadas]
-==>[marko,[<span class="key">id</span>:<span class="integer">8</span>,<span class="key">weight</span>:<span class="float">1.0</span>,<span class="key">label</span>:knows],josh]</code></pre>
+==>[marko,[<span class="key">label</span>:created,<span class="key">id</span>:<span class="integer">9</span>,<span class="key">weight</span>:<span class="float">0.4</span>],lop]
+==>[marko,[<span class="key">label</span>:knows,<span class="key">id</span>:<span class="integer">7</span>,<span class="key">weight</span>:<span class="float">0.5</span>],vadas]
+==>[marko,[<span class="key">label</span>:knows,<span class="key">id</span>:<span class="integer">8</span>,<span class="key">weight</span>:<span class="float">1.0</span>],josh]</code></pre>
</div>
</div>
<div class="paragraph">
@@ -2387,9 +2410,9 @@ the "peter" vertex in a single traversal
gremlin> g.V().has(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>,<span class="string"><span class="delimiter">'</span><span class="content">marko</span><span class="delimiter">'</span></span>).
outE().inV().
path().by(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>).by(valueMap(<span class="predefined-constant">true</span>))
-==>[marko,[<span class="key">id</span>:<span class="integer">9</span>,<span class="key">weight</span>:<span class="float">0.4</span>,<span class="key">label</span>:created],lop]
-==>[marko,[<span class="key">id</span>:<span class="integer">8</span>,<span class="key">weight</span>:<span class="float">1.0</span>,<span class="key">label</span>:knows],josh]
-==>[marko,[<span class="key">id</span>:<span class="integer">13</span>,<span class="key">weight</span>:<span class="float">0.5</span>,<span class="key">label</span>:knows],peter]</code></pre>
+==>[marko,[<span class="key">label</span>:created,<span class="key">id</span>:<span class="integer">9</span>,<span class="key">weight</span>:<span class="float">0.4</span>],lop]
+==>[marko,[<span class="key">label</span>:knows,<span class="key">id</span>:<span class="integer">8</span>,<span class="key">weight</span>:<span class="float">1.0</span>],josh]
+==>[marko,[<span class="key">label</span>:knows,<span class="key">id</span>:<span class="integer">13</span>,<span class="key">weight</span>:<span class="float">0.5</span>],peter]</code></pre>
</div>
</div>
<div class="colist arabic">
@@ -3694,7 +3717,7 @@ gremlin> archivePath = <span class="s
gremlin> [<span class="string"><span class="delimiter">'</span><span class="content">bash</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">-c</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">rm -f </span><span class="inline"><span class="inline-delimiter">$</span>archivePath</span><span class="content">; cd ext/spark-gremlin/lib && zip </span><span class="inline"><span class="inline-delimiter">$</span>archivePath</span><span class="content"> *.jar</span><span class="delimiter">"</span></span>].execute().waitFor()
==><span class="integer">0</span>
gremlin> conf = <span class="keyword">new</span> PropertiesConfiguration(<span class="string"><span class="delimiter">'</span><span class="content">conf/hadoop/hadoop-gryo.properties</span><span class="delimiter">'</span></span>)
-==>org.apache.commons.configuration.PropertiesConfiguration<span class="error">@</span><span class="float">27329d</span><span class="integer">2</span>a
+==>org.apache.commons.configuration.PropertiesConfiguration<span class="error">@</span><span class="integer">167381</span>c7
gremlin> conf.setProperty(<span class="string"><span class="delimiter">'</span><span class="content">spark.master</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">yarn-client</span><span class="delimiter">'</span></span>)
gremlin> conf.setProperty(<span class="string"><span class="delimiter">'</span><span class="content">spark.yarn.dist.archives</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">"</span><span class="inline"><span class="inline-delimiter">$</span>archivePath</span><span class="delimiter">"</span></span>)
gremlin> conf.setProperty(<span class="string"><span class="delimiter">'</span><span class="content">spark.yarn.appMasterEnv.CLASSPATH</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">./</span><span class="inline"><span class="inline-delimiter">$</span>archive</span><span class="content">/*:</span><span class="inline"><span class="inline-delimiter">$</span>hadoopConfDir</span><span class="delimiter">"</span></span>)
@@ -3702,6 +3725,7 @@ gremlin> conf.setProperty(<span class
gremlin> conf.setProperty(<span class="string"><span class="delimiter">'</span><span class="content">spark.driver.extraLibraryPath</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">"</span><span class="inline"><span class="inline-delimiter">$</span>hadoop</span><span class="content">/lib/native:</span><span class="inline"><span class="inline-delimiter">$</span>hadoop</span><span class="content">/lib/native/Linux-amd64-64</span><span class="delimiter">"</span></span>)
gremlin> conf.setProperty(<span class="string"><span class="delimiter">'</span><span class="content">spark.executor.extraLibraryPath</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">"</span><span class="inline"><span class="inline-delimiter">$</span>hadoop</span><span class="content">/lib/native:</span><span class="inline"><span class="inline-delimiter">$</span>hadoop</span><span class="content">/lib/native/Linux-amd64-64</span><span class="delimiter">"</span></span>)
gremlin> conf.setProperty(<span class="string"><span class="delimiter">'</span><span class="content">gremlin.spark.persistContext</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">true</span><span class="delimiter">'</span></span>)
+gremlin> hdfs.copyFromLocal(<span class="string"><span class="delimiter">'</span><span class="content">data/tinkerpop-modern.kryo</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">tinkerpop-modern.kryo</span><span class="delimiter">'</span></span>)
gremlin> graph = GraphFactory.open(conf)
==>hadoopgraph[gryoinputformat->gryooutputformat]
gremlin> g = graph.traversal().withComputer(SparkGraphComputer)
@@ -3948,7 +3972,7 @@ the anonymous traversal itself.</p>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="groovy">gremlin> weightFilter = { w -> outE(<span class="string"><span class="delimiter">"</span><span class="content">knows</span><span class="delimiter">"</span></span>).has(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>, P.gt(w)).inV() }
-==>groovysh_evaluate<span class="error">$</span>_run_closure1<span class="error">@</span><span class="integer">61514735</span>
+==>groovysh_evaluate<span class="error">$</span>_run_closure1<span class="error">@</span><span class="integer">3</span>c380bd8
gremlin> g.V(<span class="integer">1</span>).flatMap(weightFilter(<span class="float">0.5d</span>)).both()
==>v[<span class="integer">5</span>]
==>v[<span class="integer">3</span>]
@@ -4448,7 +4472,7 @@ gremlin> g.withSack(<span class="flo
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2018-02-02 19:59:37 EST
+Last updated 2018-03-22 18:50:38 EDT
</div>
</div>
</body>