Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id B7CB2200BBE for ; Thu, 27 Oct 2016 13:37:47 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id B4E85160AE4; Thu, 27 Oct 2016 11:37:47 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id BB7DA160B07 for ; Thu, 27 Oct 2016 13:37:45 +0200 (CEST) Received: (qmail 95935 invoked by uid 500); 27 Oct 2016 11:37:45 -0000 Mailing-List: contact commits-help@tinkerpop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@tinkerpop.apache.org Delivered-To: mailing list commits@tinkerpop.apache.org Received: (qmail 95834 invoked by uid 99); 27 Oct 2016 11:37:44 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 27 Oct 2016 11:37:44 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id A0738F12ED; Thu, 27 Oct 2016 11:37:44 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: spmallette@apache.org To: commits@tinkerpop.apache.org Date: Thu, 27 Oct 2016 11:37:48 -0000 Message-Id: In-Reply-To: <489b7fa64368499c87fbff84a929b2af@git.apache.org> References: <489b7fa64368499c87fbff84a929b2af@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [05/10] tinkerpop git commit: Moved /site under /docs archived-at: Thu, 27 Oct 2016 11:37:47 -0000 http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/css/carousel.css ---------------------------------------------------------------------- diff --git a/site/home/css/carousel.css b/site/home/css/carousel.css deleted file mode 100644 index a4eef64..0000000 --- a/site/home/css/carousel.css +++ /dev/null @@ -1,417 +0,0 @@ -/* Bootstrap items to overWrite */ - -.carouselGrid-inner > .item > img, -.carouselGrid-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} - -.carouselGrid-inner { - position: relative; - width: 100%; - overflow: hidden; -} - -.carouselGrid-inner > .item { - position: relative; - display: none; - -webkit-transition: 1s ease-in-out left; - -o-transition: 1s ease-in-out left; - transition: 1s ease-in-out left; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; -} - -.carouselGrid-inner > .item > img, -.carouselGrid-inner > .item > a > img { - line-height: 1; -} - - - -@media all and (transform-3d), (-webkit-transform-3d) { - .carouselGrid-inner > .item { - -webkit-transition: -webkit-transform 1s ease-in-out; - -o-transition: -o-transform 1s ease-in-out; - transition: transform 1s ease-in-out; - - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - perspective: 1000px; - } - - - @media (max-width: 767px) { /* xs */ - .carouselGrid-inner > .item.next, - .carouselGrid-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(50%, 0, 0); - transform: translate3d(50%, 0, 0); - } - .carouselGrid-inner > .item.prev, - .carouselGrid-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-50%, 0, 0); - transform: translate3d(-50%, 0, 0); - } - .carouselGrid-inner > .item.next.left, - .carouselGrid-inner > .item.prev.right, - .carouselGrid-inner > .item.active { - left: 0; - -webkit-transform: translate3d(0%, 0, 0); - transform: translate3d(0%, 0, 0); - } - } - @media (min-width: 767px) and (max-width: 992px ) { /* sm */ - .carouselGrid-inner > .item.next, - .carouselGrid-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(33%, 0, 0); - transform: translate3d(33%, 0, 0); - } - .carouselGrid-inner > .item.prev, - .carouselGrid-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-33%, 0, 0); - transform: translate3d(-33%, 0, 0); - } - .carouselGrid-inner > .item.next.left, - .carouselGrid-inner > .item.prev.right, - .carouselGrid-inner > .item.active { - left: 0; - -webkit-transform: translate3d(0%, 0, 0); - transform: translate3d(0%, 0, 0); - } - } - @media (min-width: 992px ) and (max-width: 1200px) { /* md */ - .carouselGrid-inner > .item.next, - .carouselGrid-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(25%, 0, 0); - transform: translate3d(25%, 0, 0); - } - .carouselGrid-inner > .item.prev, - .carouselGrid-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-25%, 0, 0); - transform: translate3d(-25%, 0, 0); - } - .carouselGrid-inner > .item.next.left, - .carouselGrid-inner > .item.prev.right, - .carouselGrid-inner > .item.active { - left: 0; - -webkit-transform: translate3d(0%, 0, 0); - transform: translate3d(0%, 0, 0); - } - } - @media (min-width: 1200px ) { /* lg */ - - .carouselGrid-inner > .item.next, - .carouselGrid-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(20%, 0, 0); - transform: translate3d(20%, 0, 0); - } - .carouselGrid-inner > .item.prev, - .carouselGrid-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-20%, 0, 0); - transform: translate3d(-20%, 0, 0); - } - .carouselGrid-inner > .item.next.left, - .carouselGrid-inner > .item.prev.right, - .carouselGrid-inner > .item.active { - left: 0; - -webkit-transform: translate3d(0%, 0, 0); - transform: translate3d(0%, 0, 0); - } - } - -} - - .carouselGrid-inner > .active, - .carouselGrid-inner > .next, - .carouselGrid-inner > .prev { - display: block; - } - .carouselGrid-inner > .active { - left: 0; - } - .carouselGrid-inner > .next, - .carouselGrid-inner > .prev { - position: absolute; - top: 0; - width: 100%; - } - .carouselGrid-inner > .next { - left: 100%; - } - .carouselGrid-inner > .prev { - left: -100%; - } - .carouselGrid-inner > .next.left, - .carouselGrid-inner > .prev.right { - left: 0; - } - - - @media (max-width: 767px) { /* xs */ - .carouselGrid-inner > .active.left { - left: -50%; - } - .carouselGrid-inner > .active.right { - left: 50%; - } - } - @media (min-width: 767px) and (max-width: 992px ) { /* sm */ - .carouselGrid-inner > .active.left { - left: -33%; - } - .carouselGrid-inner > .active.right { - left: 33%; - } - } - @media (min-width: 992px ) and (max-width: 1200px) { /* md */ - .carouselGrid-inner > .active.left { - left: -25%; - } - .carouselGrid-inner > .active.right { - left: 25%; - } - } - @media (min-width: 1200px ) { /* lg */ - .carouselGrid-inner > .active.left { - left: -20%; - } - .carouselGrid-inner > .active.right { - left: 20%; - } - } - - -.carouselGrid-control { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 15%; - font-size: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); - filter: alpha(opacity=50); - opacity: .5; -} -.carouselGrid-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); - background-repeat: repeat-x; -} -.carouselGrid-control.right { - right: 0; - left: auto; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - background-repeat: repeat-x; -} -.carouselGrid-control:hover, -.carouselGrid-control:focus { - color: #fff; - text-decoration: none; - filter: alpha(opacity=90); - outline: 0; - opacity: .9; -} -.carouselGrid-control .icon-prev, -.carouselGrid-control .icon-next, -.carouselGrid-control .glyphicon-chevron-left, -.carouselGrid-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; - margin-top: -10px; -} -.carouselGrid-control .icon-prev, -.carouselGrid-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carouselGrid-control .icon-next, -.carouselGrid-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carouselGrid-control .icon-prev, -.carouselGrid-control .icon-next { - width: 20px; - height: 20px; - font-family: serif; - line-height: 1; -} -.carouselGrid-control .icon-prev:before { - content: '\2039'; -} -.carouselGrid-control .icon-next:before { - content: '\203a'; -} -.carouselGrid-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - padding-left: 0; - margin-left: -30%; - text-align: center; - list-style: none; -} -.carouselGrid-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); - border: 1px solid #fff; - border-radius: 10px; -} -.carouselGrid-indicators .active { - width: 12px; - height: 12px; - margin: 0; - background-color: #fff; -} -.carouselGrid-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); -} -.carouselGrid-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carouselGrid-control .glyphicon-chevron-left, - .carouselGrid-control .glyphicon-chevron-right, - .carouselGrid-control .icon-prev, - .carouselGrid-control .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - font-size: 30px; - } - .carouselGrid-control .glyphicon-chevron-left, - .carouselGrid-control .icon-prev { - margin-left: -15px; - } - .carouselGrid-control .glyphicon-chevron-right, - .carouselGrid-control .icon-next { - margin-right: -15px; - } - .carouselGrid-caption { - right: 20%; - left: 20%; - padding-bottom: 30px; - } - .carouselGrid-indicators { - bottom: 20px; - } -} - -.carouselGrid-control { width: 4%; } -.carouselGrid-control.left,.carouselGrid-control.right {margin-left:15px;background-image:none;} -@media (max-width: 767px) { /* xs */ - .carouselGrid-inner .active.left { left: -50%; } - .carouselGrid-inner .next { left: 50%;} - .carouselGrid-inner .prev { left: -50%; } - .active > div { display:none; } - .active > div:first-child { display:block; } - .active > div:first-child + div { display:block; } - .active > div:first-child + div + div { display:none; } - .active > div:first-child + div + div + div { display:none; } - - -} -@media (min-width: 767px) and (max-width: 992px ) { /* sm */ - .carouselGrid-inner .active.left { left: -33%; } - .carouselGrid-inner .next { left: 33%; } - .carouselGrid-inner .prev { left: -33%; } - .active > div { display:none; } - .active > div:first-child { display:block; } - .active > div:first-child + div { display:block; } - .active > div:first-child + div + div { display:block; } - .active > div:first-child + div + div + div { display:none; } -} - - - -@media (min-width: 992px ) and (max-width: 1200px) { /* md */ - .carouselGrid-inner .active.left { left: -25%; } - .carouselGrid-inner .next { left: 25%; } - .carouselGrid-inner .prev { left: -25%; } - .active > div { display:none; } - .active > div:first-child { display:block; } - .active > div:first-child + div { display:block; } - .active > div:first-child + div + div { display:block; } - .active > div:first-child + div + div + div { display:block; } - -} - -@media (min-width: 1200px ) { /* lg */ - .carouselGrid-inner .active.left { left: -20%; } - .carouselGrid-inner .next { left: 20%;} - .carouselGrid-inner .prev {left: -20%; } - -} - - -/* NECESSARY FOR FIVE ITEMS (Extends Bootstrap to 5 columns) */ -/*http://www.wearesicc.com/quick-tips-5-column-layout-with-twitter-bootstrap/ */ -.col-xs-15, -.col-sm-15, -.col-md-15, -.col-lg-15 { - position: relative; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; -} -.col-xs-15 { - width: 33%; - float: left; -} -@media (min-width: 768px) { -.col-sm-15 { - width: 33%; - float: left; - } -} -@media (min-width: 992px) { - .col-md-15 { - width: 33%; - float: left; - } -} -@media (min-width: 1200px) { - .col-lg-15 { - width: 33%; - float: left; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/css/prism.css ---------------------------------------------------------------------- diff --git a/site/home/css/prism.css b/site/home/css/prism.css deleted file mode 100644 index e25f79d..0000000 --- a/site/home/css/prism.css +++ /dev/null @@ -1,145 +0,0 @@ -/* http://prismjs.com/download.html?themes=prism&languages=clike+javascript+groovy+jade */ -/** - * prism.js default theme for JavaScript, CSS and HTML - * Based on dabblet (http://dabblet.com) - * @author Lea Verou - */ - -code[class*="language-"], -pre[class*="language-"] { - color: #337ab7; - background: none; - text-shadow: 0 0px white; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, -code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { - text-shadow: none; - background: #f5f5f5; -} - -pre[class*="language-"]::selection, pre[class*="language-"] ::selection, -code[class*="language-"]::selection, code[class*="language-"] ::selection { - text-shadow: none; - background: #f5f5f5; -} - -@media print { - code[class*="language-"], - pre[class*="language-"] { - text-shadow: none; - } -} - -.carousel-control.left, .carousel-control.right { - background-image: none -} - -/* Code blocks */ -pre[class*="language-"] { - padding: 0em; - margin: 0em 0; - overflow: auto; -} - -:not(pre) > code[class*="language-"], -pre[class*="language-"] { - background: #f5f5f5; -} - -/* Inline code */ -:not(pre) > code[class*="language-"] { - padding: 0em; - border-radius: 0em; - white-space: normal; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: gray; -} - -.token.punctuation { - color: black; -} - -.namespace { - opacity: .7; -} - -.token.property, -.token.tag, -.token.boolean, -.token.number, -.token.constant, -.token.symbol, -.token.deleted { - color: #905; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: #690; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string { - color: #a67f59; - background: hsla(0, 0%, 100%, .5); -} - -.token.atrule, -.token.attr-value, -.token.keyword, -.token.traversalSource { - color: #800080; -} - -.token.function { - color: #337ab7; -} - -.token.regex, -.token.important, -.token.variable { - color: #337ab7; -} - -.token.important, -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; - color: #337ab7; -} - http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/downloads.html ---------------------------------------------------------------------- diff --git a/site/home/downloads.html b/site/home/downloads.html deleted file mode 100644 index c7b27fa..0000000 --- a/site/home/downloads.html +++ /dev/null @@ -1,307 +0,0 @@ - -
-
-

Download Apache TinkerPop™

-

Apache TinkerPop provides three packaged downloads per release version. The - Gremlin Console and Gremlin Server - downloads are binary distributions, which contain pre-packaged versions of these important TinkerPop applications that are designed to work out-of-the-box - when unpackaged. The source distribution is a snapshot of the source code and files used in the building of those binary distributions.

-

TinkerPop also deploys artifacts to Maven Central, which is helpful to - developers who wish to depend on the various libraries that TinkerPop provides. -
-

Current Releases

- - - - - - - - - - - - - -
- 3.2.3 (latest, stable) - - 17-Oct-2016 - - release notes | - upgrade | - documentation | - javadoc - - Gremlin Console - Gremlin Server - Source -
- 3.1.5 (maintenance) - - 17-Oct-2016 - - release notes | - upgrade | - documentation | - javadoc - - Gremlin Console - Gremlin Server - Source -
-

Archived Releases

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 3.2.2 - - 6-Sep-2016 - - release notes | - upgrade | - documentation | - javadoc - - Gremlin Console - Gremlin Server - Source -
- 3.1.4 - - 6-Sep-2016 - - release notes | - upgrade | - documentation | - javadoc - - Gremlin Console - Gremlin Server - Source -
- 3.2.1 - - 18-Jul-2016 - - release notes | - upgrade | - documentation | - javadoc - - Gremlin Console - Gremlin Server - Source -
- 3.1.3 - - 18-Jul-2016 - - release notes | - upgrade | - documentation | - javadoc - - Gremlin Console - Gremlin Server - Source -
- 3.2.0-incubating - - 8-Apr-2016 - - release notes | - upgrade | - documentation | - javadoc - - Gremlin Console - Gremlin Server - Source -
- 3.1.2-incubating - - 8-Apr-2016 - - release notes | - upgrade | - documentation | - javadoc - - Gremlin Console - Gremlin Server - Source -
- 3.1.1-incubating - - 8-Feb-2016 - - release notes | - upgrade | - documentation | - javadoc - - Gremlin Console - Gremlin Server - Source -
- 3.1.0-incubating - - 16-Nov-2015 - - release notes | - documentation | - javadoc - - Gremlin Console - Gremlin Server - Source -
- 3.0.2-incubating - - 19-Oct-2015 - - release notes | - documentation | - javadoc - - Gremlin Console - Gremlin Server - Source -
- 3.0.1-incubating - - 2-Sep-2015 - - release notes | - documentation | - javadoc - - Gremlin Console - Gremlin Server - Source -
- 3.0.0-incubating - - 9-Jul-2015 - - release notes | - documentation | - javadoc - - Gremlin Console - Gremlin Server - Source -
-

Note that upgrade documentation was only introduced at 3.1.1-incubating which is why there are no links "upgrade" links in versions prior to that one. -

Verifying Downloads

-

All downloads have associated PGP and MD5 signatures to help verify a distribution provided by a mirror. To verify a distribution via PGP or GPG first download the - KEYS file (it is important to use the linked file which is from the main distribution directory and not a - mirror. Next download the appropriate "asc" signature file for the relevant distribution (again, this file should come from the main - distribution directory - note that older releases will have such files in the archives or if released under Apache - Incubator then they will be found in the Incubator archives).

-

Then verify the signatures as follows:

-

-


-      pgpk -a KEYS
-      pgpv apache-gremlin-console-x.y.z-bin.zip.asc
-      
-

-

or

-

-


-      pgpk -ka KEYS
-      pgp apache-gremlin-console-x.y.z-bin.zip.asc
-      
-

-

or

-

-


-      gpg --import KEYS
-      gpg --verify apache-gremlin-console-x.y.z-bin.zip.asc apache-gremlin-console-x.y.z-bin.zip
-      
-

-

Alternatively, consider verifying the MD5 signature on the files. An MD5 signature consists of 32 hex characters, and a SHA1 signature consists of 40 hex characters. - Ensure that the generated signature string matches the signature string published in the files above.

-
-
\ No newline at end of file http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/gremlin.html ---------------------------------------------------------------------- diff --git a/site/home/gremlin.html b/site/home/gremlin.html deleted file mode 100644 index 4a626ca..0000000 --- a/site/home/gremlin.html +++ /dev/null @@ -1,396 +0,0 @@ - - -
-
- Apache TinkerPop™ -

The Gremlin Graph Traversal Machine and Language

-
-
-
-
-
-
-
- Gremlin is the graph traversal language of Apache TinkerPop. - Gremlin is a functional, data-flow - language that enables users to succinctly express complex traversals on (or queries of) their application's property graph. Every Gremlin traversal is composed of a sequence of (potentially nested) steps. A step - performs an atomic operation on the data stream. Every step is either a map-step (transforming the objects in the stream), a filter-step (removing objects - from the stream), or a sideEffect-step (computing statistics about the stream). The Gremlin step library extends on these 3-fundamental operations to provide - users a rich collection of steps that they can compose in order to ask any conceivable question they may have of their data for Gremlin is Turing Complete. -
-
- -
-
-
- -
-
-
- -

OLTP and OLAP Traversals

-
- Gremlin was designed according to the "write once, run anywhere"-philosophy. This means that not only can all TinkerPop-enabled - graph systems execute Gremlin traversals, but also, every Gremlin traversal can be evaluated as either a real-time database query - or as a batch analytics query. The former is known as an online transactional process (OLTP) and the latter as an online analytics - process (OLAP). This universality is made possible by the Gremlin traversal machine. This distributed, graph-based virtual machine - understands how to coordinate the execution of a multi-machine graph traversal. Moreover, not only can the execution either be OLTP or - OLAP, it is also possible for certain subsets of a traversal to execute OLTP while others via OLAP. The benefit is that the user does - not need to learn both a database query language and a domain-specific BigData analytics language (e.g. Spark DSL, MapReduce, etc.). - Gremlin is all that is required to build a graph-based application because the Gremlin traversal machine will handle the rest. -

-
-
-
-
- -

Imperative and Declarative Traversals

-
-
-
- A Gremlin traversal can be written in either an imperative (procedural) manner, a declarative (descriptive) manner, - or in a hybrid manner containing both imperative and declarative aspects. An imperative Gremlin traversal tells the traversers how to proceed at each step in the traversal. For instance, - the imperative traversal on the right first places a traverser at the vertex denoting Gremlin. That traverser then splits itself across all of Gremlin's collaborators that are not Gremlin - himself. Next, the traversers walk to the managers of those collaborators to ultimately be grouped into a manager name count distribution. This traversal is imperative in that it tells the - traversers to "go here and then go there" in an explicit, procedural manner. -
-
-
-g.V().has("name","gremlin").as("a").
-out("created").in("created").
-where(neq("a")).
-in("manages").
-groupCount().by("name")
-
-
-
-

-

-
-
-g.V().match(
-as("a").has("name","gremlin"),
-as("a").out("created").as("b"),
-as("b").in("created").as("c"),
-as("c").in("manages").as("d"),
-where("a",neq("c"))).
-select("d").
-groupCount().by("name")
-
-
-
- A declarative Gremlin traversal does not tell the traversers the order in which to execute their walk, but instead, allows each traverser to select a pattern to execute from a collection - of (potentially nested) patterns. The declarative traversal on the left yields the same result as the imperative traversal above. However, the declarative traversal has the added benefit - that it leverages not only a compile-time query planner (like imperative traversals), but also a runtime query planner that chooses which traversal pattern to execute next based on the - historic statistics of each pattern -- favoring those patterns which tend to reduce/filter the most data. -
-
-
- The user can write their traversals in any way they choose. However, ultimately when their traversal is compiled, and depending on the underlying execution engine - (i.e. an OLTP graph database or an OLAP graph processor), the user's traversal is rewritten by a set of traversal strategies which do their best to determine the most optimal execution - plan based on an understanding of graph data access costs as well as the underlying data systems's unique capabilities (e.g. fetch the Gremlin vertex from the graph database's "name"-index). - Gremlin has been designed to give users flexibility in how they express their queries and graph system providers flexibility in how to efficiently evaluate traversals against their TinkerPop-enabled data system. -
-
-
- -

Host Language Embedding

-
-
-
- -
-
- Classic database query languages, like SQL, were conceived as being fundamentally different from the programming languages that would - ultimately use them in a production setting. For this reason, classical databases require the developer to code both in their native programming - language as well as in the database's respective query language. An argument can be made that the difference between "query languages" and - "programming languages" are not as great as we are taught to believe. Gremlin unifies this divide because traversals can be written in any - programming language that supports function composition and nesting (which every major programming language supports). In this way, the user's - Gremlin traversals are written along side their application code and benefit from the advantages afforded by the host language and its tooling - (e.g. type checking, syntax highlighting, dot completion, etc.). Various Gremlin language variants exist including: Gremlin-Java, Gremlin-Groovy, Gremlin-Python, - Gremlin-Scala, etc. -
-
-


The first example below shows a simple Java class. Note that the Gremlin traversal is expressed in Gremlin-Java and thus, is part of the user's application code. There is no need for the - developer to create a String representation of their query in (yet) another language to ultimately pass that String to the graph computing system and be returned a result set. Instead, - traversals are embedded in the user's host programming language and are on equal footing with all other application code. With Gremlin, users do not have to deal with the awkwardness exemplified - in the second example below which is a common anti-pattern found throughout the industry. -

-
-

-
-
public class GremlinTinkerPopExample {
-public void run(String name, String property) {
-
-Graph graph = GraphFactory.open(...);
-GraphTraversalSource g = graph.traversal();
-
-double avg = g.V().has("name",name).
-           out("knows").out("created").
-           values(property).mean().next();
-
-System.out.println("Average rating: " + avg);
-}
-}
-
-
-
-
-
-
-
public class SqlJdbcExample {
-public void run(String name, String property) {
-
-Connection connection = DriverManager.getConnection(...)
-Statement statement = connection.createStatement();
-ResultSet result = statement.executeQuery(
-"SELECT AVG(pr." + property + ") as AVERAGE FROM PERSONS p1" +
-"INNER JOIN KNOWS k ON k.person1 = p1.id " +
-"INNER JOIN PERSONS p2 ON p2.id = k.person2 " +
-"INNER JOIN CREATED c ON c.person = p2.id " +
-"INNER JOIN PROJECTS pr ON pr.id = c.project " +
-  "WHERE p.name = '" + name + "');
-
-System.out.println("Average rating: " + result.next().getDouble("AVERAGE")
-}
-}
-
-
-
-


Behind the scenes, a Gremlin traversal will evaluate locally against an embedded graph database, serialize itself across the network to a remote - graph database, or send itself to an OLAP processor for cluster-wide distributed execution. The traversal source definition determines where the traversal executes. Once a traversal source is - defined it can be used over and over again in a manner analogous to a database connection. The ultimate effect is that the user "feels" that their data and their traversals are all - co-located in their application and accessible via their application's native programming language. The "query language/programming language"-divide is bridged by Gremlin. -

-
-
-
-
Graph graph = GraphFactory.open(...);
-GraphTraversalSource g;
-g = graph.traversal();                                                         // local OLTP
-g = graph.traversal().withRemote(DriverRemoteConnection.using("server.yaml"))  // remote OLTP
-g = graph.traversal().withComputer(SparkGraphComputer.class);                  // distributed OLAP
-g = graph.traversal().withComputer(GiraphGraphComputer.class);                 // distributed OLAP
-
-
-
-
-
-
-

Related Resources

-
- - -
-
-
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/apache-tinkerpop-logo.png ---------------------------------------------------------------------- diff --git a/site/home/images/apache-tinkerpop-logo.png b/site/home/images/apache-tinkerpop-logo.png deleted file mode 100644 index 8d222ed..0000000 Binary files a/site/home/images/apache-tinkerpop-logo.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/blueprints-handdrawn.png ---------------------------------------------------------------------- diff --git a/site/home/images/blueprints-handdrawn.png b/site/home/images/blueprints-handdrawn.png deleted file mode 100644 index 8a7aba6..0000000 Binary files a/site/home/images/blueprints-handdrawn.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/cityscape-button.png ---------------------------------------------------------------------- diff --git a/site/home/images/cityscape-button.png b/site/home/images/cityscape-button.png deleted file mode 100644 index 85f986d..0000000 Binary files a/site/home/images/cityscape-button.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/egg-logo.png ---------------------------------------------------------------------- diff --git a/site/home/images/egg-logo.png b/site/home/images/egg-logo.png deleted file mode 100644 index 9d25899..0000000 Binary files a/site/home/images/egg-logo.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/favicon.ico ---------------------------------------------------------------------- diff --git a/site/home/images/favicon.ico b/site/home/images/favicon.ico deleted file mode 100644 index 79782c4..0000000 Binary files a/site/home/images/favicon.ico and /dev/null differ http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/furnace-handdrawn.png ---------------------------------------------------------------------- diff --git a/site/home/images/furnace-handdrawn.png b/site/home/images/furnace-handdrawn.png deleted file mode 100644 index 53fa34b..0000000 Binary files a/site/home/images/furnace-handdrawn.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/goutte-blue.png ---------------------------------------------------------------------- diff --git a/site/home/images/goutte-blue.png b/site/home/images/goutte-blue.png deleted file mode 100644 index 224dd38..0000000 Binary files a/site/home/images/goutte-blue.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/graph-globe.png ---------------------------------------------------------------------- diff --git a/site/home/images/graph-globe.png b/site/home/images/graph-globe.png deleted file mode 100644 index 9f37885..0000000 Binary files a/site/home/images/graph-globe.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/graph-vs-table.png ---------------------------------------------------------------------- diff --git a/site/home/images/graph-vs-table.png b/site/home/images/graph-vs-table.png deleted file mode 100644 index 04945ca..0000000 Binary files a/site/home/images/graph-vs-table.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/gremlin-apache.png ---------------------------------------------------------------------- diff --git a/site/home/images/gremlin-apache.png b/site/home/images/gremlin-apache.png deleted file mode 100644 index e2d3bce..0000000 Binary files a/site/home/images/gremlin-apache.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/gremlin-download.png ---------------------------------------------------------------------- diff --git a/site/home/images/gremlin-download.png b/site/home/images/gremlin-download.png deleted file mode 100644 index d9e1efd..0000000 Binary files a/site/home/images/gremlin-download.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/gremlin-github.png ---------------------------------------------------------------------- diff --git a/site/home/images/gremlin-github.png b/site/home/images/gremlin-github.png deleted file mode 100644 index 923bf43..0000000 Binary files a/site/home/images/gremlin-github.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/gremlin-gym-mini.png ---------------------------------------------------------------------- diff --git a/site/home/images/gremlin-gym-mini.png b/site/home/images/gremlin-gym-mini.png deleted file mode 100644 index 5c3d023..0000000 Binary files a/site/home/images/gremlin-gym-mini.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/gremlin-handdrawn.png ---------------------------------------------------------------------- diff --git a/site/home/images/gremlin-handdrawn.png b/site/home/images/gremlin-handdrawn.png deleted file mode 100644 index ff3e9d3..0000000 Binary files a/site/home/images/gremlin-handdrawn.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/gremlin-head.png ---------------------------------------------------------------------- diff --git a/site/home/images/gremlin-head.png b/site/home/images/gremlin-head.png deleted file mode 100644 index ec54d65..0000000 Binary files a/site/home/images/gremlin-head.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/gremlin-language-variants.png ---------------------------------------------------------------------- diff --git a/site/home/images/gremlin-language-variants.png b/site/home/images/gremlin-language-variants.png deleted file mode 100644 index 2c6ee8b..0000000 Binary files a/site/home/images/gremlin-language-variants.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/98869bca/site/home/images/gremlin-quill.png ---------------------------------------------------------------------- diff --git a/site/home/images/gremlin-quill.png b/site/home/images/gremlin-quill.png deleted file mode 100644 index bafcd63..0000000 Binary files a/site/home/images/gremlin-quill.png and /dev/null differ