1
0
Fork 0

Doc - Add documentation for k Shortest Paths (#8836)

This commit is contained in:
Markus Pfeiffer 2019-05-06 10:56:03 +00:00 committed by Simran
parent 431537d352
commit 3109dd6747
11 changed files with 1460 additions and 0 deletions

View File

@ -0,0 +1,220 @@
k Shortest Paths in AQL
=======================
General query idea
--------------------
This type of query is supposed to find the first *k* paths in order of length
(or weight) between two given documents, *startVertex* and *targetVertex* in
your graph.
Every such path will be returned as a JSON object with three components:
- an array containing the `vertices` on the path
- an array containing the `edges` on the path
- the `weight` of the path, that is the sum of all edge weights
If no *weightAttribute* is given, the weight of the path is just its length.
**Example**
Let su take a look at a simple example to explain how it works.
This is the graph that we are going to find some shortest path on:
![train_map](train_map.png)
Each ellipse stands for a train station with the name of the city written inside
of it. They are the vertices of the graph. Arrows represent train connections
between cities and are the edges of the graph. The numbers near the arrows
describe how long it takes to get from one station to another. They are used
as edge weights.
Let us assume that we want to go from **Aberdeen** to **London** by train.
We expect to see the following vertices on *the* shortest path, in this order:
1. Aberdeen
2. Leuchars
3. Edinburgh
4. York
5. London
By the way, the weight of the path is: 1.5 + 1.5 + 3.5 + 1.8 = **8.3**.
Let us look at alternative paths next, for example because we know that the
direct connection between York and London does not operate currently.
An alternative path, which is slightly longer, goes like this:
1. Aberdeen
2. Leuchars
3. Edinburgh
4. York
5. **Carlisle**
6. **Birmingham**
7. London
Its weight is: 1.5 + 1.5 + 3.5 + 2.0 + 1.5 = **10.0**.
Another route goes via Glasgow. There are seven stations on the path as well,
however, it is quicker if we compare the edge weights:
1. Aberdeen
2. Leuchars
3. Edinburgh
4. **Glasgow**
5. Carlisle
6. Birmingham
7. London
The path weight is lower: 1.5 + 1.5 + 1.0 + 1.0 + 2.0 + 1.5 = **8.5**.
Syntax
------
The syntax for k Shortest Paths queries is similar to the one for
[Shortest Path](ShortestPath.md) and there are also two options to either
use a named graph or a set of edge collections. It only emits a path
variable however, whereas SHORTEST_PATH emits a vertex and an edge variable.
{% hint 'warning' %}
It is highly recommended that you use a **LIMIT** statement, as
k Shortest Paths is a potentially expensive operation. On large connected
graphs it can return a large number of paths, or perform an expensive
(but unsuccessful) search for more short paths.
{% endhint %}
### Working with named graphs
```
FOR path
IN OUTBOUND|INBOUND|ANY K_SHORTEST_PATHS
startVertex TO targetVertex
GRAPH graphName
[OPTIONS options]
[LIMIT offset, count]
```
- `FOR`: emits the variable **path** which contains one path as an object containing
`vertices`, `edges`, and the `weight` of the path.
- `IN` `OUTBOUND|INBOUND|ANY`: defines in which direction
edges are followed (outgoing, incoming, or both)
- `K_SHORTEST_PATHS`: the keyword to compute k Shortest Paths
- **startVertex** `TO` **targetVertex** (both string|object): the two vertices between
which the paths will be computed. This can be specified in the form of
a ID string or in the form of a document with the attribute `_id`. All other
values will lead to a warning and an empty result. If one of the specified
documents does not exist, the result is empty as well and there is no warning.
- `GRAPH` **graphName** (string): the name identifying the named graph. Its vertex and
edge collections will be looked up.
- `OPTIONS` **options** (object, *optional*): used to modify the execution of the
traversal. Only the following attributes have an effect, all others are ignored:
- **weightAttribute** (string): a top-level edge attribute that should be used
to read the edge weight. If the attribute does not exist or is not numeric, the
*defaultWeight* will be used instead.
- **defaultWeight** (number): this value will be used as fallback if there is
no *weightAttribute* in the edge document, or if it's not a number. The default
is 1.
- `LIMIT` (see [LIMIT operation](../Operations/Limit.html), *optional*):
the maximal number of paths to return. It is highly recommended to use
a `LIMIT` for `K_SHORTEST_PATHS`.
### Working with collection sets
```
FOR path
IN OUTBOUND|INBOUND|ANY K_SHORTEST_PATHS
startVertex TO targetVertex
edgeCollection1, ..., edgeCollectionN
[OPTIONS options]
[LIMIT offset, count]
```
Instead of `GRAPH graphName` you can specify a list of edge collections.
The involved vertex collections are determined by the edges of the given
edge collections.
### Traversing in mixed directions
For k shortest paths with a list of edge collections you can optionally specify the
direction for some of the edge collections. Say for example you have three edge
collections *edges1*, *edges2* and *edges3*, where in *edges2* the direction
has no relevance, but in *edges1* and *edges3* the direction should be taken into
account. In this case you can use *OUTBOUND* as general search direction and *ANY*
specifically for *edges2* as follows:
```
FOR vertex IN OUTBOUND K_SHORTEST_PATHS
startVertex TO targetVertex
edges1, ANY edges2, edges3
```
All collections in the list that do not specify their own direction will use the
direction defined after `IN` (here: `OUTBOUND`). This allows to use a different
direction for each collection in your path search.
Examples
--------
We load an example graph to get a named graph that reflects some possible
train connections in Europe and North America.
![train_map](train_map.png)
@startDocuBlockInline GRAPHKSP_01_create_graph
@EXAMPLE_ARANGOSH_OUTPUT{GRAPHKSP_01_create_graph}
~addIgnoreCollection("places");
~addIgnoreCollection("connections");
var examples = require("@arangodb/graph-examples/example-graph.js");
var graph = examples.loadGraph("kShortestPathsGraph");
db.places.toArray();
db.connections.toArray();
@END_EXAMPLE_ARANGOSH_OUTPUT
@endDocuBlock GRAPHKSP_01_create_graph
Suppose we want to query a route from **Aberdeen** to **London**, and compare
the outputs of SHORTEST_PATH and K_SHORTEST_PATHS with LIMIT 1. Note that while
SHORTEST_PATH and K_SHORTEST_PATH with LIMIT 1 should return a path of the same
length (or weight), they do not need to return the same path.
@startDocuBlockInline GRAPHKSP_02_Aberdeen_to_London
@EXAMPLE_ARANGOSH_OUTPUT{GRAPHKSP_02_Aberdeen_to_London}
db._query("FOR v, e IN OUTBOUND SHORTEST_PATH 'places/Aberdeen' TO 'places/London' GRAPH 'shortestPathsGraph' RETURN [v,e]");
db._query("FOR p IN OUTBOUND K_SHORTEST_PATHS 'places/Aberdeen' TO 'places/London' GRAPH 'shortestPathsGraph' LIMIT 1 RETURN p");
@END_EXAMPLE_ARANGOSH_OUTPUT
@endDocuBlock GRAPHKSP_02_Aberdeen_to_London
Next, we can ask for more than one option for a route:
@startDocuBlockInline GRAPHKSP_03_Aberdeen_to_London
@EXAMPLE_ARANGOSH_OUTPUT{GRAPHKSP_03_Aberdeen_to_London}
db._query("FOR p IN OUTBOUND K_SHORTEST_PATHS 'places/Aberdeen' TO 'places/London' GRAPH 'shortestPathsGraph' LIMIT 3 RETURN p");
@END_EXAMPLE_ARANGOSH_OUTPUT
@endDocuBlock GRAPHKSP_03_Aberdeen_to_London
If we ask for routes that don't exist we get an empty result:
@startDocuBlockInline GRAPHKSP_04_Aberdeen_to_Toronto
@EXAMPLE_ARANGOSH_OUTPUT{GRAPHKSP_04_Aberdeen_to_Toronto}
db._query("FOR p IN OUTBOUND K_SHORTEST_PATHS 'places/Aberdeen' TO 'places/Toronto' GRAPH 'shortestPathsGraph' LIMIT 3 RETURN p");
@END_EXAMPLE_ARANGOSH_OUTPUT
@endDocuBlock GRAPHKSP_04_Aberdeen_to_Toronto
We can use the attribute *travelTime* that connections have as edge weights to
take into account which connections are quicker:
@startDocuBlockInline GRAPHKSP_05_StAndrews_to_Cologne
@EXAMPLE_ARANGOSH_OUTPUT{GRAPHKSP_05_StAndrews_to_Cologne}
db._query("FOR p IN OUTBOUND K_SHORTEST_PATHS 'places/StAndrews' TO 'places/Cologne' GRAPH 'shortestPathsGraph' OPTIONS { 'weightAttribute': 'travelTime', defaultWeight: '15'} LIMIT 3 RETURN p");
@END_EXAMPLE_ARANGOSH_OUTPUT
@endDocuBlock GRAPHKSP_05_StAndrews_to_Cologne
And finally clean up by removing the named graph:
@startDocuBlockInline GRAPHKSP_99_drop_graph
@EXAMPLE_ARANGOSH_OUTPUT{GRAPHKSP_99_drop_graph}
var examples = require("@arangodb/graph-examples/example-graph.js");
examples.dropGraph("kShortestPathsGraph");
~removeIgnoreCollection("places");
~removeIgnoreCollection("connections");
@END_EXAMPLE_ARANGOSH_OUTPUT
@endDocuBlock GRAPHKSP_99_drop_graph

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -50,6 +50,7 @@
* [Traversals explained](Graphs/TraversalsExplained.md)
* [Traversals](Graphs/Traversals.md)
* [Shortest Path](Graphs/ShortestPath.md)
* [k Shortest Paths](Graphs/KShortestPaths.md)
* [ArangoSearch Views](Views/README.md)
* [Usage](Views/ArangoSearch/README.md)
* [Advanced Features](Advanced/README.md)

View File

@ -62,6 +62,12 @@ AQL now allows the usage of floating point values without leading zeros, e.g.
`.1234`. Previous versions of ArangoDB required a leading zero in front of
the decimal separator, i.e `0.1234`.
### k Shortest Paths queries
AQL now allows to perform k Shortest Paths queries, that is, query a number of
paths of increasing length from a start vertex to a target vertex. For more details,
see the [k Shortest Paths documentation](../../AQL/Graphs/KShortestPaths.html).
Smart Joins
-----------

View File

@ -0,0 +1,404 @@
arangosh&gt; <span class="hljs-keyword">var</span> examples = <span class="hljs-built_in">require</span>(<span class="hljs-string">"@arangodb/graph-examples/example-graph.js"</span>);
arangosh&gt; <span class="hljs-keyword">var</span> graph = examples.loadGraph(<span class="hljs-string">"kShortestPathsGraph"</span>);
arangosh&gt; db.places.toArray();
[
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"York"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6e--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"York"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Cologne"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Cologne"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6u--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Cologne"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Birmingham"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Birmingham"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6m--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Birmingham"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"London"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6m--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"London"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"StAndrews"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/StAndrews"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6W--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"StAndrews"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Jasper"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Jasper"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7---_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Jasper"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Saskatoon"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Saskatoon"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H62--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Saskatoon"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Winnipeg"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Winnipeg"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6y--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Winnipeg"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Toronto"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Toronto"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6y--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Toronto"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Aberdeen"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Aberdeen"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6O--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Aberdeen"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Glasgow"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Glasgow"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6a--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Glasgow"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Vancouver"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Vancouver"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7---B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Vancouver"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Inverness"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Inverness"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6K--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Inverness"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Edmonton"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Edmonton"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H66--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Edmonton"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Edinburgh"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6W--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Edinburgh"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Brussels"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Brussels"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6q--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Brussels"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Carlisle"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6i--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Carlisle"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Leuchars"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6S--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Leuchars"</span>
}
]
arangosh&gt; db.connections.toArray();
[
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98528"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98528"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7S--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98612"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98612"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Edmonton"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Jasper"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8q--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">6</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98585"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98585"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Brussels"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8K--B"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.4</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98600"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98600"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Winnipeg"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Saskatoon"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8a--B"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">12</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98591"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98591"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Cologne"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Brussels"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8S--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98606"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98606"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Saskatoon"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Edmonton"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8i--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">12</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98549"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98549"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Glasgow"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7m--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98573"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98573"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/StAndrews"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8---B"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98534"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98534"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Glasgow"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7W--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98588"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98588"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Brussels"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Cologne"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8O--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">2</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98531"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98531"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7S--B"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.6666666666666666</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98558"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98558"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Birmingham"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7y--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">2</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98543"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98543"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7i--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.2857142857142857</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98570"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98570"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/StAndrews"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8---_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.2</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98582"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98582"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Brussels"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8K--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">2.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98597"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98597"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Winnipeg"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Toronto"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8a--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.027777777777777776</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98603"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98603"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Saskatoon"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Winnipeg"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8e--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.08333333333333333</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98555"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98555"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7u--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.4</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98621"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98621"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Vancouver"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Jasper"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8y--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.08333333333333333</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98609"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98609"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Edmonton"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Saskatoon"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8m--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.08333333333333333</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98615"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98615"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Jasper"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Edmonton"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8u--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.16666666666666666</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98576"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98576"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8C--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.8</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98552"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98552"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7q--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">2.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98567"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98567"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Birmingham"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H76--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.6666666666666666</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98537"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98537"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Glasgow"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7a--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98618"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98618"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Jasper"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Vancouver"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8u--B"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">12</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98579"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98579"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8G--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.5555555555555556</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98522"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98522"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Aberdeen"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7K--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98515"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98515"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Inverness"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Aberdeen"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7C--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">3</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98540"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98540"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7e--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">3.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98519"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98519"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Aberdeen"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Inverness"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7G--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.3333333333333333</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98564"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98564"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Birmingham"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H72--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98546"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98546"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Glasgow"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7i--B"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98561"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98561"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Birmingham"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7y--B"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98525"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98525"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Aberdeen"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7O--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.6666666666666666</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98594"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98594"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Toronto"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Winnipeg"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8W--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">36</span>
}
]

