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
andbeta
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 functiongds.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
togds.graph.sample.cnarw
as node objects instead of only node ids. - Support passing
nodeId
togds.util.nodeProperty
as node objects instead of only node id. - Improved validation for relationship projections: If a global
SUM
,MIN
,MAX
orCOUNT
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
andcommunityDistribution
parameters now also include thep1, p5,p10, p25
percentiles. This affects algorithms in theCommunity Detection
category.
Full list of procedure being promoted
- Promoting Model Catalog procedures:
gds.beta.model.drop
, deprecated bygds.model.drop
- Return column
shared
renamed topublished
modelName
,modelType
extracted to separate return columns
- Return column
gds.beta.model.exists
, deprecated bygds.model.exists
gds.beta.model.list
, deprecated bygds.model.list
- Return column
shared
renamed topublished
modelName
,modelType
extracted to separate return columns
- Return column
gds.alpha.model.delete
, deprecated bygds.model.delete
gds.alpha.model.load
, deprecated bygds.model.load
gds.alpha.model.publish
, deprecated bygds.model.publish
- Return column
shared
renamed topublished
modelName
,modelType
extracted to separate return columns
- Return column
gds.alpha.model.store
, deprecated bygds.model.store
- Promoting Pipeline Catalog procedures:
gds.beta.pipeline.drop
, deprecated bygds.pipeline.drop
gds.beta.pipeline.exists
, deprecated bygds.pipeline.exists
gds.beta.pipeline.list
, deprecated bygds.pipeline.list
- Procedure
gds.alpha.systemMonitor
is deprecated bygds.systemMonitor
- Procedure
gds.beta.listProgress
is deprecated bygds.listProgress
- Procedure
gds.alpha.triangles
is deprecated bygds.triangles
- Deprecating
gds.beta.steinerTree
proceduresgds.beta.steinerTree.mutate
, deprecated bygds.steinerTree.mutate
gds.beta.steinerTree.stats
, deprecated bygds.steinerTree.stats
gds.beta.steinerTree.stream
, deprecated bygds.steinerTree.stream
gds.beta.steinerTree.write
, deprecated bygds.steinerTree.write
- Deprecating
gds.beta.spanningTree
proceduresgds.beta.spanningTree.mutate[.estimate]
, deprecated bygds.spanningTree.mutate[.estimate]
gds.beta.spanningTree.stats[.estimate]
, deprecated bygds.spanningTree.stats[.estimate]
gds.beta.spanningTree.stream[.estimate]
, deprecated bygds.spanningTree.stream[.estimate]
gds.beta.spanningTree.write[.estimate]
, deprecated bygds.spanningTree.write[.estimate]
- Deprecating
gds.alpha.maxkcut
proceduresgds.alpha.maxkcut.mutate[.estimate]
, deprecated bygds.maxkcut.mutate[.estimate]
gds.alpha.maxkcut.stream[.estimate]
, deprecated bygds.maxkcut.stream[.estimate]
- Deprecating
gds.beta.closeness
proceduresgds.beta.closeness.mutate
, deprecated bygds.closeness.mutate
- The
mutateProperty
field has been removed, it can be accessed via theconfiguration
.
- The
gds.beta.closeness.stats
, deprecated bygds.closeness.stats
gds.beta.closeness.stream
, deprecated bygds.closeness.stream
gds.beta.closeness.write
, deprecated bygds.closeness.write
- The
writeProperty
field has been removed, it can be accessed via theconfiguration
.
- The
- Deprecating
gds.beta.leiden
proceduresgds.beta.leiden.mutate[.estimate]
, deprecated bygds.leiden.mutate[.estimate]
gds.beta.leiden.stats[.estimate]
, deprecated bygds.leiden.stats[.estimate]
gds.beta.leiden.stream[.estimate]
, deprecated bygds.leiden.stream[.estimate]
gds.beta.leiden.write[.estimate]
, deprecated bygds.leiden.write[.estimate]
- Deprecating
gds.alpha.conductance
proceduresgds.alpha.conductance.stream
, deprecated bygds.conductance.stream
- Deprecating
gds.alpha.modularity
proceduresgds.alpha.modularity.stream
, deprecated bygds.modularity.stream
gds.alpha.modularity.stats
, deprecated bygds.modularity.stats
- Deprecating
gds.beta.modularityOptimization
proceduresgds.beta.modularityOptimization.stream[.estimate]
, deprecated bygds.modularityOptimization.stream[.estimate]
gds.beta.modularityOptimization.stats[.estimate]
, deprecated bygds.modularityOptimization.stats[.estimate]
gds.beta.modularityOptimization.stream[.estimate]
, deprecated bygds.modularityOptimization.stream[.estimate]
gds.beta.modularityOptimization.stats[.estimate]
, deprecated bygds.modularityOptimization.stats[.estimate]
- Deprecating
gds.beta.influenceMaximization.celf
proceduresgds.beta.influenceMaximization.celf.mutate[.estimate]
, deprecated bygds.influenceMaximization.celf.mutate[.estimate]
gds.beta.influenceMaximization.celf.stats[.estimate]
, deprecated bygds.influenceMaximization.celf.stats[.estimate]
gds.beta.influenceMaximization.celfstream[.estimate]
, deprecated bygds.influenceMaximization.celf.stream[.estimate]
gds.beta.influenceMaximization.celf.write[.estimate]
, deprecated bygds.influenceMaximization.celf.write[.estimate]
- Deprecating
gds.alpha.knn.filtered
proceduresgds.alpha.knn.filtered.mutate
, deprecated bygds.knn.filtered.mutate
gds.alpha.knn.filtered.stats
, deprecated bygds.knn.filtered.stats
gds.alpha.knn.filtered.stream
, deprecated bygds.knn.filtered.stream
gds.alpha.knn.filtered.write
, deprecated bygds.knn.filtered.write
- Deprecating
gds.alpha.nodeSimilarity.filtered
proceduresgds.alpha.nodeSimilarity.filtered.mutate[.estimate]
, deprecated bygds.nodeSimilarity.filtered.mutate[.estimate]
gds.alpha.nodeSimilarity.filtered.stats[.estimate]
, deprecated bygds.nodeSimilarity.filtered.stats[.estimate]
gds.alpha.nodeSimilarity.filtered.stream[.estimate]
, deprecated bygds.nodeSimilarity.filtered.stream[.estimate]
gds.alpha.nodeSimilarity.filtered.write[.estimate]
, deprecated bygds.nodeSimilarity.filtered.write[.estimate]
- Deprecating
gds.alpha.closeness.harmonic
proceduresgds.alpha.closeness.harmonic.stream
, deprecated bygds.closeness.harmonic.stream
gds.alpha.closeness.harmonic.write
, deprecated bygds.closeness.harmonic.write
- Deprecating
gds.beta.graph.relationships
proceduresgds.beta.graph.relationships.stream
deprecated bygds.graph.relationships.stream
gds.beta.graph.relationships.toUndirected
, deprecated bygds.graph.relationships.toUndirected
gds.beta.graph.relationships.toUndirected.estimate
, deprecated bygds.graph.relationships.toUndirected.estimate
- Deprecating
gds.beta.graph.export.csv
proceduresgds.beta.graph.export.csv
, deprecated bygds.graph.export.csv
gds.beta.graph.export.csv.estimate
, deprecated bygds.graph.export.csv.estimate
- Deprecating
gds.beta.graph.project.subgraph
proceduresgds.beta.graph.project.subgraph
, deprecated bygds.graph.filter
- Deprecating
gds.alpha.scc
proceduresgds.alpha.scc.stream
, deprecated bygds.scc.stream
gds.alpha.scc.write
, deprecated bygds.scc.write
- The output of the procedure has been changed to reflect that of WCC:
setCount
is replaced bycomponentCount
.writeProperty
parameter is returned in theconfiguration
map.- The values
p1
,…,p99
,minComponentSize
,maxComponentSize
are returned inside thecomponentDistribution
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
proceduregds.alpha.backup
, deprecated bygds.backup
- Deprecating
gds.alpha.restore
proceduregds.alpha.restore
, deprecated bygds.restore
- Deprecating
gds.beta.graph.generate
proceduresgds.beta.graph.generate
, deprecated bygds.graph.generate
- Deprecating
gds.beta.kmeans
proceduresgds.beta.kmeans.mutate[.estimate]
, deprecated bygds.kmeans.mutate[.estimate]
gds.beta.kmeans.stats[.estimate]
, deprecated bygds.kmeans.stats[.estimate]
gds.beta.kmeans.stream[.estimate]
, deprecated bygds.kmeans.stream[.estimate]
gds.beta.kmeans.write[.estimate]
, deprecated bygds.kmeans.write[.estimate]
- Procedure
gds.beta.collapsePath.mutate
is deprecated bygds.collapsePath.mutate
- Deprecating
gds.beta.node2vec
procedures:gds.beta.node2vec.mutate[.estimate]
, deprecated bygds.node2vec.mutate[.estimate]
gds.beta.node2vec.stream[.estimate]
, deprecated bygds.node2vec.stream[.estimate]
gds.beta.node2vec.write[.estimate]
, deprecated bygds.node2vec.write[.estimate]
- Deprecating
gds.graph.graphProperty
procedures:gds.alpha.graph.graphProperty.drop
, deprecated bygds.graph.graphProperty.drop
gds.alpha.graph.graphProperty.stream
, deprecated bygds.graph.graphProperty.stream
- Procedure
gds.alpha.kSpanningTree.write
is deprecated bygds.kSpanningTree.write
- Procedure
gds.alpha.allShortestPaths.stream
is deprecated bygds.allShortestPaths.stream
- Deprecating
gds.alpha.config
proceduresgds.alpha.config.defaults.list
, deprecated bygds.config.defaults.list
gds.alpha.config.defaults.set
, deprecated bygds.config.defaults.set
gds.alpha.config.limits.list
, deprecated bygds.config.limits.list
gds.alpha.config.limits.set
, deprecated bygds.config.limits.set
- Deprecating
gds.alpha.graph.nodeLabel
proceduresgds.alpha.graph.nodeLabel.write
deprecated bygds.graph.nodeLabel.write
gds.alpha.graph.nodeLabel.mutate
deprecated bygds.graph.nodeLabel.mutate
- Procedure
gds.alpha.userLog
is deprecated bygds.userLog
- Deprecating
gds.alpha.sllpa
procedures, usegds.sllpa
gds.alpha.sllpa.mutate
is deprecated bygds.sllpa.mutate
gds.alpha.sllpa.stats
is deprecated bygds.sllpa.stats
gds.alpha.sllpa.stream
is deprecated bygds.sllpa.stream
gds.alpha.sllpa.write
is deprecated bygds.sllpa.write
- Deprecating
gds.alpha.hits
procedures, usegds.hits
gds.alpha.hits.mutate
is deprecated bygds.hits.mutate
gds.alpha.hits.stats
is deprecated bygds.hits.stats
gds.alpha.hits.stream
is deprecated bygds.hits.stream
gds.alpha.hits.write
is deprecated bygds.hits.write
- Deprecating HashGNN beta procedures
gds.beta.hashgnn.mutate
is deprecated bygds.hashgnn.mutate
gds.beta.hashgnn.mutate.estimate
is deprecated bygds.hashgnn.mutate.estimate
gds.beta.hashgnn.stream
is deprecated bygds.hashgnn.stream
gds.beta.hashgnn.stream.estimate
is deprecated bygds.hashgnn.stream.estimate
- Renamed
gds.alpha.create.cypherDb
togds.ephemeral.database.create
- Renamed
gds.alpha.drop.cypherDb
togds.ephemeral.database.drop
Other changes
- Added
databaseLocation
field to the result ofgds.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.11
- Graph Data Science 2.10.1
- Graph Data Science 2.9.0
- Graph Data Science 2.8.0
- Graph Data Science 2.7.0