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.streamgds.dag.longestPath.stream
- Deprecating
alphaandbetanamespace 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.stateto 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.mutategds.scc.stats
- Added memory estimation to SCC:
gds.scc.stream.estimategds.scc.stats.estimategds.scc.mutate.estimategds.scc.write.estimate
- Added consecutiveIds parameter to
gds.sccprocedures 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 Batchesin GraphSAGE training. - Fixed a bug where KNN would compute incorrect
EUCLIDEANsimilarity. - 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.filterwould 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
maxDegreeparameter 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.generateis 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
nodeLabelscolumn when importing nodes via arrow. - Added the configuration option
listNodeLabelsfor the node property stream procedures that will trigger listing all node labels for the respective node. - Added the configuration option
list_node_labelsfor 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.listoutput. - Support passing
startNodestogds.graph.sample.cnarwas node objects instead of only node ids. - Support passing
nodeIdtogds.util.nodePropertyas node objects instead of only node id. - Improved validation for relationship projections: If a global
SUM,MIN,MAXorCOUNTaggregation is defined, there needs to be at least one property mapping. - HITS algorithm procedures have a default
hitsIterationsvalue of 20 - More accurate progress tracking for the
gds.sccalgorithm. - The
componentDistributionandcommunityDistributionparameters now also include thep1, p5,p10, p25percentiles. This affects algorithms in theCommunity Detectioncategory.
Full list of procedure being promoted
- Promoting Model Catalog procedures:
gds.beta.model.drop, deprecated bygds.model.drop- Return column
sharedrenamed topublished modelName,modelTypeextracted to separate return columns
- Return column
gds.beta.model.exists, deprecated bygds.model.existsgds.beta.model.list, deprecated bygds.model.list- Return column
sharedrenamed topublished modelName,modelTypeextracted to separate return columns
- Return column
gds.alpha.model.delete, deprecated bygds.model.deletegds.alpha.model.load, deprecated bygds.model.loadgds.alpha.model.publish, deprecated bygds.model.publish- Return column
sharedrenamed topublished modelName,modelTypeextracted 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.dropgds.beta.pipeline.exists, deprecated bygds.pipeline.existsgds.beta.pipeline.list, deprecated bygds.pipeline.list- Procedure
gds.alpha.systemMonitoris deprecated bygds.systemMonitor - Procedure
gds.beta.listProgressis deprecated bygds.listProgress - Procedure
gds.alpha.trianglesis deprecated bygds.triangles
- Deprecating
gds.beta.steinerTreeproceduresgds.beta.steinerTree.mutate, deprecated bygds.steinerTree.mutategds.beta.steinerTree.stats, deprecated bygds.steinerTree.statsgds.beta.steinerTree.stream, deprecated bygds.steinerTree.streamgds.beta.steinerTree.write, deprecated bygds.steinerTree.write
- Deprecating
gds.beta.spanningTreeproceduresgds.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.maxkcutproceduresgds.alpha.maxkcut.mutate[.estimate], deprecated bygds.maxkcut.mutate[.estimate]gds.alpha.maxkcut.stream[.estimate], deprecated bygds.maxkcut.stream[.estimate]
- Deprecating
gds.beta.closenessproceduresgds.beta.closeness.mutate, deprecated bygds.closeness.mutate- The
mutatePropertyfield has been removed, it can be accessed via theconfiguration.
- The
gds.beta.closeness.stats, deprecated bygds.closeness.statsgds.beta.closeness.stream, deprecated bygds.closeness.streamgds.beta.closeness.write, deprecated bygds.closeness.write- The
writePropertyfield has been removed, it can be accessed via theconfiguration.
- The
- Deprecating
gds.beta.leidenproceduresgds.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.conductanceproceduresgds.alpha.conductance.stream, deprecated bygds.conductance.stream
- Deprecating
gds.alpha.modularityproceduresgds.alpha.modularity.stream, deprecated bygds.modularity.streamgds.alpha.modularity.stats, deprecated bygds.modularity.stats
- Deprecating
gds.beta.modularityOptimizationproceduresgds.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.celfproceduresgds.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.filteredproceduresgds.alpha.knn.filtered.mutate, deprecated bygds.knn.filtered.mutategds.alpha.knn.filtered.stats, deprecated bygds.knn.filtered.statsgds.alpha.knn.filtered.stream, deprecated bygds.knn.filtered.streamgds.alpha.knn.filtered.write, deprecated bygds.knn.filtered.write
- Deprecating
gds.alpha.nodeSimilarity.filteredproceduresgds.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.harmonicproceduresgds.alpha.closeness.harmonic.stream, deprecated bygds.closeness.harmonic.streamgds.alpha.closeness.harmonic.write, deprecated bygds.closeness.harmonic.write
- Deprecating
gds.beta.graph.relationshipsproceduresgds.beta.graph.relationships.streamdeprecated bygds.graph.relationships.streamgds.beta.graph.relationships.toUndirected, deprecated bygds.graph.relationships.toUndirectedgds.beta.graph.relationships.toUndirected.estimate, deprecated bygds.graph.relationships.toUndirected.estimate
- Deprecating
gds.beta.graph.export.csvproceduresgds.beta.graph.export.csv, deprecated bygds.graph.export.csvgds.beta.graph.export.csv.estimate, deprecated bygds.graph.export.csv.estimate
- Deprecating
gds.beta.graph.project.subgraphproceduresgds.beta.graph.project.subgraph, deprecated bygds.graph.filter
- Deprecating
gds.alpha.sccproceduresgds.alpha.scc.stream, deprecated bygds.scc.streamgds.alpha.scc.write, deprecated bygds.scc.write- The output of the procedure has been changed to reflect that of WCC:
setCountis replaced bycomponentCount.writePropertyparameter is returned in theconfigurationmap.- The values
p1,…,p99,minComponentSize,maxComponentSizeare returned inside thecomponentDistributionmap. nodePropertiesWrittendictates how many properties to nodes were written
- The output of the procedure has been changed to reflect that of WCC:
- Deprecating
gds.alpha.backupproceduregds.alpha.backup, deprecated bygds.backup
- Deprecating
gds.alpha.restoreproceduregds.alpha.restore, deprecated bygds.restore
- Deprecating
gds.beta.graph.generateproceduresgds.beta.graph.generate, deprecated bygds.graph.generate
- Deprecating
gds.beta.kmeansproceduresgds.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.mutateis deprecated bygds.collapsePath.mutate
- Deprecating
gds.beta.node2vecprocedures: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.graphPropertyprocedures:gds.alpha.graph.graphProperty.drop, deprecated bygds.graph.graphProperty.dropgds.alpha.graph.graphProperty.stream, deprecated bygds.graph.graphProperty.stream- Procedure
gds.alpha.kSpanningTree.writeis deprecated bygds.kSpanningTree.write - Procedure
gds.alpha.allShortestPaths.streamis deprecated bygds.allShortestPaths.stream
- Deprecating
gds.alpha.configproceduresgds.alpha.config.defaults.list, deprecated bygds.config.defaults.listgds.alpha.config.defaults.set, deprecated bygds.config.defaults.setgds.alpha.config.limits.list, deprecated bygds.config.limits.listgds.alpha.config.limits.set, deprecated bygds.config.limits.set
- Deprecating
gds.alpha.graph.nodeLabelproceduresgds.alpha.graph.nodeLabel.writedeprecated bygds.graph.nodeLabel.writegds.alpha.graph.nodeLabel.mutatedeprecated bygds.graph.nodeLabel.mutate- Procedure
gds.alpha.userLogis deprecated bygds.userLog
- Deprecating
gds.alpha.sllpaprocedures, usegds.sllpagds.alpha.sllpa.mutateis deprecated bygds.sllpa.mutategds.alpha.sllpa.statsis deprecated bygds.sllpa.statsgds.alpha.sllpa.streamis deprecated bygds.sllpa.streamgds.alpha.sllpa.writeis deprecated bygds.sllpa.write
- Deprecating
gds.alpha.hitsprocedures, usegds.hitsgds.alpha.hits.mutateis deprecated bygds.hits.mutategds.alpha.hits.statsis deprecated bygds.hits.statsgds.alpha.hits.streamis deprecated bygds.hits.streamgds.alpha.hits.writeis deprecated bygds.hits.write
- Deprecating HashGNN beta procedures
gds.beta.hashgnn.mutateis deprecated bygds.hashgnn.mutategds.beta.hashgnn.mutate.estimateis deprecated bygds.hashgnn.mutate.estimategds.beta.hashgnn.streamis deprecated bygds.hashgnn.streamgds.beta.hashgnn.stream.estimateis deprecated bygds.hashgnn.stream.estimate
- Renamed
gds.alpha.create.cypherDbtogds.ephemeral.database.create - Renamed
gds.alpha.drop.cypherDbtogds.ephemeral.database.drop
Other changes
- Added
databaseLocationfield to the result ofgds.graph.listindicating 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.22
- Graph Data Science 2.21
- Graph Data Science 2.20
- Graph Data Science 2.19
- Graph Data Science 2.18