[2/2] tinkerpop git commit: Implemented `ShortestPathVertexProgram` and `ShortestPathVertexProgramStep`.
Implemented `ShortestPathVertexProgram` and `ShortestPathVertexProgramStep`. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/8928374a Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/8928374a Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/8928374a Branch: refs/heads/TINKERPOP-1990 Commit: 8928374a23fc4a5853c48c1e2223768bed93e11f Parents: b5600e7 Author: Daniel Kuppitz Authored: Wed May 23 08:46:34 2018 -0400 Committer: Daniel Kuppitz Committed: Thu Jun 21 11:01:28 2018 -0700 -- docs/src/reference/the-graphcomputer.asciidoc | 51 ++ docs/src/reference/the-traversal.asciidoc | 56 ++ .../tinkerpop/gremlin/jsr223/CoreImports.java | 4 + .../search/path/ShortestPathVertexProgram.java | 557 +++ .../traversal/step/map/ShortestPath.java| 108 .../step/map/ShortestPathVertexProgramStep.java | 174 ++ .../gremlin/process/remote/RemoteGraph.java | 8 + .../gremlin/process/traversal/Traversal.java| 16 +- .../traversal/dsl/graph/GraphTraversal.java | 20 + .../traversal/lambda/ColumnTraversal.java | 8 + .../traversal/lambda/ConstantTraversal.java | 9 +- .../traversal/lambda/ElementValueTraversal.java | 10 +- .../traversal/lambda/IdentityTraversal.java | 7 +- .../process/traversal/lambda/LoopTraversal.java | 6 + .../traversal/lambda/TokenTraversal.java| 8 + .../process/traversal/lambda/TrueTraversal.java | 5 + .../structure/io/graphson/GraphSONModule.java | 2 +- .../gremlin/structure/io/gryo/GryoVersion.java | 7 +- .../structure/io/gryo/UtilSerializers.java | 15 + .../gremlin/structure/util/Attachable.java | 3 +- .../traversal/dsl/graph/GraphTraversalTest.java | 2 +- .../Process/Traversal/GraphTraversal.cs | 18 + .../lib/process/graph-traversal.js | 10 + .../gremlin_python/process/graph_traversal.py | 4 + .../tinkerpop/gremlin/AbstractGremlinTest.java | 6 +- .../process/AbstractGremlinProcessTest.java | 11 +- .../gremlin/process/ProcessComputerSuite.java | 5 + .../search/path/ShortestPathTestHelper.java | 100 .../path/ShortestPathVertexProgramTest.java | 297 ++ .../traversal/step/map/ShortestPathTest.java| 353 pom.xml | 3 + 31 files changed, 1861 insertions(+), 22 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8928374a/docs/src/reference/the-graphcomputer.asciidoc -- diff --git a/docs/src/reference/the-graphcomputer.asciidoc b/docs/src/reference/the-graphcomputer.asciidoc index 4bf39d0..e4da605 100644 --- a/docs/src/reference/the-graphcomputer.asciidoc +++ b/docs/src/reference/the-graphcomputer.asciidoc @@ -403,6 +403,57 @@ g.V().peerPressure().by('cluster').valueMap() g.V().peerPressure().by(outE('knows')).by('cluster').valueMap() +[[shortestpathvertexprogram]] +=== ShortestPathVertexProgram + +The `ShortestPathVertexProram` provides an easy way to find shortest non-cyclic paths in the graph. It provides several options to configure +the output format, the start- and end-vertices, the direction, a custom distance function, as well as a distance limitation. By default it just +finds all undirected, shortest paths in the graph. + +[gremlin-groovy,modern] + +spvp = ShortestPathVertexProgram.build().create() <1> +result = graph.compute().program(spvp).submit().get() <2> +result.memory().get(ShortestPathVertexProgram.SHORTEST_PATHS) <3> + + +<1> Create a `ShortestPathVertexProgram` with its default configuration. +<2> Execute the `ShortestPathVertexProgram`. +<3> Get all shortest paths from the results memory. + +[gremlin-groovy,modern] + +spvp = ShortestPathVertexProgram.build().includeEdges(true).create() <1> +result = graph.compute().program(spvp).submit().get() <2> +result.memory().get(ShortestPathVertexProgram.SHORTEST_PATHS) <3> + + +<1> Create a `ShortestPathVertexProgram` as before, but configure it to include edges in the result. +<2> Execute the `ShortestPathVertexProgram`. +<3> Get all shortest paths from the results memory. + +The `ShortestPathVertexProgram.Builder` provides the following configuration methods: + +[width="100%",cols="3,15,5",options="header"] +|= +| Method | Description | Default +| `source(Traversal)` | Sets a filter traversal for the start vertices (e.g. `__.has('name','marko')`). | all vertices (`__.identity()`) +| `target(Traversal)` | Sets a filter traversal for the end vertices. | all vertices +| `edgeDirection(Direction)` | Sets the direction to traverse during the shortest path discovery. | `Direction.BOTH`
[2/2] tinkerpop git commit: Implemented `ShortestPathVertexProgram` and `ShortestPathVertexProgramStep`.
Implemented `ShortestPathVertexProgram` and `ShortestPathVertexProgramStep`. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/2b02a47c Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/2b02a47c Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/2b02a47c Branch: refs/heads/shortest-path-wip Commit: 2b02a47cf5438f3eff5b54eb1bdd77169aef91f2 Parents: 12b84a1 Author: Daniel Kuppitz Authored: Wed May 23 08:46:34 2018 -0400 Committer: Daniel Kuppitz Committed: Thu May 31 14:51:30 2018 -0700 -- .../tinkerpop/gremlin/jsr223/CoreImports.java | 4 + .../search/path/ShortestPathVertexProgram.java | 566 +++ .../step/map/ShortestPathVertexProgramStep.java | 259 + .../gremlin/process/remote/RemoteGraph.java | 8 + .../gremlin/process/traversal/Traversal.java| 16 +- .../traversal/dsl/graph/GraphTraversal.java | 20 + .../traversal/lambda/ColumnTraversal.java | 8 + .../traversal/lambda/ConstantTraversal.java | 9 +- .../traversal/lambda/ElementValueTraversal.java | 10 +- .../traversal/lambda/IdentityTraversal.java | 7 +- .../process/traversal/lambda/LoopTraversal.java | 6 + .../traversal/lambda/TokenTraversal.java| 8 + .../process/traversal/lambda/TrueTraversal.java | 5 + .../structure/io/graphson/GraphSONModule.java | 2 +- .../traversal/dsl/graph/GraphTraversalTest.java | 2 +- .../Process/Traversal/GraphTraversal.cs | 9 + .../lib/process/graph-traversal.js | 10 + .../gremlin_python/process/graph_traversal.py | 4 + .../tinkerpop/gremlin/AbstractGremlinTest.java | 4 + .../gremlin/process/ProcessComputerSuite.java | 5 + .../search/path/ShortestPathTestHelper.java | 72 +++ .../path/ShortestPathVertexProgramTest.java | 264 + .../traversal/step/map/ShortestPathTest.java| 310 ++ pom.xml | 3 + 24 files changed, 1599 insertions(+), 12 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2b02a47c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java index 368b92d..d853b8f 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java @@ -46,9 +46,11 @@ import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.Clu import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.PeerPressureVertexProgram; import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankMapReduce; import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram; +import org.apache.tinkerpop.gremlin.process.computer.search.path.ShortestPathVertexProgram; import org.apache.tinkerpop.gremlin.process.computer.traversal.MemoryTraversalSideEffects; import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram; import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRankVertexProgramStep; +import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ShortestPathVertexProgramStep; import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy; import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.GraphFilterStrategy; import org.apache.tinkerpop.gremlin.process.remote.RemoteConnection; @@ -262,6 +264,8 @@ public final class CoreImports { CLASS_IMPORTS.add(PageRankMapReduce.class); CLASS_IMPORTS.add(PageRankVertexProgram.class); CLASS_IMPORTS.add(PageRankVertexProgramStep.PageRank.class); +CLASS_IMPORTS.add(ShortestPathVertexProgram.class); +CLASS_IMPORTS.add(ShortestPathVertexProgramStep.ShortestPath.class); CLASS_IMPORTS.add(GraphFilterStrategy.class); CLASS_IMPORTS.add(TraversalVertexProgram.class); CLASS_IMPORTS.add(VertexProgramStrategy.class); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2b02a47c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/search/path/ShortestPathVertexProgram.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/search/path/ShortestPathVertexProgram.java
[2/2] tinkerpop git commit: Implemented `ShortestPathVertexProgram` and `ShortestPathVertexProgramStep`.
Implemented `ShortestPathVertexProgram` and `ShortestPathVertexProgramStep`. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f1776cc2 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f1776cc2 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f1776cc2 Branch: refs/heads/shortest-path-wip Commit: f1776cc20acf0582cbf8331caeecbc95e59f Parents: 12b84a1 Author: Stephen Mallette Authored: Wed May 23 08:46:34 2018 -0400 Committer: Daniel Kuppitz Committed: Thu May 31 14:42:02 2018 -0700 -- .../tinkerpop/gremlin/jsr223/CoreImports.java | 4 + .../search/path/ShortestPathVertexProgram.java | 566 +++ .../step/map/ShortestPathVertexProgramStep.java | 259 + .../gremlin/process/remote/RemoteGraph.java | 8 + .../gremlin/process/traversal/Traversal.java| 16 +- .../traversal/dsl/graph/GraphTraversal.java | 20 + .../traversal/lambda/ColumnTraversal.java | 8 + .../traversal/lambda/ConstantTraversal.java | 9 +- .../traversal/lambda/ElementValueTraversal.java | 10 +- .../traversal/lambda/IdentityTraversal.java | 7 +- .../process/traversal/lambda/LoopTraversal.java | 6 + .../traversal/lambda/TokenTraversal.java| 8 + .../process/traversal/lambda/TrueTraversal.java | 5 + .../structure/io/graphson/GraphSONModule.java | 2 +- .../traversal/dsl/graph/GraphTraversalTest.java | 2 +- .../Process/Traversal/GraphTraversal.cs | 9 + .../lib/process/graph-traversal.js | 10 + .../gremlin_python/process/graph_traversal.py | 4 + .../tinkerpop/gremlin/AbstractGremlinTest.java | 4 + .../gremlin/process/ProcessComputerSuite.java | 5 + .../search/path/ShortestPathTestHelper.java | 72 +++ .../path/ShortestPathVertexProgramTest.java | 264 + .../traversal/step/map/ShortestPathTest.java| 310 ++ pom.xml | 3 + 24 files changed, 1599 insertions(+), 12 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f1776cc2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java index 368b92d..d853b8f 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java @@ -46,9 +46,11 @@ import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.Clu import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.PeerPressureVertexProgram; import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankMapReduce; import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram; +import org.apache.tinkerpop.gremlin.process.computer.search.path.ShortestPathVertexProgram; import org.apache.tinkerpop.gremlin.process.computer.traversal.MemoryTraversalSideEffects; import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram; import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRankVertexProgramStep; +import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ShortestPathVertexProgramStep; import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy; import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.GraphFilterStrategy; import org.apache.tinkerpop.gremlin.process.remote.RemoteConnection; @@ -262,6 +264,8 @@ public final class CoreImports { CLASS_IMPORTS.add(PageRankMapReduce.class); CLASS_IMPORTS.add(PageRankVertexProgram.class); CLASS_IMPORTS.add(PageRankVertexProgramStep.PageRank.class); +CLASS_IMPORTS.add(ShortestPathVertexProgram.class); +CLASS_IMPORTS.add(ShortestPathVertexProgramStep.ShortestPath.class); CLASS_IMPORTS.add(GraphFilterStrategy.class); CLASS_IMPORTS.add(TraversalVertexProgram.class); CLASS_IMPORTS.add(VertexProgramStrategy.class); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f1776cc2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/search/path/ShortestPathVertexProgram.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/search/path/ShortestPathVertexProgram.java
[2/2] tinkerpop git commit: Implemented `ShortestPathVertexProgram` and `ShortestPathVertexProgramStep`.
Implemented `ShortestPathVertexProgram` and `ShortestPathVertexProgramStep`. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/27cf8e55 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/27cf8e55 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/27cf8e55 Branch: refs/heads/shortest-path-wip Commit: 27cf8e555fbc59e0446c8b8ed27c483b9578c97f Parents: 939674a Author: Daniel Kuppitz Authored: Tue May 22 07:59:32 2018 -0700 Committer: Daniel Kuppitz Committed: Thu May 31 14:29:17 2018 -0700 -- .../tinkerpop/gremlin/jsr223/CoreImports.java | 4 + .../gremlin/jsr223/JavaTranslator.java | 37 -- .../search/path/ShortestPathVertexProgram.java | 566 +++ .../step/map/ShortestPathVertexProgramStep.java | 257 + .../gremlin/process/remote/RemoteGraph.java | 8 + .../gremlin/process/traversal/Bytecode.java | 16 +- .../gremlin/process/traversal/Traversal.java| 16 +- .../traversal/dsl/graph/GraphTraversal.java | 23 +- .../traversal/lambda/ColumnTraversal.java | 8 + .../traversal/lambda/ConstantTraversal.java | 9 +- .../traversal/lambda/ElementValueTraversal.java | 10 +- .../traversal/lambda/IdentityTraversal.java | 7 +- .../process/traversal/lambda/LoopTraversal.java | 6 + .../traversal/lambda/TokenTraversal.java| 8 + .../process/traversal/lambda/TrueTraversal.java | 5 + .../traversal/step/StepConfiguration.java | 51 -- .../step/util/DefaultStepConfiguration.java | 158 -- .../step/util/StepConfigurationProxy.java | 50 -- .../structure/io/graphson/GraphSONModule.java | 8 - .../io/graphson/TraversalSerializersV2d0.java | 37 +- .../io/graphson/TraversalSerializersV3d0.java | 34 +- .../structure/io/gryo/GryoSerializersV1d0.java | 32 -- .../structure/io/gryo/GryoSerializersV3d0.java | 2 +- .../gremlin/structure/io/gryo/GryoVersion.java | 7 +- .../traversal/dsl/graph/GraphTraversalTest.java | 2 +- .../process/traversal/step/StepTest.java| 2 +- .../step/util/DefaultStepConfigurationTest.java | 167 -- .../GraphSONMapperPartialEmbeddedTypeTest.java | 10 - .../structure/io/gryo/GryoMapperTest.java | 7 - gremlin-dotnet/glv/generate.groovy | 1 - .../Process/Traversal/GraphTraversal.cs | 9 + .../Process/Traversal/IStepConfiguration.cs | 32 -- .../gremlin/groovy/jsr223/GroovyTranslator.java | 9 +- .../lib/process/graph-traversal.js | 10 + gremlin-python/glv/generate.groovy | 1 - .../gremlin_python/process/graph_traversal.py | 4 + .../tinkerpop/gremlin/AbstractGremlinTest.java | 4 + .../gremlin/process/ProcessComputerSuite.java | 5 + .../search/path/ShortestPathTestHelper.java | 72 +++ .../path/ShortestPathVertexProgramTest.java | 264 + .../traversal/step/map/ShortestPathTest.java| 310 ++ pom.xml | 3 + 42 files changed, 1607 insertions(+), 664 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27cf8e55/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java -- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java index 368b92d..d853b8f 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java @@ -46,9 +46,11 @@ import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.Clu import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.PeerPressureVertexProgram; import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankMapReduce; import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram; +import org.apache.tinkerpop.gremlin.process.computer.search.path.ShortestPathVertexProgram; import org.apache.tinkerpop.gremlin.process.computer.traversal.MemoryTraversalSideEffects; import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram; import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRankVertexProgramStep; +import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ShortestPathVertexProgramStep; import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy; import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.GraphFilterStrategy; import