##### Release Date: 13 October 2023

GDS 2.5.0 is compatible with Neo4j 5 (≥ 5.6) & 4.4 versions (≥ 4.4.9). For GDS compatibility with previous releases, please use GDS Compatibility Table.### Breaking changes

- Dropped support for earlier version of Neo4j 5, in particular 5.1, 5.2, 5.3, 5.4, and 5.5 are no longer supported and GDS is no longer compatible with those versions.

### New features

### Major

- Added new algorithms for directed acyclic graphs:
`gds.dag.topologicalSort.stream`

`gds.dag.longestPath.stream`

- Deprecating
`alpha`

and`beta`

namespace for procedures and algorithms, and improving many to production grade – see details in ‘Full list of procedure being promoted’

### Minor

- Added procedure to retrieve the version of the installed GDS
`CALL gds.version`

- Add new procedure,
`gds.license.state`

to verify the license state of the Graph Data Science library. Also, analogous adding a new function`gds.isLicensed()`

. - Added memory estimation for modularity calculation via procedures
`gds.modularity.[stream|stats].estimate`

- Added memory estimation for filtered KNN via procedures
`gds.knn.filtered.[mutate|stream|stats|write].estimate`

- Added Stats and Write modes for Harmonic Closeness Centrality
- Added new procedures for SCC:
`gds.scc.mutate`

`gds.scc.stats`

- Added memory estimation to SCC:
`gds.scc.stream.estimate`

`gds.scc.stats.estimate`

`gds.scc.mutate.estimate`

`gds.scc.write.estimate`

- Added consecutiveIds parameter to
`gds.scc`

procedures to output the components in a consecutive id space. - Added memory estimation for Steiner Tree via procedures
`gds.steinerTree.[mutate|stream|stats|write].estimate`

- Added stats mode for
`gds.modularityOptimization`

### Bug fixes

- Fixed a bug that in logging progress of
`Prepare Batches`

in GraphSAGE training. - Fixed a bug where KNN would compute incorrect
`EUCLIDEAN`

similarity. - Fixed a bug where limits validation could potentially not be triggered with configuration settings passed by from specified defaults.
- Fixed a bug where
`gds.graph.filter`

would list a relationship type of`__ALL__`

even if all relationships were filtered out. - Fixed a bug where Triangle Count could compute an incorrect number of triangles when the
`maxDegree`

parameter was specified. - Fixed a bug where Triangle Count could compute an incorrect number of triangles when multiple relationship types are specified.

### Improvements

- The random graph generation procedure now will return a different graph each time
`gds.beta.graph.generate`

is called without specifying a random seed. Furthermore, when the seed is specified, the resulting graph will always have the same topology. - It is now possible to specify common node labels when importing nodes via arrow.
- A better error message is thrown when encountering null values in the
`nodeLabels`

column when importing nodes via arrow. - Added the configuration option
`listNodeLabels`

for the node property stream procedures that will trigger listing all node labels for the respective node. - Added the configuration option
`list_node_labels`

for the node property stream arrow endpoints that will trigger listing all node labels for the respective node. - The Cypher projection now returns the executing query as part of the projection result as well as part of the
`gds.graph.list`

output. - Support passing
`startNodes`

to`gds.graph.sample.cnarw`

as node objects instead of only node ids. - Support passing
`nodeId`

to`gds.util.nodeProperty`

as node objects instead of only node id. - Improved validation for relationship projections: If a global
`SUM`

,`MIN`

,`MAX`

or`COUNT`

aggregation is defined, there needs to be at least one property mapping. - HITS algorithm procedures have a default
`hitsIterations`

value of 20 - More accurate progress tracking for the
`gds.scc`

algorithm. - The
`componentDistribution`

and`communityDistribution`

parameters now also include the`p1, p5,p10, p25`

percentiles. This affects algorithms in the`Community Detection`

category.

### Full list of procedure being promoted

- Promoting Model Catalog procedures:
`gds.beta.model.drop`

, deprecated by`gds.model.drop`

- Return column
`shared`

renamed to`published`

`modelName`

,`modelType`

extracted to separate return columns

- Return column
`gds.beta.model.exists`

, deprecated by`gds.model.exists`

`gds.beta.model.list`

, deprecated by`gds.model.list`

