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.pagerank defaults 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

algo.apsp

O(V²) distance matrix

algo.maxFlow

O(V²) capacity matrix

algo.kShortestPaths

O(V²) weight matrix

algo.simRank

O(V²) similarity matrix

algo.hierarchicalClustering

O(V²) similarity pairs

algo.triangleCount

O(V²) neighbor bit-matrix

algo.knn

O(V²) neighbor bit-matrix

algo.kTruss

O(V²) neighbor bit-matrix (built twice, once per decomposition pass)

algo.clique

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.