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/10/14 12:40:42 UTC

svn commit: r1812179 [4/50] - in /tinkerpop/site: docs/3.3.1-SNAPSHOT/ docs/3.3.1-SNAPSHOT/dev/developer/ docs/3.3.1-SNAPSHOT/dev/io/ docs/3.3.1-SNAPSHOT/dev/provider/ docs/3.3.1-SNAPSHOT/images/ docs/3.3.1-SNAPSHOT/recipes/ docs/3.3.1-SNAPSHOT/referen...

Modified: tinkerpop/site/docs/3.3.1-SNAPSHOT/reference/index.html
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.3.1-SNAPSHOT/reference/index.html?rev=1812179&r1=1812178&r2=1812179&view=diff
==============================================================================
--- tinkerpop/site/docs/3.3.1-SNAPSHOT/reference/index.html (original)
+++ tinkerpop/site/docs/3.3.1-SNAPSHOT/reference/index.html Sat Oct 14 12:40:39 2017
@@ -839,11 +839,7 @@ table.CodeRay td.code>pre{padding:0}
 <li><a href="#_gremlin_i_o">Gremlin I/O</a>
 <ul class="sectlevel2">
 <li><a href="#_graphml_reader_writer">GraphML Reader/Writer</a></li>
-<li><a href="#graphson-reader-writer">GraphSON Reader/Writer</a>
-<ul class="sectlevel3">
-<li><a href="#graphson-types-embedding">Types embedding</a></li>
-</ul>
-</li>
+<li><a href="#graphson-reader-writer">GraphSON Reader/Writer</a></li>
 <li><a href="#gryo-reader-writer">Gryo Reader/Writer</a></li>
 <li><a href="#_tinkerpop2_data_migration">TinkerPop2 Data Migration</a></li>
 </ul>
@@ -894,6 +890,7 @@ table.CodeRay td.code>pre{padding:0}
 <li><a href="#using-where-with-match">Using Where with Match</a></li>
 </ul>
 </li>
+<li><a href="#math-step">Math Step</a></li>
 <li><a href="#max-step">Max Step</a></li>
 <li><a href="#mean-step">Mean Step</a></li>
 <li><a href="#min-step">Min Step</a></li>
@@ -1020,7 +1017,7 @@ table.CodeRay td.code>pre{padding:0}
 <li><a href="#_configuring_2">Configuring</a>
 <ul class="sectlevel3">
 <li><a href="#opprocessor-configurations">OpProcessor Configurations</a></li>
-<li><a href="#_security">Security</a></li>
+<li><a href="#security">Security</a></li>
 <li><a href="#_serialization_2">Serialization</a></li>
 <li><a href="#metrics">Metrics</a></li>
 <li><a href="#_as_a_service">As A Service</a></li>
@@ -2032,13 +2029,6 @@ gremlin&gt; graph.features()
 &gt;-- <span class="key">ThreadedTransactions</span>: <span class="predefined-constant">false</span>
 &gt; VariableFeatures
 &gt;-- <span class="key">Variables</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">BooleanValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">ByteValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">DoubleValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">FloatValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">IntegerValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">LongValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">MapValues</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">MixedListValues</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">SerializableValues</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">StringValues</span>: <span class="predefined-constant">true</span>
@@ -2050,36 +2040,36 @@ gremlin&gt; graph.features()
 &gt;-- <span class="key">IntegerArrayValues</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">LongArrayValues</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">StringArrayValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">LongValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">BooleanValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">ByteValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">DoubleValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">FloatValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">IntegerValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">MapValues</span>: <span class="predefined-constant">true</span>
 &gt; VertexFeatures
+&gt;-- <span class="key">MetaProperties</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">AddVertices</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">RemoveVertices</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">MetaProperties</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">DuplicateMultiProperties</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">MultiProperties</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">UserSuppliedIds</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">NumericIds</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">StringIds</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">UuidIds</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">CustomIds</span>: <span class="predefined-constant">false</span>
 &gt;-- <span class="key">AnyIds</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">UserSuppliedIds</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">AddProperty</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">UuidIds</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">RemoveProperty</span>: <span class="predefined-constant">true</span>
+&gt; VertexPropertyFeatures
 &gt;-- <span class="key">NumericIds</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">StringIds</span>: <span class="predefined-constant">true</span>
-&gt; VertexPropertyFeatures
-&gt;-- <span class="key">UserSuppliedIds</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">UuidIds</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">CustomIds</span>: <span class="predefined-constant">false</span>
 &gt;-- <span class="key">AnyIds</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">UuidIds</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">UserSuppliedIds</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">RemoveProperty</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">NumericIds</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">StringIds</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="predefined-type">Properties</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">BooleanValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">ByteValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">DoubleValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">FloatValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">IntegerValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">LongValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">MapValues</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">MixedListValues</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">SerializableValues</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">StringValues</span>: <span class="predefined-constant">true</span>
@@ -2091,26 +2081,26 @@ gremlin&gt; graph.features()
 &gt;-- <span class="key">IntegerArrayValues</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">LongArrayValues</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">StringArrayValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">LongValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">BooleanValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">ByteValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">DoubleValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">FloatValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">IntegerValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">MapValues</span>: <span class="predefined-constant">true</span>
 &gt; EdgeFeatures
 &gt;-- <span class="key">AddEdges</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">RemoveEdges</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">UserSuppliedIds</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">NumericIds</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">StringIds</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">UuidIds</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">CustomIds</span>: <span class="predefined-constant">false</span>
 &gt;-- <span class="key">AnyIds</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">UserSuppliedIds</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">AddProperty</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">UuidIds</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">RemoveProperty</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">NumericIds</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">StringIds</span>: <span class="predefined-constant">true</span>
 &gt; EdgePropertyFeatures
 &gt;-- <span class="predefined-type">Properties</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">BooleanValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">ByteValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">DoubleValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">FloatValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">IntegerValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">LongValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">MapValues</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">MixedListValues</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">SerializableValues</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">StringValues</span>: <span class="predefined-constant">true</span>
@@ -2121,7 +2111,14 @@ gremlin&gt; graph.features()
 &gt;-- <span class="key">FloatArrayValues</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">IntegerArrayValues</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">LongArrayValues</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">StringArrayValues</span>: <span class="predefined-constant">true</span></code></pre>
+&gt;-- <span class="key">StringArrayValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">LongValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">BooleanValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">ByteValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">DoubleValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">FloatValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">IntegerValues</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">MapValues</span>: <span class="predefined-constant">true</span></code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -2873,12 +2870,24 @@ called <code>tinkerpop-modern.json</code
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">final</span> Graph graph = TinkerFactory.createModern();
-graph.io(IoCore.graphson()).writeGraph(<span class="string"><span class="delimiter">&quot;</span><span class="content">tinkerpop-modern.json</span><span class="delimiter">&quot;</span></span>);
+graph.io(graphson()).writeGraph(<span class="string"><span class="delimiter">&quot;</span><span class="content">tinkerpop-modern.json</span><span class="delimiter">&quot;</span></span>);
 
 <span class="directive">final</span> Graph newGraph = TinkerGraph.open();