- Return column
`shared`

renamed to`published`

`modelName`

,`modelType`

extracted to separate return columns

- Return column
`gds.alpha.model.delete`

, deprecated by`gds.model.delete`

`gds.alpha.model.load`

, deprecated by`gds.model.load`

`gds.alpha.model.publish`

, deprecated by`gds.model.publish`

- Return column
`shared`

renamed to`published`

`modelName`

,`modelType`

extracted to separate return columns

- Return column
`gds.alpha.model.store`

, deprecated by`gds.model.store`

- Promoting Pipeline Catalog procedures:
`gds.beta.pipeline.drop`

, deprecated by`gds.pipeline.drop`

`gds.beta.pipeline.exists`

, deprecated by`gds.pipeline.exists`

`gds.beta.pipeline.list`

, deprecated by`gds.pipeline.list`

- Procedure
`gds.alpha.systemMonitor`

is deprecated by`gds.systemMonitor`

- Procedure
`gds.beta.listProgress`

is deprecated by`gds.listProgress`

- Procedure
`gds.alpha.triangles`

is deprecated by`gds.triangles`

- Deprecating
`gds.beta.steinerTree`

procedures`gds.beta.steinerTree.mutate`

, deprecated by`gds.steinerTree.mutate`

`gds.beta.steinerTree.stats`

, deprecated by`gds.steinerTree.stats`

`gds.beta.steinerTree.stream`

, deprecated by`gds.steinerTree.stream`

`gds.beta.steinerTree.write`

, deprecated by`gds.steinerTree.write`

- Deprecating
`gds.beta.spanningTree`

procedures`gds.beta.spanningTree.mutate[.estimate]`

, deprecated by`gds.spanningTree.mutate[.estimate]`

`gds.beta.spanningTree.stats[.estimate]`

, deprecated by`gds.spanningTree.stats[.estimate]`

`gds.beta.spanningTree.stream[.estimate]`

, deprecated by`gds.spanningTree.stream[.estimate]`

`gds.beta.spanningTree.write[.estimate]`

, deprecated by`gds.spanningTree.write[.estimate]`

- Deprecating
`gds.alpha.maxkcut`

procedures`gds.alpha.maxkcut.mutate[.estimate]`

, deprecated by`gds.maxkcut.mutate[.estimate]`

`gds.alpha.maxkcut.stream[.estimate]`

, deprecated by`gds.maxkcut.stream[.estimate]`

- Deprecating
`gds.beta.closeness`

procedures`gds.beta.closeness.mutate`

, deprecated by`gds.closeness.mutate`

- The
`mutateProperty`

field has been removed, it can be accessed via the`configuration`

.

- The
`gds.beta.closeness.stats`

, deprecated by`gds.closeness.stats`

`gds.beta.closeness.stream`

, deprecated by`gds.closeness.stream`

`gds.beta.closeness.write`

, deprecated by`gds.closeness.write`

- The
`writeProperty`

field has been removed, it can be accessed via the`configuration`

.

- The

- Deprecating
`gds.beta.leiden`

procedures`gds.beta.leiden.mutate[.estimate]`

, deprecated by`gds.leiden.mutate[.estimate]`

`gds.beta.leiden.stats[.estimate]`

, deprecated by`gds.leiden.stats[.estimate]`

`gds.beta.leiden.stream[.estimate]`

, deprecated by`gds.leiden.stream[.estimate]`

`gds.beta.leiden.write[.estimate]`

, deprecated by`gds.leiden.write[.estimate]`

- Deprecating
`gds.alpha.conductance`

procedures`gds.alpha.conductance.stream`

, deprecated by`gds.conductance.stream`

- Deprecating
`gds.alpha.modularity`

procedures`gds.alpha.modularity.stream`

, deprecated by`gds.modularity.stream`

`gds.alpha.modularity.stats`

, deprecated by`gds.modularity.stats`

- Deprecating
`gds.beta.modularityOptimization`

procedures`gds.beta.modularityOptimization.stream[.estimate]`

, deprecated by`gds.modularityOptimization.stream[.estimate]`

`gds.beta.modularityOptimization.stats[.estimate]`

, deprecated by`gds.modularityOptimization.stats[.estimate]`

`gds.beta.modularityOptimization.stream[.estimate]`

