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 2016/10/27 11:37:48 UTC
[05/10] tinkerpop git commit: Moved /site under /docs
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 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<div class="container">
- <div class="row">
- <h3>Download Apache TinkerPop™</h3>
- <p><img src="images/gremlin-download.png" style="float:right;width:150px;padding:10px;"/>Apache TinkerPop provides three packaged downloads per release version. The
- <a href="http://tinkerpop.apache.org/docs/current/reference/#gremlin-console">Gremlin Console</a> and <a href="http://tinkerpop.apache.org/docs/current/reference/#gremlin-server">Gremlin Server</a>
- 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.</p>
- <p>TinkerPop also deploys artifacts to <a href="http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.apache.tinkerpop%22">Maven Central</a>, which is helpful to
- developers who wish to depend on the various libraries that TinkerPop provides.
- <br/>
- <h4>Current Releases</h4>
- <table class="table">
- <tr>
- <td>
- <strong>3.2.3</strong> (latest, stable)
- </td>
- <td>
- 17-Oct-2016
- </td>
- <td>
- <a href="https://github.com/apache/tinkerpop/blob/3.2.3/CHANGELOG.asciidoc#release-3-2-3">release notes</a> |
- <a href="http://tinkerpop.apache.org/docs/3.2.3/upgrade/#_tinkerpop_3_2_3">upgrade</a> |
- <a href="http://tinkerpop.apache.org/docs/3.2.3/">documentation</a> |
- <a href="http://tinkerpop.apache.org/javadocs/3.2.3/full/">javadoc</a>
- </td>
- <td align="right">
- <a href="https://www.apache.org/dyn/closer.lua/tinkerpop/3.2.3/apache-tinkerpop-gremlin-console-3.2.3-bin.zip" class="btn btn-primary">Gremlin Console <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://www.apache.org/dyn/closer.lua/tinkerpop/3.2.3/apache-tinkerpop-gremlin-server-3.2.3-bin.zip" class="btn btn-primary">Gremlin Server <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://www.apache.org/dyn/closer.lua/tinkerpop/3.2.3/apache-tinkerpop-3.2.3-src.zip" class="btn btn-primary">Source <span class="glyphicon glyphicon-download-alt"></span></a>
- </td>
- </tr>
- <tr>
- <td>
- <strong>3.1.5</strong> (maintenance)
- </td>
- <td>
- 17-Oct-2016
- </td>
- <td>
- <a href="https://github.com/apache/tinkerpop/blob/3.1.5/CHANGELOG.asciidoc#release-3-1-5">release notes</a> |
- <a href="http://tinkerpop.apache.org/docs/3.1.5/upgrade/#_tinkerpop_3_1_5">upgrade</a> |
- <a href="http://tinkerpop.apache.org/docs/3.1.5/">documentation</a> |
- <a href="http://tinkerpop.apache.org/javadocs/3.1.5/full/">javadoc</a>
- </td>
- <td align="right">
- <a href="https://www.apache.org/dyn/closer.lua/tinkerpop/3.1.5/apache-tinkerpop-gremlin-console-3.1.5-bin.zip" class="btn btn-primary">Gremlin Console <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://www.apache.org/dyn/closer.lua/tinkerpop/3.1.5/apache-tinkerpop-gremlin-server-3.1.5-bin.zip" class="btn btn-primary">Gremlin Server <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://www.apache.org/dyn/closer.lua/tinkerpop/3.1.5/apache-tinkerpop-3.1.5-src.zip" class="btn btn-primary">Source <span class="glyphicon glyphicon-download-alt"></span></a>
- </td>
- </tr>
- </table>
- <h4>Archived Releases</small></h4>
- <table class="table">
- <tr>
- <td>
- <strong>3.2.2</strong>
- </td>
- <td>
- 6-Sep-2016
- </td>
- <td>
- <a href="https://github.com/apache/tinkerpop/blob/3.2.2/CHANGELOG.asciidoc#release-3-2-2">release notes</a> |
- <a href="http://tinkerpop.apache.org/docs/3.2.2/upgrade/#_tinkerpop_3_2_2">upgrade</a> |
- <a href="http://tinkerpop.apache.org/docs/3.2.2/">documentation</a> |
- <a href="http://tinkerpop.apache.org/javadocs/3.2.2/full/">javadoc</a>
- </td>
- <td align="right">
- <a href="https://archive.apache.org/dist/tinkerpop/3.2.2/apache-tinkerpop-gremlin-console-3.2.2-bin.zip" class="btn btn-primary">Gremlin Console <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/tinkerpop/3.2.2/apache-tinkerpop-gremlin-server-3.2.2-bin.zip" class="btn btn-primary">Gremlin Server <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/tinkerpop/3.2.2/apache-tinkerpop-3.2.2-src.zip" class="btn btn-primary">Source <span class="glyphicon glyphicon-download-alt"></span></a>
- </td>
- </tr>
- <tr>
- <td>
- <strong>3.1.4</strong>
- </td>
- <td>
- 6-Sep-2016
- </td>
- <td>
- <a href="https://github.com/apache/tinkerpop/blob/3.1.4/CHANGELOG.asciidoc#release-3-1-4">release notes</a> |
- <a href="http://tinkerpop.apache.org/docs/3.1.4/upgrade/#_tinkerpop_3_1_4">upgrade</a> |
- <a href="http://tinkerpop.apache.org/docs/3.1.4/">documentation</a> |
- <a href="http://tinkerpop.apache.org/javadocs/3.1.4/full/">javadoc</a>
- </td>
- <td align="right">
- <a href="https://archive.apache.org/dist/tinkerpop/3.1.4/apache-tinkerpop-gremlin-console-3.1.4-bin.zip" class="btn btn-primary">Gremlin Console <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/tinkerpop/3.1.4/apache-tinkerpop-gremlin-server-3.1.4-bin.zip" class="btn btn-primary">Gremlin Server <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/tinkerpop/3.1.4/apache-tinkerpop-3.1.4-src.zip" class="btn btn-primary">Source <span class="glyphicon glyphicon-download-alt"></span></a>
- </td>
- </tr>
- <tr>
- <td>
- <strong>3.2.1</strong>
- </td>
- <td>
- 18-Jul-2016
- </td>
- <td>
- <a href="https://github.com/apache/tinkerpop/blob/3.2.1/CHANGELOG.asciidoc#tinkerpop-321-release-date-july-18-2016">release notes</a> |
- <a href="http://tinkerpop.apache.org/docs/3.2.1/upgrade/#_tinkerpop_3_2_1">upgrade</a> |
- <a href="http://tinkerpop.apache.org/docs/3.2.1/reference/">documentation</a> |
- <a href="http://tinkerpop.apache.org/javadocs/3.2.1/full/">javadoc</a>
- </td>
- <td align="right">
- <a href="https://archive.apache.org/dist/tinkerpop/3.2.1/apache-gremlin-console-3.2.1-bin.zip" class="btn btn-primary">Gremlin Console <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/tinkerpop/3.2.1/apache-gremlin-server-3.2.1-bin.zip" class="btn btn-primary">Gremlin Server <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/tinkerpop/3.2.1/apache-tinkerpop-3.2.1-src.zip" class="btn btn-primary">Source <span class="glyphicon glyphicon-download-alt"></span></a>
- </td>
- </tr>
- <tr>
- <td>
- <strong>3.1.3</strong>
- </td>
- <td>
- 18-Jul-2016
- </td>
- <td>
- <a href="https://github.com/apache/tinkerpop/blob/3.1.3/CHANGELOG.asciidoc#tinkerpop-313-release-date-july-18-2016">release notes</a> |
- <a href="http://tinkerpop.apache.org/docs/3.1.3/upgrade/#_tinkerpop_3_1_3">upgrade</a> |
- <a href="http://tinkerpop.apache.org/docs/3.1.3/reference/">documentation</a> |
- <a href="http://tinkerpop.apache.org/javadocs/3.1.3/full/">javadoc</a>
- </td>
- <td align="right">
- <a href="https://archive.apache.org/dist/tinkerpop/3.1.3/apache-gremlin-console-3.1.3-bin.zip" class="btn btn-primary">Gremlin Console <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/tinkerpop/3.1.3/apache-gremlin-server-3.1.3-bin.zip" class="btn btn-primary">Gremlin Server <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/tinkerpop/3.1.3/apache-tinkerpop-3.1.3-src.zip" class="btn btn-primary">Source <span class="glyphicon glyphicon-download-alt"></span></a>
- </td>
- </tr>
- <tr>
- <td>
- <strong>3.2.0-incubating</strong>
- </td>
- <td>
- 8-Apr-2016
- </td>
- <td>
- <a href="https://github.com/apache/tinkerpop/blob/3.2.0-incubating/CHANGELOG.asciidoc#tinkerpop-320-release-date-april-8-2016">release notes</a> |
- <a href="http://tinkerpop.apache.org/docs/3.2.0-incubating/upgrade/#_tinkerpop_3_2_0_2">upgrade</a> |
- <a href="http://tinkerpop.apache.org/docs/3.2.0-incubating/reference/">documentation</a> |
- <a href="http://tinkerpop.apache.org/javadocs/3.2.0-incubating/full/">javadoc</a>
- </td>
- <td align="right">
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.2.0-incubating/apache-gremlin-console-3.2.0-incubating-bin.zip" class="btn btn-primary">Gremlin Console <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.2.0-incubating/apache-gremlin-server-3.2.0-incubating-bin.zip" class="btn btn-primary">Gremlin Server <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.2.0-incubating/apache-tinkerpop-3.2.0-incubating-src.zip" class="btn btn-primary">Source <span class="glyphicon glyphicon-download-alt"></span></a>
- </td>
- </tr>
- <tr>
- <td>
- <strong>3.1.2-incubating</strong>
- </td>
- <td>
- 8-Apr-2016
- </td>
- <td>
- <a href="https://github.com/apache/tinkerpop/blob/3.1.2-incubating/CHANGELOG.asciidoc#tinkerpop-312-release-date-april-8-2016">release notes</a> |
- <a href="http://tinkerpop.apache.org/docs/3.1.2-incubating/upgrade/#_tinkerpop_3_1_2">upgrade</a> |
- <a href="http://tinkerpop.apache.org/docs/3.1.2-incubating/reference/">documentation</a> |
- <a href="http://tinkerpop.apache.org/javadocs/3.1.2-incubating/full/">javadoc</a>
- </td>
- <td align="right">
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.1.2-incubating/apache-gremlin-console-3.1.2-incubating-bin.zip" class="btn btn-primary">Gremlin Console <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.1.2-incubating/apache-gremlin-server-3.1.2-incubating-bin.zip" class="btn btn-primary">Gremlin Server <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.1.2-incubating/apache-tinkerpop-3.1.2-incubating-src.zip" class="btn btn-primary">Source <span class="glyphicon glyphicon-download-alt"></span></a>
- </td>
- </tr>
- <tr>
- <td>
- <strong>3.1.1-incubating</strong>
- </td>
- <td>
- 8-Feb-2016
- </td>
- <td>
- <a href="https://github.com/apache/tinkerpop/blob/3.1.1-incubating/CHANGELOG.asciidoc#tinkerpop-311-release-date-february-8-2016">release notes</a> |
- <a href="http://tinkerpop.apache.org/docs/3.1.1-incubating/upgrade/#_tinkerpop_3_1_1">upgrade</a> |
- <a href="http://tinkerpop.apache.org/docs/3.1.1-incubating/reference/">documentation</a> |
- <a href="http://tinkerpop.apache.org/javadocs/3.1.1-incubating/full/">javadoc</a>
- </td>
- <td align="right">
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.1.1-incubating/apache-gremlin-console-3.1.1-incubating-bin.zip" class="btn btn-primary">Gremlin Console <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.1.1-incubating/apache-gremlin-server-3.1.1-incubating-bin.zip" class="btn btn-primary">Gremlin Server <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.1.1-incubating/apache-tinkerpop-3.1.1-incubating-src.zip" class="btn btn-primary">Source <span class="glyphicon glyphicon-download-alt"></span></a>
- </td>
- </tr>
- <tr>
- <td>
- <strong>3.1.0-incubating</strong>
- </td>
- <td>
- 16-Nov-2015
- </td>
- <td>
- <a href="https://github.com/apache/tinkerpop/blob/3.1.0-incubating/CHANGELOG.asciidoc#tinkerpop-310-release-date-november-16-2015">release notes</a> |
- <a href="http://tinkerpop.apache.org/docs/3.1.0-incubating/">documentation</a> |
- <a href="http://tinkerpop.apache.org/javadocs/3.1.0-incubating/full/">javadoc</a>
- </td>
- <td align="right">
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.1.0-incubating/apache-gremlin-console-3.1.0-incubating-bin.zip" class="btn btn-primary">Gremlin Console <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.1.0-incubating/apache-gremlin-server-3.1.0-incubating-bin.zip" class="btn btn-primary">Gremlin Server <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.1.0-incubating/apache-tinkerpop-3.1.0-incubating-src.zip" class="btn btn-primary">Source <span class="glyphicon glyphicon-download-alt"></span></a>
- </td>
- </tr>
- <tr>
- <td>
- <strong>3.0.2-incubating</strong>
- </td>
- <td>
- 19-Oct-2015
- </td>
- <td>
- <a href="https://github.com/apache/tinkerpop/blob/3.0.2-incubating/CHANGELOG.asciidoc#tinkerpop-302-release-date-october-19-2015">release notes</a> |
- <a href="http://tinkerpop.apache.org/docs/3.0.2-incubating/">documentation</a> |
- <a href="http://tinkerpop.apache.org/javadocs/3.0.2-incubating/full/">javadoc</a>
- </td>
- <td align="right">
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.0.2-incubating/apache-gremlin-console-3.0.2-incubating-bin.zip" class="btn btn-primary">Gremlin Console <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.0.2-incubating/apache-gremlin-server-3.0.2-incubating-bin.zip" class="btn btn-primary">Gremlin Server <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.0.2-incubating/apache-tinkerpop-3.0.2-incubating-src.zip" class="btn btn-primary">Source <span class="glyphicon glyphicon-download-alt"></span></a>
- </td>
- </tr>
- <tr>
- <td>
- <strong>3.0.1-incubating</strong>
- </td>
- <td>
- 2-Sep-2015
- </td>
- <td>
- <a href="https://github.com/apache/tinkerpop/blob/3.0.1-incubating/CHANGELOG.asciidoc#tinkerpop-301-release-date-september-2-2015">release notes</a> |
- <a href="http://tinkerpop.apache.org/docs/3.0.1-incubating/">documentation</a> |
- <a href="http://tinkerpop.apache.org/javadocs/3.0.1-incubating/full/">javadoc</a>
- </td>
- <td align="right">
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.0.1-incubating/apache-gremlin-console-3.0.1-incubating-bin.zip" class="btn btn-primary">Gremlin Console <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.0.1-incubating/apache-gremlin-server-3.0.1-incubating-bin.zip" class="btn btn-primary">Gremlin Server <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.0.1-incubating/apache-tinkerpop-3.0.1-incubating-src.zip" class="btn btn-primary">Source <span class="glyphicon glyphicon-download-alt"></span></a>
- </td>
- </tr>
- <tr>
- <td>
- <strong>3.0.0-incubating</strong>
- </td>
- <td>
- 9-Jul-2015
- </td>
- <td>
- <a href="https://github.com/apache/tinkerpop/blob/3.0.0-incubating/CHANGELOG.asciidoc#tinkerpop-300-release-date-july-9-2015">release notes</a> |
- <a href="http://tinkerpop.apache.org/docs/3.0.0-incubating/">documentation</a> |
- <a href="http://tinkerpop.apache.org/javadocs/3.0.0-incubating/full/">javadoc</a>
- </td>
- <td align="right">
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.0.0-incubating/apache-gremlin-console-3.0.0-incubating-bin.zip" class="btn btn-primary">Gremlin Console <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.0.0-incubating/apache-gremlin-server-3.0.0-incubating-bin.zip" class="btn btn-primary">Gremlin Server <span class="glyphicon glyphicon-download-alt"></span></a>
- <a href="https://archive.apache.org/dist/incubator/tinkerpop/3.0.0-incubating/apache-tinkerpop-3.0.0-incubating-src.zip" class="btn btn-primary">Source <span class="glyphicon glyphicon-download-alt"></span></a>
- </td>
- </tr>
- </table>
- <p><strong>Note</strong> 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.
- <h4>Verifying Downloads</h4>
- <p>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
- <a href="https://www.apache.org/dist/tinkerpop/KEYS">KEYS</a> 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 <a href="https://www.apache.org/dist/tinkerpop/">main
- distribution directory</a> - note that older releases will have such files in the <a href="https://archive.apache.org/dist/tinkerpop/">archives</a> or if released under Apache
- Incubator then they will be found in the <a href="https://archive.apache.org/dist/incubator/tinkerpop/">Incubator archives</a>).</p>
- <p>Then verify the signatures as follows:</p>
- <p>
- <pre><code>
- pgpk -a KEYS
- pgpv apache-gremlin-console-x.y.z-bin.zip.asc
- </code></pre>
- </p>
- <p>or</p>
- <p>
- <pre><code>
- pgpk -ka KEYS
- pgp apache-gremlin-console-x.y.z-bin.zip.asc
- </code></pre>
- </p>
- <p>or</p>
- <p>
- <pre><code>
- gpg --import KEYS
- gpg --verify apache-gremlin-console-x.y.z-bin.zip.asc apache-gremlin-console-x.y.z-bin.zip
- </code></pre>
- </p>
- <p>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.</p>
- </div>
-</div>
\ 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 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<img src="images/tinkerpop-cityscape.png" class="img-responsive" />
-<div class="container">
- <div class="hero-unit" style="padding:10px">
- <b><font size="5" face="american typewriter">Apache TinkerPop™</font></b>
- <p><font size="5">The Gremlin Graph Traversal Machine and Language</font></p>
- </div>
-</div>
-<br/>
-<div class="container-fluid">
- <div class="container">
- <div class="row">
- <div class="col-sm-10 col-md-10">
- <a href="http://arxiv.org/abs/1508.03843">Gremlin</a> is the graph traversal language of <a href="http://tinkerpop.apache.org/">Apache TinkerPop</a>.
- Gremlin is a <a href="https://en.wikipedia.org/wiki/Functional_programming">functional</a>, <a href="https://en.wikipedia.org/wiki/Dataflow_programming">data-flow</a>
- 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 <em>map</em>-step (transforming the objects in the stream), a <em>filter</em>-step (removing objects
- from the stream), or a <em>sideEffect</em>-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 <a href="http://arxiv.org/abs/1508.03843">Turing Complete</a>.
- </div>
- <div class="col-sm-2 col-md-2">
- <img src="images/gremlin-head.png" width="100%">
- </div>
- </div>
- <br/>
- <div style="border-radius:3px;border:1px solid black;padding:10px;padding-left:10px;height:170px" id="gremlinCarousel" class="carousel slide" data-ride="carousel" data-interval="30000">
- <!-- Indicators -->
- <ol class="carousel-indicators carousel-indicators-numbers">
- <li data-target="#gremlinCarousel" data-slide-to="0" class="active">1</li>
- <li data-target="#gremlinCarousel" data-slide-to="1">2</li>
- <li data-target="#gremlinCarousel" data-slide-to="2">3</li>
- <li data-target="#gremlinCarousel" data-slide-to="3">4</li>
- <li data-target="#gremlinCarousel" data-slide-to="4">5</li>
- <li data-target="#gremlinCarousel" data-slide-to="5">6</li>
- </ol>
- <div class="carousel-inner" role="listbox">
- <div class="item active">
- <div class="row">
- <div class="col-xs-5">
- <pre style="padding-left:10px;height:148px;overflow:hidden;"><code class="language-gremlin">
-g.V().has("name","gremlin").
- out("knows").
- out("knows").
- values("name")
-
- </code></pre>
- </div>
- <div class="col-xs-7" style="border-left: thin solid #000000;height:148px">
- <b>What are the names of Gremlin's friends' friends?</b>
- <p/>
- <ol style="padding-left:20px">
- <li>Get the vertex with name "gremlin."</li>
- <li>Traverse to the people that Gremlin knows.</li>
- <li>Traverse to the people those people know.</li>
- <li>Get those people's names.</li>
- </ol>
- <br/>
- </div>
- </div>
- </div>
- <div class="item">
- <div class="row">
- <div class="col-xs-5">
- <pre style="padding-left:10px;height:148px;overflow:hidden;"><code class="language-gremlin">
-g.V().match(
- as("a").out("knows").as("b"),
- as("a").out("created").as("c"),
- as("b").out("created").as("c"),
- as("c").in("created").count().is(2)).
- select("c").by("name")</code></pre>
- </div>
- <div class="col-xs-7" style="border-left: thin solid #000000;height:148px">
- <b>What are the names of the projects created by two friends?</b>
- <p/>
- <ol style="padding-left:20px">
- <li>...there exists some "a" who knows "b".</li>
- <li>...there exists some "a" who created "c".</li>
- <li>...there exists some "b" who created "c".</li>
- <li>...there exists some "c" created by 2 people.</li>
- <li>Get the name of all matching "c" projects.</li>
- </ol>
- </div>
- </div>
- </div>
- <div class="item">
- <div class="row">
- <div class="col-xs-5">
- <pre style="padding-left:10px;height:148px;overflow:hidden;"><code class="language-gremlin">
-g.V().has("name","gremlin").
- repeat(in("manages")).
- until(has("title","ceo")).
- path().by("name")
-
-</code></pre>
- </div>
- <div class="col-xs-7" style="border-left: thin solid #000000;height:148px">
- <b>Get the managers from Gremlin to the CEO in the hiearchy.</b>
- <p/>
- <ol style="padding-left:20px">
- <li>Get the vertex with the name "gremlin."</li>
- <li>Traverse up the management chain...</li>
- <li>...until a person with the title of CEO is reached.</li>
- <li>Get name of the managers in the path traversed.</li>
- </ol>
- <br/>
- </div>
- </div>
- </div>
- <div class="item">
- <div class="row">
- <div class="col-xs-5">
- <pre style="padding-left:10px;height:148px;overflow:hidden;"><code class="language-gremlin">
-g.V().has("name","gremlin").as("a").
- out("created").in("created").
- where(neq("a")).
- groupCount().by("title")
-
-</code></pre>
- </div>
- <div class="col-xs-7" style="border-left: thin solid #000000;height:148px">
- <b>Get the distribution of titles amongst Gremlin's collaborators.</b>
- <p/>
- <ol style="padding-left:20px">
- <li>Get the vertex with the name "gremlin" and label it "a."</li>
- <li>Get Gremlin's created projects and then who created them...</li>
- <li>...that are not Gremlin.</li>
- <li>Group count those collaborators by their titles.</li>
- </ol>
- <br/>
- </div>
- </div>
- </div>
- <div class="item">
- <div class="row">
- <div class="col-xs-5">
- <pre style="padding-left:10px;height:148px;overflow:hidden;"><code class="language-gremlin">
-g.V().has("name","gremlin").
- out("bought").aggregate("stash").
- in("bought").out("bought").
- where(not(within("stash"))).
- groupCount().order(local).by(values,decr)
-</code></pre>
- </div>
- <div class="col-xs-7" style="border-left: thin solid #000000;height:148px">
- <b>Get a ranked list of relevant products for Gremlin to purchase.</b>
- <p/>
- <ol style="padding-left:20px">
- <li>Get the vertex with the name "gremlin."</li>
- <li>Get the products Gremlin has purchased and save as "stash."</li>
- <li>Who else bought those products and what else did they buy...</li>
- <li>...that Gremlin has not already purchased.</li>
- <li>Group count the products and order by their relevance.</li>
- </ol>
- </div>
- </div>
- </div>
- <div class="item">
- <div class="row">
- <div class="col-xs-5">
- <pre style="padding-left:10px;height:148px;overflow:hidden;"><code class="language-gremlin">
-g.V().hasLabel("person").
- pageRank().
- by("friendRank").
- by(outE("knows")).
- order().by("friendRank",decr).
- limit(10)</code></pre>
- </div>
- <div class="col-xs-7" style="border-left: thin solid #000000;height:148px">
- <b>Get the 10 most central people in the knows-graph.</b>
- <p/>
- <ol style="padding-left:20px">
- <li>Get all people vertices.</li>
- <li>Calculate their PageRank using knows-edges.</li>
- <li>Order the people by their friendRank score.</li>
- <li>Get the top 10 ranked people.</li>
- </ol>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <br/>
- <div class="container">
- <a name="oltp-and-olap-traversals"></a>
- <h3>OLTP and OLAP Traversals</h3>
- <br/>
- 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 <em>online transactional process</em> (<a href="https://en.wikipedia.org/wiki/Online_transaction_processing">OLTP</a>) and the latter as an <em>online analytics
- process</em> (<a href="https://en.wikipedia.org/wiki/Online_analytical_processing">OLAP</a>). This universality is made possible by the Gremlin traversal machine. This distributed, graph-based <a href="https://en.wikipedia.org/wiki/Virtual_machine#Abstract_virtual_machine_techniques">virtual machine</a>
- 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.
- <br/><br/>
- <center><img src="images/oltp-and-olap.png" style="width:80%;" class="img-responsive"></center>
- </div>
- <br/>
- <div class="container">
- <a name="imperative-and-declarative-traversals"></a>
- <h3>Imperative and Declarative Traversals</h3>
- <br/>
- <div class="row">
- <div class="col-sm-7 col-md-8">
- A Gremlin traversal can be written in either an <em>imperative</em> (<a href="https://en.wikipedia.org/wiki/Imperative_programming">procedural</a>) manner, a <em>declarative</em> (<a href="https://en.wikipedia.org/wiki/Declarative_programming">descriptive</a>) 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.
- </div>
- <div class="col-sm-5 col-md-4">
- <pre style="padding:10px;">
-<code class="language-gremlin">g.V().has("name","gremlin").as("a").
-out("created").in("created").
-where(neq("a")).
-in("manages").
-groupCount().by("name")</code>
-</pre>
- </div>
- </div>
- <p/>
- <div class="row">
- <div class="col-sm-5 col-md-4">
- <pre style="padding:10px;">
-<code class="language-gremlin">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")</code>
-</pre>
- </div>
- <div class="col-sm-7 col-md-8">
- 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 <a href="http://tinkerpop.apache.org/docs/current/reference/#match-step">declarative traversal</a> 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.
- </div>
- </div>
- <br/>
- 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 <em><a href="http://tinkerpop.apache.org/docs/current/reference/#traversalstrategy">traversal strategies</a></em> 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.
- </div>
- <br/>
- <div class="container">
- <a name="host-language-embedding"></a>
- <h3>Host Language Embedding</h3>
- <br/>
- <div class="row">
- <div class="col-sm-5 col-md-4">
- <img src="images/gremlin-language-variants.png" class="img-responsive">
- </div>
- <div class="col-sm-7 col-md-8">
- Classic database query languages, like <a href="https://en.wikipedia.org/wiki/SQL">SQL</a>, 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 <a href="https://en.wikipedia.org/wiki/Function_composition">composition</a> and <a href="https://en.wikipedia.org/wiki/Nested_function">nesting</a> (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 <a href="http://tinkerpop.apache.org/docs/current/tutorials/gremlin-language-variants/">Gremlin language variants</a> exist including: Gremlin-Java, Gremlin-Groovy, <a href="http://tinkerpop.apache.org/docs/current/reference/#gremlin-python">Gremlin-Python</a>,
- <a href="https://github.com/mpollmeier/gremlin-scala">Gremlin-Scala</a>, etc.
- </div>
- <div class="col-md-12">
- <p><br/>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 <code>String</code> representation of their query in (yet) another language to ultimately pass that <code>String</code> 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 <strong>do not</strong> have to deal with the awkwardness exemplified
- in the second example below which is a common anti-pattern found throughout the industry.
- </p>
- </div>
- <br/><br/>
- <div class="col-md-5">
- <pre style="padding:10px;"><code class="language-gremlin">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);
-}
-}
-
-
-</code>
-</pre>
- </div>
- <div class="col-md-7">
- <pre style="padding:10px;"><code class="language-gremlin">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")
-}
-}</code>
-</pre>
- </div>
- <div class="col-md-12">
- <p><br/>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.
- </p>
- <br/>
- </div>
- <div class="col-md-12">
- <pre style="padding:10px;"><code class="language-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</code>
-</pre>
- </div>
- <br/>
- </div>
- <div class="container">
- <hr/>
- <h4>Related Resources</h4>
- <br/>
- <div class="carousel slide" data-ride="carousel" data-type="multi" data-interval="7000" id="relatedResources">
- <div class="carouselGrid-inner">
- <div class="item active">
- <div class="col-lg-3 col-md-3 col-sm-4 col-xs-6"><a href="https://academy.datastax.com/resources/getting-started-graph-databases"><img src="images/resources/graph-databases-101-resource.png" width="100%" /></a></div>
- </div>
- <div class="item">
- <div class="col-lg-3 col-md-3 col-sm-4 col-xs-6"><a href="http://datastax.com/dev/blog/the-benefits-of-the-gremlin-graph-traversal-machine"><img src="images/resources/benefits-gremlin-machine-resource.png" width="100%" /></a></div>
- </div>
- <div class="item">
- <div class="col-lg-3 col-md-3 col-sm-4 col-xs-6"><a href="http://arxiv.org/abs/1508.03843"><img src="images/resources/arxiv-article-resource.png" width="100%" /></a></div>
- </div>
- <div class="item">
- <div class="col-lg-3 col-md-3 col-sm-4 col-xs-6"><a href="http://sql2gremlin.com/"><img src="images/resources/sql-2-gremlin-resource.png" width="100%" /></a></div>
- </div>
- </div>
- <a class="left carouselGrid-control" href="#relatedResources" data-slide="prev">
- <span class="icon-prev" aria-hidden="true"></span>
- <span class="sr-only">Previous</span>
- </a>
- <a class="right carouselGrid-control" href="#relatedResources" data-slide="next">
- <span class="icon-next" aria-hidden="true"></span>
- <span class="sr-only">Next</span>
- </a>
- </div>
- <script>
- $('.carousel[data-type="multi"] .item').each(function(){
- var next = $(this).next();
- if (!next.length) { // if ther isn't a next
- next = $(this).siblings(':first'); // this is the first
- }
- next.children(':first-child').clone().appendTo($(this)); // put the next ones on the array
-
- for (var i=0;i<2;i++) { // THIS LOOP SPITS OUT EXTRA ITEMS TO THE CAROUSEL
- next=next.next();
- if (!next.length) {
- next = $(this).siblings(':first');
- }
- next.children(':first-child').clone().appendTo($(this));
- }
-
- });
- </script>
- </div>
- </div>
-</div>
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