http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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/24a4f212/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