View File

@ -0,0 +1,150 @@
arangosh&gt; db._query(<span class="hljs-string">"FOR v, e IN OUTBOUND SHORTEST_PATH 'places/Aberdeen' TO 'places/London' GRAPH 'shortestPathsGraph' RETURN [v,e]"</span>);
[
[
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Aberdeen"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Aberdeen"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6O--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Aberdeen"</span>
},
<span class="hljs-literal">null</span>
],
[
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Leuchars"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6S--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Leuchars"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98522"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98522"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Aberdeen"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7K--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
}
],
[
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Edinburgh"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6W--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Edinburgh"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98528"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98528"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7S--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
}
],
[
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"York"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6e--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"York"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98540"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98540"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7e--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">3.5</span>
}
],
[
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"London"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6m--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"London"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98576"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98576"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8C--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.8</span>
}
]
]
[object ArangoQueryCursor, <span class="hljs-attr">count</span>: <span class="hljs-number">5</span>, <span class="hljs-attr">cached</span>: <span class="hljs-literal">false</span>, <span class="hljs-attr">hasMore</span>: <span class="hljs-literal">false</span>]
arangosh&gt; db._query(<span class="hljs-string">"FOR p IN OUTBOUND K_SHORTEST_PATHS 'places/Aberdeen' TO 'places/London' GRAPH 'shortestPathsGraph' LIMIT 1 RETURN p"</span>);
[
{
<span class="hljs-string">"edges"</span> : [
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98522"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98522"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Aberdeen"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7K--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98528"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98528"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7S--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98540"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98540"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7e--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">3.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98576"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98576"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8C--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.8</span>
}
],
<span class="hljs-string">"vertices"</span> : [
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Aberdeen"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Aberdeen"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6O--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Aberdeen"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Leuchars"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6S--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Leuchars"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Edinburgh"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6W--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Edinburgh"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"York"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6e--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"York"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"London"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6m--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"London"</span>
}
],
<span class="hljs-string">"weight"</span> : <span class="hljs-number">4</span>
}
]
[object ArangoQueryCursor, <span class="hljs-attr">count</span>: <span class="hljs-number">1</span>, <span class="hljs-attr">cached</span>: <span class="hljs-literal">false</span>, <span class="hljs-attr">hasMore</span>: <span class="hljs-literal">false</span>]

