Compatibility and capabilities
This page distinguishes three different claims:
- client compatibility comes from the database vendor;
- implemented means Nodal has a provider implementation and automated compiler or contract tests;
- live verified means the repository exercises the feature against the exact database baseline listed below.
Nodal does not infer that a feature exists merely because a driver can connect to a server version.
Version policy
| Component | Nodal baseline | Vendor compatibility | Current verification |
|---|---|---|---|
| .NET | .NET 10 | Nodal packages currently target net10.0 | Build, unit tests, package validation |
| Neo4j driver | Neo4j.Driver 6.3.0 | Driver 6.x supports Neo4j 4.4.x, 5.x, 2025.x, and 2026.x | Package and compiler tests |
| Neo4j database | Neo4j 5.26 Community | Wider connectivity follows the official driver policy | Live query, mutation, and rollback baseline; migration compiler/unit verified |
| Neo4j GDS | GDS 2.13 is the official match for Neo4j 5.26 | GDS must match the server according to Neo4j's compatibility matrix | Current procedure compiler verified; per-algorithm 2.13 live certification pending |
| TigerGraph | TigerGraph 4.2.4 Community | No wider Nodal compatibility promise yet | Live REST++ mutation/query baseline; analytics endpoint contract verified |
References: Neo4j .NET Driver compatibility and Neo4j–GDS compatibility matrix.
The Docker images in compose.local.yml are the executable source for the live QA versions. Supporting a newer database version requires updating that baseline and passing the live suite; changing only this table is not sufficient.
Dependabot checks NuGet, documentation npm packages, Docker database images, and GitHub Actions every week. Its pull requests target developer. An update PR is a notification, not an automatic compatibility promise: database baselines move only after the relevant compiler and live integration suites pass.
Provider feature matrix
Legend: Yes is implemented; Conditional requires the condition shown; No fails explicitly.
| Capability | Neo4j | TigerGraph |
|---|---|---|
| Parameterized node filtering and ordering | Yes, Cypher | Yes, interpreted GSQL |
| Fixed directed/undirected traversal | Yes | Yes |
| Variable-depth traversal | Yes | Conditional: GSQL Syntax V2 |
| Optional match | Yes | No |
| Vertex-simple variable-depth path | Yes | No: intermediate aliases are unavailable |
| Client-managed multi-command transaction | Yes | No: request or installed-query boundary |
| Atomic mutation plan | Yes | Conditional: REST++ or installed mutation query |
| Migration execution | Yes | Conditional: administrative transport |
| Centrality/community analytics | Conditional: compatible GDS and named projection | Conditional: configured installed GSQL query |
| Weighted analytics | Algorithm-specific GDS capability | Explicitly declared per installed query |
| Analytics deployment discovery | Live GDS discovery with bounded cache | Configured installed-query snapshot |
| Analytics projection lifecycle | Yes: explicit create/reuse/drop | Not applicable; algorithms use the database graph |
| Typed shortest-path result | Yes: native Cypher | Conditional: configured installed GSQL query |
| Weighted shortest paths | Conditional: GDS Dijkstra, A*, Yen | Conditional: configured weighted installed query |
Analytics algorithm matrix
All algorithms below exist in the portable contract. “Compiler” does not mean that the optional database component has been installed or live-certified.
| Family | Algorithms | Neo4j | TigerGraph |
|---|---|---|---|
| Centrality | ArticleRank, articulation points, betweenness, bridges, CELF, closeness, degree, eigenvector, harmonic, HITS, PageRank | GDS stream compiler; deployment allow-list supported | Installed-query mapping; unavailable until configured |
| Community and cohesion | Clique counting, conductance, HDBSCAN, K-core, K-1 coloring, K-means, label propagation, Leiden, local clustering coefficient, Louvain, modularity, modularity optimization, SCC, triangle count, WCC, approximate maximum k-cut, SLLPA | GDS stream compiler; deployment allow-list supported | Installed-query mapping; unavailable until configured |
| Path finding | Unweighted shortest path, all shortest paths, Dijkstra, A*, Yen k-shortest paths | Native Cypher for unweighted paths; GDS compiler for weighted paths | Installed-query mapping with canonical route response |
Neo4j can restrict advertised algorithms to the procedures actually available in a deployment:
var options = new Neo4jOptions
{
Endpoint = new Uri("neo4j://localhost:7687"),
Username = "neo4j",
Password = "secret",
GraphDataScienceEnabled = true,
AnalyticsAlgorithms = new HashSet<GraphAnalyticsAlgorithm>
{
GraphAnalyticsAlgorithm.PageRank,
GraphAnalyticsAlgorithm.Louvain
}
};
Use context.Database.GetAnalyticsRuntime().DiscoverAsync() to read and cache gds.list(), gds.version(), and projection names. The deployment allow-list remains explicit so a newly installed server procedure cannot silently expand application permissions.
TigerGraph requires both the installed-query mapping and an explicit declaration for queries that accept weights:
var options = new TigerGraphOptions
{
Endpoint = new Uri("https://example.i.tgcloud.io/"),
AccessToken = "secret-token",
AnalyticsQueries = new Dictionary<GraphAnalyticsAlgorithm, string>
{
[GraphAnalyticsAlgorithm.PageRank] = "nodal_pagerank"
},
WeightedAnalyticsAlgorithms = new HashSet<GraphAnalyticsAlgorithm>
{
GraphAnalyticsAlgorithm.PageRank
}
};
An unsupported algorithm or semantic option is rejected before database transport. Nodal never downloads the graph to simulate missing server functionality.