You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2020/09/02 15:40:44 UTC
[tinkerpop] 02/03: Made links to GLV subsections consistent in
their naming 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
commit a4a55799534f7b95fca434ac167f17bbf83c31c4
Author: Stephen Mallette <sp...@genoprime.com>
AuthorDate: Wed Sep 2 11:38:36 2020 -0400
Made links to GLV subsections consistent in their naming CTR
---
docs/src/reference/gremlin-variants.asciidoc | 49 ++++++++++++++++++++++------
1 file changed, 39 insertions(+), 10 deletions(-)
diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc
index b9e4944..1013c8a 100644
--- a/docs/src/reference/gremlin-variants.asciidoc
+++ b/docs/src/reference/gremlin-variants.asciidoc
@@ -99,6 +99,7 @@ connection methods described in the <<connecting-gremlin,Connecting Gremlin>> Se
</dependency>
----
+[[gremlin-java-connecting]]
=== Connecting
The pattern for connecting is described in <<connecting-gremlin,Connecting Gremlin>> and it basically distills down
@@ -214,7 +215,8 @@ GraphTraversalSource g = traversal().withRemote(conf);
List<Vertex> vertices = g.with(Tokens.ARGS_EVAL_TIMEOUT, 500L).V().out("knows").toList()
----
-[[java-imports]]
+anchor:java-imports[]
+[[gremlin-java-imports]]
=== Common Imports
There are a number of classes, functions and tokens that are typically used with Gremlin. The following imports
@@ -238,6 +240,7 @@ import static org.apache.tinkerpop.gremlin.structure.T.*;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
----
+[[gremlin-java-configuration]]
=== Configuration
The following table describes the various configuration options for the Gremlin Driver:
@@ -283,6 +286,7 @@ The following table describes the various configuration options for the Gremlin
Please see the link:https://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/driver/Cluster.Builder.html[Cluster.Builder javadoc] to get more information on these settings.
+[[gremlin-java-serialization]]
=== Serialization
Remote systems like Gremlin Server and Remote Gremlin Providers respond to requests made in a particular serialization
@@ -312,6 +316,7 @@ ensure compatibility when making requests. Obviously, it is possible to switch t
the appropriate `MessageSerializer` (`GraphSONMessageSerializerV3d0` or `GraphBinaryMessageSerializerV1` respectively)
in the same way and building that into the `Cluster` object.
+[[gremlin-java-lambda]]
=== The Lambda Solution
Supporting link:https://en.wikipedia.org/wiki/Anonymous_function[anonymous functions] across languages is difficult as
@@ -364,6 +369,7 @@ thus, the first submission can be cached for faster evaluation on the next submi
WARNING: It is generally advised to avoid lambda usage. Please consider <<a-note-on-lambdas,A Note On Lambdas>> for
more information.
+[[gremlin-java-scripts]]
=== Submitting Scripts
WARNING: TinkerPop does not recommend submitting script-based requests and generally continues to support this feature
@@ -581,7 +587,8 @@ NOTE: Using Maven, as shown in the `gremlin-archetype-dsl` module, makes develop
straightforward in that it sets up appropriate paths to the generated code automatically.
anchor:java-application-examples[]
-[[gremlin-archetypes]]
+anchor:gremlin-archetypes[]
+[[gremlin-java-examples]]
=== Application Examples
The available link:https://maven.apache.org/guides/introduction/introduction-to-archetypes.html[Maven archetypes] are
@@ -643,6 +650,7 @@ To install Gremlin-Python, use Python's link:https://en.wikipedia.org/wiki/Pip_(
pip install gremlinpython
----
+[[gremlin-python-connecting]]
=== Connecting
The pattern for connecting is described in <<connecting-gremlin,Connecting Gremlin>> and it basically distills down to
@@ -667,7 +675,8 @@ traversals to complete is acceptable, it might be helpful to set `pool_size` and
See the <<python-configuration,Configuration>> section just below. Examples where this could apply are serverless cloud functions or WSGI
worker processes.
-[[python-imports]]
+anchor:python-imports[]
+[[gremlin-python-imports]]
=== Common Imports
There are a number of classes, functions and tokens that are typically used with Gremlin. The following imports
@@ -723,7 +732,8 @@ That is, without the `+__+`-prefix.
g.V().repeat(out()).times(2).name.fold().toList()
----
-[[python-configuration]]
+anchor:python-configuration[]
+[[gremlin-python-configuration]]
=== Configuration
The following table describes the various configuration options for the Gremlin-Python Driver. They
@@ -751,7 +761,7 @@ g = traversal().withRemote(
DriverRemoteConnection('ws://localhost:8182/gremlin','g',
transport_factory=lambda: TornadoTransport(read_timeout=10, write_timeout=10)))
```
-
+[[gremlin-python-strategies]]
=== Traversal Strategies
In order to add and remove <<traversalstrategy,traversal strategies>> from a traversal source, Gremlin-Python has a
@@ -775,6 +785,7 @@ Apache TinkerPop's JVM-based Gremlin traversal machine. As such, their `apply(Tr
the strategy is encoded in the Gremlin-Python bytecode and transmitted to the Gremlin traversal machine for
re-construction machine-side.
+[[gremlin-python-lambda]]
=== The Lambda Solution
Supporting link:https://en.wikipedia.org/wiki/Anonymous_function[anonymous functions] across languages is difficult as
@@ -873,6 +884,7 @@ WARNING: As explained throughout the documentation, when possible <<a-note-on-la
must be used, then consider submitting Groovy lambdas as opposed to Python-based ones. The `GremlinGroovyScriptEngine`
is far more featured and performant than its Jython sibling and will likely yield better results.
+[[gremlin-python-scripts]]
=== Submitting Scripts
WARNING: TinkerPop does not recommend submitting script-based requests and generally continues to support this feature
@@ -998,6 +1010,7 @@ social.persons("marko").youngestFriendsAge()
social.persons().filter(__.createdAtLeast(2)).count()
----
+[[gremlin-python-sugar]]
=== Syntactic Sugar
Python supports meta-programming and operator overloading. There are three uses of these techniques in Gremlin-Python
@@ -1036,6 +1049,7 @@ does not support that at a language level. Gremlin that returns such results wil
no `Graph` instance to deserialize a result into on the client-side. A workaround is to replace the step with `store()`
and then convert those results to something the client can use locally.
+[[gremlin-python-examples]]
=== Application Examples
The TinkerPop source code contains a simple Python script that shows a basic example of how gremlinpython works. It
@@ -1064,6 +1078,7 @@ to comply with .NET conventions.
[source,powershell]
nuget install Gremlin.Net
+[[gremlin-dotnet-connecting]]
=== Connecting
The pattern for connecting is described in <<connecting-gremlin,Connecting Gremlin>> and it basically distills down to
@@ -1076,6 +1091,7 @@ the remote end.
include::../../../gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Docs/Reference/GremlinVariantsTests.cs[tags=connecting]
----
+[[gremlin-dotnet-imports]]
=== Common Imports
There are a number of classes, functions and tokens that are typically used with Gremlin. The following imports
@@ -1086,6 +1102,7 @@ provide most of the typical functionality required to use Gremlin:
include::../../../gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Docs/Reference/GremlinVariantsTests.cs[tags=commonImports]
----
+[[gremlin-dotnet-configuration]]
=== Configuration
The connection properties for the Gremlin.Net driver can be passed to the `GremlinServer` instance as keyword arguments:
@@ -1120,7 +1137,8 @@ when a new request comes in.
A `ServerUnavailableException` is thrown if no connection is available to the server to submit a request after
`ReconnectionAttempts` retries.
-==== Serialization
+[[gremlin-dotnet-serialization]]
+=== Serialization
The Gremlin.Net driver uses by default GraphSON 3.0 but it is also possible to use GraphSON 2.0 which can be necessary
when the server does not support GraphSON 3.0 yet:
@@ -1130,6 +1148,7 @@ when the server does not support GraphSON 3.0 yet:
include::../../../gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Docs/Reference/GremlinVariantsTests.cs[tags=serialization]
----
+[[gremlin-dotnet-strategies]]
=== Traversal Strategies
In order to add and remove traversal strategies from a traversal source, Gremlin.Net has an `AbstractTraversalStrategy`
@@ -1144,6 +1163,7 @@ NOTE: Many of the TraversalStrategy classes in Gremlin.Net are proxies to the re
JVM-based Gremlin traversal machine. As such, their `Apply(ITraversal)` method does nothing. However, the strategy is
encoded in the Gremlin.Net bytecode and transmitted to the Gremlin traversal machine for re-construction machine-side.
+[[gremlin-dotnet-lambda]]
=== The Lambda Solution
Supporting link:https://en.wikipedia.org/wiki/Anonymous_function[anonymous functions] across languages is difficult as
@@ -1167,6 +1187,7 @@ TIP: When running into situations where Groovy cannot properly discern a method
instance created, it will help to fully define the closure in the lambda expression - so rather than
`Lambda.Groovy("it.get().value('name'))`, prefer `Lambda.Groovy("x -> x.get().value('name'))`.
+[[gremlin-dotnet-scripts]]
=== Submitting Scripts
WARNING: TinkerPop does not recommend submitting script-based requests and generally continues to support this feature
@@ -1195,7 +1216,8 @@ var gremlinServer = new GremlinServer("localhost", 8182);
var client = new GremlinClient(gremlinServer, sessionId: Guid.NewGuid().ToString()))
----
-[[gremlin-net-dsl]]
+anchor:gremlin-net-dsl[]
+[[gremlin-dotnet-dsl]]
=== Domain Specific Languages
Developing a <<dsl,Domain Specific Language>> (DSL) for .Net is most easily implemented using
@@ -1229,7 +1251,8 @@ and then it can be called from the application as follows:
include::../../../gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Docs/Reference/GremlinVariantsDslTests.cs[tags=dslExamples]
----
-[[gremlin-net-differences]]
+anchor:gremlin-net-differences[]
+[[gremlin-dotnet-differences]]
=== Differences
The biggest difference between Gremlin in .NET and the canonical version in Java is the casing of steps. Canonical
@@ -1273,7 +1296,8 @@ must be written as:
g.V().Repeat(__.Out()).Times(2).Values<string>("name");
----
-[[gremlin-net-limitations]]
+anchor:gremlin-net-limitations[]
+[[gremlin-dotnet-limitations]]
=== Limitations
* The `subgraph()`-step is not supported by any variant that is not running on the Java Virtual Machine as there is
@@ -1281,7 +1305,9 @@ no `Graph` instance to deserialize a result into on the client-side. A workaroun
and then convert those results to something the client can use locally.
anchor:gremlin-dotnet-template[]
-[[dotnet-application-examples]]
+anchor:dotnet-application-examples[]
+anchor:gremlin-net-examples[]
+[[gremlin-dotnet-examples]]
=== Application Examples
This link:https://docs.microsoft.com/dotnet/core/tools/custom-templates[dotnet template] helps getting started with
@@ -1313,6 +1339,7 @@ between Gremlin-Java and Gremlin-JavaScript.
[source,bash]
npm install gremlin
+[[gremlin-javascript-connecting]]
=== Connecting
The pattern for connecting is described in <<connecting-gremlin,Connecting Gremlin>> and it basically distills down to
@@ -1356,6 +1383,7 @@ const names = await g.V().hasLabel('person').values('name').toList();
console.log(names);
----
+[[gremlin-javascript-imports]]
=== Common Imports
There are a number of classes, functions and tokens that are typically used with Gremlin. The following imports
@@ -1388,6 +1416,7 @@ const { order: { desc } } = gremlin.process;
g.V().hasLabel('person').has('age',gt(30)).order().by('age',desc).toList()
----
+[[gremlin-javascript-scripts]]
=== Submitting Scripts
WARNING: TinkerPop does not recommend submitting script-based requests and generally continues to support this feature