Release Date: 3 December 2019
Compatibility Warning: Graph algorithms 3.5.13.0 is only compatible with Neo4j 3.5.9 and above. If you cannot update your Neo4j installation, the most recent compatible release for Neo4j 3.5.8 is 3.5.8.1Breaking changes:
- Improvements to modularity optimization in the Louvain algorithm now produce more accurate, but potentially different, results than previous versions.
- UnionFind will no longer accept a
thresholdparameter if no relationship weight is specified; instead it will throw an error.
New Algorithms:
- K1 coloring algorithm:
algo.beta.k1coloringcalculates distance 1 coloring. “Coloring” a graph means the assignment of colors to nodes such that connected nodes all have unique colors. K-1 coloring means that this uniqueness is only for first degree connections. - Modularity optimization algorithm:
algo.beta.modularityOptimizationthat calculates communities based on a modularity value. - Louvain algorithm: We have released a new, parallelized and optimized version of the louvain algorithm under
algo.beta.louvain. - Node Similarity algorithm:
algo.nodeSimilaritycalculates the similarity, using the Jaccard similarity score, between nodes based on their neighboring nodes. This is an improved implementation of the labsalgo.similarity.jaccardalgorithm which has been updated to leverage the in memory graph and scale to significantly larger data sets.
Enhancements & New Features
algo.memrecnow allows users to calculate memory requirements for arbitrary graphs by specifying a node and relationship count.algo.beta.graph.generateis now seedablealgo.memrecnow includes support for labelPropagation- Initial support for loading multiple labels into the in memory graph (via
algo.graph.load) has been added - Loading, using, listing and removing named graphs are now user-related operations; users may no longer access graphs loaded by other Neo4j users on the same instance.
Bug fixes
- Graph loaders:
- Fixed a race condition that could lead to ArrayIndexOutOfBoundsExceptions when loading graphs with high degree nodes
- Fixed a bug that prevented graphs loaded with multiple relationship types from being released early
- Weakly connected components: fixed a bug that prevented node properties from being used as seeding values on a pre-loaded graph, and updated the code to ensure that merged communities (on a seeded graph) always were assigned the lower community ID.
- Label propagation: Fixed a bug with seeding on explicitly loaded graphs, now returns the correct communityCount.
- Triangle counting (Neo4j labs): Fixed a bug that would throw and ArrayIndexOutOfBoundsException when running over a graph with disconnected node
Preview Procedures:
We’ve added several preview procedures to introduce the new API that will be applied to product algorithms in the 1.0 graph data science library release. These demonstrate the new syntax for the graph loadersalgo.beta.graph.createpreviews the new surface which will replacealgo.graph.loadalgo.beta.graph.listpreviews the new surface which will replacealgo.graph.infoandalgo.graph.list
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