-newGraph.io(IoCore.graphson()).readGraph(<span class="string"><span class="delimiter">&quot;</span><span class="content">tinkerpop-modern.json</span><span class="delimiter">&quot;</span></span>);</code></pre>
+newGraph.io(graphson()).readGraph(<span class="string"><span class="delimiter">&quot;</span><span class="content">tinkerpop-modern.json</span><span class="delimiter">&quot;</span></span>);</code></pre>
 </div>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+Using <code>graphson()</code>, which is a static helper method of <code>IoCore</code>, will default to the most current version of GraphSON which is 3.0.
+</td>
+</tr>
+</table>
+</div>
 <div class="paragraph">
 <p>If a custom configuration is required, then have the <code>Graph</code> generate a <code>GraphReader</code> or <code>GraphWriter</code> "builder" instance:</p>
 </div>
@@ -2887,20 +2896,17 @@ newGraph.io(IoCore.graphson()).readGraph
 <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">final</span> Graph graph = TinkerFactory.createModern();
 <span class="keyword">try</span> (<span class="directive">final</span> <span class="predefined-type">OutputStream</span> os = <span class="keyword">new</span> <span class="predefined-type">FileOutputStream</span>(<span class="string"><span class="delimiter">&quot;</span><span class="content">tinkerpop-modern.json</span><span class="delimiter">&quot;</span></span>)) {
     <span class="directive">final</span> GraphSONMapper mapper = graph.io(IoCore.graphson()).mapper().normalize(<span class="predefined-constant">true</span>).create()
-    graph.io(IoCore.graphson()).writer().mapper(mapper).create().writeGraph(os, graph)
+    graph.io(graphson()).writer().mapper(mapper).create().writeGraph(os, graph)
 }
 
 <span class="directive">final</span> Graph newGraph = TinkerGraph.open();
 <span class="keyword">try</span> (<span class="directive">final</span> <span class="predefined-type">InputStream</span> stream = <span class="keyword">new</span> <span class="predefined-type">FileInputStream</span>(<span class="string"><span class="delimiter">&quot;</span><span class="content">tinkerpop-modern.json</span><span class="delimiter">&quot;</span></span>)) {
-    newGraph.io(IoCore.graphson()).reader().create().readGraph(stream, newGraph);
+    newGraph.io(graphson()).reader().create().readGraph(stream, newGraph);
 }</code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p>One of the important configuration options of the <code>GraphSONReader</code> and <code>GraphSONWriter</code> is the ability to embed type
