You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2016/09/14 00:02:11 UTC

svn commit: r1760608 - in /tinkerpop/site: images/logos/gremlin-python-logo.png index.html providers.html

Author: okram
Date: Wed Sep 14 00:02:11 2016
New Revision: 1760608

URL: http://svn.apache.org/viewvc?rev=1760608&view=rev
Log:
tweaked providers.html with bytecode terminology. added Gremlin-Python logo to query language providers section. Fixed non-current/ links in both index.html and providers.html. Added Gremlin-Python to the list of query languages on index.html.

Added:
    tinkerpop/site/images/logos/gremlin-python-logo.png   (with props)
Modified:
    tinkerpop/site/index.html
    tinkerpop/site/providers.html

Added: tinkerpop/site/images/logos/gremlin-python-logo.png
URL: http://svn.apache.org/viewvc/tinkerpop/site/images/logos/gremlin-python-logo.png?rev=1760608&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tinkerpop/site/images/logos/gremlin-python-logo.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: tinkerpop/site/index.html
URL: http://svn.apache.org/viewvc/tinkerpop/site/index.html?rev=1760608&r1=1760607&r2=1760608&view=diff
==============================================================================
--- tinkerpop/site/index.html (original)
+++ tinkerpop/site/index.html Wed Sep 14 00:02:11 2016
@@ -348,8 +348,9 @@
                <h4 id="language-variants-compilers">Query Languages</h4>
                <small>[<a href="providers.html#query-language-providers">learn more</a>]</small>
                <ul>
+                  <li><a href="http://tinkerpop.apache.org/docs/current/reference/#gremlin-python">gremlin-python</a> (python/variant) - Gremlin hosted in Python for use with any Python-based VM.</li>
                   <li><a href="https://github.com/emehrkay/gremlinpy">gremlin-py</a> (python/variant) - Write pure Python Gremlin that can be sent to Gremlin Server.</li>
-                  <li><a href="https://github.com/mpollmeier/gremlin-scala">gremlin-scala</a> (scala/variant) - A Scala language wrapper for TinkerPop3.</li>
+                  <li><a href="https://github.com/mpollmeier/gremlin-scala">gremlin-scala</a> (scala/variant) - A Scala-based Gremlin language variant for TinkerPop3.</li>
                   <li><a href="https://github.com/jbmusso/gremlin-template-string">gremlin-template-string</a> (js/variant) - A Gremlin language builder.</li>
                   <li><a href="https://github.com/davebshow/ipython-gremlin">ipython-gremlin</a> (python/variant) - Gremlin in IPython and Jupyter.</li>
                   <li><a href="http://ogre.clojurewerkz.org/">ogre</a> (clojure/variant) - A Clojure language wrapper for TinkerPop3.</li>
@@ -378,14 +379,15 @@
                <ul>
                   <li><a href="http://tinkerpop.apache.org/docs/current/tutorials/getting-started/">Getting Started with TinkerPop</a> - Learn the basics of getting up and going with TinkerPop.</li>
                   <li><a href="http://tinkerpop.apache.org/docs/current/tutorials/the-gremlin-console/">The Gremlin Console</a> - Discusses uses cases of the Gremlin Console and usage patterns.</li>
-                  <li><a href="http://tinkerpop.apache.org/docs/3.2.1-SNAPSHOT/recipes/">Gremlin Recipes</a> - Reference for common traversal patterns and style.</li>
-                  <li><a href="http://tinkerpop.apache.org/docs/3.2.1-SNAPSHOT/tutorials/gremlin-language-variants/">Gremlin Language Variants</a> - Learn how to embed Gremlin in a host programming language.</li>
+                  <li><a href="http://tinkerpop.apache.org/docs/current/recipes/">Gremlin Recipes</a> - Reference for common traversal patterns and style.</li>
+                  <li><a href="http://tinkerpop.apache.org/docs/current/tutorials/gremlin-language-variants/">Gremlin Language Variants</a> - Learn how to embed Gremlin in a host programming language.</li>
                   <li><a href="http://sql2gremlin.com/">SQL2Gremlin</a> - Learn Gremlin using typical patterns found when querying data with SQL.</li>
                   <li><a href="https://academy.datastax.com/demos/getting-started-graph-databases">Getting Started with Graph Databases</a> - Compares relational databases to graph databases and SQL to Gremlin.</li>
                </ul>
                <a name="publications"></a>
                <h4 id="publications">Publications</h4>
                <ul>
