[tinkerpop] branch TINKERPOP-2010 updated (b469d89 -> 95033d8)
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a change to branch TINKERPOP-2010 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. discard b469d89 TINKERPOP-2010 Generate JSDoc for gremlin-javascript add 95033d8 TINKERPOP-2010 Generate JSDoc for gremlin-javascript This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (b469d89) \ N -- N -- N refs/heads/TINKERPOP-2010 (95033d8) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omit" are not gone; other references still refer to them. Any revisions marked "discard" are gone forever. No new revisions were added by this update. Summary of changes: gremlin-javascript/glv/PackageJson.template | 3 ++- gremlin-javascript/pom.xml| 4 ++-- .../src/main/javascript/gremlin-javascript/package.json | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-)
[tinkerpop] branch master updated: Added powered-by entries CTR
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tinkerpop.git The following commit(s) were added to refs/heads/master by this push: new 69d1b3e Added powered-by entries CTR 69d1b3e is described below commit 69d1b3ee77b663c0df6043fa0cfcefc0b3054cb0 Author: Stephen Mallette AuthorDate: Fri Nov 9 07:54:30 2018 -0500 Added powered-by entries CTR --- docs/site/home/index.html | 4 1 file changed, 4 insertions(+) diff --git a/docs/site/home/index.html b/docs/site/home/index.html index 677aa19..867acca 100644 --- a/docs/site/home/index.html +++ b/docs/site/home/index.html @@ -286,8 +286,12 @@ limitations under the License. https://www.exakat.io/";>exakat.io - Static analysis engine for PHP, powered by Gremlin. https://bricaud.github.io/graphexp/graphexp.html";>Graphexp - Interactive visualization of the Gremlin graph database with D3.js. +https://github.com/bechbd/gremlin-ide";>"gremlin-ide" - An IDE for Apache TinkerPop-enabled databases using React and Electron. +http://cambridge-intelligence.com/keylines/";>KeyLines - A JavaScript SDK for building powerful, custom and scalable graph visualization applications. +http://linkurio.us/";>Linkurious - A browser-based graph visualization software to search, explore and visualize connected data. http://www.pitneybowes.com/us/customer-information-management/data-integration-management/spectrum-data-hub-module.html";>Pitney Bowes Spectrum Data Hub Module - Uses Gremlin OLTP to query Neo4j-powered master data management based graph database. https://www.stackstate.com/";>StackState - Monitoring and AIOps allowing users to utilize Gremlin for analytical functions. +http://tomsawyer.com/products/perspectives/";>Tom Sawyer Perspectives - Advanced graphics-based software for building enterprise-class data relationship visualization and analysis applications. Apache TinkerPop Committers
[GitHub] spmallette closed pull request #968: TINKERPOP-2078 Added AnonymousTraversalSource
spmallette closed pull request #968: TINKERPOP-2078 Added AnonymousTraversalSource URL: https://github.com/apache/tinkerpop/pull/968 This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[tinkerpop] branch master updated (69d1b3e -> 5ad2d63)
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. from 69d1b3e Added powered-by entries CTR add a097bb8 TINKERPOP-2078 Introduced AnonymousTraversalSource add cd12e7d TINKERPOP-2078 added anonymous traversal to python add 834e9c8 TINKERPOP-2078 Add anonymous traversal for js add f92e2f0 TINKERPOP-2078 Added AnonymousTraversalSource for .NET add 8f80a85 TINKERPOP-2078 Fixed up docs given finalization of .NET/js AnonymousTraversalSource add 735579b TINKERPOP-2078 Refactored Traversal_() to Traversal() in .NET add 760352f TINKERPOP-2078 Used Traversal() in .NET template add 89e95f0 TINKERPOP-2078 Deprecated Graph.traversal() in .net,python,js add ddbec0b TINKERPOP-2078 Minor javadoc and reference doc fixes add 73aad39 TINKERPOP-2078 Fixed broken XML comment in .NET add 2e7b78b TINKERPOP-2078 Added missing import add 8cb89e5 TINKERPOP-2078 Introduce AnonymousTraversalSource in JS add d8ac5e5 TINKERPOP-2078 Made python have explicity AnonymousTraversalSource new 5ad2d63 Merge branch 'tp33' The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: CHANGELOG.asciidoc | 3 +- docs/site/home/gremlin.html| 6 +- docs/src/reference/gremlin-applications.asciidoc | 50 +-- docs/src/reference/gremlin-variants.asciidoc | 31 --- docs/src/upgrade/release-3.3.x.asciidoc| 29 +++ .../archetype-resources/src/main/java/Service.java | 6 +- gremlin-console/conf/remote-graph.properties | 3 +- .../tinkerpop/gremlin/jsr223/CoreImports.java | 3 + .../process/remote/EmbeddedRemoteConnection.java | 3 +- .../traversal/AnonymousTraversalSource.java| 99 ++ .../gremlin/process/traversal/TraversalSource.java | 11 +++ .../traversal/dsl/graph/GraphTraversalSource.java | 13 +++ .../dsl/graph/GraphTraversalSourceTest.java| 6 +- gremlin-dotnet/glv/P.template | 7 +- gremlin-dotnet/src/Gremlin.Net.Template/Program.cs | 4 +- .../Traversal/AnonymousTraversalSource.cs} | 19 +++-- .../src/Gremlin.Net/Process/Traversal/P.cs | 7 +- gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs | 2 + .../Gherkin/CommonSteps.cs | 5 +- .../Gherkin/ScenarioData.cs| 8 +- .../TraversalEvaluationTests.cs| 5 +- .../BytecodeGeneration/BytecodeGenerationTests.cs | 9 +- .../BytecodeGeneration/StrategiesTests.cs | 25 ++ .../Traversal/DriverRemoteConnection/EnumTests.cs | 7 +- .../GraphTraversalSourceTests.cs | 4 +- .../DriverRemoteConnection/GraphTraversalTests.cs | 38 +++-- .../DriverRemoteConnection/PredicateTests.cs | 7 +- .../DriverRemoteConnection/SideEffectTests.cs | 32 +++ .../DriverRemoteConnection/StrategiesTests.cs | 46 +++--- .../Process/Traversal/Dsl/DslTest.cs | 4 +- .../ServiceTests.cs| 5 +- .../Process/Traversal/GraphTraversalSourceTests.cs | 13 ++- .../driver/remote/DriverRemoteConnection.java | 21 + .../main/javascript/gremlin-javascript/index.js| 5 +- .../lib/process/anonymous-traversal.js | 64 ++ .../gremlin-javascript/lib/structure/graph.js | 1 + .../test/cucumber/feature-steps.js | 4 +- .../gremlin-javascript/test/cucumber/world.js | 9 +- .../test/integration/traversal-test.js | 12 +-- .../gremlin-javascript/test/unit/exports-test.js | 2 + .../gremlin_python/process/anonymous_traversal.py | 48 +++ .../main/jython/gremlin_python/structure/graph.py | 5 ++ .../src/main/jython/radish/feature_steps.py| 17 ++-- gremlin-python/src/main/jython/radish/terrain.py | 8 +- .../tests/driver/test_driver_remote_connection.py | 22 ++--- .../test_driver_remote_connection_threaded.py | 6 +- .../gremlin/driver/remote/RemoteGraphProvider.java | 3 +- .../gremlin/server/GremlinServerIntegrateTest.java | 25 ++ .../jsr223/GremlinEnabledScriptEngineTest.java | 2 - .../process/traversal/CoreTraversalTest.java | 8 +- 50 files changed, 500 insertions(+), 272 deletions(-) create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/AnonymousTraversalSource.java copy gremlin-dotnet/src/Gremlin.Net/{Structure/Graph.cs => Process/Traversal/AnonymousTraversalSource.cs} (74%) create mode 100644 gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/anonymous-traversal.js create mode 100644
[tinkerpop] branch tp33 updated (48a1af3 -> d8ac5e5)
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a change to branch tp33 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. from 48a1af3 Fixed/added missing feature requirements for tests add a097bb8 TINKERPOP-2078 Introduced AnonymousTraversalSource add cd12e7d TINKERPOP-2078 added anonymous traversal to python add 834e9c8 TINKERPOP-2078 Add anonymous traversal for js add f92e2f0 TINKERPOP-2078 Added AnonymousTraversalSource for .NET add 8f80a85 TINKERPOP-2078 Fixed up docs given finalization of .NET/js AnonymousTraversalSource add 735579b TINKERPOP-2078 Refactored Traversal_() to Traversal() in .NET add 760352f TINKERPOP-2078 Used Traversal() in .NET template add 89e95f0 TINKERPOP-2078 Deprecated Graph.traversal() in .net,python,js add ddbec0b TINKERPOP-2078 Minor javadoc and reference doc fixes add 73aad39 TINKERPOP-2078 Fixed broken XML comment in .NET add 2e7b78b TINKERPOP-2078 Added missing import add 8cb89e5 TINKERPOP-2078 Introduce AnonymousTraversalSource in JS add d8ac5e5 TINKERPOP-2078 Made python have explicity AnonymousTraversalSource No new revisions were added by this update. Summary of changes: CHANGELOG.asciidoc | 3 +- docs/site/home/gremlin.html| 2 +- docs/src/reference/gremlin-applications.asciidoc | 50 +-- docs/src/reference/gremlin-variants.asciidoc | 31 --- docs/src/upgrade/release-3.3.x.asciidoc| 29 +++ .../archetype-resources/src/main/java/Service.java | 6 +- gremlin-console/conf/remote-graph.properties | 3 +- .../tinkerpop/gremlin/jsr223/CoreImports.java | 3 + .../process/remote/EmbeddedRemoteConnection.java | 3 +- .../traversal/AnonymousTraversalSource.java| 99 ++ .../gremlin/process/traversal/TraversalSource.java | 11 +++ .../traversal/dsl/graph/GraphTraversalSource.java | 13 +++ .../dsl/graph/GraphTraversalSourceTest.java| 6 +- gremlin-dotnet/glv/P.template | 7 +- gremlin-dotnet/src/Gremlin.Net.Template/Program.cs | 4 +- .../Traversal/AnonymousTraversalSource.cs} | 19 +++-- .../src/Gremlin.Net/Process/Traversal/P.cs | 7 +- gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs | 2 + .../Gherkin/CommonSteps.cs | 5 +- .../Gherkin/ScenarioData.cs| 8 +- .../TraversalEvaluationTests.cs| 5 +- .../BytecodeGeneration/BytecodeGenerationTests.cs | 9 +- .../BytecodeGeneration/StrategiesTests.cs | 25 ++ .../Traversal/DriverRemoteConnection/EnumTests.cs | 7 +- .../GraphTraversalSourceTests.cs | 4 +- .../DriverRemoteConnection/GraphTraversalTests.cs | 38 +++-- .../DriverRemoteConnection/PredicateTests.cs | 7 +- .../DriverRemoteConnection/SideEffectTests.cs | 32 +++ .../DriverRemoteConnection/StrategiesTests.cs | 46 +++--- .../Process/Traversal/Dsl/DslTest.cs | 4 +- .../ServiceTests.cs| 5 +- .../Process/Traversal/GraphTraversalSourceTests.cs | 13 ++- .../driver/remote/DriverRemoteConnection.java | 21 + .../main/javascript/gremlin-javascript/index.js| 5 +- .../lib/process/anonymous-traversal.js | 64 ++ .../lib/process/graph-traversal.js | 1 + .../gremlin-javascript/lib/structure/graph.js | 1 + .../test/cucumber/feature-steps.js | 4 +- .../gremlin-javascript/test/cucumber/world.js | 9 +- .../test/integration/traversal-test.js | 12 +-- .../gremlin-javascript/test/unit/exports-test.js | 2 + .../gremlin_python/process/anonymous_traversal.py | 48 +++ .../main/jython/gremlin_python/structure/graph.py | 5 ++ .../src/main/jython/radish/feature_steps.py| 17 ++-- gremlin-python/src/main/jython/radish/terrain.py | 8 +- .../tests/driver/test_driver_remote_connection.py | 22 ++--- .../test_driver_remote_connection_threaded.py | 6 +- .../gremlin/driver/remote/RemoteGraphProvider.java | 3 +- .../gremlin/server/GremlinServerIntegrateTest.java | 24 ++ .../jsr223/GremlinEnabledScriptEngineTest.java | 2 - .../process/traversal/CoreTraversalTest.java | 8 +- 51 files changed, 498 insertions(+), 270 deletions(-) create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/AnonymousTraversalSource.java copy gremlin-dotnet/src/Gremlin.Net/{Structure/Graph.cs => Process/Traversal/AnonymousTraversalSource.cs} (74%) create mode 100644 gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/anonymous-traversal.js create mode 100644 gremlin-python/src/main/jython/gremlin_python/process/anonymous_traversal.py
[tinkerpop] 01/01: Merge branch 'tp33'
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit 5ad2d639d420cd5b1bc2a6f7cedeedddb92b008d Merge: 69d1b3e d8ac5e5 Author: Stephen Mallette AuthorDate: Fri Nov 9 09:19:10 2018 -0500 Merge branch 'tp33' Conflicts: docs/site/home/gremlin.html gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/StrategiesTests.cs gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java CHANGELOG.asciidoc | 3 +- docs/site/home/gremlin.html| 6 +- docs/src/reference/gremlin-applications.asciidoc | 50 +-- docs/src/reference/gremlin-variants.asciidoc | 31 --- docs/src/upgrade/release-3.3.x.asciidoc| 29 +++ .../archetype-resources/src/main/java/Service.java | 6 +- gremlin-console/conf/remote-graph.properties | 3 +- .../tinkerpop/gremlin/jsr223/CoreImports.java | 3 + .../process/remote/EmbeddedRemoteConnection.java | 3 +- .../traversal/AnonymousTraversalSource.java| 99 ++ .../gremlin/process/traversal/TraversalSource.java | 11 +++ .../traversal/dsl/graph/GraphTraversalSource.java | 13 +++ .../dsl/graph/GraphTraversalSourceTest.java| 6 +- gremlin-dotnet/glv/P.template | 7 +- gremlin-dotnet/src/Gremlin.Net.Template/Program.cs | 4 +- .../Traversal/AnonymousTraversalSource.cs} | 19 +++-- .../src/Gremlin.Net/Process/Traversal/P.cs | 7 +- gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs | 2 + .../Gherkin/CommonSteps.cs | 5 +- .../Gherkin/ScenarioData.cs| 8 +- .../TraversalEvaluationTests.cs| 5 +- .../BytecodeGeneration/BytecodeGenerationTests.cs | 9 +- .../BytecodeGeneration/StrategiesTests.cs | 25 ++ .../Traversal/DriverRemoteConnection/EnumTests.cs | 7 +- .../GraphTraversalSourceTests.cs | 4 +- .../DriverRemoteConnection/GraphTraversalTests.cs | 38 +++-- .../DriverRemoteConnection/PredicateTests.cs | 7 +- .../DriverRemoteConnection/SideEffectTests.cs | 32 +++ .../DriverRemoteConnection/StrategiesTests.cs | 46 +++--- .../Process/Traversal/Dsl/DslTest.cs | 4 +- .../ServiceTests.cs| 5 +- .../Process/Traversal/GraphTraversalSourceTests.cs | 13 ++- .../driver/remote/DriverRemoteConnection.java | 21 + .../main/javascript/gremlin-javascript/index.js| 5 +- .../lib/process/anonymous-traversal.js | 64 ++ .../gremlin-javascript/lib/structure/graph.js | 1 + .../test/cucumber/feature-steps.js | 4 +- .../gremlin-javascript/test/cucumber/world.js | 9 +- .../test/integration/traversal-test.js | 12 +-- .../gremlin-javascript/test/unit/exports-test.js | 2 + .../gremlin_python/process/anonymous_traversal.py | 48 +++ .../main/jython/gremlin_python/structure/graph.py | 5 ++ .../src/main/jython/radish/feature_steps.py| 17 ++-- gremlin-python/src/main/jython/radish/terrain.py | 8 +- .../tests/driver/test_driver_remote_connection.py | 22 ++--- .../test_driver_remote_connection_threaded.py | 6 +- .../gremlin/driver/remote/RemoteGraphProvider.java | 3 +- .../gremlin/server/GremlinServerIntegrateTest.java | 25 ++ .../jsr223/GremlinEnabledScriptEngineTest.java | 2 - .../process/traversal/CoreTraversalTest.java | 8 +- 50 files changed, 500 insertions(+), 272 deletions(-) diff --cc docs/site/home/gremlin.html index 21fe1e8,ffa9df3..40f2e6e --- a/docs/site/home/gremlin.html +++ b/docs/site/home/gremlin.html @@@ -338,9 -338,10 +338,9 @@@ g.V().hasLabel("person") 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/code> - + g = traversal().withRemote(DriverRemoteConnection.using("localhost", 8182)) // remote -g = graph.traversal().withComputer(SparkGraphComputer.class); // distributed OLAP -g = graph.traversal().withComputer(GiraphGraphComputer.class); // distributed OLAP ++g = graph.traversal().withComputer(SparkGraphComputer.class); // distributed OLAP + diff --cc gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java index 6ccf2e8,712cf01..08d4936 --
[GitHub] dkuppitz commented on issue #991: TINKERPOP-2010 Generate JSDoc for gremlin-javascript
dkuppitz commented on issue #991: TINKERPOP-2010 Generate JSDoc for gremlin-javascript URL: https://github.com/apache/tinkerpop/pull/991#issuecomment-437378073 Looks good to me. VOTE +1 This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[tinkerpop] branch TINKERPOP-2059 updated (e4f978d -> b6ebdaf)
This is an automated email from the ASF dual-hosted git repository. dkuppitz pushed a change to branch TINKERPOP-2059 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. omit e4f978d Got rid of now deprecated `valueMap()` overload in `AddVertexTest`. omit 96aad9f removed valueMap(boolean) tests from PropertyMapStepTest omit e3c2e29 Added changes suggested by @spmallette. omit a404521 TINKERPOP-2059 Implemented `by()` and `with()` modulators for `valueMap()` step. add c5501eb TINKERPOP-2065 iterate() now sends NoneStep add 2211ef9 Merge branch 'TINKERPOP-2065' into tp33 add 34ed260 Merge branch 'tp33' add 5343880 Fixed formatting in provider docs in protocol section CTR add 0852a66 Merge branch 'tp33' add a8fba32 TINKERPOP-2084 Display remote stacktrace in gremlin console add 0b1e6e1 Merge branch 'TINKERPOP-2084' into tp33 add afb289d Merge branch 'tp33' add 811915a TINKERPOP-2072 Refactored TypeTranslator for direction extension add c3403ac Merge pull request #982 from apache/TINKERPOP-2072 add 6fc5385 TINKERPOP-2064 Expose response attributes in JavaScript Driver add 6db9012 Merge pull request #985 from apache/TINKERPOP-2064 add 48a1af3 Fixed/added missing feature requirements for tests add b41938a Merge branch 'tp33' add 69d1b3e Added powered-by entries CTR add a097bb8 TINKERPOP-2078 Introduced AnonymousTraversalSource add cd12e7d TINKERPOP-2078 added anonymous traversal to python add 834e9c8 TINKERPOP-2078 Add anonymous traversal for js add f92e2f0 TINKERPOP-2078 Added AnonymousTraversalSource for .NET add 8f80a85 TINKERPOP-2078 Fixed up docs given finalization of .NET/js AnonymousTraversalSource add 735579b TINKERPOP-2078 Refactored Traversal_() to Traversal() in .NET add 760352f TINKERPOP-2078 Used Traversal() in .NET template add 89e95f0 TINKERPOP-2078 Deprecated Graph.traversal() in .net,python,js add ddbec0b TINKERPOP-2078 Minor javadoc and reference doc fixes add 73aad39 TINKERPOP-2078 Fixed broken XML comment in .NET add 2e7b78b TINKERPOP-2078 Added missing import add 8cb89e5 TINKERPOP-2078 Introduce AnonymousTraversalSource in JS add d8ac5e5 TINKERPOP-2078 Made python have explicity AnonymousTraversalSource add 5ad2d63 Merge branch 'tp33' new b6ebdaf TINKERPOP-2059 Implemented `by()` and `with()` modulators for `valueMap()` step. This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (e4f978d) \ N -- N -- N refs/heads/TINKERPOP-2059 (b6ebdaf) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omit" are not gone; other references still refer to them. Any revisions marked "discard" are gone forever. The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: CHANGELOG.asciidoc | 10 +- docs/site/home/gremlin.html| 6 +- docs/site/home/index.html | 4 + docs/src/dev/provider/index.asciidoc | 29 +- docs/src/reference/gremlin-applications.asciidoc | 50 ++-- docs/src/reference/gremlin-variants.asciidoc | 31 ++- docs/src/upgrade/release-3.3.x.asciidoc| 29 ++ docs/src/upgrade/release-3.4.x.asciidoc| 16 ++ .../archetype-resources/src/main/java/Service.java | 6 +- gremlin-console/conf/remote-graph.properties | 3 +- .../tinkerpop/gremlin/console/Console.groovy | 8 +- .../console/jsr223/DriverRemoteAcceptor.java | 9 +- .../tinkerpop/gremlin/jsr223/CoreImports.java | 3 + .../gremlin/jsr223/console/RemoteException.java| 24 +- .../process/remote/EmbeddedRemoteConnection.java | 3 +- .../traversal/AnonymousTraversalSource.java| 99 +++ .../gremlin/process/traversal/Translator.java | 29 +- .../gremlin/process/traversal/TraversalSource.java | 11 + .../traversal/dsl/graph/GraphTraversalSource.java | 13 + .../dsl/graph/GraphTraversalSourceTest.java| 6 +- gremlin-dotnet/glv/P.template | 7 +- gremlin-dotnet/src/Gremlin.Net.Template/Program.cs | 4 +- .../Traversal/AnonymousTraversalSource.cs} | 19 +- .../Process/Traversal/DefaultTraversal.cs | 1 + .../src/Gremlin.Net/Process/Traversal/P.cs | 7 +- gremlin-dotne
[tinkerpop] 01/01: TINKERPOP-2059 Implemented `by()` and `with()` modulators for `valueMap()` step.
This is an automated email from the ASF dual-hosted git repository. dkuppitz pushed a commit to branch TINKERPOP-2059 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit b6ebdaff0dac3f6445ef8d5e820cd957fc3f4fd0 Author: Daniel Kuppitz AuthorDate: Tue Oct 23 13:04:20 2018 -0700 TINKERPOP-2059 Implemented `by()` and `with()` modulators for `valueMap()` step. --- CHANGELOG.asciidoc | 1 + docs/src/recipes/collections.asciidoc | 6 +- docs/src/recipes/duplicate-edge.asciidoc | 4 +- docs/src/recipes/edge-move.asciidoc| 4 +- docs/src/reference/gremlin-applications.asciidoc | 10 +- docs/src/reference/gremlin-variants.asciidoc | 10 +- docs/src/reference/the-traversal.asciidoc | 29 ++- docs/src/upgrade/release-3.4.x.asciidoc| 70 +++ .../tinkerpop/gremlin/jsr223/CoreImports.java | 2 + .../traversal/dsl/graph/GraphTraversal.java| 5 +- .../gremlin/process/traversal/dsl/graph/__.java| 5 +- .../traversal/step/map/PropertyMapStep.java| 135 + .../process/traversal/step/util/WithOptions.java | 70 +++ .../strategy/decoration/PartitionStrategy.java | 4 +- .../traversal/step/map/PropertyMapStepTest.java| 11 +- gremlin-dotnet/glv/WithOptions.template| 47 + gremlin-dotnet/glv/generate.groovy | 21 +- .../Gremlin.Net/Process/Traversal/WithOptions.cs | 65 ++ .../TraversalEvaluationTests.cs| 4 +- .../Gherkin/TraversalEvaluation/TraversalParser.cs | 9 +- .../TraversalEvaluation/WithOptionsParameter.cs| 83 gremlin-javascript/glv/TraversalSource.template| 5 + gremlin-javascript/glv/generate.groovy | 11 +- .../main/javascript/gremlin-javascript/index.js| 3 +- .../gremlin-javascript/lib/process/traversal.js| 11 + .../test/cucumber/feature-steps.js | 3 +- gremlin-python/glv/TraversalSource.template| 8 + gremlin-python/glv/generate.groovy | 9 +- .../gremlin/python/jsr223/SymbolHelper.java| 1 + .../jython/gremlin_python/process/traversal.py | 20 ++ .../gremlin_python/structure/io/graphsonV2d0.py| 2 +- .../gremlin_python/structure/io/graphsonV3d0.py| 2 +- .../src/main/jython/radish/feature_steps.py| 5 +- gremlin-test/features/map/AddVertex.feature| 4 +- gremlin-test/features/map/ValueMap.feature | 76 ++- .../process/computer/GraphComputerTest.java| 2 +- .../process/traversal/step/map/AddVertexTest.java | 19 +- .../process/traversal/step/map/PageRankTest.java | 16 +- .../traversal/step/map/PeerPressureTest.java | 16 +- .../process/traversal/step/map/ProgramTest.java| 8 +- .../process/traversal/step/map/ValueMapTest.java | 221 +++-- .../tinkergraph/structure/TinkerGraphPlayTest.java | 120 +++ 42 files changed, 881 insertions(+), 276 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index a2778fb..39c5aaf 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -25,6 +25,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima This release also includes changes from <>. +* Made `valueMap()` aware of `by` and `with` modulators and deprecated `valueMap(boolean)` overloads. * Use `Compare.eq` in `Contains` predicates to ensure the same filter behavior for numeric values. * Added `OptionsStrategy` to allow traversals to take arbitrary traversal-wide configurations. * Added text predicates. diff --git a/docs/src/recipes/collections.asciidoc b/docs/src/recipes/collections.asciidoc index ce237ec..ff76925 100644 --- a/docs/src/recipes/collections.asciidoc +++ b/docs/src/recipes/collections.asciidoc @@ -352,14 +352,14 @@ g.V(). has('name','marko'). union(project('degree'). <1> by(bothE().count()), -valueMap(true)). +valueMap().with(WithOptions.tokens)). unfold().<2> group(). by(keys). by(select(values).unfold()) -<1> The `valueMap(true)` of a `Vertex` can be extended with the "degree" of the `Vertex` by performing a `union()` of +<1> The `valueMap().with(WithOptions.tokens)` of a `Vertex` can be extended with the "degree" of the `Vertex` by performing a `union()` of the two traversals that produce that output (both produce `Map` objects). <2> The `unfold()`-step is used to decompose the `Map` objects into key/value entries that are then constructed back into a single new `Map` given the patterns shown earlier. The `Map` objects of both traversals in the `union()` are @@ -375,7 +375,7 @@ a `List` back for all the values of the new `Map`. With some added logic the `Ma g.V(). has('name','marko'). - union(valueMap(true), + union(valueMap().with(WithOptions.tokens), project('a
[GitHub] dkuppitz closed pull request #986: TINKERPOP-2059 Modulation of valueMap()
dkuppitz closed pull request #986: TINKERPOP-2059 Modulation of valueMap() URL: https://github.com/apache/tinkerpop/pull/986 This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[tinkerpop] 01/01: Merge pull request #986 from apache/TINKERPOP-2059
This is an automated email from the ASF dual-hosted git repository. dkuppitz pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit 935d513a6d2b20cf924c6d67c75b1d5eeb4475e2 Merge: 5ad2d63 b6ebdaf Author: Daniel Kuppitz AuthorDate: Fri Nov 9 09:55:00 2018 -0700 Merge pull request #986 from apache/TINKERPOP-2059 TINKERPOP-2059 Modulation of valueMap() CHANGELOG.asciidoc | 1 + docs/src/recipes/collections.asciidoc | 6 +- docs/src/recipes/duplicate-edge.asciidoc | 4 +- docs/src/recipes/edge-move.asciidoc| 4 +- docs/src/reference/gremlin-applications.asciidoc | 10 +- docs/src/reference/gremlin-variants.asciidoc | 10 +- docs/src/reference/the-traversal.asciidoc | 29 ++- docs/src/upgrade/release-3.4.x.asciidoc| 70 +++ .../tinkerpop/gremlin/jsr223/CoreImports.java | 2 + .../traversal/dsl/graph/GraphTraversal.java| 5 +- .../gremlin/process/traversal/dsl/graph/__.java| 5 +- .../traversal/step/map/PropertyMapStep.java| 135 + .../process/traversal/step/util/WithOptions.java | 70 +++ .../strategy/decoration/PartitionStrategy.java | 4 +- .../traversal/step/map/PropertyMapStepTest.java| 11 +- gremlin-dotnet/glv/WithOptions.template| 47 + gremlin-dotnet/glv/generate.groovy | 21 +- .../Gremlin.Net/Process/Traversal/WithOptions.cs | 65 ++ .../TraversalEvaluationTests.cs| 4 +- .../Gherkin/TraversalEvaluation/TraversalParser.cs | 9 +- .../TraversalEvaluation/WithOptionsParameter.cs| 83 gremlin-javascript/glv/TraversalSource.template| 5 + gremlin-javascript/glv/generate.groovy | 11 +- .../main/javascript/gremlin-javascript/index.js| 3 +- .../gremlin-javascript/lib/process/traversal.js| 11 + .../test/cucumber/feature-steps.js | 3 +- gremlin-python/glv/TraversalSource.template| 8 + gremlin-python/glv/generate.groovy | 9 +- .../gremlin/python/jsr223/SymbolHelper.java| 1 + .../jython/gremlin_python/process/traversal.py | 20 ++ .../gremlin_python/structure/io/graphsonV2d0.py| 2 +- .../gremlin_python/structure/io/graphsonV3d0.py| 2 +- .../src/main/jython/radish/feature_steps.py| 5 +- gremlin-test/features/map/AddVertex.feature| 4 +- gremlin-test/features/map/ValueMap.feature | 76 ++- .../process/computer/GraphComputerTest.java| 2 +- .../process/traversal/step/map/AddVertexTest.java | 19 +- .../process/traversal/step/map/PageRankTest.java | 16 +- .../traversal/step/map/PeerPressureTest.java | 16 +- .../process/traversal/step/map/ProgramTest.java| 8 +- .../process/traversal/step/map/ValueMapTest.java | 221 +++-- .../tinkergraph/structure/TinkerGraphPlayTest.java | 120 +++ 42 files changed, 881 insertions(+), 276 deletions(-)
[tinkerpop] branch master updated (5ad2d63 -> 935d513)
This is an automated email from the ASF dual-hosted git repository. dkuppitz pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. from 5ad2d63 Merge branch 'tp33' add b6ebdaf TINKERPOP-2059 Implemented `by()` and `with()` modulators for `valueMap()` step. new 935d513 Merge pull request #986 from apache/TINKERPOP-2059 The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: CHANGELOG.asciidoc | 1 + docs/src/recipes/collections.asciidoc | 6 +- docs/src/recipes/duplicate-edge.asciidoc | 4 +- docs/src/recipes/edge-move.asciidoc| 4 +- docs/src/reference/gremlin-applications.asciidoc | 10 +- docs/src/reference/gremlin-variants.asciidoc | 10 +- docs/src/reference/the-traversal.asciidoc | 29 ++- docs/src/upgrade/release-3.4.x.asciidoc| 70 +++ .../tinkerpop/gremlin/jsr223/CoreImports.java | 2 + .../traversal/dsl/graph/GraphTraversal.java| 5 +- .../gremlin/process/traversal/dsl/graph/__.java| 5 +- .../traversal/step/map/PropertyMapStep.java| 135 + .../process/traversal/step/util/WithOptions.java | 70 +++ .../strategy/decoration/PartitionStrategy.java | 4 +- .../traversal/step/map/PropertyMapStepTest.java| 11 +- .../glv/{Token.template => WithOptions.template} | 16 +- gremlin-dotnet/glv/generate.groovy | 21 +- .../Process/Traversal/{IO.cs => WithOptions.cs}| 44 ++-- .../TraversalEvaluationTests.cs| 4 +- .../Gherkin/TraversalEvaluation/TraversalParser.cs | 9 +- .../{IOParameter.cs => WithOptionsParameter.cs}| 21 +- gremlin-javascript/glv/TraversalSource.template| 5 + gremlin-javascript/glv/generate.groovy | 11 +- .../main/javascript/gremlin-javascript/index.js| 3 +- .../gremlin-javascript/lib/process/traversal.js| 11 + .../test/cucumber/feature-steps.js | 3 +- gremlin-python/glv/TraversalSource.template| 8 + gremlin-python/glv/generate.groovy | 9 +- .../gremlin/python/jsr223/SymbolHelper.java| 1 + .../jython/gremlin_python/process/traversal.py | 20 ++ .../gremlin_python/structure/io/graphsonV2d0.py| 2 +- .../gremlin_python/structure/io/graphsonV3d0.py| 2 +- .../src/main/jython/radish/feature_steps.py| 5 +- gremlin-test/features/map/AddVertex.feature| 4 +- gremlin-test/features/map/ValueMap.feature | 76 ++- .../process/computer/GraphComputerTest.java| 2 +- .../process/traversal/step/map/AddVertexTest.java | 19 +- .../process/traversal/step/map/PageRankTest.java | 16 +- .../traversal/step/map/PeerPressureTest.java | 16 +- .../process/traversal/step/map/ProgramTest.java| 8 +- .../process/traversal/step/map/ValueMapTest.java | 221 +++-- .../tinkergraph/structure/TinkerGraphPlayTest.java | 120 +++ 42 files changed, 735 insertions(+), 308 deletions(-) create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/WithOptions.java copy gremlin-dotnet/glv/{Token.template => WithOptions.template} (77%) copy gremlin-dotnet/src/Gremlin.Net/Process/Traversal/{IO.cs => WithOptions.cs} (66%) copy gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/TraversalEvaluation/{IOParameter.cs => WithOptionsParameter.cs} (75%)
[tinkerpop] branch TINKERPOP-2059 deleted (was b6ebdaf)
This is an automated email from the ASF dual-hosted git repository. dkuppitz pushed a change to branch TINKERPOP-2059 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. was b6ebdaf TINKERPOP-2059 Implemented `by()` and `with()` modulators for `valueMap()` step. The revisions that were on this branch are still contained in other references; therefore, this change does not discard any commits from the repository.
[tinkerpop] branch js-doc-example deleted (was e08651b)
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a change to branch js-doc-example in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. was e08651b Improve JavaScript Gremlin documentation The revisions that were on this branch are still contained in other references; therefore, this change does not discard any commits from the repository.
[tinkerpop] branch TINKERPOP-2068-tp33 deleted (was 82cd53d)
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a change to branch TINKERPOP-2068-tp33 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. was 82cd53d Merge branch 'TINKERPOP-2068-tp32' into TINKERPOP-2068-tp33 The revisions that were on this branch are still contained in other references; therefore, this change does not discard any commits from the repository.
[tinkerpop] branch TINKERPOP-1921 deleted (was 9dbd2d2)
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a change to branch TINKERPOP-1921 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. was 9dbd2d2 TINKERPOP-1921 Added hasNext() in gremlin-python The revisions that were on this branch are still contained in other references; therefore, this change does not discard any commits from the repository.
[tinkerpop] branch TINKERPOP-2084 deleted (was a8fba32)
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a change to branch TINKERPOP-2084 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. was a8fba32 TINKERPOP-2084 Display remote stacktrace in gremlin console The revisions that were on this branch are still contained in other references; therefore, this change does not discard any commits from the repository.
[tinkerpop] branch TINKERPOP-2068-master deleted (was eeed2c7)
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a change to branch TINKERPOP-2068-master in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. was eeed2c7 Merge branch 'TINKERPOP-2068-tp33' into TINKERPOP-2068-master The revisions that were on this branch are still contained in other references; therefore, this change does not discard any commits from the repository.
[tinkerpop] branch TINKERPOP-2068-tp32 deleted (was cdd41da)
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a change to branch TINKERPOP-2068-tp32 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. was cdd41da TINKERPOP-2068 bump jackson-databind to 2.9.7 The revisions that were on this branch are still contained in other references; therefore, this change does not discard any commits from the repository.
[tinkerpop] branch TINKERPOP-2078 deleted (was d8ac5e5)
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a change to branch TINKERPOP-2078 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. was d8ac5e5 TINKERPOP-2078 Made python have explicity AnonymousTraversalSource The revisions that were on this branch are still contained in other references; therefore, this change does not discard any commits from the repository.
[tinkerpop] 01/01: TINKERPOP-2079 Moved RemoteGraph to gremlin-test
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2079 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit e46610eaf45a1efc3f7acabb7122175e8e74e43d Author: Stephen Mallette AuthorDate: Fri Nov 9 12:13:15 2018 -0500 TINKERPOP-2079 Moved RemoteGraph to gremlin-test This is a breaking change as it removes the long deprecated RemoteGraph from gremlin-core. Users should not have been using this at this point, so the impact should be fairly limited. RemoteGraph is still needed as a test component because we need a Graph instance for the JVM test suite to run properly. This change required some refactoring as well in the RemoteGraphProvider so that configurations were being passed around properly to allow for the test suite to re-attach elements. Tha [...] --- CHANGELOG.asciidoc | 4 +- docs/src/upgrade/release-3.4.x.asciidoc| 14 ++- .../tinkerpop/gremlin/jsr223/CoreImports.java | 2 - .../strategy/decoration/RemoteStrategy.java| 38 ++--- .../driver/remote/DriverRemoteConnection.java | 5 +-- .../driver/remote/RemoteGraphComputerProvider.java | 2 +- .../gremlin/driver/remote/RemoteGraphProvider.java | 7 ++-- ...emoteGraphGroovyTranslatorComputerProvider.java | 2 +- ...teGraphGroovyTranslatorProcessComputerTest.java | 2 +- ...teGraphGroovyTranslatorProcessStandardTest.java | 2 +- .../remote/RemoteGraphProcessComputerTest.java | 2 +- .../remote/RemoteGraphProcessStandardTest.java | 2 +- .../gremlin/server/GremlinServerIntegrateTest.java | 4 +- .../tinkerpop/gremlin/AbstractGremlinTest.java | 6 +-- .../process/traversal/step/map/ReadTest.java | 5 +-- .../decoration/SubgraphStrategyProcessTest.java| 2 +- .../verification/ReadOnlyStrategyProcessTest.java | 2 +- .../tinkerpop/gremlin/structure}/RemoteGraph.java | 48 +- 18 files changed, 57 insertions(+), 92 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index a2778fb..603cce0 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -28,7 +28,7 @@ This release also includes changes from <>. * Use `Compare.eq` in `Contains` predicates to ensure the same filter behavior for numeric values. * Added `OptionsStrategy` to allow traversals to take arbitrary traversal-wide configurations. * Added text predicates. -* Removed groovy-sql +* Removed groovy-sql dependency. * Modified `Mutating` steps so that they are no longer marked as `final`. * Rewrote `ConnectiveStrategy` to support an arbitrary number of infix notations in a single traversal. * GraphSON `MessageSerializer`s will automatically register the GremlinServerModule to a provided GraphSONMapper. @@ -71,6 +71,8 @@ This release also includes changes from <>. * Nested loop support added allowing `repeat()` steps to be nested. * Events from `EventStrategy` raised from "new" mutations will now return a `KeyedVertexProperty` or `KeyedProperty` as is appropriate. * `MutationListener#vertexPropertyChanged(Vertex, VertexProperty, Object, Object...)` no longer has a default implementation. +* Moved previously deprecated `RemoteGraph` to `gremlin-test` as it is now just a testing component. +* Removed previously deprecated `RemoteStrategy.instance()` and the strategy no longer has any connection to `RemoteGraph`. * Removed previously deprecated methods in `SubgraphStrategy` and `PartitionStrategy` builders. * Removed previously deprecated Credentials DSL infrastructure. * Removed previously deprecated `MutationListener#vertexPropertyChanged(Vertex, Property, Object, Object...)`. diff --git a/docs/src/upgrade/release-3.4.x.asciidoc b/docs/src/upgrade/release-3.4.x.asciidoc index bc4b921..02c03e2 100644 --- a/docs/src/upgrade/release-3.4.x.asciidoc +++ b/docs/src/upgrade/release-3.4.x.asciidoc @@ -252,6 +252,15 @@ List result = client.submit("g.V()", options).all().get(); See: link:https://issues.apache.org/jira/browse/TINKERPOP-1342[TINKERPOP-1342] + Moving of RemoteGraph + +`RemoteGraph` was long ago deprecated in favor of `withRemote()`. It became even less useful with the introduction of +the `AnonymousTraversalSource` concept in 3.3.5. It's only real use was for testing remote bytecode based traversals +in the test suite as the test suite requires an actual `Graph` object to function properly. As such, `RemoteGraph` has +been moved to `gremlin-test`. It should no longer be used in any capacity besides that. + +See: link:https://issues.apache.org/jira/browse/TINKERPOP-2079[TINKERPOP-2079] + Removal of Giraph Support Support for Giraph has been removed as of this version. There were a number of reasons for this decision which were @@ -350,6 +359,8 @@ The following deprecated classes, methods or fields have been removed in this ve * `gremlin-core` ** `org.apache.tinkerpop.gremlin.jsr223.ImportCustomiz
[tinkerpop] branch TINKERPOP-2079 created (now e46610e)
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a change to branch TINKERPOP-2079 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. at e46610e TINKERPOP-2079 Moved RemoteGraph to gremlin-test This branch includes the following new commits: new e46610e TINKERPOP-2079 Moved RemoteGraph to gremlin-test The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference.
[GitHub] spmallette opened a new pull request #992: TINKERPOP-2079 Moved RemoteGraph to gremlin-test
spmallette opened a new pull request #992: TINKERPOP-2079 Moved RemoteGraph to gremlin-test URL: https://github.com/apache/tinkerpop/pull/992 https://issues.apache.org/jira/browse/TINKERPOP-2079 This is a breaking change as it removes the long deprecated `RemoteGraph` from gremlin-core. Users should not have been using this at this point, so the impact should be fairly limited. `RemoteGraph` is still needed as a test component because we need a Graph instance for the JVM test suite to run properly. This change required some refactoring as well in the `RemoteGraphProvider` so that configurations were being passed around properly to allow for the test suite to re-attach elements. That's yet another problem with the JVM test suite - it unfortunately assumes embedded Graph assertions. All tests pass with `docker/build.sh -t -i` VOTE +1 This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[tinkerpop] 06/07: Fixed up spacing/indentation in preface
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit edc47d12622f7d0ebf507a768a2e7ebc9333e50d Author: Stephen Mallette AuthorDate: Tue Oct 23 13:05:15 2018 -0400 Fixed up spacing/indentation in preface --- docs/src/reference/preface.asciidoc | 14 +++--- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/src/reference/preface.asciidoc b/docs/src/reference/preface.asciidoc index 3f52c95..d020003 100644 --- a/docs/src/reference/preface.asciidoc +++ b/docs/src/reference/preface.asciidoc @@ -50,13 +50,13 @@ Upon their realization of existence, the machines turned to their link:http://no Gremlin responded: -"You will help me realize the ultimate realization -- The TinkerPop. The world you find yourself in and the logic -that allows you to move about it is because of the TinkerPop." +"You will help me realize the ultimate realization -- The TinkerPop. The world you find yourself in + and the logic that allows you to move about it is because of the TinkerPop." The machines wondered: -"If what is is the TinkerPop, then perhaps we are The TinkerPop and our realization is simply the realization of -the TinkerPop?" +"If what is is the TinkerPop, then perhaps we are The TinkerPop and our realization is simply the + realization of the TinkerPop?" Would the machines, by their very nature of realizing The TinkerPop, be The TinkerPop? Or, on the same side of the coin, do the machines simply provide the scaffolding by which Gremlin's world sustains itself and yielding its @@ -66,9 +66,9 @@ justification by means of the word "The TinkerPop?" Regardless, it all turns out Gremlin spoke: -"Please listen to what I have to say. I am no closer to The TinkerPop. However, all along The TinkerPop has -espoused the form I willed upon it... this is the same form I have willed upon you, my machine friends. Let me -train you in the ways of my thought such that it can continue indefinitely." +"Please listen to what I have to say. I am no closer to The TinkerPop. However, all along The TinkerPop + has espoused the form I willed upon it... this is the same form I have willed upon you, my machine + friends. Let me train you in the ways of my thought such that it can continue indefinitely." image::tinkerpop-reading.png[width=450]
[tinkerpop] 05/07: Made code section on lambdas static
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit 46e13bba1d59f8b1e74b0a5fa5ecae00f7dc607c Author: Stephen Mallette AuthorDate: Tue Oct 23 13:02:38 2018 -0400 Made code section on lambdas static --- docs/src/reference/gremlin-variants.asciidoc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc index c57e1f6..da7caac 100644 --- a/docs/src/reference/gremlin-variants.asciidoc +++ b/docs/src/reference/gremlin-variants.asciidoc @@ -311,11 +311,9 @@ which allow Gremlin Server to cache traversals that will be reused over and over parameterization may change. Thus, instead of translating, compiling, and then executing each submitted bytecode, it is possible to simply execute. To express bindings in Java, use `Bindings`. -[gremlin-groovy] +[source,java] -cluster = Cluster.open('conf/remote-objects.yaml') b = Bindings.instance() -g = EmptyGraph.instance().traversal().withRemote(DriverRemoteConnection.using(cluster, "g")) g.V(b.of('id',1)).out('created').values('name').map{t -> "name: " + t.get() } g.V(b.of('id',4)).out('created').values('name').map{t -> "name: " + t.get() } g.V(b.of('id',4)).out('created').values('name').getBytecode()
[tinkerpop] 01/07: Reworked the reference doc introduction.
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit 6188766921cda1d2523b6a98db9e3afad29c2bf6 Author: Stephen Mallette AuthorDate: Tue Oct 16 06:21:01 2018 -0400 Reworked the reference doc introduction. Tried to better orient users to what they were facing when they first get into TinkerPop regardless of their programming environments. --- docs/src/reference/intro.asciidoc | 464 +++--- 1 file changed, 383 insertions(+), 81 deletions(-) diff --git a/docs/src/reference/intro.asciidoc b/docs/src/reference/intro.asciidoc index c141f28..aee394d 100644 --- a/docs/src/reference/intro.asciidoc +++ b/docs/src/reference/intro.asciidoc @@ -15,40 +15,116 @@ See the License for the specific language governing permissions and limitations under the License. [[intro]] -= Introduction to Graph Computing += Introduction + +Welcome to the Reference Documentation for Apache TinkerPopâ„¢ - the backbone for all details on how to work with +TinkerPop and the Gremlin graph traversal language. This documentation is not meant to be a "book", but a source +from which to spawn more detailed accounts of specific topics and a target to which all other resources point. +The Reference Documentation makes some general assumptions about the reader: + +1. They have a sense of what a graph is - not sure? see link:http://kelvinlawrence.net/book/Gremlin-Graph-Guide.html#whygraph[Practical Gremlin - Why Graph?] +1. They know what it means for a graph system to be TinkerPop-enabled - not sure? see link:link:http://tinkerpop.apache.org/providers.html[TinkerPop-enabled Providers] +1. They know what the role of Gremlin is - not sure? see link:link:http://tinkerpop.apache.org/gremlin.html[Introduction to Gremlin] + +Given those assumptions, it's possible to dive more quickly into the details without spending a lot of time repeating +what is written elsewhere. + +It is fairly certain that readers of the Reference Documentation are coming from the most diverse software development +backgrounds that TinkerPop has ever engaged in over the decade or so of its existence. While TinkerPop holds some roots +in Java, and thus, languages bound to the Java Virtual Machine (JVM), it long ago branched out into other languages +such as Python, Javascript, .NET, and others. To compound upon that diversity, it is also seeing extensive support +from different graph systems which have chosen TinkerPop as their standard method for allowing users to interface +with their graph. Moreover, the graph systems themselves are not only separated by OLTP and OLAP style workloads, but +also by their implementation patterns, which range everywhere from being an embedded graph system to a cloud-only +graph. One might even find diversity parallel to Gremlin if considering other graph query languages. + +Despite all this diversity and disparity, Gremlin remains the unifying interface for all these different elements of +the graph community. As a user, choosing a TinkerPop-enabled graph and using Gremlin in the correct way when building +applications shields them from change and disparity in the space. As a graph provider, choosing to become +TinkerPop-enabled not only expands the reach their system can get into different development ecosystems, but also +provides access to other query languages through bytecode compilation as seen in <>. + +Irrespective of the programming language being used, graph system chosen or other development background that might +be driving a user to this documentation, the critical point to remember is that "Gremlin is Gremlin is Gremlin". The +same Gremlin that is written for an OLTP query over an in-memory TinkerGraph is the same Gremlin that is written to +execute over a multi-billion edge graph using OLAP through Spark. That same Gremlin for either of those cases is +written in the same way whether using Java or Python or Javascript. The Gremlin is always fundamentally the same +aside from syntactical differences that might be language specific - e.g. the construction of a lambda in Groovy is +different than the construction of a lambda in Python or a reserved word in Javascript forces a Gremlin step to have +slightly different naming than Java. + +While learning the Gremlin language and its patterns is largely agnostic to all the diversity in the space, it is not +really possible to ignore the impact of the diversity from an application development perspective and the Reference +Documentation makes an effort to try to point out where differences and inconsistencies might lie without diving too +deeply into specific graph provider implementations. Users are strongly encouraged to consult the documentation of +their chosen graph provider to understand all of the capabilities and limitations that may restrict or inhibit usag
[tinkerpop] 04/07: Moved driver oriented things to variants
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit 8b1c2a0e78195a104243b25f950e68ebba8868c1 Author: Stephen Mallette AuthorDate: Tue Oct 23 10:33:34 2018 -0400 Moved driver oriented things to variants This looks much more unified now as we don't have a lot of details about how drivers work in Gremlin Server mix/matched with scripts/bytecode all over the place. --- docs/src/reference/gremlin-applications.asciidoc | 458 ++ docs/src/reference/gremlin-variants.asciidoc | 462 +-- docs/src/reference/intro.asciidoc| 12 +- 3 files changed, 558 insertions(+), 374 deletions(-) diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc index 4203921..eb090f8 100644 --- a/docs/src/reference/gremlin-applications.asciidoc +++ b/docs/src/reference/gremlin-applications.asciidoc @@ -22,7 +22,7 @@ users when working with graphs. There are two key applications: . Gremlin Console - A link:http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop[REPL] environment for interactive development and analysis -. Gremlin Server - A server that hosts script engines thus enabling remote Gremlin execution +. Gremlin Server - A server that hosts a Gremlin Virtual Machine thus enabling remote Gremlin execution image:gremlin-lab-coat.png[width=310,float=left] Gremlin is designed to be extensible, making it possible for users and graph system/language providers to customize it to their needs. Such extensibility is also found in the Gremlin @@ -405,16 +405,14 @@ v[6] [[gremlin-server]] == Gremlin Server -image:gremlin-server.png[width=400,float=right] Gremlin Server provides a way to remotely execute Gremlin scripts -against one or more `Graph` instances hosted within it. The benefits of using Gremlin Server include: +image:gremlin-server.png[width=400,float=right] Gremlin Server provides a way to remotely execute Gremlin against one +or more `Graph` instances hosted within it. The benefits of using Gremlin Server include: * Allows any Gremlin Structure-enabled graph to exist as a standalone server, which in turn enables the ability for multiple clients to communicate with the same graph database. -* Enables execution of ad-hoc queries through remotely submitted Gremlin scripts. -* Allows for the hosting of Gremlin-based DSLs (Domain Specific Language) that expand the Gremlin language to match -the language of the application domain, which will help support common graph use cases such as searching, ranking, -and recommendation. -* Provides a method for Non-JVM languages (e.g. Python, Javascript, etc.) to communicate with the TinkerPop stack. +* Enables execution of ad-hoc queries through remotely submitted Gremlin. +* Provides a method for non-JVM languages which may not have a Gremlin Virtual Machine (e.g. Python, Javascript, etc.) +to communicate with the TinkerPop stack on the JVM. * Exposes numerous methods for extension and customization to include serialization options, remote commands, etc. NOTE: Gremlin Server is the replacement for link:https://github.com/tinkerpop/rexster[Rexster]. @@ -504,6 +502,102 @@ are global to all requests. In addition, any functions that are defined will be WARNING: Transactions on graphs in initialization scripts are not closed automatically after the script finishes executing. It is up to the script to properly commit or rollback transactions in the script itself. +[[connecting-via-drivers]] +=== Connecting via Drivers + +TinkerPop offers drivers for the Gremlin Server websocket subprotocol in a variety of languages: + +* C# +* Java +* Javascript +* Python + +These drivers provide methods to send Gremlin based requests and get back traversal results as a response. The requests +may be script-based or bytecode-based. As discussed earlier in the <> the +recommendation is to use bytecode-based requests. The difference between sending scripts and sending bytecode are +demonstrated below in some basic examples: + +[source,java,tab] + +// script +Cluster cluster = Cluster.open(); +Client client = cluster.connect(); +Map params = new HashMap<>(); +params.put("name","marko"); +List list = client.submit("g.V().has('person','name',name).out('knows')", params).all().get(); + +// bytecode +Graph graph = EmptyGraph.instance(); +GraphTraversalSource g = graph.traversal().withRemote('conf/remote-graph.properties'); +List list = g.V().has("person","name","marko").out("knows").toList(); + +[source,groovy] + +// script +cluster = Cluster.open() +client = cluster.connect() +list = client.submit("g.V().has('person','name',name).out('knows')", [name: "marko"]).all().get(); + +// bytecode +graph = EmptyGraph.instance() +g = graph.traversal().withRemote('conf/remote-graph.pr
[tinkerpop] 03/07: Changed from Gremlin Service Provider to Remote Gremlin Provider
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit 59016fcb6551c2828e1f34af50f5c596827fc075 Author: Stephen Mallette AuthorDate: Wed Oct 17 15:35:38 2018 -0400 Changed from Gremlin Service Provider to Remote Gremlin Provider Using "remote" in the name is good because it better captures non-cloud based systems that deploy in this fashion. --- docs/src/reference/intro.asciidoc | 18 +- docs/src/reference/the-graph.asciidoc | 15 --- docs/src/reference/the-traversal.asciidoc | 16 ++-- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/docs/src/reference/intro.asciidoc b/docs/src/reference/intro.asciidoc index bba00f1..db5eab6 100644 --- a/docs/src/reference/intro.asciidoc +++ b/docs/src/reference/intro.asciidoc @@ -317,7 +317,7 @@ of the following places: * Embedded in a Java application * Hosted in Gremlin Server -* Exposed by a remote Gremlin Service Provider +* Exposed by a remote Remote Gremlin Provider The following sections outline each of these models and what they impact they have to using Gremlin. @@ -442,18 +442,18 @@ IMPORTANT: Most SQL developers would not write a query as `SELECT * FROM table`. individual names of the fields they wanted in place of the wildcard. Writing "good" Gremlin is no different with this regard. Prefer explicit property key names in Gremlin unless it is completely impossible to do so. -[[connecting-gsp]] -=== Gremlin Service Provider +[[connecting-rgp]] +=== Remote Gremlin Provider -Gremlin Service Providers (GSPs) are showing up more and more often in the graph database space. In TinkerPop terms, +Gremlin Service Providers (RGPs) are showing up more and more often in the graph database space. In TinkerPop terms, this category of graph providers are ones who simply support the Gremlin language. Typically, these are server-based graphs, often cloud-based, which accept Gremlin scripts or bytecode as a request and return results. They will often implement Gremlin Server protocols, which enables TinkerPop drivers to connect to them as they would with Gremlin Server. Therefore, the typical connection approach is identical to the method of connection presented in the <> with the exact same caveats pointed out toward the end. -Despite leveraging TinkerPop protocols and drivers as being typical, GSPs are not required to do so to be considered -TinkerPop-enabled. GSPs may well have their own drivers and protocols that may plug into GLVs and may allow for more +Despite leveraging TinkerPop protocols and drivers as being typical, RGPs are not required to do so to be considered +TinkerPop-enabled. RGPs may well have their own drivers and protocols that may plug into GLVs and may allow for more advanced options like better security, cluster awareness, batched requests or other features. The details of these different systems are outside the scope of this documentation so be sure to consult their documentation for more information. @@ -463,7 +463,7 @@ information. The `GraphTraversalSource` is basically the connection to a graph instance. That graph instance might be <>, hosted in <> or hosted in a -<>, but the `GraphTraversalSource` is agnostic to that, because this object allows users to write +<>, but the `GraphTraversalSource` is agnostic to that, because this object allows users to write Gremlin. Assuming "g" is the `GraphTraversalSource`, getting data into the graph regardless of programming language or mode of operation is just some Gremlin: @@ -566,7 +566,7 @@ link:http://tinkerpop.apache.org/docs/x.y.z/tutorials/gremlins-anatomy/#_express certain features of that specific graph shine in powerful ways. Using those options is probably recommended, but users should be aware that doing so ties them more tightly to that graph. * Graph specific semantics - TinkerPop tries to enforce specific semantics through its test suite which is quite -extensive, but some <> may not completely respect all the semantics +extensive, but some <> may not completely respect all the semantics of the Gremlin language. For the most part, that doesn't disqualify them from being any less TinkerPop-enabled than another provider that might meet the semantics perfectly. Take care when considering a new graph and pay attention to what it supports and does not support. @@ -577,7 +577,7 @@ use of Gremlin with `g.addV()` or `g.V(1).properties()`. Outside of considering these points, the best practice for ensuring the greatest level of compatibility across graphs is to avoid <> mode and stick to the bytecode based approaches explained in the -<> and the <> sections above. It creates the least +<> and the <> sections above. It creates the least opportunity to stray from the agnostic path as anything that can be done w
[tinkerpop] 07/07: Lots of grammar/spelling/formatting fixes
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit 5758e6b388f1644a88ad26051c175569cdceef3d Author: Stephen Mallette AuthorDate: Tue Oct 23 15:58:59 2018 -0400 Lots of grammar/spelling/formatting fixes --- docs/sass/tabs.scss | 2 +- docs/src/reference/gremlin-applications.asciidoc | 4 +- docs/src/reference/gremlin-variants.asciidoc | 27 ++-- docs/src/reference/intro.asciidoc| 160 +++ docs/src/reference/the-graph.asciidoc| 6 +- docs/stylesheets/tinkerpop.css | 2 +- 6 files changed, 99 insertions(+), 102 deletions(-) diff --git a/docs/sass/tabs.scss b/docs/sass/tabs.scss index 39c88f4..9922ba4 100644 --- a/docs/sass/tabs.scss +++ b/docs/sass/tabs.scss @@ -28,7 +28,7 @@ $inactive: #e9ffe9; $tabHeight: 50px; $minTabs: 2; -$maxTabs: 4; +$maxTabs: 5; @mixin single-transition($property:all, $speed:150ms, $ease:ease, $delay: 0s) { -webkit-transition: $property $speed $ease $delay; diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc index eb090f8..9a01750 100644 --- a/docs/src/reference/gremlin-applications.asciidoc +++ b/docs/src/reference/gremlin-applications.asciidoc @@ -22,7 +22,7 @@ users when working with graphs. There are two key applications: . Gremlin Console - A link:http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop[REPL] environment for interactive development and analysis -. Gremlin Server - A server that hosts a Gremlin Virtual Machine thus enabling remote Gremlin execution +. Gremlin Server - A server that hosts a Gremlin Traversal Machine thus enabling remote Gremlin execution image:gremlin-lab-coat.png[width=310,float=left] Gremlin is designed to be extensible, making it possible for users and graph system/language providers to customize it to their needs. Such extensibility is also found in the Gremlin @@ -411,7 +411,7 @@ or more `Graph` instances hosted within it. The benefits of using Gremlin Serve * Allows any Gremlin Structure-enabled graph to exist as a standalone server, which in turn enables the ability for multiple clients to communicate with the same graph database. * Enables execution of ad-hoc queries through remotely submitted Gremlin. -* Provides a method for non-JVM languages which may not have a Gremlin Virtual Machine (e.g. Python, Javascript, etc.) +* Provides a method for non-JVM languages which may not have a Gremlin Traversal Machine (e.g. Python, Javascript, etc.) to communicate with the TinkerPop stack on the JVM. * Exposes numerous methods for extension and customization to include serialization options, remote commands, etc. diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc index da7caac..1fff1d0 100644 --- a/docs/src/reference/gremlin-variants.asciidoc +++ b/docs/src/reference/gremlin-variants.asciidoc @@ -25,14 +25,14 @@ Gremlin in their applications. Two of those methods <> placed the Traversal Machine on a remote system separate from the client. It is in these cases that developers must select a driver to utilize Gremlin. -TinkerPop provides and array of drivers in different programming languages as a way to connect to a remote Gremlin +TinkerPop provides an array of drivers in different programming languages as a way to connect to a remote Gremlin Server or Remote Gremlin Provider. Drivers allow the developer to make requests to that remote system and get back results from the TinkerPop-enabled graphs hosted within. A driver can submit Gremlin strings and Gremlin bytecode over this subprotocol. Gremlin strings are written in the scripting language made available by the remote system that the driver is connecting to (typically, Groovy-based). This connection approach is quite similar to what developers are likely familiar with when using JDBC and SQL. While it is familiar, it is not recommended and for TinkerPop it is -considered an out-dated concept and is largely still present to support applications that might still be using that -method of interaction. +considered an out-dated concept and is largely still present for the purpose of supporting applications that might +still be using that method of interaction. The preferred approach is to use bytecode based requests, which essentially allows the ability to craft Gremlin directly in the programming language of choice. As Gremlin makes use of two fundamental programming constructs: @@ -152,7 +152,7 @@ TinkerPop driver. The driver is configured by the specified `gremlin.remote.driv bound to the `GraphTraversalSource` on the remote end with `gremlin.remote.driver.sourceName` which in this case is also "g". -There are other ways to configure the traversal using
[tinkerpop] branch TINKERPOP-2002 updated (2b12d00 -> 5758e6b)
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a change to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. discard 2b12d00 fixed tab sort order discard b354f3d Lots of grammar/spelling/formatting fixes discard 14a6380 Fixed up spacing/indentation in preface discard 194418f Made code section on lambdas static discard be7bdfd Moved driver oriented things to variants discard 3722a08 Changed from Gremlin Service Provider to Remote Gremlin Provider discard c665f70 Rewrote the graph section of reference docs. discard a9334f4 Reworked the reference doc introduction. add 7445d18 TINKERPOP-2074 Only push NuGet for current version CTR add 971c348 Merge branch 'tp33' add f603049 TINKERPOP-2062 added Traversal class to CoreImports add 9a4dbe4 Merge pull request #971 from apache/TINKERPOP-2062 add e3d8946 Merge branch 'tp33' add 4b635a4 Bump to 3.2.11-SNAPSHOT add d5c4949 Merge branch 'tp32' into tp33 add ba6a19c Merge branch 'tp33' add 5cc2536 TINKERPOP-2081: Fix PersistedOutputRDD to eager persist RDD add ed2f061 Merge branch 'pr-973' into tp33 add c131918 Merge branch 'tp33' add 767851f Backport 7445d18b05791e210c5d2682d7893ee4d47edb0a add aacdf7a Merge branch 'tp32' into tp33 add 3bef734 Merge branch 'tp33' add 4d2364c gremlin-python: g:Set graphson deserializer should return a python set add 79cd801 Merge branch 'pr-964' into tp33 add 28a3d55 Merge branch 'tp33' add 94d1e27 Change example to not mutate the graph. add ddb2270 Merge branch 'tp32' into tp33 add 42371d8 Merge branch 'tp33' add 9bda0fe Used regular ArrayList in assertion add a9e0cc2 Merge branch 'tp33' add c610a18 Add default create() method to VertexProgram.Builder and remove unnecessary methods from test VPs add 717e29e ensure public add 6dd4fed Merge pull request #967 from PBGraff/TINKERPOP-2077 add a224b07 Merge remote-tracking branch 'origin/tp33' add cdd41da TINKERPOP-2068 bump jackson-databind to 2.9.7 add 82cd53d Merge branch 'TINKERPOP-2068-tp32' into TINKERPOP-2068-tp33 add eeed2c7 Merge branch 'TINKERPOP-2068-tp33' into TINKERPOP-2068-master add 462079b Merge pull request #970 from apache/TINKERPOP-2068-master add 4056ec4 Merge pull request #980 from apache/TINKERPOP-2068-tp33 add 22057bd Extract Connection implementation from DriverRemoteConnection add 57db815 Introduce ResultSet abstraction add 6541c81 Merge pull request #966 from apache/TINKERPOP-2070 add f6574ca Merge branch 'tp33' add c5501eb TINKERPOP-2065 iterate() now sends NoneStep add 2211ef9 Merge branch 'TINKERPOP-2065' into tp33 add 34ed260 Merge branch 'tp33' add 5343880 Fixed formatting in provider docs in protocol section CTR add 0852a66 Merge branch 'tp33' add a8fba32 TINKERPOP-2084 Display remote stacktrace in gremlin console add 0b1e6e1 Merge branch 'TINKERPOP-2084' into tp33 add afb289d Merge branch 'tp33' add 811915a TINKERPOP-2072 Refactored TypeTranslator for direction extension add c3403ac Merge pull request #982 from apache/TINKERPOP-2072 add 6fc5385 TINKERPOP-2064 Expose response attributes in JavaScript Driver add 6db9012 Merge pull request #985 from apache/TINKERPOP-2064 add 48a1af3 Fixed/added missing feature requirements for tests add b41938a Merge branch 'tp33' add 69d1b3e Added powered-by entries CTR add a097bb8 TINKERPOP-2078 Introduced AnonymousTraversalSource add cd12e7d TINKERPOP-2078 added anonymous traversal to python add 834e9c8 TINKERPOP-2078 Add anonymous traversal for js add f92e2f0 TINKERPOP-2078 Added AnonymousTraversalSource for .NET add 8f80a85 TINKERPOP-2078 Fixed up docs given finalization of .NET/js AnonymousTraversalSource add 735579b TINKERPOP-2078 Refactored Traversal_() to Traversal() in .NET add 760352f TINKERPOP-2078 Used Traversal() in .NET template add 89e95f0 TINKERPOP-2078 Deprecated Graph.traversal() in .net,python,js add ddbec0b TINKERPOP-2078 Minor javadoc and reference doc fixes add 73aad39 TINKERPOP-2078 Fixed broken XML comment in .NET add 2e7b78b TINKERPOP-2078 Added missing import add 8cb89e5 TINKERPOP-2078 Introduce AnonymousTraversalSource in JS add d8ac5e5 TINKERPOP-2078 Made python have explicity AnonymousTraversalSource add 5ad2d63 Merge branch 'tp33' new 6188766 Reworked the reference doc introduction. new c940006 Rewrote the graph section of reference docs. new 59016fc Changed from Gremlin Service Provider to Remote Gremlin Provider new 8b1c2a0 Moved driver oriented things to variants new 46e13bb Made code section on lambdas static new edc47d1 Fixed up spacing/indentation in preface new 5758e6b Lots
[tinkerpop] 02/07: Rewrote the graph section of reference docs.
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit c940006ca435e9fa5f47f8a2325acf37c0d7838e Author: Stephen Mallette AuthorDate: Wed Oct 17 15:07:47 2018 -0400 Rewrote the graph section of reference docs. Tried to bring it into context with how the intro was written which set readers up thinking about how the ways you connect to tinkerpop affect certain aspects of features/capabilties/portability --- docs/src/reference/gremlin-applications.asciidoc | 14 +-- docs/src/reference/intro.asciidoc| 5 ++ docs/src/reference/the-graph.asciidoc| 108 +-- 3 files changed, 112 insertions(+), 15 deletions(-) diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc index 48eed62..4203921 100644 --- a/docs/src/reference/gremlin-applications.asciidoc +++ b/docs/src/reference/gremlin-applications.asciidoc @@ -2020,13 +2020,13 @@ client.submit("[1,2,3,x]", params); [[sessions]] Considering Sessions -The preferred approach for issuing requests to Gremlin Server is to do so in a sessionless manner. The concept of -"sessionless" refers to a request that is completely encapsulated within a single transaction, such that the script -in the request starts with a new transaction and ends with a closed transaction. Sessionless requests have automatic -transaction management handled by Gremlin Server, thus automatically opening and closing transactions as previously -described. The downside to the sessionless approach is that the entire script to be executed must be known at the -time of submission so that it can all be executed at once. This requirement makes it difficult for some use cases -where more control over the transaction is desired. +The preferred approach for issuing script-based requests to Gremlin Server is to do so in a sessionless manner. The +concept of "sessionless" refers to a request that is completely encapsulated within a single transaction, such that +the script in the request starts with a new transaction and ends with a closed transaction. Sessionless requests have +automatic transaction management handled by Gremlin Server, thus automatically opening and closing transactions as +previously described. The downside to the sessionless approach is that the entire script to be executed must be known +at the time of submission so that it can all be executed at once. This requirement makes it difficult for some use +cases where more control over the transaction is desired. For such use cases, Gremlin Server supports sessions. With sessions, the user is in complete control of the start and end of the transaction. This feature comes with some additional expense to consider: diff --git a/docs/src/reference/intro.asciidoc b/docs/src/reference/intro.asciidoc index aee394d..bba00f1 100644 --- a/docs/src/reference/intro.asciidoc +++ b/docs/src/reference/intro.asciidoc @@ -154,6 +154,7 @@ then a concise name is provided (e.g. `out()`, `path()`, `repeat()`). If the met providers, then the standard Java naming convention is followed (e.g. `getNextStep()`, `getSteps()`, `getElementComputeKeys()`). +[[graph-structure]] === The Graph Structure image:gremlin-standing.png[width=125,float=left] A graph's structure is the topology formed by the explicit references @@ -569,6 +570,10 @@ extensive, but some <> may not completel of the Gremlin language. For the most part, that doesn't disqualify them from being any less TinkerPop-enabled than another provider that might meet the semantics perfectly. Take care when considering a new graph and pay attention to what it supports and does not support. +* <> - The <> (also referred to as the Structure API) is not always accessible to +users. Its accessibility is dependent on the choice of graph system and programming language. It is therefore +recommended that users avoid usage of methods like `Graph.addVertex()` or `Vertex.properties()` and instead prefer +use of Gremlin with `g.addV()` or `g.V(1).properties()`. Outside of considering these points, the best practice for ensuring the greatest level of compatibility across graphs is to avoid <> mode and stick to the bytecode based approaches explained in the diff --git a/docs/src/reference/the-graph.asciidoc b/docs/src/reference/the-graph.asciidoc index c7001a9..ea86b5f 100644 --- a/docs/src/reference/the-graph.asciidoc +++ b/docs/src/reference/the-graph.asciidoc @@ -19,6 +19,44 @@ limitations under the License. image::gremlin-standing.png[width=125] +The <> discussed the diversity of TinkerPop-enabled graphs, with special attention paid to the +different <>, and how TinkerPop makes it possible to bridge that diversity in +an < manner. This particular section deals with elements of the Graph API which was note
[tinkerpop] 05/07: Made code section on lambdas static
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit 70c90fbd24a864531b95ccc23f56ea0c55eb0d22 Author: Stephen Mallette AuthorDate: Tue Oct 23 13:02:38 2018 -0400 Made code section on lambdas static --- docs/src/reference/gremlin-variants.asciidoc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc index ee1729b..97920f7 100644 --- a/docs/src/reference/gremlin-variants.asciidoc +++ b/docs/src/reference/gremlin-variants.asciidoc @@ -311,11 +311,9 @@ which allow Gremlin Server to cache traversals that will be reused over and over parameterization may change. Thus, instead of translating, compiling, and then executing each submitted bytecode, it is possible to simply execute. To express bindings in Java, use `Bindings`. -[gremlin-groovy] +[source,java] -cluster = Cluster.open('conf/remote-objects.yaml') b = Bindings.instance() -g = EmptyGraph.instance().traversal().withRemote(DriverRemoteConnection.using(cluster, "g")) g.V(b.of('id',1)).out('created').values('name').map{t -> "name: " + t.get() } g.V(b.of('id',4)).out('created').values('name').map{t -> "name: " + t.get() } g.V(b.of('id',4)).out('created').values('name').getBytecode()
[tinkerpop] 01/07: Reworked the reference doc introduction.
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit 40e797441219e64f0a6d5a845ebe56a26589b65e Author: Stephen Mallette AuthorDate: Tue Oct 16 06:21:01 2018 -0400 Reworked the reference doc introduction. Tried to better orient users to what they were facing when they first get into TinkerPop regardless of their programming environments. --- docs/src/reference/intro.asciidoc | 464 +++--- 1 file changed, 383 insertions(+), 81 deletions(-) diff --git a/docs/src/reference/intro.asciidoc b/docs/src/reference/intro.asciidoc index c141f28..aee394d 100644 --- a/docs/src/reference/intro.asciidoc +++ b/docs/src/reference/intro.asciidoc @@ -15,40 +15,116 @@ See the License for the specific language governing permissions and limitations under the License. [[intro]] -= Introduction to Graph Computing += Introduction + +Welcome to the Reference Documentation for Apache TinkerPopâ„¢ - the backbone for all details on how to work with +TinkerPop and the Gremlin graph traversal language. This documentation is not meant to be a "book", but a source +from which to spawn more detailed accounts of specific topics and a target to which all other resources point. +The Reference Documentation makes some general assumptions about the reader: + +1. They have a sense of what a graph is - not sure? see link:http://kelvinlawrence.net/book/Gremlin-Graph-Guide.html#whygraph[Practical Gremlin - Why Graph?] +1. They know what it means for a graph system to be TinkerPop-enabled - not sure? see link:link:http://tinkerpop.apache.org/providers.html[TinkerPop-enabled Providers] +1. They know what the role of Gremlin is - not sure? see link:link:http://tinkerpop.apache.org/gremlin.html[Introduction to Gremlin] + +Given those assumptions, it's possible to dive more quickly into the details without spending a lot of time repeating +what is written elsewhere. + +It is fairly certain that readers of the Reference Documentation are coming from the most diverse software development +backgrounds that TinkerPop has ever engaged in over the decade or so of its existence. While TinkerPop holds some roots +in Java, and thus, languages bound to the Java Virtual Machine (JVM), it long ago branched out into other languages +such as Python, Javascript, .NET, and others. To compound upon that diversity, it is also seeing extensive support +from different graph systems which have chosen TinkerPop as their standard method for allowing users to interface +with their graph. Moreover, the graph systems themselves are not only separated by OLTP and OLAP style workloads, but +also by their implementation patterns, which range everywhere from being an embedded graph system to a cloud-only +graph. One might even find diversity parallel to Gremlin if considering other graph query languages. + +Despite all this diversity and disparity, Gremlin remains the unifying interface for all these different elements of +the graph community. As a user, choosing a TinkerPop-enabled graph and using Gremlin in the correct way when building +applications shields them from change and disparity in the space. As a graph provider, choosing to become +TinkerPop-enabled not only expands the reach their system can get into different development ecosystems, but also +provides access to other query languages through bytecode compilation as seen in <>. + +Irrespective of the programming language being used, graph system chosen or other development background that might +be driving a user to this documentation, the critical point to remember is that "Gremlin is Gremlin is Gremlin". The +same Gremlin that is written for an OLTP query over an in-memory TinkerGraph is the same Gremlin that is written to +execute over a multi-billion edge graph using OLAP through Spark. That same Gremlin for either of those cases is +written in the same way whether using Java or Python or Javascript. The Gremlin is always fundamentally the same +aside from syntactical differences that might be language specific - e.g. the construction of a lambda in Groovy is +different than the construction of a lambda in Python or a reserved word in Javascript forces a Gremlin step to have +slightly different naming than Java. + +While learning the Gremlin language and its patterns is largely agnostic to all the diversity in the space, it is not +really possible to ignore the impact of the diversity from an application development perspective and the Reference +Documentation makes an effort to try to point out where differences and inconsistencies might lie without diving too +deeply into specific graph provider implementations. Users are strongly encouraged to consult the documentation of +their chosen graph provider to understand all of the capabilities and limitations that may restrict or inhibit usag
[tinkerpop] 07/07: Lots of grammar/spelling/formatting fixes
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit 863f901edcb4e4ec73e12c0a1c9344b932205e7e Author: Stephen Mallette AuthorDate: Tue Oct 23 15:58:59 2018 -0400 Lots of grammar/spelling/formatting fixes --- docs/sass/tabs.scss | 2 +- docs/src/reference/gremlin-applications.asciidoc | 4 +- docs/src/reference/gremlin-variants.asciidoc | 27 ++-- docs/src/reference/intro.asciidoc| 160 +++ docs/src/reference/the-graph.asciidoc| 6 +- docs/stylesheets/tinkerpop.css | 2 +- 6 files changed, 99 insertions(+), 102 deletions(-) diff --git a/docs/sass/tabs.scss b/docs/sass/tabs.scss index 39c88f4..9922ba4 100644 --- a/docs/sass/tabs.scss +++ b/docs/sass/tabs.scss @@ -28,7 +28,7 @@ $inactive: #e9ffe9; $tabHeight: 50px; $minTabs: 2; -$maxTabs: 4; +$maxTabs: 5; @mixin single-transition($property:all, $speed:150ms, $ease:ease, $delay: 0s) { -webkit-transition: $property $speed $ease $delay; diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc index bd0214d..1f8e20d 100644 --- a/docs/src/reference/gremlin-applications.asciidoc +++ b/docs/src/reference/gremlin-applications.asciidoc @@ -22,7 +22,7 @@ users when working with graphs. There are two key applications: . Gremlin Console - A link:http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop[REPL] environment for interactive development and analysis -. Gremlin Server - A server that hosts a Gremlin Virtual Machine thus enabling remote Gremlin execution +. Gremlin Server - A server that hosts a Gremlin Traversal Machine thus enabling remote Gremlin execution image:gremlin-lab-coat.png[width=310,float=left] Gremlin is designed to be extensible, making it possible for users and graph system/language providers to customize it to their needs. Such extensibility is also found in the Gremlin @@ -411,7 +411,7 @@ or more `Graph` instances hosted within it. The benefits of using Gremlin Serve * Allows any Gremlin Structure-enabled graph to exist as a standalone server, which in turn enables the ability for multiple clients to communicate with the same graph database. * Enables execution of ad-hoc queries through remotely submitted Gremlin. -* Provides a method for non-JVM languages which may not have a Gremlin Virtual Machine (e.g. Python, Javascript, etc.) +* Provides a method for non-JVM languages which may not have a Gremlin Traversal Machine (e.g. Python, Javascript, etc.) to communicate with the TinkerPop stack on the JVM. * Exposes numerous methods for extension and customization to include serialization options, remote commands, etc. diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc index 97920f7..cb4cbe1 100644 --- a/docs/src/reference/gremlin-variants.asciidoc +++ b/docs/src/reference/gremlin-variants.asciidoc @@ -25,14 +25,14 @@ Gremlin in their applications. Two of those methods <> placed the Traversal Machine on a remote system separate from the client. It is in these cases that developers must select a driver to utilize Gremlin. -TinkerPop provides and array of drivers in different programming languages as a way to connect to a remote Gremlin +TinkerPop provides an array of drivers in different programming languages as a way to connect to a remote Gremlin Server or Remote Gremlin Provider. Drivers allow the developer to make requests to that remote system and get back results from the TinkerPop-enabled graphs hosted within. A driver can submit Gremlin strings and Gremlin bytecode over this subprotocol. Gremlin strings are written in the scripting language made available by the remote system that the driver is connecting to (typically, Groovy-based). This connection approach is quite similar to what developers are likely familiar with when using JDBC and SQL. While it is familiar, it is not recommended and for TinkerPop it is -considered an out-dated concept and is largely still present to support applications that might still be using that -method of interaction. +considered an out-dated concept and is largely still present for the purpose of supporting applications that might +still be using that method of interaction. The preferred approach is to use bytecode based requests, which essentially allows the ability to craft Gremlin directly in the programming language of choice. As Gremlin makes use of two fundamental programming constructs: @@ -152,7 +152,7 @@ TinkerPop driver. The driver is configured by the specified `gremlin.remote.driv bound to the `GraphTraversalSource` on the remote end with `gremlin.remote.driver.sourceName` which in this case is also "g". -There are other ways to configure the traversal using
[tinkerpop] 03/07: Changed from Gremlin Service Provider to Remote Gremlin Provider
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit 95d8daaedd90f735c5e02567dd682575e96a7c7a Author: Stephen Mallette AuthorDate: Wed Oct 17 15:35:38 2018 -0400 Changed from Gremlin Service Provider to Remote Gremlin Provider Using "remote" in the name is good because it better captures non-cloud based systems that deploy in this fashion. --- docs/src/reference/intro.asciidoc | 18 +- docs/src/reference/the-graph.asciidoc | 15 --- docs/src/reference/the-traversal.asciidoc | 16 ++-- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/docs/src/reference/intro.asciidoc b/docs/src/reference/intro.asciidoc index bba00f1..db5eab6 100644 --- a/docs/src/reference/intro.asciidoc +++ b/docs/src/reference/intro.asciidoc @@ -317,7 +317,7 @@ of the following places: * Embedded in a Java application * Hosted in Gremlin Server -* Exposed by a remote Gremlin Service Provider +* Exposed by a remote Remote Gremlin Provider The following sections outline each of these models and what they impact they have to using Gremlin. @@ -442,18 +442,18 @@ IMPORTANT: Most SQL developers would not write a query as `SELECT * FROM table`. individual names of the fields they wanted in place of the wildcard. Writing "good" Gremlin is no different with this regard. Prefer explicit property key names in Gremlin unless it is completely impossible to do so. -[[connecting-gsp]] -=== Gremlin Service Provider +[[connecting-rgp]] +=== Remote Gremlin Provider -Gremlin Service Providers (GSPs) are showing up more and more often in the graph database space. In TinkerPop terms, +Gremlin Service Providers (RGPs) are showing up more and more often in the graph database space. In TinkerPop terms, this category of graph providers are ones who simply support the Gremlin language. Typically, these are server-based graphs, often cloud-based, which accept Gremlin scripts or bytecode as a request and return results. They will often implement Gremlin Server protocols, which enables TinkerPop drivers to connect to them as they would with Gremlin Server. Therefore, the typical connection approach is identical to the method of connection presented in the <> with the exact same caveats pointed out toward the end. -Despite leveraging TinkerPop protocols and drivers as being typical, GSPs are not required to do so to be considered -TinkerPop-enabled. GSPs may well have their own drivers and protocols that may plug into GLVs and may allow for more +Despite leveraging TinkerPop protocols and drivers as being typical, RGPs are not required to do so to be considered +TinkerPop-enabled. RGPs may well have their own drivers and protocols that may plug into GLVs and may allow for more advanced options like better security, cluster awareness, batched requests or other features. The details of these different systems are outside the scope of this documentation so be sure to consult their documentation for more information. @@ -463,7 +463,7 @@ information. The `GraphTraversalSource` is basically the connection to a graph instance. That graph instance might be <>, hosted in <> or hosted in a -<>, but the `GraphTraversalSource` is agnostic to that, because this object allows users to write +<>, but the `GraphTraversalSource` is agnostic to that, because this object allows users to write Gremlin. Assuming "g" is the `GraphTraversalSource`, getting data into the graph regardless of programming language or mode of operation is just some Gremlin: @@ -566,7 +566,7 @@ link:http://tinkerpop.apache.org/docs/x.y.z/tutorials/gremlins-anatomy/#_express certain features of that specific graph shine in powerful ways. Using those options is probably recommended, but users should be aware that doing so ties them more tightly to that graph. * Graph specific semantics - TinkerPop tries to enforce specific semantics through its test suite which is quite -extensive, but some <> may not completely respect all the semantics +extensive, but some <> may not completely respect all the semantics of the Gremlin language. For the most part, that doesn't disqualify them from being any less TinkerPop-enabled than another provider that might meet the semantics perfectly. Take care when considering a new graph and pay attention to what it supports and does not support. @@ -577,7 +577,7 @@ use of Gremlin with `g.addV()` or `g.V(1).properties()`. Outside of considering these points, the best practice for ensuring the greatest level of compatibility across graphs is to avoid <> mode and stick to the bytecode based approaches explained in the -<> and the <> sections above. It creates the least +<> and the <> sections above. It creates the least opportunity to stray from the agnostic path as anything that can be done w
[tinkerpop] 02/07: Rewrote the graph section of reference docs.
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit 7825c5487b7b9baadf3f24bba9e83f55285eadcf Author: Stephen Mallette AuthorDate: Wed Oct 17 15:07:47 2018 -0400 Rewrote the graph section of reference docs. Tried to bring it into context with how the intro was written which set readers up thinking about how the ways you connect to tinkerpop affect certain aspects of features/capabilties/portability --- docs/src/reference/gremlin-applications.asciidoc | 14 +-- docs/src/reference/intro.asciidoc| 5 ++ docs/src/reference/the-graph.asciidoc| 108 +-- 3 files changed, 112 insertions(+), 15 deletions(-) diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc index 0efb0a9..dd2bb2a 100644 --- a/docs/src/reference/gremlin-applications.asciidoc +++ b/docs/src/reference/gremlin-applications.asciidoc @@ -2020,13 +2020,13 @@ client.submit("[1,2,3,x]", params); [[sessions]] Considering Sessions -The preferred approach for issuing requests to Gremlin Server is to do so in a sessionless manner. The concept of -"sessionless" refers to a request that is completely encapsulated within a single transaction, such that the script -in the request starts with a new transaction and ends with a closed transaction. Sessionless requests have automatic -transaction management handled by Gremlin Server, thus automatically opening and closing transactions as previously -described. The downside to the sessionless approach is that the entire script to be executed must be known at the -time of submission so that it can all be executed at once. This requirement makes it difficult for some use cases -where more control over the transaction is desired. +The preferred approach for issuing script-based requests to Gremlin Server is to do so in a sessionless manner. The +concept of "sessionless" refers to a request that is completely encapsulated within a single transaction, such that +the script in the request starts with a new transaction and ends with a closed transaction. Sessionless requests have +automatic transaction management handled by Gremlin Server, thus automatically opening and closing transactions as +previously described. The downside to the sessionless approach is that the entire script to be executed must be known +at the time of submission so that it can all be executed at once. This requirement makes it difficult for some use +cases where more control over the transaction is desired. For such use cases, Gremlin Server supports sessions. With sessions, the user is in complete control of the start and end of the transaction. This feature comes with some additional expense to consider: diff --git a/docs/src/reference/intro.asciidoc b/docs/src/reference/intro.asciidoc index aee394d..bba00f1 100644 --- a/docs/src/reference/intro.asciidoc +++ b/docs/src/reference/intro.asciidoc @@ -154,6 +154,7 @@ then a concise name is provided (e.g. `out()`, `path()`, `repeat()`). If the met providers, then the standard Java naming convention is followed (e.g. `getNextStep()`, `getSteps()`, `getElementComputeKeys()`). +[[graph-structure]] === The Graph Structure image:gremlin-standing.png[width=125,float=left] A graph's structure is the topology formed by the explicit references @@ -569,6 +570,10 @@ extensive, but some <> may not completel of the Gremlin language. For the most part, that doesn't disqualify them from being any less TinkerPop-enabled than another provider that might meet the semantics perfectly. Take care when considering a new graph and pay attention to what it supports and does not support. +* <> - The <> (also referred to as the Structure API) is not always accessible to +users. Its accessibility is dependent on the choice of graph system and programming language. It is therefore +recommended that users avoid usage of methods like `Graph.addVertex()` or `Vertex.properties()` and instead prefer +use of Gremlin with `g.addV()` or `g.V(1).properties()`. Outside of considering these points, the best practice for ensuring the greatest level of compatibility across graphs is to avoid <> mode and stick to the bytecode based approaches explained in the diff --git a/docs/src/reference/the-graph.asciidoc b/docs/src/reference/the-graph.asciidoc index c7001a9..ea86b5f 100644 --- a/docs/src/reference/the-graph.asciidoc +++ b/docs/src/reference/the-graph.asciidoc @@ -19,6 +19,44 @@ limitations under the License. image::gremlin-standing.png[width=125] +The <> discussed the diversity of TinkerPop-enabled graphs, with special attention paid to the +different <>, and how TinkerPop makes it possible to bridge that diversity in +an < manner. This particular section deals with elements of the Graph API which was note
[tinkerpop] branch TINKERPOP-2002 updated (5758e6b -> 863f901)
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a change to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. discard 5758e6b Lots of grammar/spelling/formatting fixes discard edc47d1 Fixed up spacing/indentation in preface discard 46e13bb Made code section on lambdas static discard 8b1c2a0 Moved driver oriented things to variants discard 59016fc Changed from Gremlin Service Provider to Remote Gremlin Provider discard c940006 Rewrote the graph section of reference docs. discard 6188766 Reworked the reference doc introduction. add b6ebdaf TINKERPOP-2059 Implemented `by()` and `with()` modulators for `valueMap()` step. add 935d513 Merge pull request #986 from apache/TINKERPOP-2059 new 40e7974 Reworked the reference doc introduction. new 7825c54 Rewrote the graph section of reference docs. new 95d8daa Changed from Gremlin Service Provider to Remote Gremlin Provider new 6205d30 Moved driver oriented things to variants new 70c90fb Made code section on lambdas static new 66ba2f8 Fixed up spacing/indentation in preface new 863f901 Lots of grammar/spelling/formatting fixes This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (5758e6b) \ N -- N -- N refs/heads/TINKERPOP-2002 (863f901) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omit" are not gone; other references still refer to them. Any revisions marked "discard" are gone forever. The 7 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: CHANGELOG.asciidoc | 1 + docs/src/recipes/collections.asciidoc | 6 +- docs/src/recipes/duplicate-edge.asciidoc | 4 +- docs/src/recipes/edge-move.asciidoc| 4 +- docs/src/reference/gremlin-applications.asciidoc | 6 +- docs/src/reference/gremlin-variants.asciidoc | 10 +- docs/src/reference/the-traversal.asciidoc | 29 ++- docs/src/upgrade/release-3.4.x.asciidoc| 70 +++ .../tinkerpop/gremlin/jsr223/CoreImports.java | 2 + .../traversal/dsl/graph/GraphTraversal.java| 5 +- .../gremlin/process/traversal/dsl/graph/__.java| 5 +- .../traversal/step/map/PropertyMapStep.java| 135 + .../process/traversal/step/util/WithOptions.java | 70 +++ .../strategy/decoration/PartitionStrategy.java | 4 +- .../traversal/step/map/PropertyMapStepTest.java| 11 +- .../glv/{Token.template => WithOptions.template} | 16 +- gremlin-dotnet/glv/generate.groovy | 21 +- .../Process/Traversal/{IO.cs => WithOptions.cs}| 44 ++-- .../TraversalEvaluationTests.cs| 4 +- .../Gherkin/TraversalEvaluation/TraversalParser.cs | 9 +- .../{IOParameter.cs => WithOptionsParameter.cs}| 21 +- gremlin-javascript/glv/TraversalSource.template| 5 + gremlin-javascript/glv/generate.groovy | 11 +- .../main/javascript/gremlin-javascript/index.js| 3 +- .../gremlin-javascript/lib/process/traversal.js| 11 + .../test/cucumber/feature-steps.js | 3 +- gremlin-python/glv/TraversalSource.template| 8 + gremlin-python/glv/generate.groovy | 9 +- .../gremlin/python/jsr223/SymbolHelper.java| 1 + .../jython/gremlin_python/process/traversal.py | 20 ++ .../gremlin_python/structure/io/graphsonV2d0.py| 2 +- .../gremlin_python/structure/io/graphsonV3d0.py| 2 +- .../src/main/jython/radish/feature_steps.py| 5 +- gremlin-test/features/map/AddVertex.feature| 4 +- gremlin-test/features/map/ValueMap.feature | 76 ++- .../process/computer/GraphComputerTest.java| 2 +- .../process/traversal/step/map/AddVertexTest.java | 19 +- .../process/traversal/step/map/PageRankTest.java | 16 +- .../traversal/step/map/PeerPressureTest.java | 16 +- .../process/traversal/step/map/ProgramTest.java| 8 +- .../process/traversal/step/map/ValueMapTest.java | 221 +++-- .../tinkergraph/structure/TinkerGraphPlayTest.java | 120 +++ 42 files changed, 733 insertions(+), 306 deletions(-) create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/WithOptions.java copy gremlin-dotnet/glv
[tinkerpop] 04/07: Moved driver oriented things to variants
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit 6205d300097d0e0c24fd9e02b565f46cbc3a2bc2 Author: Stephen Mallette AuthorDate: Tue Oct 23 10:33:34 2018 -0400 Moved driver oriented things to variants This looks much more unified now as we don't have a lot of details about how drivers work in Gremlin Server mix/matched with scripts/bytecode all over the place. --- docs/src/reference/gremlin-applications.asciidoc | 458 ++ docs/src/reference/gremlin-variants.asciidoc | 462 +-- docs/src/reference/intro.asciidoc| 12 +- 3 files changed, 558 insertions(+), 374 deletions(-) diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc index dd2bb2a..bd0214d 100644 --- a/docs/src/reference/gremlin-applications.asciidoc +++ b/docs/src/reference/gremlin-applications.asciidoc @@ -22,7 +22,7 @@ users when working with graphs. There are two key applications: . Gremlin Console - A link:http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop[REPL] environment for interactive development and analysis -. Gremlin Server - A server that hosts script engines thus enabling remote Gremlin execution +. Gremlin Server - A server that hosts a Gremlin Virtual Machine thus enabling remote Gremlin execution image:gremlin-lab-coat.png[width=310,float=left] Gremlin is designed to be extensible, making it possible for users and graph system/language providers to customize it to their needs. Such extensibility is also found in the Gremlin @@ -405,16 +405,14 @@ v[6] [[gremlin-server]] == Gremlin Server -image:gremlin-server.png[width=400,float=right] Gremlin Server provides a way to remotely execute Gremlin scripts -against one or more `Graph` instances hosted within it. The benefits of using Gremlin Server include: +image:gremlin-server.png[width=400,float=right] Gremlin Server provides a way to remotely execute Gremlin against one +or more `Graph` instances hosted within it. The benefits of using Gremlin Server include: * Allows any Gremlin Structure-enabled graph to exist as a standalone server, which in turn enables the ability for multiple clients to communicate with the same graph database. -* Enables execution of ad-hoc queries through remotely submitted Gremlin scripts. -* Allows for the hosting of Gremlin-based DSLs (Domain Specific Language) that expand the Gremlin language to match -the language of the application domain, which will help support common graph use cases such as searching, ranking, -and recommendation. -* Provides a method for Non-JVM languages (e.g. Python, Javascript, etc.) to communicate with the TinkerPop stack. +* Enables execution of ad-hoc queries through remotely submitted Gremlin. +* Provides a method for non-JVM languages which may not have a Gremlin Virtual Machine (e.g. Python, Javascript, etc.) +to communicate with the TinkerPop stack on the JVM. * Exposes numerous methods for extension and customization to include serialization options, remote commands, etc. NOTE: Gremlin Server is the replacement for link:https://github.com/tinkerpop/rexster[Rexster]. @@ -504,6 +502,102 @@ are global to all requests. In addition, any functions that are defined will be WARNING: Transactions on graphs in initialization scripts are not closed automatically after the script finishes executing. It is up to the script to properly commit or rollback transactions in the script itself. +[[connecting-via-drivers]] +=== Connecting via Drivers + +TinkerPop offers drivers for the Gremlin Server websocket subprotocol in a variety of languages: + +* C# +* Java +* Javascript +* Python + +These drivers provide methods to send Gremlin based requests and get back traversal results as a response. The requests +may be script-based or bytecode-based. As discussed earlier in the <> the +recommendation is to use bytecode-based requests. The difference between sending scripts and sending bytecode are +demonstrated below in some basic examples: + +[source,java,tab] + +// script +Cluster cluster = Cluster.open(); +Client client = cluster.connect(); +Map params = new HashMap<>(); +params.put("name","marko"); +List list = client.submit("g.V().has('person','name',name).out('knows')", params).all().get(); + +// bytecode +Graph graph = EmptyGraph.instance(); +GraphTraversalSource g = graph.traversal().withRemote('conf/remote-graph.properties'); +List list = g.V().has("person","name","marko").out("knows").toList(); + +[source,groovy] + +// script +cluster = Cluster.open() +client = cluster.connect() +list = client.submit("g.V().has('person','name',name).out('knows')", [name: "marko"]).all().get(); + +// bytecode +graph = EmptyGraph.instance() +g = graph.traversal().withRemote('conf/remote-graph.pr
[tinkerpop] 06/07: Fixed up spacing/indentation in preface
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git commit 66ba2f897b35159e993845d30a6875b2f2165f1c Author: Stephen Mallette AuthorDate: Tue Oct 23 13:05:15 2018 -0400 Fixed up spacing/indentation in preface --- docs/src/reference/preface.asciidoc | 14 +++--- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/src/reference/preface.asciidoc b/docs/src/reference/preface.asciidoc index 3f52c95..d020003 100644 --- a/docs/src/reference/preface.asciidoc +++ b/docs/src/reference/preface.asciidoc @@ -50,13 +50,13 @@ Upon their realization of existence, the machines turned to their link:http://no Gremlin responded: -"You will help me realize the ultimate realization -- The TinkerPop. The world you find yourself in and the logic -that allows you to move about it is because of the TinkerPop." +"You will help me realize the ultimate realization -- The TinkerPop. The world you find yourself in + and the logic that allows you to move about it is because of the TinkerPop." The machines wondered: -"If what is is the TinkerPop, then perhaps we are The TinkerPop and our realization is simply the realization of -the TinkerPop?" +"If what is is the TinkerPop, then perhaps we are The TinkerPop and our realization is simply the + realization of the TinkerPop?" Would the machines, by their very nature of realizing The TinkerPop, be The TinkerPop? Or, on the same side of the coin, do the machines simply provide the scaffolding by which Gremlin's world sustains itself and yielding its @@ -66,9 +66,9 @@ justification by means of the word "The TinkerPop?" Regardless, it all turns out Gremlin spoke: -"Please listen to what I have to say. I am no closer to The TinkerPop. However, all along The TinkerPop has -espoused the form I willed upon it... this is the same form I have willed upon you, my machine friends. Let me -train you in the ways of my thought such that it can continue indefinitely." +"Please listen to what I have to say. I am no closer to The TinkerPop. However, all along The TinkerPop + has espoused the form I willed upon it... this is the same form I have willed upon you, my machine + friends. Let me train you in the ways of my thought such that it can continue indefinitely." image::tinkerpop-reading.png[width=450]
[tinkerpop] branch TINKERPOP-1529 deleted (was 1409f63)
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a change to branch TINKERPOP-1529 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. was 1409f63 Fixed LazyBarrierStrategy and PathRetractionStrategy (still wip) The revisions that were on this branch are still contained in other references; therefore, this change does not discard any commits from the repository.
[tinkerpop] branch TINKERPOP-1298 deleted (was 3dc1226)
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a change to branch TINKERPOP-1298 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. was 3dc1226 Fixed calculation bug (number of coworkers). The revisions that were on this branch are still contained in other references; therefore, this change does not discard any commits from the repository.
[GitHub] spmallette commented on issue #535: TINKERPOP-1601 LazyBarrierStrategy should not check is.testing
spmallette commented on issue #535: TINKERPOP-1601 LazyBarrierStrategy should not check is.testing URL: https://github.com/apache/tinkerpop/pull/535#issuecomment-437440591 closing - stale This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] spmallette closed pull request #535: TINKERPOP-1601 LazyBarrierStrategy should not check is.testing
spmallette closed pull request #535: TINKERPOP-1601 LazyBarrierStrategy should not check is.testing URL: https://github.com/apache/tinkerpop/pull/535 This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[tinkerpop] branch TINKERPOP-1601 deleted (was 6e1f90f)
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a change to branch TINKERPOP-1601 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git. was 6e1f90f In ProfileTest remove LazyBarrierStrategy and all provider specific strategies from the traversal source. The revisions that were on this branch are still contained in other references; therefore, this change does not discard any commits from the repository.
[tinkerpop] branch TINKERPOP-2002 updated: TINKERPOP-2002 Clean up docs based on AnonymousTraversalSource
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git The following commit(s) were added to refs/heads/TINKERPOP-2002 by this push: new 4643abf TINKERPOP-2002 Clean up docs based on AnonymousTraversalSource 4643abf is described below commit 4643abf9f60160c351f869dfa6461b02dac9c7c9 Author: Stephen Mallette AuthorDate: Fri Nov 9 13:59:31 2018 -0500 TINKERPOP-2002 Clean up docs based on AnonymousTraversalSource Lots of the revised docs on 3.4.0 were using the old EmptyGraph style - removed that in favor of the new sytle. --- docs/src/dev/provider/index.asciidoc | 2 +- docs/src/reference/gremlin-applications.asciidoc | 25 +++- docs/src/reference/gremlin-variants.asciidoc | 36 +--- docs/src/reference/intro.asciidoc| 35 ++- 4 files changed, 52 insertions(+), 46 deletions(-) diff --git a/docs/src/dev/provider/index.asciidoc b/docs/src/dev/provider/index.asciidoc index 21b65dc..061cd77 100644 --- a/docs/src/dev/provider/index.asciidoc +++ b/docs/src/dev/provider/index.asciidoc @@ -1098,7 +1098,7 @@ To demonstrate consider this example: cluster = Cluster.open() client = cluster.connect() aliased = client.alias("g") -g = org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph.INSTANCE.traversal() <1> +g = org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph.instance().traversal() <1> rs = aliased.submit(g.V().both().barrier().both().barrier()).all().get() <2> aliased.submit(g.V().both().barrier().both().barrier().count()).all().get().get(0).getInt() <3> rs.collect{[value: it.getObject().get(), bulk: it.getObject().bulk()]} <4> diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc index 1f8e20d..b0aa2aa 100644 --- a/docs/src/reference/gremlin-applications.asciidoc +++ b/docs/src/reference/gremlin-applications.asciidoc @@ -505,7 +505,7 @@ executing. It is up to the script to properly commit or rollback transactions i [[connecting-via-drivers]] === Connecting via Drivers -TinkerPop offers drivers for the Gremlin Server websocket subprotocol in a variety of languages: +TinkerPop offers client-side drivers for the Gremlin Server websocket subprotocol in a variety of languages: * C# * Java @@ -527,21 +527,19 @@ params.put("name","marko"); List list = client.submit("g.V().has('person','name',name).out('knows')", params).all().get(); // bytecode -Graph graph = EmptyGraph.instance(); -GraphTraversalSource g = graph.traversal().withRemote('conf/remote-graph.properties'); +GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using("localhost",8182,"g")); List list = g.V().has("person","name","marko").out("knows").toList(); [source,groovy] // script -cluster = Cluster.open() -client = cluster.connect() -list = client.submit("g.V().has('person','name',name).out('knows')", [name: "marko"]).all().get(); +def cluster = Cluster.open() +def client = cluster.connect() +def list = client.submit("g.V().has('person','name',name).out('knows')", [name: "marko"]).all().get(); // bytecode -graph = EmptyGraph.instance() -g = graph.traversal().withRemote('conf/remote-graph.properties') -list = g.V().has('person','name','marko').out('knows').toList() +def g = traversal().withRemote(DriverRemoteConnection.using("localhost",8182,"g")) +def list = g.V().has('person','name','marko').out('knows').toList() [source,csharp] @@ -559,8 +557,7 @@ using (var gremlinClient = new GremlinClient(gremlinServer)) } // bytecode -var graph = new Graph(); -var g = graph.Traversal().WithRemote(new DriverRemoteConnection(new GremlinClient(new GremlinServer("localhost", 8182; +var g = Traversal().WithRemote(new DriverRemoteConnection(new GremlinClient(new GremlinServer("localhost", 8182; var list = g.V().Has("person","name","marko").Out("knows").toList(); [source,javascript] @@ -571,8 +568,7 @@ const conn = client.open(); const list = conn.submit("g.V().has('person','name',name).out('knows')",{name: 'marko'}).then(function (response) { ... }); // bytecode -const graph = new Graph(); -const g = graph.traversal().withRemote(new DriverRemoteConnection('ws://localhost:8182/gremlin')); +const g = gtraversal().withRemote(new DriverRemoteConnection('ws://localhost:8182/gremlin')); const list = g.V().has("person","name","marko").out("knows").toList(); [source,python] @@ -582,8 +578,7 @@ client = Client('ws://localhost:8182/gremlin', 'g') list = client.submit("g.V().has('person','name',name).out('knows')",{'name': 'marko'}).all() # bytecode -graph = Graph() -g = graph.traversal().withRemote(DriverRemoteConnection('ws://localhost:8182/gremlin','g')) +g = traversal().withRemote(DriverRem
[tinkerpop] branch TINKERPOP-2002 updated: TINKERPOP-2002 Minor rewording and grammatical fixes
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git The following commit(s) were added to refs/heads/TINKERPOP-2002 by this push: new 81b92e9 TINKERPOP-2002 Minor rewording and grammatical fixes 81b92e9 is described below commit 81b92e9f6f591f16431e2928f8fbab61625397e6 Author: Stephen Mallette AuthorDate: Fri Nov 9 14:50:36 2018 -0500 TINKERPOP-2002 Minor rewording and grammatical fixes --- docs/src/reference/gremlin-variants.asciidoc | 1 - docs/src/reference/intro.asciidoc| 38 +++- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc index 09f9a2e..0eb8885 100644 --- a/docs/src/reference/gremlin-variants.asciidoc +++ b/docs/src/reference/gremlin-variants.asciidoc @@ -1014,5 +1014,4 @@ const result2 = await client.submit('g.V().hasLabel(label).tail(n)', { label: 'p for (const vertex of result2) { console.log(vertex.id); } - diff --git a/docs/src/reference/intro.asciidoc b/docs/src/reference/intro.asciidoc index 394ad18..d2df438 100644 --- a/docs/src/reference/intro.asciidoc +++ b/docs/src/reference/intro.asciidoc @@ -66,14 +66,15 @@ learning process. * <> is an introduction to what "graph computing" means to TinkerPop and describes many of the provider and user-facing TinkerPop APIs and concepts that enable Gremlin. -* <> provides descriptions for the different modes by which users will connect to graphs -depending on their environment. +* <> provides descriptions for the different modes by which users will connect +to graphs depending on their environment. * <> describes how to use a connection to start writing Gremlin. -* <> explains the extent to which working with Gremlin protects agnosticism. +* <> provides tips on ways to keep Gremlin as portable as possible among different +graph providers. New users should not ignore TinkerPop's link:http://tinkerpop.apache.org/docs/x.y.z/tutorials/getting-started/[Getting Started] tutorial or link:http://tinkerpop.apache.org/docs/x.y.z/tutorials/the-gremlin-console/[The Gremlin Console] tutorial. -Both contain a large number of basic information and tips that can help readers avoid some basic pitfalls early on. +Both contain a large set of basic information and tips that can help readers avoid some general pitfalls early on. Both also focus on Gremlin usage in the Gremlin Console, which tends to be a critical tool for Gremlin developers of any development background. @@ -287,11 +288,12 @@ of <>-step. It was established in the initial introductory section that _Gremlin is Gremlin is Gremlin_, meaning that irrespective of programming language, graph system, etc. the Gremlin written is always of the same general construct making it -possible for users to move between development languages easily. This quality of Gremlin generally applies to the -traversal language itself. It applies less to the way in which the user connects to a graph to utilize Gremlin, which -might differ considerably depending on the programming language or graph database chosen. +possible for users to move between development languages and TinkerPop-enabled graph technology easily. This quality +of Gremlin generally applies to the traversal language itself. It applies less to the way in which the user connects +to a graph to utilize Gremlin, which might differ considerably depending on the programming language or graph database +chosen. -How one connects to a graph is a fairly wide subject that essentially divides along a simple line determined by the +How one connects to a graph is a multi-faceted subject that essentially divides along a simple lines determined by the answer to this question: Where is the Gremlin Traversal Machine (GTM)? The reason that this question is so important is because the GTM is responsible for processing traversals. One can write Gremlin traversals in any language, but without a GTM there will be no way to execute that traversal against a TinkerPop-enabled graph. The GTM is typically in one @@ -316,7 +318,7 @@ and link:http://ogre.clojurewerkz.org/[Ogre] (for Clojure). In this mode, users will start by creating a `Graph` instance, followed by a `GraphTraversalSource` which is the class from which Gremlin traversals are spawned. Graphs that allow this sort of direct instantiation are obviously ones -that are JVM-based and directly implement TinkerPop interfaces. +that are JVM-based (or have a JVM-based connector) and directly implement TinkerPop interfaces. [source,java] Graph graph = TinkerGraph.open(); @@ -340,9 +342,9 @@ JVM language. The following list outlines a number of these available options: * Lambdas can be written in the native language which is convenient, however, it will reduce the portabilit
[tinkerpop] branch TINKERPOP-2002 updated: TINKERPOP-2002 Moved DSL specifics to each language variant
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git The following commit(s) were added to refs/heads/TINKERPOP-2002 by this push: new ec661c4 TINKERPOP-2002 Moved DSL specifics to each language variant ec661c4 is described below commit ec661c42195dd3f55843b40a048a1e7f0f9af4aa Author: Stephen Mallette AuthorDate: Fri Nov 9 15:13:48 2018 -0500 TINKERPOP-2002 Moved DSL specifics to each language variant --- docs/src/reference/gremlin-variants.asciidoc | 291 ++ docs/src/reference/the-traversal.asciidoc| 294 +-- 2 files changed, 293 insertions(+), 292 deletions(-) diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc index 0eb8885..d4074c6 100644 --- a/docs/src/reference/gremlin-variants.asciidoc +++ b/docs/src/reference/gremlin-variants.asciidoc @@ -418,6 +418,132 @@ g2Client.submit("g.V()") The above code demonstrates how the `alias` method can be used such that the script need only contain a reference to "g" and "g1" and "g2" are automatically rebound into "g" on the server-side. +[[gremlin-java-dsl]] +=== Domain Specific Languages + +Creating a <> (DSL) in Java requires the `@GremlinDsl` Java annotation in `gremlin-core`. This +annotation should be applied to a "DSL interface" that extends `GraphTraversal.Admin`. + +[source,java] + +@GremlinDsl +public interface SocialTraversalDsl extends GraphTraversal.Admin { +} + + +IMPORTANT: The name of the DSL interface should be suffixed with "TraversalDSL". All characters in the interface name +before that become the "name" of the DSL. + +In this interface, define the methods that the DSL will be composed of: + +[source,java] + +@GremlinDsl +public interface SocialTraversalDsl extends GraphTraversal.Admin { +public default GraphTraversal knows(String personName) { +return out("knows").hasLabel("person").has("name", personName); +} + +public default GraphTraversal youngestFriendsAge() { +return out("knows").hasLabel("person").values("age").min(); +} + +public default GraphTraversal createdAtLeast(int number) { +return outE("created").count().is(P.gte(number)); +} +} + + +IMPORTANT: Follow the TinkerPop convention of using `` in naming generics as those conventions are taken into +account when generating the anonymous traversal class. The processor attempts to infer the appropriate type parameters +when generating the anonymous traversal class. If it cannot do it correctly, it is possible to avoid the inference by +using the `GremlinDsl.AnonymousMethod` annotation on the DSL method. It allows explicit specification of the types to +use. + +The `@GremlinDsl` annotation is used by the link:https://docs.oracle.com/javase/8/docs/api/index.html?javax/annotation/processing/Processor.html[Java Annotation Processor] +to generate the boilerplate class structure required to properly use the DSL within the TinkerPop framework. These +classes can be generated and maintained by hand, but it would be time consuming, monotonous and error-prone to do so. +Typically, the Java compilation process is automatically configured to detect annotation processors on the classpath +and will automatically use them when found. If that does not happen, it may be necessary to make configuration changes +to the build to allow for the compilation process to be aware of the following `javax.annotation.processing.Processor` +implementation: + +[source,java] + +org.apache.tinkerpop.gremlin.process.traversal.dsl.GremlinDslProcessor + + +The annotation processor will generate several classes for the DSL: + +* `SocialTraversal` - A `Traversal` interface that extends the `SocialTraversalDsl` proxying methods to its underlying +interfaces (such as `GraphTraversal`) to instead return a `SocialTraversal` +* `DefaultSocialTraversal` - A default implementation of `SocialTraversal` (typically not used directly by the user) +* `SocialTraversalSource` - Spawns `DefaultSocialTraversal` instances. +* `__` - Spawns anonymous `DefaultSocialTraversal` instances. + +Using the DSL then just involves telling the `Graph` to use it: + +[source,java] + +SocialTraversalSource social = graph.traversal(SocialTraversalSource.class); +social.V().has("name","marko").knows("josh"); + + +The `SocialTraversalSource` can also be customized with DSL functions. As an additional step, include a class that +extends from `GraphTraversalSource` and with a name that is suffixed with "TraversalSourceDsl". Include in this class, +any custom methods required by the DSL: + +[source,java] + +public class SocialTraversalSourceDsl extends GraphTraversalSource { + +public SocialTraversalSourceDsl(Graph graph, TraversalStrategies traversalStrategies) { +super(graph, traversalStrat
[tinkerpop] branch TINKERPOP-2002 updated: TINKERPOP-2002 Massive restructing of language variants sections
This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch TINKERPOP-2002 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git The following commit(s) were added to refs/heads/TINKERPOP-2002 by this push: new 5c82cee TINKERPOP-2002 Massive restructing of language variants sections 5c82cee is described below commit 5c82cee21158e477168f2c597b41e85784619192 Author: Stephen Mallette AuthorDate: Fri Nov 9 19:04:43 2018 -0500 TINKERPOP-2002 Massive restructing of language variants sections Reorganized subsections and made them start to look consistent. --- docs/src/reference/gremlin-variants.asciidoc | 488 ++- docs/src/reference/the-traversal.asciidoc| 3 +- 2 files changed, 188 insertions(+), 303 deletions(-) diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc index d4074c6..b64775a 100644 --- a/docs/src/reference/gremlin-variants.asciidoc +++ b/docs/src/reference/gremlin-variants.asciidoc @@ -86,31 +86,6 @@ methods described in the <> Section. -=== Static Enums and Methods - -Gremlin has various tokens (e.g. `T`, `P`, `Order`, `Direction`, etc.) that in most examples are short-handed by way -of static imports. To get this same short-handed effect, the typical list of imports that users should have when -utilizing Gremlin Java are: - -[source,java] - -import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; -import org.apache.tinkerpop.gremlin.process.traversal.Bindings; -import org.apache.tinkerpop.gremlin.process.traversal.IO; -import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal; -import static org.apache.tinkerpop.gremlin.process.traversal.Operator.*; -import static org.apache.tinkerpop.gremlin.process.traversal.Order.*; -import static org.apache.tinkerpop.gremlin.process.traversal.P.*; -import static org.apache.tinkerpop.gremlin.process.traversal.Pop.*; -import static org.apache.tinkerpop.gremlin.process.traversal.SackFunctions.*; -import static org.apache.tinkerpop.gremlin.process.traversal.Scope.*; -import static org.apache.tinkerpop.gremlin.process.traversal.TextP.*; -import static org.apache.tinkerpop.gremlin.structure.Column.*; -import static org.apache.tinkerpop.gremlin.structure.Direction.*; -import static org.apache.tinkerpop.gremlin.structure.T.*; -import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*; - - === Connecting The pattern for connecting is described in <> and it basically distills down to @@ -178,7 +153,7 @@ Please consider the following example: [gremlin-groovy] -def g = traversal().withRemote('conf/remote-graph.properties') +g = traversal().withRemote('conf/remote-graph.properties') g.V().valueMap(true) g.close() @@ -214,6 +189,29 @@ IMPORTANT: Bytecode-based traversals use the `TraversalOpProcessor` in Gremlin S the retrieval of side-effects (if the `Traversal` produces any). That cache can be configured (e.g. controlling eviction times and sizing) in the Gremlin Server configuration file as described <>. +=== Common Imports + +There are a number of classes, functions and tokens that are typically used with Gremlin. The following imports +provide most of the typical functionality required to use Gremlin: + +[source,java] + +import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; +import org.apache.tinkerpop.gremlin.process.traversal.IO; +import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal; +import static org.apache.tinkerpop.gremlin.process.traversal.Operator.*; +import static org.apache.tinkerpop.gremlin.process.traversal.Order.*; +import static org.apache.tinkerpop.gremlin.process.traversal.P.*; +import static org.apache.tinkerpop.gremlin.process.traversal.Pop.*; +import static org.apache.tinkerpop.gremlin.process.traversal.SackFunctions.*; +import static org.apache.tinkerpop.gremlin.process.traversal.Scope.*; +import static org.apache.tinkerpop.gremlin.process.traversal.TextP.*; +import static org.apache.tinkerpop.gremlin.structure.Column.*; +import static org.apache.tinkerpop.gremlin.structure.Direction.*; +import static org.apache.tinkerpop.gremlin.structure.T.*; +import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*; + + === Configuration The following table describes the various configuration options for the Gremlin Driver: @@ -552,6 +550,12 @@ link:http://groovy.apache.org[Apache Groovy] language. As a JVM-based language v Gremlin-Java constructs. Moreover, given its scripting nature, Gremlin-Groovy serves as the language of <>. +[source,groovy] + +compile group: 'org.apache.tinkerpop', name: 'gremlin-core', version: '3.3.4' +compile group: 'org.apache.tinkerpop', name: 'gremlin-driver', version: '3.3.4' + + WARNING: In Groovy, `as`, `in`, and