-information into the output.  By embedding the types, it becomes possible to serialize a graph without losing type
-information that might be important when being consumed by another source.  The importance of this concept is
-demonstrated in the following example where a single <code>Vertex</code> is written to GraphSON using the Gremlin Console:</p>
+<p>The following example shows how a single <code>Vertex</code> is written to GraphSON using the Gremlin Console:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -2920,78 +2926,86 @@ gremlin&gt; f.close()</code></pre>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="json">{
-    <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: <span class="integer">1</span>,
+    <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: {
+        <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Int32</span><span class="delimiter">&quot;</span></span>,
+        <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="integer">1</span>
+    },
     <span class="key"><span class="delimiter">&quot;</span><span class="content">label</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">person</span><span class="delimiter">&quot;</span></span>,
     <span class="key"><span class="delimiter">&quot;</span><span class="content">outE</span><span class="delimiter">&quot;</span></span>: {
-        <span class="key"><span class="delimiter">&quot;</span><span class="content">created</span><span class="delimiter">&quot;</span></span>: [
-            {
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: <span class="integer">9</span>,
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">inV</span><span class="delimiter">&quot;</span></span>: <span class="integer">3</span>,
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">properties</span><span class="delimiter">&quot;</span></span>: {
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">weight</span><span class="delimiter">&quot;</span></span>: <span class="float">0.4</span>
+        <span class="key"><span class="delimiter">&quot;</span><span class="content">created</span><span class="delimiter">&quot;</span></span>: [{
+            <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: {
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Int32</span><span class="delimiter">&quot;</span></span>,
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="integer">9</span>
+            },
+            <span class="key"><span class="delimiter">&quot;</span><span class="content">inV</span><span class="delimiter">&quot;</span></span>: {
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Int32</span><span class="delimiter">&quot;</span></span>,
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="integer">3</span>
+            },
+            <span class="key"><span class="delimiter">&quot;</span><span class="content">properties</span><span class="delimiter">&quot;</span></span>: {
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">weight</span><span class="delimiter">&quot;</span></span>: {
+                    <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Double</span><span class="delimiter">&quot;</span></span>,
+                    <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="float">0.4</span>
                 }
             }
-        ],
-        <span class="key"><span class="delimiter">&quot;</span><span class="content">knows</span><span class="delimiter">&quot;</span></span>: [
-            {
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: <span class="integer">7</span>,
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">inV</span><span class="delimiter">&quot;</span></span>: <span class="integer">2</span>,
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">properties</span><span class="delimiter">&quot;</span></span>: {
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">weight</span><span class="delimiter">&quot;</span></span>: <span class="float">0.5</span>
+        }],
+        <span class="key"><span class="delimiter">&quot;</span><span class="content">knows</span><span class="delimiter">&quot;</span></span>: [{
+            <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: {
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Int32</span><span class="delimiter">&quot;</span></span>,
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="integer">7</span>
+            },
+            <span class="key"><span class="delimiter">&quot;</span><span class="content">inV</span><span class="delimiter">&quot;</span></span>: {
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Int32</span><span class="delimiter">&quot;</span></span>,
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="integer">2</span>
+            },
+            <span class="key"><span class="delimiter">&quot;</span><span class="content">properties</span><span class="delimiter">&quot;</span></span>: {
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">weight</span><span class="delimiter">&quot;</span></span>: {
+                    <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Double</span><span class="delimiter">&quot;</span></span>,
+                    <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="float">0.5</span>
                 }
+            }
+        }, {
+            <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: {
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Int32</span><span class="delimiter">&quot;</span></span>,
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="integer">8</span>
             },
-            {
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: <span class="integer">8</span>,
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">inV</span><span class="delimiter">&quot;</span></span>: <span class="integer">4</span>,
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">properties</span><span class="delimiter">&quot;</span></span>: {
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">weight</span><span class="delimiter">&quot;</span></span>: <span class="integer">1</span>
+            <span class="key"><span class="delimiter">&quot;</span><span class="content">inV</span><span class="delimiter">&quot;</span></span>: {
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Int32</span><span class="delimiter">&quot;</span></span>,
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="integer">4</span>
+            },
+            <span class="key"><span class="delimiter">&quot;</span><span class="content">properties</span><span class="delimiter">&quot;</span></span>: {
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">weight</span><span class="delimiter">&quot;</span></span>: {
+                    <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Double</span><span class="delimiter">&quot;</span></span>,
+                    <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="float">1.0</span>
                 }
             }
-        ]
+        }]
     },
     <span class="key"><span class="delimiter">&quot;</span><span class="content">properties</span><span class="delimiter">&quot;</span></span>: {
-        <span class="key"><span class="delimiter">&quot;</span><span class="content">name</span><span class="delimiter">&quot;</span></span>: [
-            {
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: <span class="integer">0</span>,
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">value</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">marko</span><span class="delimiter">&quot;</span></span>
-            }
-        ],
-        <span class="key"><span class="delimiter">&quot;</span><span class="content">age</span><span class="delimiter">&quot;</span></span>: [
-            {
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: <span class="integer">1</span>,
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">value</span><span class="delimiter">&quot;</span></span>: <span class="integer">29</span>
+        <span class="key"><span class="delimiter">&quot;</span><span class="content">name</span><span class="delimiter">&quot;</span></span>: [{
+            <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: {
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Int64</span><span class="delimiter">&quot;</span></span>,
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="integer">0</span>
+            },
+            <span class="key"><span class="delimiter">&quot;</span><span class="content">value</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">marko</span><span class="delimiter">&quot;</span></span>
+        }],
+        <span class="key"><span class="delimiter">&quot;</span><span class="content">age</span><span class="delimiter">&quot;</span></span>: [{
+            <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: {
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Int64</span><span class="delimiter">&quot;</span></span>,
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="integer">1</span>
+            },
+            <span class="key"><span class="delimiter">&quot;</span><span class="content">value</span><span class="delimiter">&quot;</span></span>: {
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Int32</span><span class="delimiter">&quot;</span></span>,
+                <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="integer">29</span>
             }
-        ]
+        }]
     }
 }</code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p>The vertex properly serializes to valid JSON but note that a consuming application will not automatically know how to
-interpret the numeric values.  In coercing those Java values to JSON, such information is lost.</p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">
-Additional documentation for GraphSON can be found in the <a href="http://tinkerpop.apache.org/docs/3.3.1-SNAPSHOT/dev/io/#graphson">IO Reference</a>.
-</td>
-</tr>
-</table>
-</div>
-<div class="sect3">
-<h4 id="graphson-types-embedding">Types embedding</h4>
-<div class="paragraph">
-<p>With a minor change to the construction of the <code>GraphSONWriter</code> the lossy nature of GraphSON can be avoided.</p>
-</div>
-<div class="sect4">
-<h5 id="graphson-1-0-types">Types with GraphSON 1.0</h5>
-<div class="paragraph">
-<p>GraphSON 1.0 is the version enabled by default when creating a GraphSON Mapper. Here is how to enable types with
-GraphSON 1.0:</p>
+<p>GraphSON has several versions and each has differences that prevent complete compatibility with one another. While the
+default version provided by <code>IoCore.graphson()</code> is recommended, it is possible to make changes to revert to an earlier
+version. The following shows an example of how to use 1.0 (with type embedding):</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -3001,170 +3015,23 @@ gremlin&gt; g = graph.traversal()
 ==&gt;graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">6</span>], standard]
 gremlin&gt; f = <span class="keyword">new</span> <span class="predefined-type">ByteArrayOutputStream</span>()
 ==&gt;
-gremlin&gt; mapper = graph.io(graphson()).mapper().typeInfo(TypeInfo.PARTIAL_TYPES).create()
-==&gt;org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper<span class="annotation">@ee2ae9a</span>
-gremlin&gt; graph.io(graphson()).writer().mapper(mapper).create().writeVertex(f, g.V(<span class="integer">1</span>).next(), BOTH)
+gremlin&gt; mapper = graph.io(GraphSONIo.build(GraphSONVersion.V1_0)).mapper().typeInfo(TypeInfo.PARTIAL_TYPES).create()
+==&gt;org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper<span class="error">@</span><span class="integer">1</span>be8c122
+gremlin&gt; graph.io(GraphSONIo.build(GraphSONVersion.V1_0)).writer().mapper(mapper).create().writeVertex(f, g.V(<span class="integer">1</span>).next(), BOTH)
 gremlin&gt; f.close()</code></pre>
 </div>
 </div>
-<div class="paragraph">
-<p>In the above code, the <code>typeInfo</code> option is set to <code>true</code> and the output below shows the difference in the output:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="json">{
-    <span class="key"><span class="delimiter">&quot;</span><span class="content">@class</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">java.util.HashMap</span><span class="delimiter">&quot;</span></span>,
-    <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: <span class="integer">1</span>,
-    <span class="key"><span class="delimiter">&quot;</span><span class="content">label</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">person</span><span class="delimiter">&quot;</span></span>,
-    <span class="key"><span class="delimiter">&quot;</span><span class="content">outE</span><span class="delimiter">&quot;</span></span>: {
-        <span class="key"><span class="delimiter">&quot;</span><span class="content">@class</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">java.util.HashMap</span><span class="delimiter">&quot;</span></span>,
-        <span class="key"><span class="delimiter">&quot;</span><span class="content">created</span><span class="delimiter">&quot;</span></span>: [
-            <span class="string"><span class="delimiter">&quot;</span><span class="content">java.util.ArrayList</span><span class="delimiter">&quot;</span></span>,
-            [
-                {
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">@class</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">java.util.HashMap</span><span class="delimiter">&quot;</span></span>,
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: <span class="integer">9</span>,
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">inV</span><span class="delimiter">&quot;</span></span>: <span class="integer">3</span>,
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">properties</span><span class="delimiter">&quot;</span></span>: {
-                        <span class="key"><span class="delimiter">&quot;</span><span class="content">@class</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">java.util.HashMap</span><span class="delimiter">&quot;</span></span>,
-                        <span class="key"><span class="delimiter">&quot;</span><span class="content">weight</span><span class="delimiter">&quot;</span></span>: <span class="float">0.4</span>
-                    }
-                }
-            ]
-        ],
-        <span class="key"><span class="delimiter">&quot;</span><span class="content">knows</span><span class="delimiter">&quot;</span></span>: [
-            <span class="string"><span class="delimiter">&quot;</span><span class="content">java.util.ArrayList</span><span class="delimiter">&quot;</span></span>,
-            [
-                {
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">@class</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">java.util.HashMap</span><span class="delimiter">&quot;</span></span>,
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: <span class="integer">7</span>,
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">inV</span><span class="delimiter">&quot;</span></span>: <span class="integer">2</span>,
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">properties</span><span class="delimiter">&quot;</span></span>: {
-                        <span class="key"><span class="delimiter">&quot;</span><span class="content">@class</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">java.util.HashMap</span><span class="delimiter">&quot;</span></span>,
-                        <span class="key"><span class="delimiter">&quot;</span><span class="content">weight</span><span class="delimiter">&quot;</span></span>: <span class="float">0.5</span>
-                    }
-                },
-                {
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">@class</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">java.util.HashMap</span><span class="delimiter">&quot;</span></span>,
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: <span class="integer">8</span>,
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">inV</span><span class="delimiter">&quot;</span></span>: <span class="integer">4</span>,
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">properties</span><span class="delimiter">&quot;</span></span>: {
-                        <span class="key"><span class="delimiter">&quot;</span><span class="content">@class</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">java.util.HashMap</span><span class="delimiter">&quot;</span></span>,
-                        <span class="key"><span class="delimiter">&quot;</span><span class="content">weight</span><span class="delimiter">&quot;</span></span>: <span class="integer">1</span>
-                    }
-                }
-            ]
-        ]
-    },
-    <span class="key"><span class="delimiter">&quot;</span><span class="content">properties</span><span class="delimiter">&quot;</span></span>: {
-        <span class="key"><span class="delimiter">&quot;</span><span class="content">@class</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">java.util.HashMap</span><span class="delimiter">&quot;</span></span>,
-        <span class="key"><span class="delimiter">&quot;</span><span class="content">name</span><span class="delimiter">&quot;</span></span>: [
-            <span class="string"><span class="delimiter">&quot;</span><span class="content">java.util.ArrayList</span><span class="delimiter">&quot;</span></span>,
-            [
-                {
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">@class</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">java.util.HashMap</span><span class="delimiter">&quot;</span></span>,
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: [
-                        <span class="string"><span class="delimiter">&quot;</span><span class="content">java.lang.Long</span><span class="delimiter">&quot;</span></span>,
-                        <span class="integer">0</span>
-                    ],
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">value</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">marko</span><span class="delimiter">&quot;</span></span>
-                }
-            ]
-        ],
-        <span class="key"><span class="delimiter">&quot;</span><span class="content">age</span><span class="delimiter">&quot;</span></span>: [
-            <span class="string"><span class="delimiter">&quot;</span><span class="content">java.util.ArrayList</span><span class="delimiter">&quot;</span></span>,
-            [
-                {
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">@class</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">java.util.HashMap</span><span class="delimiter">&quot;</span></span>,
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: [
-                        <span class="string"><span class="delimiter">&quot;</span><span class="content">java.lang.Long</span><span class="delimiter">&quot;</span></span>,
-                        <span class="integer">1</span>
-                    ],
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">value</span><span class="delimiter">&quot;</span></span>: <span class="integer">29</span>
-                }
-            ]
-        ]
-    }
-}</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The ambiguity of components of the GraphSON is now removed by the <code>@class</code> property, which contains Java class
-information for the data it is associated with.  The <code>@class</code> property is used for all non-final types, with the
-exception of a small number of "natural" types (String, Boolean, Integer, and Double) which can be correctly inferred
-from JSON typing.  While the output is more verbose, it comes with the security of not losing type information.  While
-non-JVM languages won&#8217;t be able to consume this information automatically, at least there is a hint as to how the
-values should be coerced back into the correct types in the target language.</p>
-</div>
-</div>
-<div class="sect4">
-<h5 id="graphson-2-0-types">GraphSON 2.0</h5>
-<div class="paragraph">
-<p>GraphSON 2.0 has been introduced to improve the format of the typed values from GraphSON 1.0. It provides non-Java
-centric types information in a consistent format.</p>
-</div>
-<div class="paragraph">
-<p>With GraphSON 2.0, types are enabled by default.</p>
-</div>
-<div class="paragraph">
-<p>The type format is:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Non typed value - <code>value</code></p>
-</li>
-<li>
-<p>Typed value     - <code>{"@type":"typeID", "@value":value}</code></p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>TypeIDs are composed of 2 parts, a namespace, and a type name, in the format <code>"namespace:typename"</code>.
-A namespace gives the possibility for TinkerPop implementors to categorize custom types they may implement
-and avoid collision with existing TinkerPop types. By default, TinkerPop types will have the
-namespace <code>g</code>.</p>
-</div>
-<div class="paragraph">
-<p>GraphSON 2.0 will provide type information for any value that is not <code>String</code>, <code>Boolean</code>, <code>Map</code> or <code>Collection</code>.
-TinkerPop includes types for graph elements:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Vertex - <code>g:Vertex</code></p>
-</li>
-<li>
-<p>Edge - <code>g:Edge</code></p>
-</li>
-<li>
-<p>VertexPropery - <code>g:VertexProperty</code></p>
-</li>
-<li>
-<p>Property - <code>g:Property</code></p>
-</li>
-<li>
-<p>Path - <code>g:Path</code></p>
-</li>
-<li>
-<p>Tree - <code>g:Tree</code></p>
-</li>
-<li>
-<p>Graph - <code>g:Graph</code></p>
-</li>
-<li>
-<p>Metrics - <code>g:Metrics</code></p>
-</li>
-<li>
-<p>TraversalMetrics - <code>g:TraversalMetrics</code></p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>GraphSON 2.0 can also be configured with "extended" types that build on top of the core types in the "g" namespace.
-The extended types are in the "gx" namespace as exposed by <code>GraphSONXModuleV2d0</code> and includes additional types like
-mappings to Java&#8217;s <code>java.time.*</code> classes, <code>BigInteger</code>, <code>BigDecimal</code> and others. This module can be added when building
-a <code>GraphSONMapper</code> by calling the <code>addCustomModule()</code> method on the <code>Builder</code>.</p>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+Additional documentation for GraphSON can be found in the <a href="http://tinkerpop.apache.org/docs/3.3.1-SNAPSHOT/dev/io/#graphson">IO Reference</a>.
+</td>
+</tr>
+</table>
 </div>
 <div class="admonitionblock important">
 <table>
