Diverging from the classic random walk, the Node2Vec Walk is a biased random walk which can explore neighborhoods in a BFS as well as DFS fashion. Please refer to the Node2Vec algorithm for details.
algo(random_walk_node2vec)Name | Type | Spec | Default | Optional | Description |
|---|---|---|---|---|---|
| ids / uuids | []_id / []_uuid | / | / | Yes | ID/UUID of nodes to start random walks; start from all nodes if not set |
| walk_length | int | ≧1 | 1 | Yes | Depth of each walk, i.e., the number of nodes to visit |
| walk_num | int | ≧1 | 1 | Yes | Number of walks to perform for each specified node |
| edge_schema_property | []@<schema>?.<property> | Numeric type, must LTE | / | Yes | Edge property(-ies) to use as edge weight(s), where the values of multiple properties are summed up; nodes only walk along edges with the specified property(-ies) |
| p | float | >0 | 1 | Yes | The return parameter; a larger value reduces the probability of returning |
| q | float | >0 | 1 | Yes | The in-out parameter; it tends to walk at the same level when the value is greater than 1, otherwise it tends to walk far away |
| limit | int | ≧-1 | -1 | Yes | Number of results to return, -1 to return all results |
The example graph is as follows, numbers on edges are the values of edge property score:

Spec | Content | Description |
|---|---|---|
| filename | _id,_id,... | IDs of visited nodes |
UQLalgo(random_walk_node2vec).params({ walk_length: 6, walk_num: 2, p: 10000, q: 0.0001 }).write({ file:{ filename: 'walks' }})
Results: File walks
FileJ,G,H,I,H,G, I,H,G,F,E,C, H,G,H,G,F,E, G,H,G,H,I,H, F,G,E,C,D,F, E,F,E,F,G,H, D,C,D,C,E,F, C,D,A,B,A,C, B,A,C,D,F,E, A,B,A,B,A,C, J,G,F,D,C,A, I,H,G,F,E,C, H,I,H,I,H,G, G,F,D,C,E,F, F,E,C,A,B,A, E,F,E,F,D,C, D,F,D,F,E,C, C,D,A,B,A,C, B,A,C,E,F,G, A,C,A,C,E,F,
| Alias Ordinal | Type | Description | Columns |
|---|---|---|---|
| 0 | []perWalk | Array of UUIDs of visited nodes | [_uuid, _uuid, ...] |
UQLalgo(random_walk_node2vec).params({ ids: ['J'], walk_length: 6, walk_num: 3, p: 2000, q: 0.001 }) as walks return walks
Results: walks
| [10, 7, 6, 5, 3, 1] |
| [10, 7, 6, 5, 3, 1] |
| [10, 7, 8, 9, 8, 7] |
| Alias Ordinal | Type | Description | Columns |
|---|---|---|---|
| 0 | []perWalk | Array of UUIDs of visited nodes | [_uuid, _uuid, ...] |
UQLalgo(random_walk_node2vec).params({ ids: ['A'], walk_length: 5, walk_num: 10, p: 1000, q: 1, edge_schema_property: 'score' }).stream() as walks return walks
Results: walks
| [1, 3, 4, 6, 5] |
| [1, 2, 1, 3, 5] |
| [1, 2, 1, 3, 4] |
| [1, 3, 4, 6, 7] |
| [1, 3, 4, 6, 7] |
| [1, 3, 5, 6, 7] |
| [1, 3, 5, 6, 4] |
| [1, 2, 1, 3, 5] |
| [1, 3, 4, 6, 7] |
| [1, 3, 4, 6, 5] |