, deprecated by`gds.modularityOptimization.stream[.estimate]`

`gds.beta.modularityOptimization.stats[.estimate]`

, deprecated by`gds.modularityOptimization.stats[.estimate]`

- Deprecating
`gds.beta.influenceMaximization.celf`

procedures`gds.beta.influenceMaximization.celf.mutate[.estimate]`

, deprecated by`gds.influenceMaximization.celf.mutate[.estimate]`

`gds.beta.influenceMaximization.celf.stats[.estimate]`

, deprecated by`gds.influenceMaximization.celf.stats[.estimate]`

`gds.beta.influenceMaximization.celfstream[.estimate]`

, deprecated by`gds.influenceMaximization.celf.stream[.estimate]`

`gds.beta.influenceMaximization.celf.write[.estimate]`

, deprecated by`gds.influenceMaximization.celf.write[.estimate]`

- Deprecating
`gds.alpha.knn.filtered`

procedures`gds.alpha.knn.filtered.mutate`

, deprecated by`gds.knn.filtered.mutate`

`gds.alpha.knn.filtered.stats`

, deprecated by`gds.knn.filtered.stats`

`gds.alpha.knn.filtered.stream`

, deprecated by`gds.knn.filtered.stream`

`gds.alpha.knn.filtered.write`

, deprecated by`gds.knn.filtered.write`

- Deprecating
`gds.alpha.nodeSimilarity.filtered`

procedures`gds.alpha.nodeSimilarity.filtered.mutate[.estimate]`

, deprecated by`gds.nodeSimilarity.filtered.mutate[.estimate]`

`gds.alpha.nodeSimilarity.filtered.stats[.estimate]`

, deprecated by`gds.nodeSimilarity.filtered.stats[.estimate]`

`gds.alpha.nodeSimilarity.filtered.stream[.estimate]`

, deprecated by`gds.nodeSimilarity.filtered.stream[.estimate]`

`gds.alpha.nodeSimilarity.filtered.write[.estimate]`

, deprecated by`gds.nodeSimilarity.filtered.write[.estimate]`

- Deprecating
`gds.alpha.closeness.harmonic`

procedures`gds.alpha.closeness.harmonic.stream`

, deprecated by`gds.closeness.harmonic.stream`

`gds.alpha.closeness.harmonic.write`

, deprecated by`gds.closeness.harmonic.write`

- Deprecating
`gds.beta.graph.relationships`

procedures`gds.beta.graph.relationships.stream`

deprecated by`gds.graph.relationships.stream`

`gds.beta.graph.relationships.toUndirected`

, deprecated by`gds.graph.relationships.toUndirected`

`gds.beta.graph.relationships.toUndirected.estimate`

, deprecated by`gds.graph.relationships.toUndirected.estimate`

- Deprecating
`gds.beta.graph.export.csv`

procedures`gds.beta.graph.export.csv`

, deprecated by`gds.graph.export.csv`

`gds.beta.graph.export.csv.estimate`

, deprecated by`gds.graph.export.csv.estimate`

- Deprecating
`gds.beta.graph.project.subgraph`

procedures`gds.beta.graph.project.subgraph`

, deprecated by`gds.graph.filter`

- Deprecating
`gds.alpha.scc`

procedures`gds.alpha.scc.stream`

, deprecated by`gds.scc.stream`

`gds.alpha.scc.write`

, deprecated by`gds.scc.write`

- The output of the procedure has been changed to reflect that of WCC:
`setCount`

is replaced by`componentCount`

.`writeProperty`

parameter is returned in the`configuration`

map.- The values
`p1`

,…,`p99`

,`minComponentSize`

,`maxComponentSize`

are returned inside the`componentDistribution`

map. `nodePropertiesWritten`

dictates how many properties to nodes were written

- The output of the procedure has been changed to reflect that of WCC:

- Deprecating
`gds.alpha.backup`

procedure`gds.alpha.backup`

, deprecated by`gds.backup`

- Deprecating
`gds.alpha.restore`

procedure`gds.alpha.restore`

, deprecated by`gds.restore`

- Deprecating
`gds.beta.graph.generate`

procedures`gds.beta.graph.generate`

, deprecated by`gds.graph.generate`

- Deprecating
`gds.beta.kmeans`