@@ -3180,98 +3047,6 @@ implementations are only required to sup
 </tr>
 </table>
 </div>
-<div class="paragraph">
-<p>Here&#8217;s the same previous example of GraphSON 1.0, but with GraphSON 2.0:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="groovy">gremlin&gt; graph = TinkerFactory.createModern()
-==&gt;tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">6</span>]
-gremlin&gt; g = graph.traversal()
-==&gt;graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">6</span>], standard]
-gremlin&gt; f = <span class="keyword">new</span> <span class="predefined-type">ByteArrayOutputStream</span>()
-==&gt;
-gremlin&gt; mapper = graph.io(graphson()).mapper().version(GraphSONVersion.V2_0).create()
-==&gt;org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper<span class="error">@</span><span class="float">359e27d</span><span class="integer">2</span>
-gremlin&gt; graph.io(graphson()).writer().mapper(mapper).create().writeVertex(f, g.V(<span class="integer">1</span>).next(), BOTH)
-gremlin&gt; f.close()</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Creating a GraphSON 2.0 mapper is done by calling <code>.version(GraphSONVersion.V2_0)</code> on the mapper builder. Here&#8217;s is the
-example output from the code above:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="json">{
-    <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Vertex</span><span class="delimiter">&quot;</span></span>,
-    <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: {
-        <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: {
-            <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Int32</span><span class="delimiter">&quot;</span></span>,
-            <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="integer">1</span>
-        },
-        <span class="key"><span class="delimiter">&quot;</span><span class="content">label</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">person</span><span class="delimiter">&quot;</span></span>,
-        <span class="key"><span class="delimiter">&quot;</span><span class="content">properties</span><span class="delimiter">&quot;</span></span>: {
-            <span class="key"><span class="delimiter">&quot;</span><span class="content">name</span><span class="delimiter">&quot;</span></span>: [{
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:VertexProperty</span><span class="delimiter">&quot;</span></span>,
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: {
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: {
-                        <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Int64</span><span class="delimiter">&quot;</span></span>,
-                        <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="integer">0</span>
-                    },
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">value</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">marko</span><span class="delimiter">&quot;</span></span>,
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">label</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">name</span><span class="delimiter">&quot;</span></span>
-                }
-            }],
-            <span class="key"><span class="delimiter">&quot;</span><span class="content">uuid</span><span class="delimiter">&quot;</span></span>: [{
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:VertexProperty</span><span class="delimiter">&quot;</span></span>,
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: {
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: {
-                        <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Int64</span><span class="delimiter">&quot;</span></span>,
-                        <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="integer">12</span>
-                    },
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">value</span><span class="delimiter">&quot;</span></span>: {
-                        <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:UUID</span><span class="delimiter">&quot;</span></span>,
-                        <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">829c7ddb-3831-4687-a872-e25201230cd3</span><span class="delimiter">&quot;</span></span>
-                    },
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">label</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">uuid</span><span class="delimiter">&quot;</span></span>
-                }
-            }],
-            <span class="key"><span class="delimiter">&quot;</span><span class="content">age</span><span class="delimiter">&quot;</span></span>: [{
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:VertexProperty</span><span class="delimiter">&quot;</span></span>,
-                <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: {
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>: {
-                        <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Int64</span><span class="delimiter">&quot;</span></span>,
-                        <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="integer">1</span>
-                    },
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">value</span><span class="delimiter">&quot;</span></span>: {
-                        <span class="key"><span class="delimiter">&quot;</span><span class="content">@type</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">g:Int32</span><span class="delimiter">&quot;</span></span>,
-                        <span class="key"><span class="delimiter">&quot;</span><span class="content">@value</span><span class="delimiter">&quot;</span></span>: <span class="integer">29</span>
-                    },
-                    <span class="key"><span class="delimiter">&quot;</span><span class="content">label</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">age</span><span class="delimiter">&quot;</span></span>
-                }
-            }]
-        }
-    }
-}</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Types can be disabled when creating a GraphSON 2.0 <code>Mapper</code> with:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="groovy">graph.io(graphson()).mapper().
-      version(GraphSONVersion.V2_0).
-      typeInfo(GraphSONMapper.TypeInfo.NO_TYPES).create()</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>By disabling types, the JSON payload produced will lack the extra information that is written for types. Please note,
-disabling types can be unsafe with regards to the written data in that types can be lost.</p>
-</div>
-</div>
-</div>
 </div>
 <div class="sect2">
 <h3 id="gryo-reader-writer">Gryo Reader/Writer</h3>