View File

@ -0,0 +1,267 @@
arangosh&gt; db._query(<span class="hljs-string">"FOR p IN OUTBOUND K_SHORTEST_PATHS 'places/Aberdeen' TO 'places/London' GRAPH 'shortestPathsGraph' LIMIT 3 RETURN p"</span>);
[
{
<span class="hljs-string">"edges"</span> : [
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98522"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98522"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Aberdeen"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7K--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98528"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98528"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7S--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98540"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98540"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7e--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">3.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98576"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98576"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8C--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.8</span>
}
],
<span class="hljs-string">"vertices"</span> : [
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Aberdeen"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Aberdeen"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6O--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Aberdeen"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Leuchars"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6S--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Leuchars"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Edinburgh"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6W--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Edinburgh"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"York"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6e--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"York"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"London"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6m--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"London"</span>
}
],
<span class="hljs-string">"weight"</span> : <span class="hljs-number">4</span>
},
{
<span class="hljs-string">"edges"</span> : [
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98522"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98522"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Aberdeen"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7K--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98528"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98528"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7S--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98540"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98540"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7e--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">3.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98555"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98555"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7u--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">0.4</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98558"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98558"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Birmingham"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7y--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">2</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98564"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98564"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Birmingham"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H72--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
}
],
<span class="hljs-string">"vertices"</span> : [
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Aberdeen"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Aberdeen"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6O--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Aberdeen"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Leuchars"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6S--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Leuchars"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Edinburgh"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6W--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Edinburgh"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"York"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6e--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"York"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Carlisle"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6i--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Carlisle"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Birmingham"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Birmingham"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6m--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Birmingham"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"London"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6m--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"London"</span>
}
],
<span class="hljs-string">"weight"</span> : <span class="hljs-number">6</span>
},
{
<span class="hljs-string">"edges"</span> : [
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98522"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98522"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Aberdeen"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7K--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98528"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98528"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7S--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98534"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98534"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Glasgow"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7W--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98546"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98546"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Glasgow"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7i--B"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98558"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98558"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Birmingham"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7y--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">2</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98564"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98564"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Birmingham"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H72--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
}
],
<span class="hljs-string">"vertices"</span> : [
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Aberdeen"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Aberdeen"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6O--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Aberdeen"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Leuchars"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6S--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Leuchars"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Edinburgh"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6W--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Edinburgh"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Glasgow"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Glasgow"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6a--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Glasgow"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Carlisle"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6i--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Carlisle"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Birmingham"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Birmingham"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6m--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Birmingham"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"London"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6m--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"London"</span>
}
],
<span class="hljs-string">"weight"</span> : <span class="hljs-number">6</span>
}
]
[object ArangoQueryCursor, <span class="hljs-attr">count</span>: <span class="hljs-number">3</span>, <span class="hljs-attr">cached</span>: <span class="hljs-literal">false</span>, <span class="hljs-attr">hasMore</span>: <span class="hljs-literal">false</span>]