+                  <li>Rodriguez, M.A., "<a href="http://www.slideshare.net/slidarko/gremlins-graph-traversal-machinery">Gremlin's Graph Traversal Machinery</a>," Cassandra Summit, September 2016.</li> 
                   <li>Rodriguez, M.A., "<a href="http://www.datastax.com/dev/blog/the-mechanics-of-gremlin-olap">The Mechanics of Gremlin OLAP</a>," DataStax Engineering Blog, April 2016.</li> 
                   <li>Rodriguez, M.A., "<a href="http://www.slideshare.net/slidarko/quantum-processes-in-graph-computing">Quantum Processes in Graph Computing</a>," GraphDay '16 Presentation, Austin Texas, January 2016. [<a href="https://www.youtube.com/watch?v=qRoAInXxgtc">video presentation</a>]</li>
                   <li>Rodriguez, M.A., Watkins, J.H., "<a href="http://arxiv.org/abs/1511.06278">Quantum Walks with Gremlin</a>," GraphDay '16 Proceedings, Austin Texas, January 2016.</li>

Modified: tinkerpop/site/providers.html
URL: http://svn.apache.org/viewvc/tinkerpop/site/providers.html?rev=1760608&r1=1760607&r2=1760608&view=diff
==============================================================================
--- tinkerpop/site/providers.html (original)
+++ tinkerpop/site/providers.html Wed Sep 14 00:02:11 2016
@@ -183,7 +183,7 @@
             <br/>
             <ol>
                <li><strong>The Graph (required)</strong>: These foundational interfaces define the semantics of the operations on a graph, vertex, edge, and property. Once implemented, the provider's 
-                  data system can immediately be queried using Gremlin OLTP. However, providers may want to leverage a collection of provider-specific compiler optimizations called traversal strategies 
+                  data system can immediately be queried using Gremlin OLTP. However, providers may want to leverage a collection of provider-specific compiler optimizations called <a href="http://tinkerpop.apache.org/docs/current/reference/#traversalstrategy">traversal strategies</a> 
                   which can leverage their system's unique features (e.g. global indices, vertex-centric indices, sort orders, sequential scanners, push-down predicates, etc.).
                </li>
                <br/>
@@ -193,17 +193,17 @@
                   of TinkerPop).
                </li>
             </ol>
-            <p>Finally, there are other tools and technologies that the provider can leverage from TinkerPop such as Gremlin Server, Gremlin Console, and the like. The purpose of Apache TinkerPop is to 
+            <p>Finally, there are other tools and technologies that the provider can leverage from TinkerPop such as <a href="http://tinkerpop.apache.org/docs/current/reference/#gremlin-server">Gremlin Server</a>, <a href="http://tinkerpop.apache.org/docs/current/reference/#gremlin-console">Gremlin Console</a>, and the like. The purpose of Apache TinkerPop is to 
                make it easy for providers to add graph functionality to their system and/or to build a graph system from scratch and immediately have a query language, server infrastructure, metrics/reporting 
                integration, cluster-based analytics and more.
             </p>
             <ul>
                <li><strong>Gremlin traversal language</strong>: The primary benefit of TinkerPop is the <a href="gremlin.html">Gremlin graph traversal language</a>. This language was designed specifically for graph analysis and 
-                  manipulation and is not complicated with explicit JOIN syntax.
+                  manipulation and is not complicated with an explicit JOIN syntax.
                </li>