@@ -3316,12 +3091,24 @@ other.  Failure to do so, may result in
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">final</span> Graph graph = TinkerFactory.createModern();
-graph.io(IoCore.gryo()).writeGraph(<span class="string"><span class="delimiter">&quot;</span><span class="content">tinkerpop-modern.kryo</span><span class="delimiter">&quot;</span></span>);
+graph.io(gryo()).writeGraph(<span class="string"><span class="delimiter">&quot;</span><span class="content">tinkerpop-modern.kryo</span><span class="delimiter">&quot;</span></span>);
 
 <span class="directive">final</span> Graph newGraph = TinkerGraph.open();
-newGraph.io(IoCore.gryo()).readGraph(<span class="string"><span class="delimiter">&quot;</span><span class="content">tinkerpop-modern.kryo</span><span class="delimiter">&quot;</span></span>);</code></pre>
+newGraph.io(gryo()).readGraph(<span class="string"><span class="delimiter">&quot;</span><span class="content">tinkerpop-modern.kryo</span><span class="delimiter">&quot;</span></span>);</code></pre>
 </div>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+Using <code>gryo()</code>, which is a static helper method of <code>IoCore</code>, will default to the most current version of Gryo which is 3.0.
+</td>
+</tr>
+</table>
+</div>
 <div class="paragraph">
 <p>If a custom configuration is required, then have the <code>Graph</code> generate a <code>GraphReader</code> or <code>GraphWriter</code> "builder" instance:</p>
 </div>
