Autonet function can quickly form a network of multiple specified nodes according to the information of nodes and edges in the graph. Autonet is a more efficient path query function which allows to pass IDs of multiple start/end nodes of paths based on A-B query; that means Autonet is a batch processing of A-B query. Therefore, the parameter limit
is limiting the maximum returns of each A-B query results other than the total results of autonet.
The setting of parameter dest()
determines the working mode of Autonet:
Inter-group Networking
- N nodes from one group pairing with M nodes from another group (if sets
dest()
)N * M
pairs of nodes andN * M
times of A-B path query- When the parameter
limit(n)
is carried and the value of n is not -1, maximumn
*N * M
paths will be found
Intra-group Networking
- N nodes from one group pairing with each other (if omits
dest()
):N(N-1)/2
pairs of nodes andN(N-1)/2
times of A-B path query- When the parameter
limit(n)
is carried and the value of n is not -1, maximumn
*N(N-1)/2
paths will be found

Syntax:
- Command:
autonet()
- Parameter: (see the table below)
- Statement Alias: supports Custom alias, its structure type is PATH
Parameter | Type | Specification | Description | Structure Type of Custom Alias |
---|---|---|---|---|
src() |
Filter | Mandatory | The filtering rules of the start node | NODE |
dest() |
Filter | The filtering rules of the end node | NODE | |
depth() |
Range | Mandatory | To set the depth of the path depth(N) : N edges depth(:N) : 1~N edges depth(M:N) : M~N edges depth(N).shortest() : the shortest path within N edges |
Not supported |
shortest() |
/ | / | To return the shortest paths | Not supported |
node_filter() |
Filter | The filtering rules that nodes other than src and dest need to satisfy |
Not supported | |
edge_filter() |
Filter | The filtering rules that all edges need to satisfy | Not supported | |
direction() |
String | left, right | To specify the direction of the edge | Not supported |
no_circle() |
/ | / | To dismiss the paths with circles; see chapter Basic Concept for the definition of circle under Terminologies | Not supported |
limit() |
Int | -1 or >=0 | Number of results of each A-B query to return, -1 means to return all results | Not supported |
Inter-group Networking
N steps
Example: Autonet Card CA001, CA002, and CA003, to Customer CU001 and CU002, return two 5-step paths for each node pair
autonet()
.src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CU001","CU002"]}).depth(5)
.limit(2) as p
return p{*}
1~N steps
Example: Autonet Card CA001, CA002, and CA003, to Customer CU001 and CU002, return 2 paths for each node pair within 5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CU001","CU002"]}).depth(:5)
.limit(2) as p
return p{*}
M~N steps
Example: Autonet Card CA001, CA002, and CA003, to Customer CU001 and CU002, return 2 paths for each node pair within 3~5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CU001","CU002"]}).depth(3:5)
.limit(2) as p
return p{*}
Non-weighted Shortest Path
Example: Autonet Card CA001, CA002, and CA003, to Customer CU001 and CU002, return 2 shortest paths for each node pair within 5 edges
autonet()
.src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CU001","CU002"]}).depth(5)
.shortest().limit(2) as p
return p{*}
node_filter()
Example: Autonet Card CA001, CA002, and CA003, to Customer CU001 and CU002, return 2 paths that do not contain @card nodes for each node pair within 5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CU001","CU002"]}).depth(:5)
.node_filter({!@card}).limit(2) as p
return p{*}
edge_filter()
Example: Autonet Card CA001, CA002, and CA003, to Customer CU001 and CU002, return 2 paths that do not contain @transfer edges for each node pair within 5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CU001","CU002"]}).depth(:5)
.edge_filter({!@transfer}).limit(2) as p
return p{*}
direction(right)
Example: Autonet Card CA001, CA002, and CA003, to Card CA022 and CA029, return 2 paths in the right direction (outbound) for each node pair within 5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CA022","CA029"]}).depth(:5)
.direction(right).limit(2) as p
return p
direction(left)
Example: Autonet Card CA001, CA002, and CA003, to Card CA022 and CA029, return 2 paths in the left direction (inbound) for each node pair within 5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CA022","CA029"]}).depth(:5)
.direction(left).limit(2) as p
return p
no_circle()
Example: Autonet Card CA001, CA002, and CA003, to Card CA022 and CA029, return 2 non-circular paths for each node pair within 5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CA022","CA029"]}).depth(:5)
.no_circle().limit(2) as p
return p
limit
Example: Autonet Card CA001, CA002, and CA003, to Customer CU001 and CU002, return 10 paths within 5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).dest({_id in ["CU001","CU002"]}).depth(5) as p
limit 10
return p{*}
Intra-group Networking
N steps
Example: Autonet Card CA001, CA002, and CA003 to each other, return two 5-step paths for each node pair
autonet()
.src({_id in ["CA001","CA002","CA003"]}).depth(5)
.limit(2) as p
return p{*}
1~N steps
Example: Autonet Card CA001, CA002, and CA003 to each other, return 2 paths for each node pair within 1~5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).depth(:5)
.limit(2) as p
return p{*}
M~N steps
Example: Autonet Card CA001, CA002, and CA003 to each other, return 2 paths for each node pair within 3~5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).depth(3:5)
.limit(2) as p
return p{*}
Non-weighted Shortest Path
Example: Autonet Card CA001, CA002, and CA003 to each other, return 2 shortest paths for each node pair within 5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).depth(5)
.shortest().limit(2) as p
return p{*}
node_filter()
Example: Autonet Card CA001, CA002, and CA003 to each other, return 2 paths that do not contain @card nodes for each node pair within 5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).depth(:5)
.node_filter({!@card}).limit(2) as p
return p{*}
edge_filter()
Example: Autonet Card CA001, CA002, and CA003 to each other, return 2 paths that do not contain @transfer edges for each node pair within 5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).depth(:5)
.edge_filter({!@transfer}).limit(2) as p
return p{*}
direction(right)
Example: Autonet Card CA001, CA002, and CA003 to each other, return 2 paths in the right direction (outbound) for each node pair within 5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).depth(:5)
.direction(right).limit(2) as p
return p
direction(left)
Example: Autonet Card CA001, CA002, and CA003 to each other, return 2 paths in the left direction (inbound) for each node pair within 5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).depth(:5)
.direction(left).limit(2) as p
return p
no_circle()
Example: Autonet Card CA001, CA002, and CA003 to each other, return 2 non-circular paths for each node pair within 5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).depth(:5)
.no_circle().limit(2) as p
return p
limit
Example: Autonet Card CA001, CA002, and CA003 to each other, return 10 paths within 5 steps
autonet()
.src({_id in ["CA001","CA002","CA003"]}).depth(5) as p
limit 10
return p{*}