HTTP Interface for Traversals
Traversals
ArangoDB's graph traversals are executed on the server. Traversals can be initiated by clients by sending the traversal description for execution to the server.
Traversals in ArangoDB are used to walk over a graph stored in one edge collection. It can easily be described which edges of the graph should be followed and which actions should be performed on each visited vertex. Furthermore the ordering of visiting the nodes can be specified, for instance depth-first or breadth-first search are offered.
Executing Traversals via HTTP
executes a traversal
execute a server-side traversal
POST /_api/traversal
Starts a traversal starting from a given vertex and following. edges contained in a given edgeCollection. The request must contain the following attributes.
A JSON object with these properties is required:
- sort: body (JavaScript) code of a custom comparison function for the edges. The signature of this function is (l, r) -> integer (where l and r are edges) and must return -1 if l is smaller than, +1 if l is greater than, and 0 if l and r are equal. The reason for this is the following: The order of edges returned for a certain vertex is undefined. This is because there is no natural order of edges for a vertex with multiple connected edges. To explicitly define the order in which edges on the vertex are followed, you can specify an edge comparator function with this attribute. Note that the value here has to be a string to conform to the JSON standard, which in turn is parsed as function body on the server side. Furthermore note that this attribute is only used for the standard expanders. If you use your custom expander you have to do the sorting yourself within the expander code.
- direction: direction for traversal
- if set, must be either "outbound", "inbound", or "any"
- if not set, the expander attribute must be specified
- minDepth: ANDed with any existing filters): visits only nodes in at least the given depth
- startVertex: id of the startVertex, e.g. "users/foo".
- visitor: body (JavaScript) code of custom visitor function function signature: (config, result, vertex, path, connected) -> void The visitor function can do anything, but its return value is ignored. To populate a result, use the result variable by reference. Note that the connected argument is only populated when the order attribute is set to "preorder-expander".
- itemOrder: item iteration order can be "forward" or "backward"
- strategy: traversal strategy can be "depthfirst" or "breadthfirst"
- filter: default is to include all nodes:
body (JavaScript code) of custom filter function
function signature: (config, vertex, path) -> mixed
can return four different string values:
- "exclude" -> this vertex will not be visited.
- "prune" -> the edges of this vertex will not be followed.
- "" or undefined -> visit the vertex and follow it's edges.
- Array -> containing any combination of the above. If there is at least one "exclude" or "prune" respectivly is contained, it's effect will occur.
- init: body (JavaScript) code of custom result initialization function function signature: (config, result) -> void initialize any values in result with what is required
- maxIterations: Maximum number of iterations in each traversal. This number can be set to prevent endless loops in traversal of cyclic graphs. When a traversal performs as many iterations as the maxIterations value, the traversal will abort with an error. If maxIterations is not set, a server-defined value may be used.
- maxDepth: ANDed with any existing filters visits only nodes in at most the given depth
- uniqueness: specifies uniqueness for vertices and edges visited.
If set, must be an object like this:
"uniqueness": {"vertices": "none"|"global"|"path", "edges": "none"|"global"|"path"}
- order: traversal order can be "preorder", "postorder" or "preorder-expander"
- graphName: name of the graph that contains the edges. Either edgeCollection or graphName has to be given. In case both values are set the graphName is prefered.
- expander: body (JavaScript) code of custom expander function must be set if direction attribute is not set function signature: (config, vertex, path) -> array expander must return an array of the connections for vertex each connection is an object with the attributes edge and vertex
- edgeCollection: name of the collection that contains the edges.
If the Traversal is successfully executed HTTP 200 will be returned. Additionally the result object will be returned by the traversal.
For successful traversals, the returned JSON object has the following properties:
error: boolean flag to indicate if an error occurred (false in this case)
code: the HTTP status code
result: the return value of the traversal
If the traversal specification is either missing or malformed, the server will respond with HTTP 400.
The body of the response will then contain a JSON object with additional error details. The object has the following attributes:
error: boolean flag to indicate that an error occurred (true in this case)
code: the HTTP status code
errorNum: the server error number
errorMessage: a descriptive error message
Example:
In the following examples the underlying graph will contain five persons Alice, Bob, Charlie, Dave and Eve. We will have the following directed relations:
- Alice knows Bob
- Bob knows Charlie
- Bob knows Dave
- Eve knows Alice
- Eve knows Bob
The starting vertex will always be Alice.
Follow only outbound edges
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhvG---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dhvG--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dhvG--A",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dhvG--B",
"name" : "Dave"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhvG---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13619",
"_id" : "knows/13619",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dhvG--D",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhvG---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dhvG--_",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "13619",
"_id" : "knows/13619",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dhvG--D",
"vertex" : "alice"
},
{
"_key" : "13623",
"_id" : "knows/13623",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dhvK---",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhvG---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dhvG--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dhvG--A",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "13619",
"_id" : "knows/13619",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dhvG--D",
"vertex" : "alice"
},
{
"_key" : "13626",
"_id" : "knows/13626",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dhvK--_",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhvG---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dhvG--_",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dhvG--B",
"name" : "Dave"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
Example:
Follow only inbound edges
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "inbound"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg2m---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dg2q--A",
"name" : "Eve"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg2m---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13298",
"_id" : "knows/13298",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dg2y---",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg2m---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dg2q--A",
"name" : "Eve"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
Example:
Follow any direction of edges
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"uniqueness" : {
"vertices" : "none",
"edges" : "global"
}
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfWa--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dfWe---",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dfWe--_",
"name" : "Dave"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfWe--A",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "12751",
"_id" : "knows/12751",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfWi---",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfWa--_",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "12751",
"_id" : "knows/12751",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfWi---",
"vertex" : "alice"
},
{
"_key" : "12755",
"_id" : "knows/12755",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dfWi--_",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfWa--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dfWe---",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "12751",
"_id" : "knows/12751",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfWi---",
"vertex" : "alice"
},
{
"_key" : "12758",
"_id" : "knows/12758",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dfWm---",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfWa--_",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dfWe--_",
"name" : "Dave"
}
]
},
{
"edges" : [
{
"_key" : "12751",
"_id" : "knows/12751",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfWi---",
"vertex" : "alice"
},
{
"_key" : "12764",
"_id" : "knows/12764",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dfWm--A",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfWa--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfWe--A",
"name" : "Eve"
}
]
},
{
"edges" : [
{
"_key" : "12751",
"_id" : "knows/12751",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfWi---",
"vertex" : "alice"
},
{
"_key" : "12764",
"_id" : "knows/12764",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dfWm--A",
"vertex" : "eve"
},
{
"_key" : "12761",
"_id" : "knows/12761",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dfWm--_",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfWa--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfWe--A",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
Example:
Excluding Charlie and Bob
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"filter" : "if (vertex.name === \"Bob\" || vertex.name === \"Charlie\") { return \"exclude\";}return;"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgZu--_",
"name" : "Alice"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dgZy--A",
"name" : "Dave"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgZu--_",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13137",
"_id" : "knows/13137",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgZ2--_",
"vertex" : "alice"
},
{
"_key" : "13144",
"_id" : "knows/13144",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dgZ6---",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgZu--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgZy---",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dgZy--A",
"name" : "Dave"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
Example:
Do not follow edges from Bob
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"filter" : "if (vertex.name === \"Bob\") {return \"prune\";}return;"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgpe---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgpe--_",
"name" : "Bob"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgpe---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13215",
"_id" : "knows/13215",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgpm---",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgpe---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgpe--_",
"name" : "Bob"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
Example:
Visit only nodes in a depth of at least 2
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"minDepth" : 2
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dhga--B",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dhge---",
"name" : "Dave"
}
],
"paths" : [
{
"edges" : [
{
"_key" : "13541",
"_id" : "knows/13541",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dhge--A",
"vertex" : "alice"
},
{
"_key" : "13545",
"_id" : "knows/13545",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dhge--B",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhga--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dhga--A",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dhga--B",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "13541",
"_id" : "knows/13541",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dhge--A",
"vertex" : "alice"
},
{
"_key" : "13548",
"_id" : "knows/13548",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dhge--C",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhga--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dhga--A",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dhge---",
"name" : "Dave"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
Example:
Visit only nodes in a depth of at most 1
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"maxDepth" : 1
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhDq---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dhDq--_",
"name" : "Bob"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhDq---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13362",
"_id" : "knows/13362",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dhDy---",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhDq---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dhDq--_",
"name" : "Bob"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
Example:
Using a visitor function to return vertex ids only
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"visitor" : "result.visited.vertices.push(vertex._id);"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
"persons/alice",
"persons/bob",
"persons/charlie",
"persons/dave"
],
"paths" : [ ]
}
},
"error" : false,
"code" : 200
}
Example:
Count all visited nodes and return a list of nodes only
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"init" : "result.visited = 0; result.myVertices = [ ];",
"visitor" : "result.visited++; result.myVertices.push(vertex);"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : 4,
"myVertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0diI6---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0diI6--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0diI6--A",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0diI6--B",
"name" : "Dave"
}
]
},
"error" : false,
"code" : 200
}
Example:
Expand only inbound edges of Alice and outbound edges of Eve
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"expander" : "var connections = [ ];if (vertex.name === \"Alice\") {config.datasource.getInEdges(vertex).forEach(function (e) {connections.push({ vertex: require(\"internal\").db._document(e._from), edge: e});});}if (vertex.name === \"Eve\") {config.datasource.getOutEdges(vertex).forEach(function (e) {connections.push({vertex: require(\"internal\").db._document(e._to), edge: e});});}return connections;"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0diVW--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0diVa--_",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0diVW--A",
"name" : "Bob"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0diVW--_",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13889",
"_id" : "knows/13889",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0diVe---",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0diVW--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0diVa--_",
"name" : "Eve"
}
]
},
{
"edges" : [
{
"_key" : "13889",
"_id" : "knows/13889",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0diVe---",
"vertex" : "eve"
},
{
"_key" : "13892",
"_id" : "knows/13892",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0diVe--_",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0diVW--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0diVa--_",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0diVW--A",
"name" : "Bob"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
Example:
Follow the depthfirst strategy
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"strategy" : "depthfirst"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dgA----",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dgA---_",
"name" : "Dave"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dgA----",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dgA---_",
"name" : "Dave"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "12944",
"_id" : "knows/12944",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAC--_",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "12944",
"_id" : "knows/12944",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAC--_",
"vertex" : "alice"
},
{
"_key" : "12948",
"_id" : "knows/12948",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dgAG---",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dgA----",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "12944",
"_id" : "knows/12944",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAC--_",
"vertex" : "alice"
},
{
"_key" : "12951",
"_id" : "knows/12951",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dgAG--_",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dgA---_",
"name" : "Dave"
}
]
},
{
"edges" : [
{
"_key" : "12944",
"_id" : "knows/12944",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAC--_",
"vertex" : "alice"
},
{
"_key" : "12957",
"_id" : "knows/12957",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAK--_",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
}
]
},
{
"edges" : [
{
"_key" : "12944",
"_id" : "knows/12944",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAC--_",
"vertex" : "alice"
},
{
"_key" : "12957",
"_id" : "knows/12957",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAK--_",
"vertex" : "eve"
},
{
"_key" : "12954",
"_id" : "knows/12954",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dgAK---",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "12954",
"_id" : "knows/12954",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dgAK---",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
}
]
},
{
"edges" : [
{
"_key" : "12954",
"_id" : "knows/12954",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dgAK---",
"vertex" : "eve"
},
{
"_key" : "12957",
"_id" : "knows/12957",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAK--_",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "12954",
"_id" : "knows/12954",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dgAK---",
"vertex" : "eve"
},
{
"_key" : "12957",
"_id" : "knows/12957",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAK--_",
"vertex" : "eve"
},
{
"_key" : "12948",
"_id" : "knows/12948",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dgAG---",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dgA----",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "12954",
"_id" : "knows/12954",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dgAK---",
"vertex" : "eve"
},
{
"_key" : "12957",
"_id" : "knows/12957",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAK--_",
"vertex" : "eve"
},
{
"_key" : "12951",
"_id" : "knows/12951",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dgAG--_",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dgA---_",
"name" : "Dave"
}
]
},
{
"edges" : [
{
"_key" : "12954",
"_id" : "knows/12954",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dgAK---",
"vertex" : "eve"
},
{
"_key" : "12957",
"_id" : "knows/12957",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAK--_",
"vertex" : "eve"
},
{
"_key" : "12944",
"_id" : "knows/12944",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAC--_",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
Example:
Using postorder ordering
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"order" : "postorder"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dh6m--B",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dh6m--C",
"name" : "Dave"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dh6m--B",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dh6m--C",
"name" : "Dave"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
}
],
"paths" : [
{
"edges" : [
{
"_key" : "13697",
"_id" : "knows/13697",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--_",
"vertex" : "alice"
},
{
"_key" : "13701",
"_id" : "knows/13701",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dh6q--A",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dh6m--B",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "13697",
"_id" : "knows/13697",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--_",
"vertex" : "alice"
},
{
"_key" : "13704",
"_id" : "knows/13704",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dh6q--B",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dh6m--C",
"name" : "Dave"
}
]
},
{
"edges" : [
{
"_key" : "13697",
"_id" : "knows/13697",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--_",
"vertex" : "alice"
},
{
"_key" : "13710",
"_id" : "knows/13710",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--D",
"vertex" : "eve"
},
{
"_key" : "13707",
"_id" : "knows/13707",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dh6q--C",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13697",
"_id" : "knows/13697",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--_",
"vertex" : "alice"
},
{
"_key" : "13710",
"_id" : "knows/13710",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--D",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
}
]
},
{
"edges" : [
{
"_key" : "13697",
"_id" : "knows/13697",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--_",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "13707",
"_id" : "knows/13707",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dh6q--C",
"vertex" : "eve"
},
{
"_key" : "13710",
"_id" : "knows/13710",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--D",
"vertex" : "eve"
},
{
"_key" : "13701",
"_id" : "knows/13701",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dh6q--A",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dh6m--B",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "13707",
"_id" : "knows/13707",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dh6q--C",
"vertex" : "eve"
},
{
"_key" : "13710",
"_id" : "knows/13710",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--D",
"vertex" : "eve"
},
{
"_key" : "13704",
"_id" : "knows/13704",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dh6q--B",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dh6m--C",
"name" : "Dave"
}
]
},
{
"edges" : [
{
"_key" : "13707",
"_id" : "knows/13707",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dh6q--C",
"vertex" : "eve"
},
{
"_key" : "13710",
"_id" : "knows/13710",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--D",
"vertex" : "eve"
},
{
"_key" : "13697",
"_id" : "knows/13697",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--_",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13707",
"_id" : "knows/13707",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dh6q--C",
"vertex" : "eve"
},
{
"_key" : "13710",
"_id" : "knows/13710",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--D",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "13707",
"_id" : "knows/13707",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dh6q--C",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
}
]
},
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
Example:
Using backward item-ordering:
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"itemOrder" : "backward"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dfxi--_",
"name" : "Dave"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dfxi---",
"name" : "Charlie"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dfxi--_",
"name" : "Dave"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dfxi---",
"name" : "Charlie"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "12850",
"_id" : "knows/12850",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dfxq---",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
}
]
},
{
"edges" : [
{
"_key" : "12850",
"_id" : "knows/12850",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dfxq---",
"vertex" : "eve"
},
{
"_key" : "12853",
"_id" : "knows/12853",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxq--_",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "12850",
"_id" : "knows/12850",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dfxq---",
"vertex" : "eve"
},
{
"_key" : "12853",
"_id" : "knows/12853",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxq--_",
"vertex" : "eve"
},
{
"_key" : "12840",
"_id" : "knows/12840",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxm---",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "12850",
"_id" : "knows/12850",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dfxq---",
"vertex" : "eve"
},
{
"_key" : "12853",
"_id" : "knows/12853",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxq--_",
"vertex" : "eve"
},
{
"_key" : "12847",
"_id" : "knows/12847",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dfxm--A",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dfxi--_",
"name" : "Dave"
}
]
},
{
"edges" : [
{
"_key" : "12850",
"_id" : "knows/12850",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dfxq---",
"vertex" : "eve"
},
{
"_key" : "12853",
"_id" : "knows/12853",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxq--_",
"vertex" : "eve"
},
{
"_key" : "12844",
"_id" : "knows/12844",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dfxm--_",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dfxi---",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "12840",
"_id" : "knows/12840",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxm---",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "12840",
"_id" : "knows/12840",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxm---",
"vertex" : "alice"
},
{
"_key" : "12853",
"_id" : "knows/12853",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxq--_",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
}
]
},
{
"edges" : [
{
"_key" : "12840",
"_id" : "knows/12840",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxm---",
"vertex" : "alice"
},
{
"_key" : "12853",
"_id" : "knows/12853",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxq--_",
"vertex" : "eve"
},
{
"_key" : "12850",
"_id" : "knows/12850",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dfxq---",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "12840",
"_id" : "knows/12840",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxm---",
"vertex" : "alice"
},
{
"_key" : "12847",
"_id" : "knows/12847",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dfxm--A",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dfxi--_",
"name" : "Dave"
}
]
},
{
"edges" : [
{
"_key" : "12840",
"_id" : "knows/12840",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxm---",
"vertex" : "alice"
},
{
"_key" : "12844",
"_id" : "knows/12844",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dfxm--_",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dfxi---",
"name" : "Charlie"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
Example:
Edges should only be included once globally, but nodes are included every time they are visited
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"uniqueness" : {
"vertices" : "none",
"edges" : "global"
}
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgNO--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dgNO--A",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dgNS---",
"name" : "Dave"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgNS--_",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13048",
"_id" : "knows/13048",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgNS--A",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgNO--_",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "13048",
"_id" : "knows/13048",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgNS--A",
"vertex" : "alice"
},
{
"_key" : "13052",
"_id" : "knows/13052",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dgNS--B",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgNO--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dgNO--A",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "13048",
"_id" : "knows/13048",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgNS--A",
"vertex" : "alice"
},
{
"_key" : "13055",
"_id" : "knows/13055",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dgNW---",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgNO--_",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dgNS---",
"name" : "Dave"
}
]
},
{
"edges" : [
{
"_key" : "13048",
"_id" : "knows/13048",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgNS--A",
"vertex" : "alice"
},
{
"_key" : "13061",
"_id" : "knows/13061",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dgNW--A",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgNO--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgNS--_",
"name" : "Eve"
}
]
},
{
"edges" : [
{
"_key" : "13048",
"_id" : "knows/13048",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgNS--A",
"vertex" : "alice"
},
{
"_key" : "13061",
"_id" : "knows/13061",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dgNW--A",
"vertex" : "eve"
},
{
"_key" : "13058",
"_id" : "knows/13058",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dgNW--_",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgNO--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgNS--_",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
Example:
If the underlying graph is cyclic, maxIterations should be set
The underlying graph has two vertices Alice and Bob. With the directed edges:
- Alice knows Bob
- Bob knows Alice
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"uniqueness" : {
"vertices" : "none",
"edges" : "none"
},
"maxIterations" : 5
}
EOF
HTTP/1.1 500 Internal Server Error
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"error" : true,
"code" : 500,
"errorNum" : 1909,
"errorMessage" : "too many iterations - try increasing the value of 'maxIterations'"
}
Return Codes
- 200: If the traversal is fully executed HTTP 200 will be returned.
- 400: If the traversal specification is either missing or malformed, the server will respond with HTTP 400.
- 404: The server will responded with HTTP 404 if the specified edge collection does not exist, or the specified start vertex cannot be found.
- 500: The server will responded with HTTP 500 when an error occurs inside the traversal or if a traversal performs more than maxIterations iterations.
Examples
In the following examples the underlying graph will contain five persons Alice, Bob, Charlie, Dave and Eve. We will have the following directed relations:
- Alice knows Bob
- Bob knows Charlie
- Bob knows Dave
- Eve knows Alice
- Eve knows Bob The starting vertex will always be Alice. Follow only outbound edges
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhvG---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dhvG--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dhvG--A",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dhvG--B",
"name" : "Dave"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhvG---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13619",
"_id" : "knows/13619",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dhvG--D",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhvG---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dhvG--_",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "13619",
"_id" : "knows/13619",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dhvG--D",
"vertex" : "alice"
},
{
"_key" : "13623",
"_id" : "knows/13623",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dhvK---",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhvG---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dhvG--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dhvG--A",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "13619",
"_id" : "knows/13619",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dhvG--D",
"vertex" : "alice"
},
{
"_key" : "13626",
"_id" : "knows/13626",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dhvK--_",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhvG---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dhvG--_",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dhvG--B",
"name" : "Dave"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
Follow only inbound edges
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "inbound"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg2m---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dg2q--A",
"name" : "Eve"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg2m---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13298",
"_id" : "knows/13298",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dg2y---",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg2m---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dg2q--A",
"name" : "Eve"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "inbound"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
Follow any direction of edges
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"uniqueness" : {
"vertices" : "none",
"edges" : "global"
}
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfWa--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dfWe---",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dfWe--_",
"name" : "Dave"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfWe--A",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "12751",
"_id" : "knows/12751",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfWi---",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfWa--_",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "12751",
"_id" : "knows/12751",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfWi---",
"vertex" : "alice"
},
{
"_key" : "12755",
"_id" : "knows/12755",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dfWi--_",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfWa--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dfWe---",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "12751",
"_id" : "knows/12751",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfWi---",
"vertex" : "alice"
},
{
"_key" : "12758",
"_id" : "knows/12758",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dfWm---",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfWa--_",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dfWe--_",
"name" : "Dave"
}
]
},
{
"edges" : [
{
"_key" : "12751",
"_id" : "knows/12751",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfWi---",
"vertex" : "alice"
},
{
"_key" : "12764",
"_id" : "knows/12764",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dfWm--A",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfWa--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfWe--A",
"name" : "Eve"
}
]
},
{
"edges" : [
{
"_key" : "12751",
"_id" : "knows/12751",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfWi---",
"vertex" : "alice"
},
{
"_key" : "12764",
"_id" : "knows/12764",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dfWm--A",
"vertex" : "eve"
},
{
"_key" : "12761",
"_id" : "knows/12761",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dfWm--_",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfWa--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfWe--A",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfWa---",
"name" : "Alice"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"uniqueness" : {
"vertices" : "none",
"edges" : "global"
}
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
Excluding Charlie and Bob
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"filter" : "if (vertex.name === \"Bob\" || vertex.name === \"Charlie\") { return \"exclude\";}return;"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgZu--_",
"name" : "Alice"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dgZy--A",
"name" : "Dave"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgZu--_",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13137",
"_id" : "knows/13137",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgZ2--_",
"vertex" : "alice"
},
{
"_key" : "13144",
"_id" : "knows/13144",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dgZ6---",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgZu--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgZy---",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dgZy--A",
"name" : "Dave"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"filter" : "if (vertex.name === \"Bob\" || vertex.name === \"Charlie\") { return \"exclude\";}return;"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
Do not follow edges from Bob
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"filter" : "if (vertex.name === \"Bob\") {return \"prune\";}return;"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgpe---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgpe--_",
"name" : "Bob"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgpe---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13215",
"_id" : "knows/13215",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgpm---",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgpe---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgpe--_",
"name" : "Bob"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"filter" : "if (vertex.name === \"Bob\") {return \"prune\";}return;"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
Visit only nodes in a depth of at least 2
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"minDepth" : 2
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dhga--B",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dhge---",
"name" : "Dave"
}
],
"paths" : [
{
"edges" : [
{
"_key" : "13541",
"_id" : "knows/13541",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dhge--A",
"vertex" : "alice"
},
{
"_key" : "13545",
"_id" : "knows/13545",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dhge--B",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhga--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dhga--A",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dhga--B",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "13541",
"_id" : "knows/13541",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dhge--A",
"vertex" : "alice"
},
{
"_key" : "13548",
"_id" : "knows/13548",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dhge--C",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhga--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dhga--A",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dhge---",
"name" : "Dave"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"minDepth" : 2
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
Visit only nodes in a depth of at most 1
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"maxDepth" : 1
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhDq---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dhDq--_",
"name" : "Bob"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhDq---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13362",
"_id" : "knows/13362",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dhDy---",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dhDq---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dhDq--_",
"name" : "Bob"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"maxDepth" : 1
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
Using a visitor function to return vertex ids only
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"visitor" : "result.visited.vertices.push(vertex._id);"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
"persons/alice",
"persons/bob",
"persons/charlie",
"persons/dave"
],
"paths" : [ ]
}
},
"error" : false,
"code" : 200
}
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"visitor" : "result.visited.vertices.push(vertex._id);"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
Count all visited nodes and return a list of nodes only
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"init" : "result.visited = 0; result.myVertices = [ ];",
"visitor" : "result.visited++; result.myVertices.push(vertex);"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : 4,
"myVertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0diI6---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0diI6--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0diI6--A",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0diI6--B",
"name" : "Dave"
}
]
},
"error" : false,
"code" : 200
}
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "outbound",
"init" : "result.visited = 0; result.myVertices = [ ];",
"visitor" : "result.visited++; result.myVertices.push(vertex);"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
Expand only inbound edges of Alice and outbound edges of Eve
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"expander" : "var connections = [ ];if (vertex.name === \"Alice\") {config.datasource.getInEdges(vertex).forEach(function (e) {connections.push({ vertex: require(\"internal\").db._document(e._from), edge: e});});}if (vertex.name === \"Eve\") {config.datasource.getOutEdges(vertex).forEach(function (e) {connections.push({vertex: require(\"internal\").db._document(e._to), edge: e});});}return connections;"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0diVW--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0diVa--_",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0diVW--A",
"name" : "Bob"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0diVW--_",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13889",
"_id" : "knows/13889",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0diVe---",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0diVW--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0diVa--_",
"name" : "Eve"
}
]
},
{
"edges" : [
{
"_key" : "13889",
"_id" : "knows/13889",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0diVe---",
"vertex" : "eve"
},
{
"_key" : "13892",
"_id" : "knows/13892",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0diVe--_",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0diVW--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0diVa--_",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0diVW--A",
"name" : "Bob"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"expander" : "var connections = [ ];if (vertex.name === \"Alice\") {config.datasource.getInEdges(vertex).forEach(function (e) {connections.push({ vertex: require(\"internal\").db._document(e._from), edge: e});});}if (vertex.name === \"Eve\") {config.datasource.getOutEdges(vertex).forEach(function (e) {connections.push({vertex: require(\"internal\").db._document(e._to), edge: e});});}return connections;"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
Follow the depthfirst strategy
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"strategy" : "depthfirst"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dgA----",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dgA---_",
"name" : "Dave"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dgA----",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dgA---_",
"name" : "Dave"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "12944",
"_id" : "knows/12944",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAC--_",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "12944",
"_id" : "knows/12944",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAC--_",
"vertex" : "alice"
},
{
"_key" : "12948",
"_id" : "knows/12948",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dgAG---",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dgA----",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "12944",
"_id" : "knows/12944",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAC--_",
"vertex" : "alice"
},
{
"_key" : "12951",
"_id" : "knows/12951",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dgAG--_",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dgA---_",
"name" : "Dave"
}
]
},
{
"edges" : [
{
"_key" : "12944",
"_id" : "knows/12944",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAC--_",
"vertex" : "alice"
},
{
"_key" : "12957",
"_id" : "knows/12957",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAK--_",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
}
]
},
{
"edges" : [
{
"_key" : "12944",
"_id" : "knows/12944",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAC--_",
"vertex" : "alice"
},
{
"_key" : "12957",
"_id" : "knows/12957",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAK--_",
"vertex" : "eve"
},
{
"_key" : "12954",
"_id" : "knows/12954",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dgAK---",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "12954",
"_id" : "knows/12954",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dgAK---",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
}
]
},
{
"edges" : [
{
"_key" : "12954",
"_id" : "knows/12954",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dgAK---",
"vertex" : "eve"
},
{
"_key" : "12957",
"_id" : "knows/12957",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAK--_",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "12954",
"_id" : "knows/12954",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dgAK---",
"vertex" : "eve"
},
{
"_key" : "12957",
"_id" : "knows/12957",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAK--_",
"vertex" : "eve"
},
{
"_key" : "12948",
"_id" : "knows/12948",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dgAG---",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dgA----",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "12954",
"_id" : "knows/12954",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dgAK---",
"vertex" : "eve"
},
{
"_key" : "12957",
"_id" : "knows/12957",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAK--_",
"vertex" : "eve"
},
{
"_key" : "12951",
"_id" : "knows/12951",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dgAG--_",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dgA---_",
"name" : "Dave"
}
]
},
{
"edges" : [
{
"_key" : "12954",
"_id" : "knows/12954",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dgAK---",
"vertex" : "eve"
},
{
"_key" : "12957",
"_id" : "knows/12957",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAK--_",
"vertex" : "eve"
},
{
"_key" : "12944",
"_id" : "knows/12944",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgAC--_",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgAC---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dg_6--_",
"name" : "Bob"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dg_6---",
"name" : "Alice"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"strategy" : "depthfirst"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
Using postorder ordering
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"order" : "postorder"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dh6m--B",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dh6m--C",
"name" : "Dave"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dh6m--B",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dh6m--C",
"name" : "Dave"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
}
],
"paths" : [
{
"edges" : [
{
"_key" : "13697",
"_id" : "knows/13697",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--_",
"vertex" : "alice"
},
{
"_key" : "13701",
"_id" : "knows/13701",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dh6q--A",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dh6m--B",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "13697",
"_id" : "knows/13697",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--_",
"vertex" : "alice"
},
{
"_key" : "13704",
"_id" : "knows/13704",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dh6q--B",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dh6m--C",
"name" : "Dave"
}
]
},
{
"edges" : [
{
"_key" : "13697",
"_id" : "knows/13697",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--_",
"vertex" : "alice"
},
{
"_key" : "13710",
"_id" : "knows/13710",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--D",
"vertex" : "eve"
},
{
"_key" : "13707",
"_id" : "knows/13707",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dh6q--C",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13697",
"_id" : "knows/13697",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--_",
"vertex" : "alice"
},
{
"_key" : "13710",
"_id" : "knows/13710",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--D",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
}
]
},
{
"edges" : [
{
"_key" : "13697",
"_id" : "knows/13697",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--_",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "13707",
"_id" : "knows/13707",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dh6q--C",
"vertex" : "eve"
},
{
"_key" : "13710",
"_id" : "knows/13710",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--D",
"vertex" : "eve"
},
{
"_key" : "13701",
"_id" : "knows/13701",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dh6q--A",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dh6m--B",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "13707",
"_id" : "knows/13707",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dh6q--C",
"vertex" : "eve"
},
{
"_key" : "13710",
"_id" : "knows/13710",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--D",
"vertex" : "eve"
},
{
"_key" : "13704",
"_id" : "knows/13704",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dh6q--B",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dh6m--C",
"name" : "Dave"
}
]
},
{
"edges" : [
{
"_key" : "13707",
"_id" : "knows/13707",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dh6q--C",
"vertex" : "eve"
},
{
"_key" : "13710",
"_id" : "knows/13710",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--D",
"vertex" : "eve"
},
{
"_key" : "13697",
"_id" : "knows/13697",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--_",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13707",
"_id" : "knows/13707",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dh6q--C",
"vertex" : "eve"
},
{
"_key" : "13710",
"_id" : "knows/13710",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dh6q--D",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dh6m--A",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "13707",
"_id" : "knows/13707",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dh6q--C",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dh6q---",
"name" : "Eve"
}
]
},
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dh6m--_",
"name" : "Alice"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"order" : "postorder"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
Using backward item-ordering:
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"itemOrder" : "backward"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dfxi--_",
"name" : "Dave"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dfxi---",
"name" : "Charlie"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dfxi--_",
"name" : "Dave"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dfxi---",
"name" : "Charlie"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "12850",
"_id" : "knows/12850",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dfxq---",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
}
]
},
{
"edges" : [
{
"_key" : "12850",
"_id" : "knows/12850",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dfxq---",
"vertex" : "eve"
},
{
"_key" : "12853",
"_id" : "knows/12853",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxq--_",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "12850",
"_id" : "knows/12850",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dfxq---",
"vertex" : "eve"
},
{
"_key" : "12853",
"_id" : "knows/12853",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxq--_",
"vertex" : "eve"
},
{
"_key" : "12840",
"_id" : "knows/12840",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxm---",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "12850",
"_id" : "knows/12850",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dfxq---",
"vertex" : "eve"
},
{
"_key" : "12853",
"_id" : "knows/12853",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxq--_",
"vertex" : "eve"
},
{
"_key" : "12847",
"_id" : "knows/12847",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dfxm--A",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dfxi--_",
"name" : "Dave"
}
]
},
{
"edges" : [
{
"_key" : "12850",
"_id" : "knows/12850",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dfxq---",
"vertex" : "eve"
},
{
"_key" : "12853",
"_id" : "knows/12853",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxq--_",
"vertex" : "eve"
},
{
"_key" : "12844",
"_id" : "knows/12844",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dfxm--_",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dfxi---",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "12840",
"_id" : "knows/12840",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxm---",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "12840",
"_id" : "knows/12840",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxm---",
"vertex" : "alice"
},
{
"_key" : "12853",
"_id" : "knows/12853",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxq--_",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
}
]
},
{
"edges" : [
{
"_key" : "12840",
"_id" : "knows/12840",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxm---",
"vertex" : "alice"
},
{
"_key" : "12853",
"_id" : "knows/12853",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxq--_",
"vertex" : "eve"
},
{
"_key" : "12850",
"_id" : "knows/12850",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dfxq---",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dfxi--A",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "12840",
"_id" : "knows/12840",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxm---",
"vertex" : "alice"
},
{
"_key" : "12847",
"_id" : "knows/12847",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dfxm--A",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dfxi--_",
"name" : "Dave"
}
]
},
{
"edges" : [
{
"_key" : "12840",
"_id" : "knows/12840",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dfxm---",
"vertex" : "alice"
},
{
"_key" : "12844",
"_id" : "knows/12844",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dfxm--_",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dfxe---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dfxe--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dfxi---",
"name" : "Charlie"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"itemOrder" : "backward"
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
Edges should only be included once globally, but nodes are included every time they are visited
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"uniqueness" : {
"vertices" : "none",
"edges" : "global"
}
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"result" : {
"visited" : {
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgNO--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dgNO--A",
"name" : "Charlie"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dgNS---",
"name" : "Dave"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgNS--_",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
}
],
"paths" : [
{
"edges" : [ ],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
}
]
},
{
"edges" : [
{
"_key" : "13048",
"_id" : "knows/13048",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgNS--A",
"vertex" : "alice"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgNO--_",
"name" : "Bob"
}
]
},
{
"edges" : [
{
"_key" : "13048",
"_id" : "knows/13048",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgNS--A",
"vertex" : "alice"
},
{
"_key" : "13052",
"_id" : "knows/13052",
"_from" : "persons/bob",
"_to" : "persons/charlie",
"_rev" : "_Vp0dgNS--B",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgNO--_",
"name" : "Bob"
},
{
"_key" : "charlie",
"_id" : "persons/charlie",
"_rev" : "_Vp0dgNO--A",
"name" : "Charlie"
}
]
},
{
"edges" : [
{
"_key" : "13048",
"_id" : "knows/13048",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgNS--A",
"vertex" : "alice"
},
{
"_key" : "13055",
"_id" : "knows/13055",
"_from" : "persons/bob",
"_to" : "persons/dave",
"_rev" : "_Vp0dgNW---",
"vertex" : "bob"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgNO--_",
"name" : "Bob"
},
{
"_key" : "dave",
"_id" : "persons/dave",
"_rev" : "_Vp0dgNS---",
"name" : "Dave"
}
]
},
{
"edges" : [
{
"_key" : "13048",
"_id" : "knows/13048",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgNS--A",
"vertex" : "alice"
},
{
"_key" : "13061",
"_id" : "knows/13061",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dgNW--A",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgNO--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgNS--_",
"name" : "Eve"
}
]
},
{
"edges" : [
{
"_key" : "13048",
"_id" : "knows/13048",
"_from" : "persons/alice",
"_to" : "persons/bob",
"_rev" : "_Vp0dgNS--A",
"vertex" : "alice"
},
{
"_key" : "13061",
"_id" : "knows/13061",
"_from" : "persons/eve",
"_to" : "persons/bob",
"_rev" : "_Vp0dgNW--A",
"vertex" : "eve"
},
{
"_key" : "13058",
"_id" : "knows/13058",
"_from" : "persons/eve",
"_to" : "persons/alice",
"_rev" : "_Vp0dgNW--_",
"vertex" : "eve"
}
],
"vertices" : [
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
},
{
"_key" : "bob",
"_id" : "persons/bob",
"_rev" : "_Vp0dgNO--_",
"name" : "Bob"
},
{
"_key" : "eve",
"_id" : "persons/eve",
"_rev" : "_Vp0dgNS--_",
"name" : "Eve"
},
{
"_key" : "alice",
"_id" : "persons/alice",
"_rev" : "_Vp0dgNO---",
"name" : "Alice"
}
]
}
]
}
},
"error" : false,
"code" : 200
}
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"uniqueness" : {
"vertices" : "none",
"edges" : "global"
}
}
EOF
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
If the underlying graph is cyclic, maxIterations should be set The underlying graph has two vertices Alice and Bob. With the directed edges:
- Alice knows Bob
- Bob knows Alice
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"uniqueness" : {
"vertices" : "none",
"edges" : "none"
},
"maxIterations" : 5
}
EOF
HTTP/1.1 500 Internal Server Error
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"error" : true,
"code" : 500,
"errorNum" : 1909,
"errorMessage" : "too many iterations - try increasing the value of 'maxIterations'"
}
shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/traversal <<EOF
{
"startVertex" : "persons/alice",
"graphName" : "knows_graph",
"direction" : "any",
"uniqueness" : {
"vertices" : "none",
"edges" : "none"
},
"maxIterations" : 5
}
EOF
HTTP/1.1 500 Internal Server Error
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
All examples were using this graph: