Project Overview

Learn the different graph models that we'll work with, and understand the components of the project that we'll build.

We'll explore some of the graph packages that currently exist in the Elixir ecosystem. We'll also develop a set of applications to drill down into the various graph models. We’ll build native Elixir graph models with the libgraph package, and we’ll query remote graph databases of different flavors:

  • We'll query property graphs with bolt_sips.

  • We'll query RDF graphs with sparql_client.

  • We'll query TinkerPop graphs with gremlex.

  • We'll query Dgraph graphs with dlex.

Our plan

The overall plan is to get into some in-depth exploration of the individual graph models and then see how they can interoperate. We’d like to make it super easy to work with different graph types and compare and contrast their data models and see how they can be queried. Ideally, what we want is something like a graph playground that we can run from within an IEx session and that will allow us to interact directly with the graphs.

We’re going to build one, but we need some organization first. We need to manage the code in our applications and manage access to the data we’re going to work with.

First, we're going to create an Elixir umbrella app that will be used as our code foundation. We’ll deal with half a dozen or so separately managed apps.

Graph store

To simplify our experiments, we want to save graphs and queries for later reuse. We’re going to build ourselves a graph store for managing these artifacts for the different graph types we’ll be looking at. We'll first build some common data structures for saving graph queries and for serializing graphs. We’ll also employ the use/__using__ macro pair to inject a set of generic read/write functions into the specific graph modules.

Get hands-on with 1200+ tech skills courses.