-               <li><strong>Gremlin traversal machine</strong>: The Gremlin language compiles to a traversal. It is the responsibility of the Gremlin traversal machine to execute that traversal as a 
+               <li><strong>Gremlin traversal machine</strong>: Every Gremlin language variant compiles to a language agnostic <a href="https://en.wikipedia.org/wiki/Bytecode">bytecode</a> representation. That bytecode is ultimately translated to a machine-specific traversal. It is the responsibility of the Gremlin traversal machine to execute that traversal as a 
                   real-time <a href="https://en.wikipedia.org/wiki/Online_transaction_processing">OLTP</a> query or as an analytic <a href="https://en.wikipedia.org/wiki/Online_analytical_processing">OLAP</a> query (or both). Note that the Gremlin traversal machine is not bound to the Gremlin language. Any language can take advantage of the the 
-                  Gremlin traversal machine. In fact, compilers currently exist for <a href="https://github.com/twilmes/sql-gremlin">SQL</a> and <a href="https://github.com/dkuppitz/sparql-gremlin">SPARQL</a>. However, using alternative languages for graph computing leads to significantly more complicated queries 
+                  Gremlin traversal machine by simply translating itself to Gremlin bytecode. In fact, compilers currently exist for <a href="https://github.com/twilmes/sql-gremlin">SQL</a> and <a href="https://github.com/dkuppitz/sparql-gremlin">SPARQL</a>. However, using alternative languages for graph computing leads to significantly more complicated queries 
                   and typically does not match the expressivity provided by Gremlin.
                </li>
                <li><strong>TinkerGraph</strong>: TinkerPop provides a simple, non-transactional, in-memory graph system called <a href="http://tinkerpop.apache.org/docs/current/reference/#tinkergraph-gremlin">TinkerGraph</a>. TinkerGraph is useful for exploring graphs that can fit 
@@ -215,12 +215,12 @@
                </li>
                <li><strong>Gremlin Server</strong>: It is typical for a graph database to exist on a separate machine from the user's application code. <a href="http://tinkerpop.apache.org/docs/current/reference/#gremlin-server">Gremlin Server</a> bridges the network-divide 
                   allowing users to seamlessly submit traversals for remote execution over a web-sockets based binary protocol. If provider already has a server, they can leverage TinkerPop-specific 
-                  components as needed. Gremlin Server also provides a REST-based API, support for <a href="http://ganglia.info/">Ganglia</a>/<a href="http://graphite.wikidot.com/">Graphite</a>/<a href="http://www.oracle.com/technetwork/articles/java/javamanagement-140525.html">JMX</a>/more 
+                  components as needed (e.g. implement <code>RemoteConnection</code>). Gremlin Server also provides an HTTP-based API, support for <a href="http://ganglia.info/">Ganglia</a>/<a href="http://graphite.wikidot.com/">Graphite</a>/<a href="http://www.oracle.com/technetwork/articles/java/javamanagement-140525.html">JMX</a>/more 
                   metrics, and a traversal routing framework for intelligent data/traversal co-location within a distributed graph database's machine cluster.
                </li>
                <li><strong>SparkGraphComputer</strong>: <a href="http://spark.apache.org/">Apache Spark</a>&trade; is a Big Data OLAP processor that simplifies the creation and execution of distributed data analytics. 
                   <a href="http://tinkerpop.apache.org/docs/current/reference/#sparkgraphcomputer"><code>SparkGraphComputer</code></a> turns Spark 
-                  into a Big(Graph)Data processor via the OLAP component of the Gremlin traversal machine. Users do not have to learn Spark's data processing language as Gremlin traversals immediately execute 
+                  into a Big(Graph)Data processor via the OLAP component of the Gremlin traversal machine. Users do not have to learn Spark's data processing language as Gremlin traversals execute 
                   over Spark. For graph system providers, they can boast Spark integration once a custom <code>InputRDD</code> (or <code>InputFormat</code>) is developed.
                </li>
                <li><strong>GiraphGraphComputer</strong>: <a href="http://giraph.apache.org/">Apache Giraph</a>&trade; is a Big(Graph)Data processor that leverages <a href="http://hadoop.apache.org/">Apache Hadoop</a>&reg; and 
