Notes
relTypes Parameter
All procedures that accept a relTypes parameter use comma-separated relationship type names. To traverse all relationship types, pass an empty string '' or omit the parameter where it is optional:
CALL algo.pagerank() -- all types (parameter omitted)
CALL algo.wcc('') -- all types (empty string)
CALL algo.wcc('KNOWS,FOLLOWS') -- only KNOWS and FOLLOWS edges
direction Parameter
Where supported, the direction parameter controls which edges are considered:
-
"OUT"— only outgoing edges from each vertex -
"IN"— only incoming edges to each vertex -
"BOTH"— edges in either direction (default for most algorithms;algo.pagerankdefaults to"OUT")
The value is case-insensitive. As of version 26.9.1, any other value is rejected with an error:
CALL algo.bfs(start, 'ROAD', 'INCOMING', 3)
-- unknown direction 'INCOMING', expected one of OUT, IN or BOTH
Earlier versions silently treated an unrecognised value as "BOTH", so a typo returned a plausible but wrong
result instead of an error. If a query of yours passes a malformed direction, it will now fail rather than
quietly traverse both directions. Omitting the parameter still selects the algorithm’s own default.
The same applies to the bellmanFord() SQL function and to node.degree(), node.relationship.exists() and
node.relationship.types().
Config Map Parameters
Several algorithms (PageRank, Louvain, Betweenness, LabelPropagation) accept an optional configuration map as their first argument:
CALL algo.pagerank({dampingFactor: 0.9, maxIterations: 50})
YIELD node, score
Memory Considerations
Algorithms marked CPU+RAM build in-memory data structures that scale with V² or E²:
| Algorithm | Memory Usage |
|---|---|
|
O(V²) distance matrix |
|
O(V²) capacity matrix |
|
O(V²) weight matrix |
|
O(V²) similarity matrix |
|
O(V²) similarity pairs |
|
O(V²) neighbor bit-matrix |
|
O(V²) neighbor bit-matrix |
|
O(V²) neighbor bit-matrix (built twice, once per decomposition pass) |
|
O(V²) neighbor bit-matrix, plus a search stack that can itself reach O(V²) at its deepest point |
As of version 26.9.1, every allocation above — including the graph itself (the loaded vertex list, its RID index, and the adjacency list every procedure builds from it, not only the table in this list) — is checked against the arcadedb.cypher.algoMaxWorkingMemory setting before it is allocated, and the call is refused with a client error naming the offending component rather than risking an OutOfMemoryError. Because the setting now also covers the graph load itself, a call that used to succeed under a given limit may now be refused if the graph alone consumes a large share of that limit — raise the setting if a call that previously worked starts being refused after upgrading. The default auto-scales with the JVM’s maximum heap (one eighth of it, never below 64 MB).
For graphs with more than a few thousand vertices, these algorithms may still require significant heap space even within the budget.