View File

@ -0,0 +1,2 @@
arangosh&gt; db._query(<span class="hljs-string">"FOR p IN OUTBOUND K_SHORTEST_PATHS 'places/Aberdeen' TO 'places/Toronto' GRAPH 'shortestPathsGraph' LIMIT 3 RETURN p"</span>);
[object ArangoQueryCursor, <span class="hljs-attr">count</span>: <span class="hljs-number">0</span>, <span class="hljs-attr">cached</span>: <span class="hljs-literal">false</span>, <span class="hljs-attr">hasMore</span>: <span class="hljs-literal">false</span>]

View File

@ -0,0 +1,351 @@
arangosh&gt; db._query(<span class="hljs-string">"FOR p IN OUTBOUND K_SHORTEST_PATHS 'places/StAndrews' TO 'places/Cologne' GRAPH 'shortestPathsGraph' OPTIONS { 'weightAttribute': 'travelTime', defaultWeight: '15'} LIMIT 3 RETURN p"</span>);
[
{
<span class="hljs-string">"edges"</span> : [
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98573"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98573"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/StAndrews"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8---B"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98528"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98528"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7S--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98540"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98540"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7e--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">3.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98576"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98576"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8C--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.8</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98582"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98582"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Brussels"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8K--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">2.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98588"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98588"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Brussels"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Cologne"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8O--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">2</span>
}
],
<span class="hljs-string">"vertices"</span> : [
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"StAndrews"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/StAndrews"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6W--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"StAndrews"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Leuchars"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6S--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Leuchars"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Edinburgh"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6W--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Edinburgh"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"York"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6e--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"York"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"London"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6m--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"London"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Brussels"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Brussels"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6q--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Brussels"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Cologne"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Cologne"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6u--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Cologne"</span>
}
],
<span class="hljs-string">"weight"</span> : <span class="hljs-number">16.3</span>
},
{
<span class="hljs-string">"edges"</span> : [
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98573"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98573"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/StAndrews"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8---B"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98528"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98528"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7S--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98534"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98534"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Glasgow"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7W--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98546"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98546"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Glasgow"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7i--B"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98558"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98558"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Birmingham"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7y--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">2</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98564"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98564"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Birmingham"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H72--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98582"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98582"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Brussels"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8K--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">2.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98588"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98588"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Brussels"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Cologne"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8O--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">2</span>
}
],
<span class="hljs-string">"vertices"</span> : [
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"StAndrews"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/StAndrews"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6W--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"StAndrews"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Leuchars"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6S--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Leuchars"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Edinburgh"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6W--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Edinburgh"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Glasgow"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Glasgow"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6a--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Glasgow"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Carlisle"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6i--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Carlisle"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Birmingham"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Birmingham"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6m--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Birmingham"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"London"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6m--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"London"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Brussels"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Brussels"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6q--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Brussels"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Cologne"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Cologne"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6u--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Cologne"</span>
}
],
<span class="hljs-string">"weight"</span> : <span class="hljs-number">16.5</span>
},
{
<span class="hljs-string">"edges"</span> : [
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98573"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98573"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/StAndrews"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8---B"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98528"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98528"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7S--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98534"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98534"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Glasgow"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7W--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98546"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98546"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Glasgow"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7i--B"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98552"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98552"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H7q--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">2.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98576"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98576"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8C--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">1.8</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98582"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98582"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Brussels"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8K--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">2.5</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"98588"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"connections/98588"</span>,
<span class="hljs-string">"_from"</span> : <span class="hljs-string">"places/Brussels"</span>,
<span class="hljs-string">"_to"</span> : <span class="hljs-string">"places/Cologne"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H8O--_"</span>,
<span class="hljs-string">"travelTime"</span> : <span class="hljs-number">2</span>
}
],
<span class="hljs-string">"vertices"</span> : [
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"StAndrews"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/StAndrews"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6W--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"StAndrews"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Leuchars"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Leuchars"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6S--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Leuchars"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Edinburgh"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Edinburgh"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6W--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Edinburgh"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Glasgow"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Glasgow"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6a--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Glasgow"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Carlisle"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Carlisle"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6i--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Carlisle"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"York"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/York"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6e--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"York"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"London"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/London"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6m--B"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"London"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Brussels"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Brussels"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6q--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Brussels"</span>
},
{
<span class="hljs-string">"_key"</span> : <span class="hljs-string">"Cologne"</span>,
<span class="hljs-string">"_id"</span> : <span class="hljs-string">"places/Cologne"</span>,
<span class="hljs-string">"_rev"</span> : <span class="hljs-string">"_Yi4-H6u--_"</span>,
<span class="hljs-string">"label"</span> : <span class="hljs-string">"Cologne"</span>
}
],
<span class="hljs-string">"weight"</span> : <span class="hljs-number">17.3</span>
}
]
[object ArangoQueryCursor, <span class="hljs-attr">count</span>: <span class="hljs-number">3</span>, <span class="hljs-attr">cached</span>: <span class="hljs-literal">false</span>, <span class="hljs-attr">hasMore</span>: <span class="hljs-literal">false</span>]