@@ -262,11 +262,11 @@
                </div>
             </div>
             <br/>
-            <div class="col-sm-6 col-md-6">
+            <div class="row">
+               <div class="col-sm-6 col-md-6">
                   <a href="http://linkurio.us/"><img src="images/logos/linkurious-logo.png" style="padding-right:20px;float:left;width:35%;"></a>
                   <a href="http://linkurio.us/">Linkurious</a>&trade; is a browser-based graph visualization software to search, explore and visualize connected data. It is compatible with Apache TinkerPop and thus, any TinkerPop-enabled graph system. Linkurious provides enterprise-ready security (authentication, access rights, audit) and flexibility (API, linkurious.js JS graph visualization library) to help software architects successfully deploy graph capabilities within their organizations.
                </div>
-            <div class="row">
                <div class="col-sm-6 col-md-6">
                   <a href="http://neo4j.com/"><img src="images/logos/neo4j-logo.png" style="padding-right:20px;float:left;width:35%;"></a>
                   <a href="http://neo4j.com/">Neo4j</a>&trade; is the most widely used open source, transactional graph database with a large active user and customer community. Because of its scalability and ease of use, Neo4j is applied in a wide variety of use cases from fraud detection, access control to recommendation and investigative journalism. Along with the openCypher graph query language, Neo4j also supports Apache TinkerPop and currently serves as its OLTP reference implementation.
@@ -351,21 +351,20 @@
             <br/>
             <div class="row">
                <div class="col-sm-7 col-md-8">
-                  <strong>Gremlin language variants</strong>: There are various <a href="http://tinkerpop.apache.org/docs/3.2.1-SNAPSHOT/tutorials/gremlin-language-variants/">Gremlin language variants</a> such as <a href="https://github.com/mpollmeier/gremlin-scala">Gremlin-Scala</a>. These languages 
-                  generate Gremlin traversals utilizing the same naming/style-conventions as Gremlin-Java. However, where appropriate, they can deviate from convention in order to take advantage of the unique expressive qualities of the host language. For instance, Gremlin-Scala boasts advanced type 
-                  safety and an "ASCII-art" mutation syntax.
+                  <strong>Gremlin language variants</strong>: There are various <a href="http://tinkerpop.apache.org/docs/current/tutorials/gremlin-language-variants/">Gremlin language variants</a> such as <a href="http://tinkerpop.apache.org/docs/current/reference/#gremlin-python">Gremlin-Python</a>. These languages 
+                  generate Gremlin bytecode utilizing the same naming/style-conventions as Gremlin-Java. However, where appropriate, they can deviate from convention in order to take advantage of the unique expressive qualities of the host language. For instance, Gremlin-Python supports index slices, attribute access, etc.
                </div>
                <div class="col-sm-5 col-md-4">
-                  <pre style="padding:10px;"><code class="language-gremlin">g.V.has('person','name','gremlin').
+                  <pre style="padding:10px;"><code class="language-gremlin">g.V().has('person','name','gremlin').
   out('knows').out('created').
-  hasLabel('project').stars.mean</code></pre>
+  hasLabel('project').stars.mean()</code></pre>
                </div>
             </div>
             <br/>
             <br/>
             <div class="row">
                <div class="col-sm-6 col-md-8">
-                  <strong>Domain specific languages</strong>: A users's application logic typically represents its domain in terms of real-world objects, not "vertices" and "edges." While most application developers will become comfortable writing all their traversals in the vertex/edge-lexicon of Gremlin, it may be desirable to create a domain specific language for, perhaps, business users. To do so is simple. The language designer extends Traversal and interacts with an underlying GraphTraversal exposing "high-level" steps that may ultimately be composed of a complex sequence of "low-level" vertex/edge-steps. A major boon is that the DSL designer does not have to worry about compiler optimization as the "low-level" GraphTraversal representation will ultimately be subjected to traversal strategies prior to OLTP or OLAP evaluation. The example on the right is a hypothetical SocialDSL that allows users to query their graph from the perspective of people, projects, etc. and is thus bo
 und to that graph's particular social data schema.        