@@ -3329,12 +3116,12 @@ newGraph.io(IoCore.gryo()).readGraph(<sp
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">final</span> Graph graph = TinkerFactory.createModern();
 <span class="keyword">try</span> (<span class="directive">final</span> <span class="predefined-type">OutputStream</span> os = <span class="keyword">new</span> <span class="predefined-type">FileOutputStream</span>(<span class="string"><span class="delimiter">&quot;</span><span class="content">tinkerpop-modern.kryo</span><span class="delimiter">&quot;</span></span>)) {
-    graph.io(IoCore.gryo()).writer().create().writeGraph(os, graph);
+    graph.io(GryoIo.build(GryoVersion.V1_0)).writer().create().writeGraph(os, graph);
 }
 
 <span class="directive">final</span> Graph newGraph = TinkerGraph.open();
 <span class="keyword">try</span> (<span class="directive">final</span> <span class="predefined-type">InputStream</span> stream = <span class="keyword">new</span> <span class="predefined-type">FileInputStream</span>(<span class="string"><span class="delimiter">&quot;</span><span class="content">tinkerpop-modern.kryo</span><span class="delimiter">&quot;</span></span>)) {
-    newGraph.io(IoCore.gryo()).reader().create().readGraph(stream, newGraph);
+    newGraph.io(GryoIo.build(GryoVersion.V1_0)).reader().create().readGraph(stream, newGraph);
 }</code></pre>
 </div>
 </div>
@@ -4220,13 +4007,13 @@ gremlin&gt; graph.io(graphml()).readGrap
 gremlin&gt; g = graph.traversal().withoutStrategies(LazyBarrierStrategy) <span class="invisible">//</span><b class="conum">1</b><span class="invisible">\</span>
 ==&gt;graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">808</span> <span class="key">edges</span>:<span class="integer">8049</span>], standard]
 gremlin&gt; clockWithResult(<span class="integer">1</span>){g.V().both().both().both().count().next()} <span class="invisible">//</span><b class="conum">2</b><span class="invisible">\</span>
-==&gt;<span class="float">8472.772498999999</span>
+==&gt;<span class="float">8890.969459</span>
 ==&gt;<span class="integer">126653966</span>
 gremlin&gt; clockWithResult(<span class="integer">1</span>){g.V().repeat(both()).times(<span class="integer">3</span>).count().next()} <span class="invisible">//</span><b class="conum">3</b><span class="invisible">\</span>
-==&gt;<span class="float">20.933457</span>
+==&gt;<span class="float">14.811992</span>
 ==&gt;<span class="integer">126653966</span>
 gremlin&gt; clockWithResult(<span class="integer">1</span>){g.V().both().barrier().both().barrier().both().barrier().count().next()} <span class="invisible">//</span><b class="conum">4</b><span class="invisible">\</span>
-==&gt;<span class="float">14.087714</span>
+==&gt;<span class="float">15.764731999999999</span>
 ==&gt;<span class="integer">126653966</span></code></pre>
 </div>
 </div>
@@ -4263,7 +4050,7 @@ gremlin&gt; graph.io(graphml()).readGrap
 gremlin&gt; g = graph.traversal() <span class="invisible">//</span><b class="conum">1</b><span class="invisible">\</span>
 ==&gt;graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">808</span> <span class="key">edges</span>:<span class="integer">8049</span>], standard]
 gremlin&gt; clockWithResult(<span class="integer">1</span>){g.V().both().both().both().count().next()}
-==&gt;<span class="float">14.407808</span>
+==&gt;<span class="float">9.919889999999999</span>
 ==&gt;<span class="integer">126653966</span>
 gremlin&gt; g.V().both().both().both().count().iterate().toString() <span class="invisible">//</span><b class="conum">2</b><span class="invisible">\</span>
 ==&gt;[TinkerGraphStep(vertex,<span class="type">[]</span>), VertexStep(BOTH,vertex), NoOpBarrierStep(<span class="integer">2500</span>), VertexStep(BOTH,vertex), NoOpBarrierStep(<span class="integer">2500</span>), VertexStep(BOTH,edge), CountGlobalStep]</code></pre>
@@ -4523,7 +4310,8 @@ gremlin&gt; g.V().hasLabel(<span class="
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="groovy">gremlin&gt; g.V().coin(<span class="float">0.5</span>)
 ==&gt;v[<span class="integer">1</span>]
-==&gt;v[<span class="integer">3</span>]
+==&gt;v[<span class="integer">4</span>]
+==&gt;v[<span class="integer">6</span>]
 gremlin&gt; g.V().coin(<span class="float">0.0</span>)
 gremlin&gt; g.V().coin(<span class="float">1.0</span>)
 ==&gt;v[<span class="integer">1</span>]
@@ -4697,12 +4485,12 @@ has been seen or not.</p>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="groovy">gremlin&gt; g.V().valueMap(<span class="predefined-constant">true</span>, <span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>)
-==&gt;[<span class="key">name</span>:[marko],<span class="key">id</span>:<span class="integer">1</span>,<span class="key">label</span>:person]
-==&gt;[<span class="key">name</span>:[vadas],<span class="key">id</span>:<span class="integer">2</span>,<span class="key">label</span>:person]
-==&gt;[<span class="key">name</span>:[lop],<span class="key">id</span>:<span class="integer">3</span>,<span class="key">label</span>:software]
-==&gt;[<span class="key">name</span>:[josh],<span class="key">id</span>:<span class="integer">4</span>,<span class="key">label</span>:person]
-==&gt;[<span class="key">name</span>:[ripple],<span class="key">id</span>:<span class="integer">5</span>,<span class="key">label</span>:software]
-==&gt;[<span class="key">name</span>:[peter],<span class="key">id</span>:<span class="integer">6</span>,<span class="key">label</span>:person]
+==&gt;[<span class="key">id</span>:<span class="integer">1</span>,<span class="key">name</span>:[marko],<span class="key">label</span>:person]
+==&gt;[<span class="key">id</span>:<span class="integer">2</span>,<span class="key">name</span>:[vadas],<span class="key">label</span>:person]
+==&gt;[<span class="key">id</span>:<span class="integer">3</span>,<span class="key">name</span>:[lop],<span class="key">label</span>:software]
+==&gt;[<span class="key">id</span>:<span class="integer">4</span>,<span class="key">name</span>:[josh],<span class="key">label</span>:person]
+==&gt;[<span class="key">id</span>:<span class="integer">5</span>,<span class="key">name</span>:[ripple],<span class="key">label</span>:software]
+==&gt;[<span class="key">id</span>:<span class="integer">6</span>,<span class="key">name</span>:[peter],<span class="key">label</span>:person]
 gremlin&gt; g.V().dedup().by(label).values(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>)
 ==&gt;marko
 ==&gt;lop</code></pre>
@@ -4782,13 +4570,13 @@ Original Traversal                 [Grap
 
 ConnectiveStrategy           [D]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), IdentityStep, EdgeVertexStep(IN), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 MatchPredicateStrategy       [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), IdentityStep, EdgeVertexStep(IN), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
-RepeatUnrollStrategy         [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), IdentityStep, EdgeVertexStep(IN), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
-PathRetractionStrategy       [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), IdentityStep, EdgeVertexStep(IN), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 FilterRankingStrategy        [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), IdentityStep, EdgeVertexStep(IN), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 InlineFilterStrategy         [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), IdentityStep, EdgeVertexStep(IN), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 IncidentToAdjacentStrategy   [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), IdentityStep, EdgeVertexStep(IN), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 AdjacentToIncidentStrategy   [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), IdentityStep, EdgeVertexStep(IN), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
+RepeatUnrollStrategy         [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), IdentityStep, EdgeVertexStep(IN), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 CountStrategy                [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), IdentityStep, EdgeVertexStep(IN), RangeGlobalStep(<span class="integer">0</span>,<span class="integer">6</span>), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
+PathRetractionStrategy       [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), IdentityStep, EdgeVertexStep(IN), RangeGlobalStep(<span class="integer">0</span>,<span class="integer">6</span>), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 LazyBarrierStrategy          [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), IdentityStep, EdgeVertexStep(IN), RangeGlobalStep(<span class="integer">0</span>,<span class="integer">6</span>), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 TinkerGraphCountStrategy     [P]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), IdentityStep, EdgeVertexStep(IN), RangeGlobalStep(<span class="integer">0</span>,<span class="integer">6</span>), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 TinkerGraphStepStrategy      [P]   [TinkerGraphStep(vertex,[~label.eq(person)]), VertexStep(OUT,edge), IdentityStep, EdgeVertexStep(IN), RangeGlobalStep(<span class="integer">0</span>,<span class="integer">6</span>), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
@@ -5795,6 +5583,113 @@ path of the traverser in <code>match()</
 </div>
 </div>
 <div class="sect2">
+<h3 id="math-step">Math Step</h3>
+<div class="paragraph">
+<p>The <code>math()</code>-step (<strong>math</strong>) enables scientific calculator functionality within Gremlin. This step deviates from the common
+function composition and nesting formalisms to provide an easy to read string-based math processor. Variables within the
+equation map to scopes in Gremlin&#8201;&#8212;&#8201;e.g. path labels, side-effects, or incoming map keys. This step supports
+<code>by()</code>-modulation where the <code>by()</code>-modulators are applied in the order in which the variables are first referenced
+within the equation. Note that the reserved variable <code>_</code> refers to the current numeric traverser object incoming to the
+<code>math()</code>-step.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy">gremlin&gt; g.V().as(<span class="string"><span class="delimiter">'</span><span class="content">a</span><span class="delimiter">'</span></span>).out(<span class="string"><span class="delimiter">'</span><span class="content">knows</span><span class="delimiter">'</span></span>).as(<span class="string"><span class="delimiter">'</span><span class="content">b</span><span class="delimiter">'</span></span>).math(<span class="string"><span class="delimiter">'</span><span class="content">a + b</span><span class="delimiter">'</span></span>).by(<span class="string"><span class="delimiter">'</span><span class="content">age</span><span class="delimiter">'</span></span>)
+==&gt;<span class="float">56.0</span>
+==&gt;<span class="float">61.0</span>
+gremlin&gt; g.V().as(<span class="string"><span class="delimiter">'</span><span class="content">a</span><span class="delimiter">'</span></span>).out(<span class="string"><span class="delimiter">'</span><span class="content">created</span><span class="delimiter">'</span></span>).as(<span class="string"><span class="delimiter">'</span><span class="content">b</span><span class="delimiter">'</span></span>).
+           math(<span class="string"><span class="delimiter">'</span><span class="content">b + a</span><span class="delimiter">'</span></span>).
+             by(both().count().math(<span class="string"><span class="delimiter">'</span><span class="content">_ + 100</span><span class="delimiter">'</span></span>)).
+             by(<span class="string"><span class="delimiter">'</span><span class="content">age</span><span class="delimiter">'</span></span>)
+==&gt;<span class="float">132.0</span>
+==&gt;<span class="float">133.0</span>
+==&gt;<span class="float">135.0</span>
+==&gt;<span class="float">138.0</span>
+gremlin&gt; g.withSideEffect(<span class="string"><span class="delimiter">'</span><span class="content">x</span><span class="delimiter">'</span></span>,<span class="integer">10</span>).V().values(<span class="string"><span class="delimiter">'</span><span class="content">age</span><span class="delimiter">'</span></span>).math(<span class="string"><span class="delimiter">'</span><span class="content">_ / x</span><span class="delimiter">'</span></span>)
+==&gt;<span class="float">2.9</span>
+==&gt;<span class="float">2.7</span>
+==&gt;<span class="float">3.2</span>
+==&gt;<span class="float">3.5</span>
+gremlin&gt; g.withSack(<span class="integer">1</span>).V(<span class="integer">1</span>).repeat(sack(sum).by(constant(<span class="integer">1</span>))).times(<span class="integer">10</span>).emit().sack().math(<span class="string"><span class="delimiter">'</span><span class="content">sin _</span><span class="delimiter">'</span></span>)
+==&gt;<span class="float">0.9092974268256817</span>
+==&gt;<span class="float">0.1411200080598672</span>
+==&gt;-<span class="float">0.7568024953079282</span>
+==&gt;-<span class="float">0.9589242746631385</span>
+==&gt;-<span class="float">0.27941549819892586</span>
+==&gt;<span class="float">0.6569865987187891</span>
+==&gt;<span class="float">0.9893582466233818</span>
+==&gt;<span class="float">0.4121184852417566</span>
+==&gt;-<span class="float">0.5440211108893698</span>
+==&gt;-<span class="float">0.9999902065507035</span></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The operators supported by the calculator include: <code>*</code>, <code>+</code>, <code>\</code>, <code>^</code>, and <code>%</code>.
+Furthermore, the following built in functions are provided:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>abs</code>: absolute value</p>
+</li>
+<li>
+<p><code>acos</code>: arc cosine</p>
+</li>
+<li>
+<p><code>asin</code>: arc sine</p>
+</li>
+<li>
+<p><code>atan</code>: arc tangent</p>
+</li>
+<li>
+<p><code>cbrt</code>: cubic root</p>
+</li>
+<li>
+<p><code>ceil</code>: nearest upper integer</p>
+</li>
+<li>
+<p><code>cos</code>: cosine</p>
+</li>
+<li>
+<p><code>cosh</code>: hyperbolic cosine</p>
+</li>
+<li>
+<p><code>exp</code>: euler&#8217;s number raised to the power (<code>e^x</code>)</p>
+</li>
+<li>
+<p><code>floor</code>: nearest lower integer</p>
+</li>
+<li>
+<p><code>log</code>: logarithmus naturalis (base e)</p>
+</li>
+<li>
+<p><code>log10</code>: logarithm (base 10)</p>
+</li>
+<li>
+<p><code>log2</code>: logarithm (base 2)</p>
+</li>
+<li>
+<p><code>sin</code>: sine</p>
+</li>
+<li>
+<p><code>sinh</code>: hyperbolic sine</p>
+</li>
+<li>
+<p><code>sqrt</code>: square root</p>
+</li>
+<li>
+<p><code>tan</code>: tangent</p>
+</li>
+<li>
+<p><code>tanh</code>: hyperbolic tangent</p>
+</li>
+<li>
+<p><code>signum</code>: signum function</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
 <h3 id="max-step">Max Step</h3>
 <div class="paragraph">
 <p>The <code>max()</code>-step (<strong>map</strong>) operates on a stream of numbers and determines which is the largest number in the stream.</p>
@@ -5894,8 +5789,8 @@ not return any objects.</p>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="groovy">gremlin&gt; g.V().not(hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>)).valueMap(<span class="predefined-constant">true</span>)
-==&gt;[<span class="key">name</span>:[lop],<span class="key">id</span>:<span class="integer">3</span>,<span class="key">label</span>:software,<span class="key">lang</span>:[java]]
-==&gt;[<span class="key">name</span>:[ripple],<span class="key">id</span>:<span class="integer">5</span>,<span class="key">label</span>:software,<span class="key">lang</span>:[java]]
+==&gt;[<span class="key">id</span>:<span class="integer">3</span>,<span class="key">name</span>:[lop],<span class="key">lang</span>:[java],<span class="key">label</span>:software]
+==&gt;[<span class="key">id</span>:<span class="integer">5</span>,<span class="key">name</span>:[ripple],<span class="key">lang</span>:[java],<span class="key">label</span>:software]
 gremlin&gt; g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).
            not(out(<span class="string"><span class="delimiter">'</span><span class="content">created</span><span class="delimiter">'</span></span>).count().is(gt(<span class="integer">1</span>))).values(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>) <span class="invisible">//</span><b class="conum">1</b><span class="invisible">\</span>
 ==&gt;marko