View File

@ -0,0 +1,2 @@
arangosh&gt; <span class="hljs-keyword">var</span> examples = <span class="hljs-built_in">require</span>(<span class="hljs-string">"@arangodb/graph-examples/example-graph.js"</span>);
arangosh&gt; examples.dropGraph(<span class="hljs-string">"kShortestPathsGraph"</span>);

View File

@ -426,6 +426,60 @@ var createTraversalGraph = function () {
graph.edges.save('circles/J', 'circles/K', {theFalse: false, theTruth: true, 'label': 'right_zup'});
};
var createKShortestPathsGraph = function() {
var graph_module = require('@arangodb/general-graph');
var graph = graph_module._create('shortestPathsGraph', [
graph_module._relation('connections', 'places', ['places'])]);
var places = [ "Inverness"
, "Aberdeen"
, "Leuchars"
, "StAndrews"
, "Edinburgh"
, "Glasgow"
, "York"
, "Carlisle"
, "Birmingham"
, "London"
, "Brussels"
, "Cologne"
, "Toronto"
, "Winnipeg"
, "Saskatoon"
, "Edmonton"
, "Jasper"
, "Vancouver" ];
var connections = [
[ "Inverness", "Aberdeen", 3, 2.5 ]
, [ "Aberdeen", "Leuchars", 1.5, 1 ]
, [ "Leuchars", "Edinburgh", 1.5, 3 ]
, [ "Edinburgh", "Glasgow", 1, 1 ]
, [ "Edinburgh", "York", 3.5, 4 ]
, [ "Glasgow", "Carlisle", 1, 1 ]
, [ "Carlisle", "York", 2.5, 3.5 ]
, [ "Carlisle", "Birmingham", 2.0, 1 ]
, [ "Birmingham", "London", 1.5, 2.5 ]
, [ "Leuchars", "StAndrews", 0.2, 0.2 ]
, [ "York", "London", 1.8, 2.0 ]
, [ "London", "Brussels", 2.5, 3.5 ]
, [ "Brussels", "Cologne", 2, 1.5 ]
, [ "Toronto", "Winnipeg", 36, 35 ]
, [ "Winnipeg", "Saskatoon", 12, 5 ]
, [ "Saskatoon", "Edmonton", 12, 17 ]
, [ "Edmonton", "Jasper", 6, 5 ]
, [ "Jasper", "Vancouver", 12, 13 ] ];
for (p of places) {
graph.places.save({ _key: p, label: p});
}
for (c of connections) {
graph.connections.save('places/' + c[0], 'places/' + c[1], {'travelTime': c[2]});
graph.connections.save('places/' + c[1], 'places/' + c[0], {'travelTime': c[3]});
}
return graph;
};
var knownGraphs = {
'knows_graph': {create: createTraversalExample, dependencies: [
'knows', 'persons'
@ -447,6 +501,9 @@ var knownGraphs = {
]},
'traversalGraph': {create: createTraversalGraph, dependencies: [
'edges', 'circles'
]},
'kShortestPathsGraph': {create: createKShortestPathsGraph, dependencies: [
'places', 'connections'
]}
};