+                  <strong>Domain specific languages</strong>: A users's application logic typically represents its domain in terms of real-world objects, not "vertices" and "edges." While most application developers will become comfortable writing their traversals in the vertex/edge-lexicon of Gremlin, it may be desirable to create a domain specific language for, perhaps, business users. To do so is simple. The language designer extends Traversal and interacts with an underlying GraphTraversal exposing "high-level" steps that may ultimately be composed of a complex sequence of "low-level" vertex/edge-steps. A major boon is that the DSL designer does not have to worry about compiler optimization as the "low-level" GraphTraversal representation will ultimately be subjected to traversal strategies prior to OLTP or OLAP evaluation. The example on the right is a hypothetical SocialDSL that allows users to query their graph from the perspective of people, projects, etc. and is thus bound 
 to that graph's particular social data schema.        
                </div>
                <div class="col-sm-6 col-md-4">
                   <br/>
@@ -384,12 +383,18 @@
             <br/>
             <div class="row">
                <div class="col-sm-6 col-md-6">
+                  <a href="http://tinkerpop.apache.org/docs/current/reference/#gremlin-python"><img src="images/logos/gremlin-python-logo.png" style="padding-right:20px;float:left;width:35%;"></a>
+                  <a href="http://tinkerpop.apache.org/docs/current/reference/#gremlin-python">Gremlin-Python</a> represents Gremlin inside the Python language and can be used by any Python virtual machine such as CPython and Jython. Gremlin-Python traversals translate to Gremlin bytecode and interact with a RemoteConnection (e.g. Gremlin Server).
+               </div>
+               <div class="col-sm-6 col-md-6">
                   <a href="https://github.com/mpollmeier/gremlin-scala"><img src="images/logos/gremlin-scala-logo.png" style="padding-right:20px;float:left;width:35%;"></a>
-                  <a href="https://github.com/mpollmeier/gremlin-scala">Gremlin-Scala</a> is a wrapper-based Gremlin language variant. It use standard Scala functions, provides a beautiful DSL to create vertices and edges, ensures type safe traversals, and incurrs minimal runtime overhead by only allocating instances if absolutely necessary. Finally, because Gremlin-Scala is a JVM-based variant, it is easy to access Gremlin-Java if needed.
+                  <a href="https://github.com/mpollmeier/gremlin-scala">Gremlin-Scala</a> is a Gremlin language variant that uses standard Scala functions, provides a beautiful DSL to create vertices and edges, ensures type safe traversals, and incurrs minimal runtime overhead by only allocating instances if absolutely necessary. Finally, because Gremlin-Scala is a JVM-based variant, it is easy to interact with TinkerPop's Java-based tools.
                </div>
+            </div>
+            <div class="row">
                <div class="col-sm-6 col-md-6">
                   <a href="https://github.com/dkuppitz/sparql-gremlin"><img src="images/logos/sparql-gremlin-logo.png" style="padding-right:20px;float:left;width:35%;"></a>
-                  <a href="https://github.com/dkuppitz/sparql-gremlin">SPARQL-Gremlin</a> is a compiler used to transform SPARQL queries into Gremlin traversals. It is based on the Apache Jena SPARQL processor ARQ, which provides access to a syntax tree of a SPARQL query.
+                  <a href="https://github.com/dkuppitz/sparql-gremlin">SPARQL-Gremlin</a> is a compiler used to transform SPARQL queries into Gremlin bytecode. It is based on the Apache Jena SPARQL processor ARQ, which provides access to a syntax tree of a SPARQL query.
                </div>
             </div>
          </div>