Skip to content

v0.12.0

Compare
Choose a tag to compare
@github-actions github-actions released this 02 Oct 14:06
· 98 commits to master since this release
446e7f1

Obvious breaking changes

In our efforts to better support indexes over properties and vector representations of the graph we have changed the on-disk representation of a Raphtory graph to a folder. Within this folder we can store the graph itself, any vectors, indexes, metadata, etc. required to simplfy the transfer of a graph between your machine and a GraphServer, or between yourself and colleages working on the same data.

As such the function save_to_file() will now produce a folder containing this new structure. If you would like to continue having a singular file (for purposes of transfer or ease) you can instead call save_to_zip(). This zip can be directly be read by Raphtory when you call load_from_file() so don't worry about having to unzip later.

New Vector APIs and integration with the GraphServer

  • We have updated vector query APIs as per #1713. The new vector context makes it much easier to query the nodes/edges/graphs by both similarity and structural elements such as neighbours. We have also tried to make it a lot clearer what each function is bringing into the context.
  • The embedding function is now set globally for the GraphServer and the conversion between graph/nodes/edges -> Document is now specified via jinja templates. This is to make it possible to store a vectorised Graph on disk.
  • Vectors are now updated when a node/edge are updated.

Algorithms

  • In_components and out_components have been optimised to do the minimal number of checks before returning a result.
  • In_component and out_component have been added for when you only want to get the component for an individual node.

Graphql

  • In_component and out_component have been made available on Node within Graphql - this returns a vec of Node objects allowing you to get metadata/properties of the nodes within this component.
  • A generated Schema is now available via Graphql to see what the type of all properties are for both nodes and edges.
  • We have drastically simplified the plugin APIs for the GraphServer, and now allow both custom mutations and queries. An example of this can be seen here: https://github.com/Pometry/Raphtory/tree/master/examples/custom-gql-apis.
  • Added open telemetry tracing to the GraphServer, allowing you to track the speed of all raphtory queries.
  • Added better logging throughout the GraphServer.

Edge filtering Alpha

  • We have released an alpha of edge property filtering - this allows you to filter both whole edges or updates within edges (exploded edges) in a variety of useful ways (see below).
  • This is currently limited to the EventGraph whilst we fix some semantics for the PersistentGraph. Please let us know if you notice anything odd, or unexpected with these if you give them a go.
image

Latest and is_active

  • We have added a latest() function onto the graph, node and edge. This is the equivalent of doing x.at(graph.latest_time). This isn't a massive issue in rust/python, but is very helpful in graphql, where you would have to do an initial query to get the latest_time.
  • We have exposed an is_active() function to nodes and edges, allowing you to check if they have any updates within the current window. This is very useful if you are calling rolling or expanding on a node/edge.

Bug fixes and performance improvements

  • Floats are now supported timestamps within python.
  • Fixed an issue in the motif algorithms where self loops were not being correctly handled.
  • Parallelised reading from saved graphs and for generation of new graphs with materialise.
  • Fixed the constant properties function in graphql as it was not set to async.
  • Fixed several 'off-by-one' errors in the boundary checks for node/edge window inclusion within the PersistentGraph.
  • Added the event_graph function to Graph and persistent_graph function to PersistentGraph - these are basically just NoOps, but make it so in python you can call them without knowing what type of graph you currently have.

Commits

Full Changelog: v0.11.3...v0.12.0