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 2015/11/12 20:14:03 UTC

svn commit: r1714105 [3/3] - in /incubator/tinkerpop/site/docs/3.1.0-SNAPSHOT: developer.html index.html tutorials-getting-started.html upgrade.html

Modified: incubator/tinkerpop/site/docs/3.1.0-SNAPSHOT/tutorials-getting-started.html
URL: http://svn.apache.org/viewvc/incubator/tinkerpop/site/docs/3.1.0-SNAPSHOT/tutorials-getting-started.html?rev=1714105&r1=1714104&r2=1714105&view=diff
==============================================================================
--- incubator/tinkerpop/site/docs/3.1.0-SNAPSHOT/tutorials-getting-started.html (original)
+++ incubator/tinkerpop/site/docs/3.1.0-SNAPSHOT/tutorials-getting-started.html Thu Nov 12 19:14:02 2015
@@ -793,14 +793,17 @@ span.line-numbers { border-right: 1px so
 </head>
 <body class="article">
 <div id="header">
-<h1>Getting Started</h1>
 </div>
 <div id="content">
-<div id="preamble">
-<div class="sectionbody">
+<div class="imageblock">
+<div class="content">
+<img src="images/apache-tinkerpop-logo.png" alt="apache tinkerpop logo" width="500">
+</div>
+</div>
+<h1 id="_getting_started" class="sect0">Getting Started</h1>
 <div class="paragraph">
 <p><a href="http://tinkerpop.com">Apache TinkerPop</a> is an open source Graph Computing Framework. Within itself, TinkerPop
-represents a large collection of capabilities and technologies and in its wider ecosystem an additionally extended
+represents a large collection of capabilities and technologies and, in its wider ecosystem, an additionally extended
 world of <a href="http://tinkerpop.incubator.apache.org/#graph-systems">third-party contributed</a> graph libraries and
 systems. TinkerPop&#8217;s ecosystem can appear complex to newcomers of all experience, especially when glancing at the
 <a href="http://tinkerpop.incubator.apache.org/docs/3.1.0-SNAPSHOT/index.html">reference documentation</a> for the first time.</p>
@@ -808,16 +811,14 @@ systems. TinkerPop&#8217;s ecosystem can
 <div class="paragraph">
 <p>So, where do you get started with TinkerPop? How do you dive in quickly and get productive? Well - Gremlin, the
 most recognizable citizen of The TinkerPop, is here to help with this thirty minute tutorial. That&#8217;s right - in just
-thirty short minutes, you too can be fit to start building graph applications with TinkerPop. Welcome to <em>The Gremlin
-TinkerPop - by Gremlin</em>!</p>
+thirty short minutes, you too can be fit to start building graph applications with TinkerPop. Welcome to <em>The
+TinkerPop Workout - by Gremlin</em>!</p>
 </div>
 <div class="imageblock">
 <div class="content">
 <img src="images/gremlin-gym.png" alt="gremlin gym" width="1024">
 </div>
 </div>
-</div>
-</div>
 <div class="sect1">
 <h2 id="_the_first_five_minutes">The First Five Minutes</h2>
 <div class="sectionbody">
@@ -833,7 +834,7 @@ your trainer is in order. Meet Gremlin!<
 databases, as <a href="http://sql2gremlin.com/">SQL</a> is the query language to relational databases. To tell Gremlin how
 he should "traverse" the graph (i.e. what you want your query to do) you need a way to provide him commands in the
 language he understands - and, of course, that language is called "Gremlin". For this task, you need one of
-TinkerPop&#8217;s most important tools: the <a href="http://tinkerpop.incubator.apache.org/docs/3.1.0-SNAPSHOT/#gremlin-console">Gremlin Console</a>.</p>
+TinkerPop&#8217;s most important tools: <a href="http://tinkerpop.incubator.apache.org/docs/3.1.0-SNAPSHOT/#gremlin-console">The Gremlin Console</a>.</p>
 </div>
 <div class="paragraph">
 <p>Download the console, unpackage it and start it:</p>
@@ -878,7 +879,7 @@ graphs, working out complex traversals,
 <a href="http://tinkerpop.incubator.apache.org/docs/3.1.0-SNAPSHOT/#_the_graph_structure">structure</a> and data of the
 graph. TinkerPop is a graph abstraction layer over different graph databases and different graph processors, so there
 are many <code>Graph</code> instances you can choose from to instantiate in the console. The best <code>Graph</code> instance to start with
-however, is <a href="http://tinkerpop.incubator.apache.org/docs/3.1.0-SNAPSHOT/#tinkergraph-gremlin">TinkerGraph</a>. TinkerGraph
+however is <a href="http://tinkerpop.incubator.apache.org/docs/3.1.0-SNAPSHOT/#tinkergraph-gremlin">TinkerGraph</a>. TinkerGraph
 is a fast, in-memory graph database with a small handful of configuration options, making it a good choice for beginners.</p>
 </div>
 <div class="admonitionblock tip">
@@ -889,7 +890,7 @@ is a fast, in-memory graph database with
 </td>
 <td class="content">
 TinkerGraph is not just a toy for beginners. It is useful in analyzing subgraphs taken from a large graph,
-trying out, working with a static graph that doesn&#8217;t change much, unit tests and other use cases where the graph
+working with a small static graph that doesn&#8217;t change much, writing unit tests and other use cases where the graph
 can fit in memory.
 </td>
 </tr>
@@ -904,14 +905,15 @@ can fit in memory.
 <td class="content">
 Resist the temptation to "get started" with more complex databases like <a href="http://thinkaurelius.github.io/titan/">Titan</a>
 or to delve into how to get <a href="http://tinkerpop.incubator.apache.org/docs/3.1.0-SNAPSHOTg/#gremlin-server">Gremlin Server</a>
-working properly. Focusing on the basics builds a good foundation for all the other things TinkerPop offers.
+working properly. Focusing on the basics, presented in this guide, builds a good foundation for all the other things
+TinkerPop offers.
 </td>
 </tr>
 </table>
 </div>
 <div class="paragraph">
-<p>To make your process even easier, start with one of TinkerPop&#8217;s toy graphs. These are "small" graphs designed to
-provide a quick start into querying. It is good to get familiar with them as almost all TinkerPop documentation is based
+<p>To make your process even easier, start with one of TinkerPop&#8217;s "toy" graphs. These are "small" graphs designed to
+provide a quick start into querying. It is good to get familiar with them, as almost all TinkerPop documentation is based
 on them and when you need help and have to come to the <a href="http://groups.google.com/group/gremlin-users">mailing list</a>,
 a failing example put in the context of the toy graphs can usually get you a fast answer to your problem.</p>
 </div>
@@ -936,9 +938,9 @@ gremlin&gt; g = graph.traversal()
 <p>The first command creates a <code>Graph</code> instance named <code>graph</code>, which thus provides a reference to the data you want
 Gremlin to traverse. Unfortunately, just having <code>graph</code> doesn&#8217;t provide Gremlin enough context to do his job. You
 also need something called a <code>TraversalSource</code>, which is generated by the second command. The <code>TraversalSource</code>
-provides additional information (such as <a href="http://tinkerpop.incubator.apache.org/docs/3.1.0-SNAPSHOT/#traversalstrategy">traversal strategies</a>
-and <a href="http://tinkerpop.incubator.apache.org/docs/3.1.0-SNAPSHOT/#graphcomputer">traversal engine</a>) to Gremlin with respect
-to how he should execute his trip around the <code>Graph</code>.</p>
+provides additional information to Gremlin (such as the <a href="http://tinkerpop.incubator.apache.org/docs/3.1.0-SNAPSHOT/#traversalstrategy">traversal strategies</a>
+to apply and the <a href="http://tinkerpop.incubator.apache.org/docs/3.1.0-SNAPSHOT/#graphcomputer">traversal engine</a> to use) which
+provides him guidance on how to execute his trip around the <code>Graph</code>.</p>
 </div>
 <div class="paragraph">
 <p>With your <code>TraversalSource</code> <code>g</code> available it is now possible to ask Gremlin to traverse the <code>Graph</code>:</p>
@@ -996,10 +998,10 @@ gremlin&gt; g.V(<span class="integer">1<
 </ol>
 </div>
 <div class="paragraph">
-<p>In this first five minutes with Gremlin, you&#8217;ve gotten the Gremlin Console installed, instantiated a <code>Graph</code>, wrote
-some traversals and hopefully learned something about TinkerPop in general. You&#8217;ve only scratched the surface of
-what there is to know, but those accomplishments will help enable understanding of the more detailed tutorials to
-come.</p>
+<p>In this first five minutes with Gremlin, you&#8217;ve gotten the Gremlin Console installed, instantiated a <code>Graph</code> and
+<code>TraversalSource</code>, wrote some traversals and hopefully learned something about TinkerPop in general. You&#8217;ve only
+scratched the surface of what there is to know, but those accomplishments will help enable your understanding of the
+detailed sections to come.</p>
 </div>
 </div>
 </div>
@@ -1007,17 +1009,16 @@ come.</p>
 <h2 id="_the_next_fifteen_minutes">The Next Fifteen Minutes</h2>
 <div class="sectionbody">
 <div class="paragraph">
-<p>In the first five minutes of getting started with TinkerPop, you learned some basics for telling Gremlin how to
-traverse a graph. Of course, there wasn&#8217;t much discussion about what a graph is. A graph is a collection of
-vertices (i.e. nodes, dots) and edges (i.e. relationships, lines), where a vertex is an entity which
-represents some domain object (e.g. a person, a place, etc.) and an edge represents the relationship between two
-vertices.</p>
+<p>In the first five minutes of <em>The TinkerPop Workout - by Gremlin</em>, you learned some basics for traversing graphs. Of
+course, there wasn&#8217;t much discussion about what a graph is. A graph is a collection of vertices (i.e. nodes, dots)
+and edges (i.e. relationships, lines), where a vertex is an entity which represents some domain object (e.g. a person,
+a place, etc.) and an edge represents the relationship between two vertices.</p>
 </div>
 <div class="paragraph">
 <p><span class="image"><img src="images/modern-edge-1-to-3-1.png" alt="modern-edge-1-to-3-1" width="300"></span></p>
 </div>
 <div class="paragraph">
-<p>The above example shows a graph with two vertices, one with a unique identifier of "1" and another with a unique
+<p>The diagram above shows a graph with two vertices, one with a unique identifier of "1" and another with a unique
 identifier of "3". There is a edge connecting the two with a unique identifier of "9". It is important to consider
 that the edge has a direction which goes <em>out</em> from vertex "1" and <em>in</em> to vertex "3'.</p>
 </div>
@@ -1066,27 +1067,18 @@ as an example. First, you need to create
 <div class="content">
 <pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; graph = TinkerGraph.open()
 ==&gt;tinkergraph[<span class="key">vertices</span>:<span class="integer">0</span> <span class="key">edges</span>:<span class="integer">0</span>]
-gremlin&gt; g = graph.traversal()
-==&gt;graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">0</span> <span class="key">edges</span>:<span class="integer">0</span>], standard]
-gremlin&gt; v1 = g.addV(id, <span class="integer">1</span>, label, <span class="string"><span class="delimiter">&quot;</span><span class="content">person</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="string"><span class="delimiter">&quot;</span><span class="content">marko</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>, <span class="integer">29</span>).next()
+gremlin&gt; v1 = graph.addVertex(id, <span class="integer">1</span>, label, <span class="string"><span class="delimiter">&quot;</span><span class="content">person</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="string"><span class="delimiter">&quot;</span><span class="content">marko</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>, <span class="integer">29</span>)
 ==&gt;v[<span class="integer">1</span>]
-gremlin&gt; v2 = g.addV(id, <span class="integer">3</span>, label, <span class="string"><span class="delimiter">&quot;</span><span class="content">software</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="string"><span class="delimiter">&quot;</span><span class="content">lop</span><span class="delimiter">&quot;</span></span>, <span class="string"><span class="delimiter">&quot;</span><span class="content">lang</span><span class="delimiter">&quot;</span></span>, <span class="string"><span class="delimiter">&quot;</span><span class="content">java</span><span class="delimiter">&quot;</span></span>).next()
+gremlin&gt; v2 = graph.addVertex(id, <span class="integer">3</span>, label, <span class="string"><span class="delimiter">&quot;</span><span class="content">software</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="string"><span class="delimiter">&quot;</span><span class="content">lop</span><span class="delimiter">&quot;</span></span>, <span class="string"><span class="delimiter">&quot;</span><span class="content">lang</span><span class="delimiter">&quot;</span></span>, <span class="string"><span class="delimiter">&quot;</span><span class="content">java</span><span class="delimiter">&quot;</span></span>)
 ==&gt;v[<span class="integer">3</span>]
 gremlin&gt; v1.addEdge(<span class="string"><span class="delimiter">&quot;</span><span class="content">created</span><span class="delimiter">&quot;</span></span>, v2, id, <span class="integer">9</span>, <span class="string"><span class="delimiter">&quot;</span><span class="content">weight</span><span class="delimiter">&quot;</span></span>, <span class="float">0.4</span>)
 ==&gt;e[<span class="integer">9</span>][<span class="integer">1</span>-created-&gt;<span class="integer">3</span>]</code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p>There are a number of important things to consider in the above code. First, why didn&#8217;t we use <code>graph.addVertex()</code>?
-Couldn&#8217;t that just as easily performed the same function? Yes - it could have, however, TinkerPop encourages
-end-users to utilizes the methods of the <code>TraversalSource</code> rather than <code>Graph</code>. The <code>Graph</code> methods are considered
-"low-level" and for use by providers developing TinkerPop implementations. In addition, using <code>Graph</code> methods bypass
-features you may find important as you learn more about TinkerPop, such as
-<a href="http://tinkerpop.incubator.apache.org/docs/3.1.0-SNAPSHOT/#traversalstrategy">traversal strategies</a>.</p>
-</div>
-<div class="paragraph">
-<p>Second, recall that <code>id</code> and <code>label</code> are "reserved" for special usage in TinkerPop. Those "keys" supplied to the
-creation method are statically imported to the console. You would normally refer to them as <code>T.id</code> and <code>T.label</code>.</p>
+<p>There are a number of important things to consider in the above code. First, recall that <code>id</code> and <code>label</code> are
+"reserved" for special usage in TinkerPop. Those "keys" supplied to the creation method are statically imported to
+the console. You would normally refer to them as <code>T.id</code> and <code>T.label</code>.</p>
 </div>
 <div class="admonitionblock note">
 <table>
@@ -1101,12 +1093,12 @@ The fully qualified name for <code>T</co
 </table>
 </div>
 <div class="paragraph">
-<p>Third, don&#8217;t forget that you are working with TinkerGraph and so identifier assignment is allowed. That is <em>not</em> the
-case with most graph databases (don&#8217;t bother to try with Neo4j).</p>
+<p>Second, don&#8217;t forget that you are working with TinkerGraph which allows for identifier assignment. That is <em>not</em> the
+case with most graph databases. For example, don&#8217;t bother to try with Neo4j or Titan.</p>
 </div>
 <div class="paragraph">
 <p>Finally, the label for an <code>Edge</code> is required and is thus part of the method signature of <code>addEdge()</code>. It is the first
-parameter supplied, followed by <code>Vertex</code> to which <code>v1</code> should be connected. Therefore, this usage of <code>addEdge</code> is
+parameter supplied, followed by the <code>Vertex</code> to which <code>v1</code> should be connected. Therefore, this usage of <code>addEdge</code> is
 creating an edge that goes <em>out</em> of <code>v1</code> and into <code>v2</code> with a label of "created".</p>
 </div>
 </div>
@@ -1151,6 +1143,19 @@ those that have the "name" property valu
 ==&gt;v[<span class="integer">1</span>]</code></pre>
 </div>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+The variable <code>g</code> is the <code>TraversalSource</code>, which was introduced in the "The First Five Minutes". The
+<code>TraversalSource</code> is created with <code>graph.traversal()</code> and is the object used to spawn new traversals.
+</td>
+</tr>
+</table>
+</div>
 <div class="paragraph">
 <p>We can picture this traversal in our little graph with Gremlin sitting on vertex "1".</p>
 </div>
@@ -1170,7 +1175,7 @@ those that have the "name" property valu
 The above query iterates all the vertices in the graph to get its answer. That&#8217;s fine for our little example,
 but for multi-million or billion edge graphs that is a big problem. To solve this problem, you should look to use
 indices. TinkerPop does not provide an abstraction for index management. You should consult the documentation of the
-graph you have chosen and utilize its native API to create indices that will speed up these types of lookups. Your
+graph you have chosen and utilize its native API to create indices which will then speed up these types of lookups. Your
 traversals will remain unchanged however, as the indices will be used transparently at execution time.
 </td>
 </tr>
@@ -1222,7 +1227,7 @@ statement above with:</p>
 </div>
 <div class="paragraph">
 <p>Finally, now that Gremlin has reached the "software that Marko created", he has access to the properties of the
-"software" vertex and you can therefore ask Gremlin to extract the "name" property as follows:</p>
+"software" vertex and you can therefore ask Gremlin to extract the value of the "name" property as follows:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -1239,9 +1244,9 @@ on your understanding of these basic con
 <div class="sect3">
 <h4 id="_graph_traversal_increasing_complexity">Graph Traversal - Increasing Complexity</h4>
 <div class="paragraph">
-<p>Armed with the knowledge from the previous section, let&#8217;s ask Gremlin to do some more complex things. There&#8217;s not much
-more that can be done with the "baby" graph we had, so let&#8217;s return to the "modern" toy graph from the "five
-minutes section". Recall that you can create this <code>Graph</code> and establish a <code>TraversalSource</code> with:</p>
+<p>Armed with the knowledge from the previous section, let&#8217;s ask Gremlin to perform some more difficult traversal tasks.
+There&#8217;s not much more that can be done with the "baby" graph we had, so let&#8217;s return to the "modern" toy graph from
+the "five minutes section". Recall that you can create this <code>Graph</code> and establish a <code>TraversalSource</code> with:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -1264,7 +1269,7 @@ use the <code>within</code> comparator w
 </div>
 </div>
 <div class="paragraph">
-<p>It is worth noting that <code>within</code> is statically imported to the Gremlin Console (much like <code>T</code> is, as described
+<p>It is worth noting that <code>within</code> is statically imported from <code>P</code> to the Gremlin Console (much like <code>T</code> is, as described
 earlier).</p>
 </div>
 <div class="admonitionblock note">
@@ -1300,11 +1305,11 @@ step. We know how to find the "software"
 </div>
 </div>
 <div class="paragraph">
-<p><span class="image" style="float: right"><img src="images/gremlin-on-software-vertex.png" alt="gremlin-on-software-vertex" width="300"></span> Let&#8217;s extend on that to try to learn who "marko"
-collaborates with. In other words, let&#8217;s try to answer the question of: "Who are the people that "marko" develops
-"software" with?" To do that, we should first picture Gremlin standing on the "software" vertex. To find out who
-"created" that "software" we need to have Gremlin traverse back <em>in</em> along the "created" edges to find the "person"
-vertices tied to it.</p>
+<p><span class="image" style="float: right"><img src="images/gremlin-on-software-vertex.png" alt="gremlin-on-software-vertex" width="350"></span> Let&#8217;s extend on that query to try to learn who "marko"
+collaborates with when it comes to the software he created. In other words, let&#8217;s try to answer the question of: "Who
+are the people that marko develops software with?" To do that, we should first picture Gremlin where we left him in
+the previous query.  He was standing on the "software" vertex. To find out who "created" that "software", we need to
+have Gremlin traverse back <em>in</em> along the "created" edges to find the "person" vertices tied to it.</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -1330,8 +1335,8 @@ know about the involvement of "marko" an
 <p>We made two additions to the traversal to make it exclude "marko" from the results. First, we added the
 <a href="http://tinkerpop.incubator.apache.org/docs/3.1.0-SNAPSHOT/#as-step">as()</a> step. The <code>as()</code> step is not really a "step",
 but a "step modulator" - something that adds features to a step or the traversal. Here, the <code>as('exclude')</code> labels
-the <code>has()</code> step with "exclude" and all values that pass through that step are held in that "label" for later use. In
-this case, the "marko" vertex is the only vertex to pass through that point, so it is held in "exclude".</p>
+the <code>has()</code> step with the name "exclude" and all values that pass through that step are held in that label for later
+use. In this case, the "marko" vertex is the only vertex to pass through that point, so it is held in "exclude".</p>
 </div>
 <div class="paragraph">
 <p>The other addition that was made was the <code>where()</code> step which is a filter step like <code>has()</code>. The <code>where()</code> is
@@ -1381,7 +1386,7 @@ modulator to <code>group()</code> to tra
 </div>
 <div class="paragraph">
 <p>In this section, you have learned a bit more about what property graphs are and how Gremlin interacts with them.
-You also learned how to envision Gremlin moving about a graph and how to use some of the more complex but commonly
+You also learned how to envision Gremlin moving about a graph and how to use some of the more complex, but commonly
 utilized traversal steps. You are now ready to think about TinkerPop in terms of its wider applicability to
 graph computing.</p>
 </div>
@@ -1392,7 +1397,7 @@ graph computing.</p>
 <h2 id="_the_final_ten_minutes">The Final Ten Minutes</h2>
 <div class="sectionbody">
 <div class="paragraph">
-<p>These final ten minutes of <em>The TinkerPop Workout - by Gremlin</em> we&#8217;ll look at TinkerPop from a higher level and
+<p>In these final ten minutes of <em>The TinkerPop Workout - by Gremlin</em> we&#8217;ll look at TinkerPop from a higher level and
 introduce different features of the stack in order to orient you with what it offers. In this way, you can
 identify areas of interest and dig into the details from there.</p>
 </div>
@@ -1416,8 +1421,8 @@ are thus afforded options in their archi
 within a single machine and then later switch to a graph that is designed to scale horizontally.</p>
 </li>
 <li>
-<p>They can feel more confident in a technology choices, as advances in the state of different provider implementations
-are behind TinkerPop APIs, which open the possibility to switch providers with limited impact.</p>
+<p>They can feel more confident in graph technology choices, as advances in the state of different provider
+implementations are behind TinkerPop APIs, which open the possibility to switch providers with limited impact.</p>
 </li>
 </ul>
 </div>
@@ -1622,7 +1627,7 @@ research within the reference documentat
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2015-11-06 11:13:06 -05:00
+Last updated 2015-11-12 14:01:56 -05:00
 </div>
 </div>
 </body>

Modified: incubator/tinkerpop/site/docs/3.1.0-SNAPSHOT/upgrade.html
URL: http://svn.apache.org/viewvc/incubator/tinkerpop/site/docs/3.1.0-SNAPSHOT/upgrade.html?rev=1714105&r1=1714104&r2=1714105&view=diff
==============================================================================
--- incubator/tinkerpop/site/docs/3.1.0-SNAPSHOT/upgrade.html (original)
+++ incubator/tinkerpop/site/docs/3.1.0-SNAPSHOT/upgrade.html Thu Nov 12 19:14:02 2015
@@ -803,7 +803,6 @@ span.line-numbers { border-right: 1px so
 <li><a href="#_tinkerpop_3_1_0_2">TinkerPop 3.1.0</a></li>
 <li>
 <ul class="sectlevel2">
-<li><a href="#_important_changes">Important Changes</a></li>
 <li><a href="#_upgrading_for_users">Upgrading for Users</a></li>
 <li>
 <ul class="sectlevel3">
@@ -953,31 +952,6 @@ build libraries and other systems on the
 </ul>
 </div>
 <div class="sect2">
-<h3 id="_important_changes">Important Changes</h3>
-<div class="ulist">
-<ul>
-<li>
-<p><code>sum()</code>, <code>min()</code>, <code>max()</code> and <code>mean()</code> make now use of <code>NumberHelper</code>, leading to a more appropriate result type, instead of just <code>Double</code>.</p>
-</li>
-<li>
-<p><code>GraphStep</code> is no longer in <code>sideEffect</code>-package, but now in <code>map</code>-package as traversals support mid-traversal <code>V()</code>.</p>
-</li>
-<li>
-<p>Traversals now support mid-traversal <code>V()</code>-steps. Graph system providers should ensure that a mid-traversal <code>V()</code> can leverage any suitable index.</p>
-</li>
-<li>
-<p>The data type of <code>Operator</code> enums will now always be the highest common data type of the two given numbers, rather than the data type of the first number, as it&#8217;s been before.</p>
-</li>
-<li>
-<p>Hadoop1 support has been dropped. Hadoop2 is now supported. Giraph and Spark can work over Hadoop2 YARN.</p>
-</li>
-<li>
-<p>The implementation and semantics of <code>GraphTraversal.group()</code> has changed. The previous model is deprecated and renamed to <code>groupV3d0()</code>.</p>
-</li>
-</ul>
-</div>
-</div>
-<div class="sect2">
 <h3 id="_upgrading_for_users">Upgrading for Users</h3>
 <div class="sect3">
 <h4 id="_shading_jackson">Shading Jackson</h4>
@@ -1102,6 +1076,9 @@ changed for an in-session request they w
 </li>
 </ul>
 </div>
+<div class="paragraph">
+<p>See link:https://issues.apache.org/jira/browse/TINKERPOP3-616</p>
+</div>
 </div>
 <div class="sect3">
 <h4 id="_spark_gremlin">Spark-Gremlin</h4>
@@ -1119,6 +1096,10 @@ changed for an in-session request they w
 </li>
 </ul>
 </div>
+<div class="paragraph">
+<p>See link:https://issues.apache.org/jira/browse/TINKERPOP3-868,
+link:https://issues.apache.org/jira/browse/TINKERPOP3-925</p>
+</div>
 </div>
 <div class="sect3">
 <h4 id="_tinkergraph_serialization">TinkerGraph Serialization</h4>
@@ -1241,6 +1222,9 @@ have changed as well:</p>
 </ul>
 </div>
 </li>
+<li>
+<p>The data type of <code>Operator</code> enums will now always be the highest common data type of the two given numbers, rather than the data type of the first number, as it&#8217;s been before.</p>
+</li>
 </ul>
 </div>
 </div>
@@ -1272,6 +1256,19 @@ script.  For example once a <code>:remot
 </div>
 <div class="sect2">
 <h3 id="_upgrading_for_providers">Upgrading for Providers</h3>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Important</div>
+</td>
+<td class="content">
+It is recommended that providers also review all the upgrade instructions specified for users. Many of the
+changes there may prove important for the provider&#8217;s implementation.
+</td>
+</tr>
+</table>
+</div>
 <div class="paragraph">
 <p>All providers should be aware that Jackson is now shaded to <code>gremlin-shaded</code> and could represent breaking change if
 there was usage of the dependency by way of TinkerPop, a direct dependency to Jackson may be required on the
@@ -1280,6 +1277,22 @@ provider&#8217;s side.</p>
 <div class="sect3">
 <h4 id="_graph_system_providers">Graph System Providers</h4>
 <div class="sect4">
+<h5 id="_graphstep_alterations">GraphStep Alterations</h5>
+<div class="ulist">
+<ul>
+<li>
+<p><code>GraphStep</code> is no longer in <code>sideEffect</code>-package, but now in <code>map</code>-package as traversals support mid-traversal <code>V()</code>.</p>
+</li>
+<li>
+<p>Traversals now support mid-traversal <code>V()</code>-steps. Graph system providers should ensure that a mid-traversal <code>V()</code> can leverage any suitable index.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>See link:https://issues.apache.org/jira/browse/TINKERPOP3-762</p>
+</div>
+</div>
+<div class="sect4">
 <h5 id="_decomposition_of_abstracttransaction">Decomposition of AbstractTransaction</h5>
 <div class="paragraph">
 <p>The <code>AbstractTransaction</code> class has been abstracted into two different classes supporting two different modes of
@@ -1610,7 +1623,7 @@ want the security capabilities that it p
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2015-11-09 17:03:54 -05:00
+Last updated 2015-11-12 14:01:56 -05:00
 </div>
 </div>
 </body>