procedures`gds.beta.kmeans.mutate[.estimate]`

, deprecated by`gds.kmeans.mutate[.estimate]`

`gds.beta.kmeans.stats[.estimate]`

, deprecated by`gds.kmeans.stats[.estimate]`

`gds.beta.kmeans.stream[.estimate]`

, deprecated by`gds.kmeans.stream[.estimate]`

`gds.beta.kmeans.write[.estimate]`

, deprecated by`gds.kmeans.write[.estimate]`

- Procedure
`gds.beta.collapsePath.mutate`

is deprecated by`gds.collapsePath.mutate`

- Deprecating
`gds.beta.node2vec`

procedures:`gds.beta.node2vec.mutate[.estimate]`

, deprecated by`gds.node2vec.mutate[.estimate]`

`gds.beta.node2vec.stream[.estimate]`

, deprecated by`gds.node2vec.stream[.estimate]`

`gds.beta.node2vec.write[.estimate]`

, deprecated by`gds.node2vec.write[.estimate]`

- Deprecating
`gds.graph.graphProperty`

procedures:`gds.alpha.graph.graphProperty.drop`

, deprecated by`gds.graph.graphProperty.drop`

`gds.alpha.graph.graphProperty.stream`

, deprecated by`gds.graph.graphProperty.stream`

- Procedure
`gds.alpha.kSpanningTree.write`

is deprecated by`gds.kSpanningTree.write`

- Procedure
`gds.alpha.allShortestPaths.stream`

is deprecated by`gds.allShortestPaths.stream`

- Deprecating
`gds.alpha.config`

procedures`gds.alpha.config.defaults.list`

, deprecated by`gds.config.defaults.list`

`gds.alpha.config.defaults.set`

, deprecated by`gds.config.defaults.set`

`gds.alpha.config.limits.list`

, deprecated by`gds.config.limits.list`

`gds.alpha.config.limits.set`

, deprecated by`gds.config.limits.set`

- Deprecating
`gds.alpha.graph.nodeLabel`

procedures`gds.alpha.graph.nodeLabel.write`

deprecated by`gds.graph.nodeLabel.write`

`gds.alpha.graph.nodeLabel.mutate`

deprecated by`gds.graph.nodeLabel.mutate`

- Procedure
`gds.alpha.userLog`

is deprecated by`gds.userLog`

- Deprecating
`gds.alpha.sllpa`

procedures, use`gds.sllpa`

`gds.alpha.sllpa.mutate`

is deprecated by`gds.sllpa.mutate`

`gds.alpha.sllpa.stats`

is deprecated by`gds.sllpa.stats`

`gds.alpha.sllpa.stream`

is deprecated by`gds.sllpa.stream`

`gds.alpha.sllpa.write`

is deprecated by`gds.sllpa.write`

- Deprecating
`gds.alpha.hits`

procedures, use`gds.hits`

`gds.alpha.hits.mutate`

is deprecated by`gds.hits.mutate`

`gds.alpha.hits.stats`

is deprecated by`gds.hits.stats`

`gds.alpha.hits.stream`

is deprecated by`gds.hits.stream`

`gds.alpha.hits.write`

is deprecated by`gds.hits.write`

- Deprecating HashGNN beta procedures
`gds.beta.hashgnn.mutate`

is deprecated by`gds.hashgnn.mutate`

`gds.beta.hashgnn.mutate.estimate`

is deprecated by`gds.hashgnn.mutate.estimate`

`gds.beta.hashgnn.stream`

is deprecated by`gds.hashgnn.stream`

`gds.beta.hashgnn.stream.estimate`

is deprecated by`gds.hashgnn.stream.estimate`

- Renamed
`gds.alpha.create.cypherDb`

to`gds.ephemeral.database.create`

- Renamed
`gds.alpha.drop.cypherDb`

to`gds.ephemeral.database.drop`

### Other changes

- Added
`databaseLocation`

field to the result of`gds.graph.list`

indicating whether the graph is backed by a local or remote database, or not backed by a database at all.

### Recent Graph Data Science Releases

- Graph Data Science 2.6.2
- Graph Data Science 2.6.1
- Graph Data Science 2.6.0
- Graph Data Science 2.5.7
- Graph Data Science 2.5.6

*See All Graph Data Science Releases →*