@@ -6083,15 +5978,15 @@ gremlin&gt; g.V().hasLabel(<span class="
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="groovy">gremlin&gt; g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).order().by(shuffle)
-==&gt;v[<span class="integer">1</span>]
 ==&gt;v[<span class="integer">6</span>]
+==&gt;v[<span class="integer">1</span>]
 ==&gt;v[<span class="integer">2</span>]
 ==&gt;v[<span class="integer">4</span>]
 gremlin&gt; g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).order().by(shuffle)
-==&gt;v[<span class="integer">6</span>]
-==&gt;v[<span class="integer">2</span>]
 ==&gt;v[<span class="integer">1</span>]
-==&gt;v[<span class="integer">4</span>]</code></pre>
+==&gt;v[<span class="integer">4</span>]
+==&gt;v[<span class="integer">6</span>]
+==&gt;v[<span class="integer">2</span>]</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -6164,21 +6059,21 @@ The <code>pageRank()</code>-step is a <c
 <pre class="CodeRay highlight"><code data-lang="groovy">gremlin&gt; g = graph.traversal().withComputer()
 ==&gt;graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">6</span>], graphcomputer]
 gremlin&gt; 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>)
-==&gt;<span class="float">0.19250000000000003</span>
-==&gt;<span class="float">0.19250000000000003</span>
-==&gt;<span class="float">0.4018125</span>
-==&gt;<span class="float">0.15000000000000002</span>
-==&gt;<span class="float">0.15000000000000002</span>
-==&gt;<span class="float">0.23181250000000003</span>
+==&gt;<span class="float">0.14598540152719103</span>
+==&gt;<span class="float">0.14598540152719103</span>
+==&gt;<span class="float">0.30472009079122486</span>
+==&gt;<span class="float">0.11375510357865537</span>
+==&gt;<span class="float">0.11375510357865537</span>
+==&gt;<span class="float">0.1757988989970823</span>
 gremlin&gt; g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).
            pageRank().
              by(outE(<span class="string"><span class="delimiter">'</span><span class="content">knows</span><span class="delimiter">'</span></span>)).
              by(<span class="string"><span class="delimiter">'</span><span class="content">friendRank</span><span class="delimiter">'</span></span>).
            order().by(<span class="string"><span class="delimiter">'</span><span class="content">friendRank</span><span class="delimiter">'</span></span>,decr).valueMap(<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">friendRank</span><span class="delimiter">'</span></span>)
-==&gt;[<span class="key">friendRank</span>:[<span class="float">0.21375000000000002</span>],<span class="key">name</span>:[josh]]
-==&gt;[<span class="key">friendRank</span>:[<span class="float">0.21375000000000002</span>],<span class="key">name</span>:[vadas]]
-==&gt;[<span class="key">friendRank</span>:[<span class="float">0.15000000000000002</span>],<span class="key">name</span>:[marko]]
-==&gt;[<span class="key">friendRank</span>:[<span class="float">0.15000000000000002</span>],<span class="key">name</span>:[peter]]</code></pre>
+==&gt;[<span class="key">friendRank</span>:[<span class="float">0.8321166533236799</span>],<span class="key">name</span>:[vadas]]
+==&gt;[<span class="key">friendRank</span>:[<span class="float">0.8321166533236799</span>],<span class="key">name</span>:[josh]]
+==&gt;[<span class="key">friendRank</span>:[<span class="float">0.5839416733381598</span>],<span class="key">name</span>:[marko]]
+==&gt;[<span class="key">friendRank</span>:[<span class="float">0.5839416733381598</span>],<span class="key">name</span>:[peter]]</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -6195,51 +6090,51 @@ gremlin&gt; g.V().hasLabel(<span class="
            order().by(<span class="string"><span class="delimiter">'</span><span class="content">friendRank</span><span class="delimiter">'</span></span>,decr).valueMap(<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">friendRank</span><span class="delimiter">'</span></span>).explain()
 ==&gt;Traversal Explanation
 =============================================================================================================================================================================================================================================
-Original Traversal                    [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), OrderGlobalStep([[value(friendRank), decr]]), PropertyM
+Original Traversal                    [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">20</span>,graphfilter[none]), OrderGlobalStep([[value(friendRank), decr]]), PropertyM
                                          apStep([name, friendRank],value)]
 
-ConnectiveStrategy              [D]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), OrderGlobalStep([[value(friendRank), decr]]), PropertyM
+ConnectiveStrategy              [D]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">20</span>,graphfilter[none]), OrderGlobalStep([[value(friendRank), decr]]), PropertyM
                                          apStep([name, friendRank],value)]
-VertexProgramStrategy           [D]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Travers
+VertexProgramStrategy           [D]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">20</span>,graphfilter[none]), Travers
                                          alVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-MatchPredicateStrategy          [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Travers
+MatchPredicateStrategy          [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">20</span>,graphfilter[none]), Travers
                                          alVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-PathProcessorStrategy           [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Travers
+FilterRankingStrategy           [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">20</span>,graphfilter[none]), Travers
                                          alVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-RepeatUnrollStrategy            [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Travers
+PathProcessorStrategy           [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">20</span>,graphfilter[none]), Travers
                                          alVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-PathRetractionStrategy          [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Travers
+InlineFilterStrategy            [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">20</span>,graphfilter[none]), Travers
                                          alVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-FilterRankingStrategy           [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Travers
+IncidentToAdjacentStrategy      [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">20</span>,graphfilter[none]), Travers
                                          alVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-InlineFilterStrategy            [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Travers
+AdjacentToIncidentStrategy      [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">20</span>,graphfilter[none]), Travers
                                          alVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-IncidentToAdjacentStrategy      [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Travers
+RepeatUnrollStrategy            [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">20</span>,graphfilter[none]), Travers
                                          alVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-AdjacentToIncidentStrategy      [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Travers
+CountStrategy                   [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">20</span>,graphfilter[none]), Travers
                                          alVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]

[... 1434 lines stripped ...]