Release Date: 3 December 2019
Compatibility Warning: Graph algorithms 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

Breaking 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 threshold parameter if no relationship weight is specified; instead it will throw an error.

New Algorithms:

  • K1 coloring algorithm: algo.beta.k1coloring calculates 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 algorithmalgo.beta.modularityOptimization that 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 algorithmalgo.nodeSimilarity calculates the similarity, using the Jaccard similarity score, between nodes based on their neighboring nodes. This is an improved implementation of the labs algo.similarity.jaccard algorithm 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 seedable
  • algo.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 loaders
  • algo.beta.graph.create previews the new surface which will replace algo.graph.load
  • algo.beta.graph.list previews the new surface which will replace and algo.graph.list