I am currently (2019/20) writing a book about managing and querying information graphs with a modern functional, fault-tolerant and concurrent programming language—Elixir.

Below are some (draft) book details.


Using Elixir for Graphs (Provisional)


Tony Hammond

Publication Date

May 2020 (Provisional)

Short Description

This hands-on book will quickly get you building, querying and comparing distributed graph data using a robust, concurrent programming language—Elixir.

Highlight Description

Graphs are everywhere. And as an Elixir programmer you’ve been waiting to try your hand. Break out from the strict straitjacketing that tables impose and arrange your data items into arbitrary, free-form networks. Go schema-less or apply constraints as necessary. Get to deploy relations as true first-class constructs. Embrace open as the new paradigm. Learn how different graph models can be accessed and used from within Elixir and how you can build a robust semantics freighting over graph data structures of various stripes. And then imagine the power of Elixir and concurrency on top of distributed graph datasets for scaling and simplicity.

Product Description

Graphs provide an intuitive and highly flexible means for organizing and querying huge amounts of loosely coupled data items. These data items are arranged into networks, or graphs in math speak. And now graph databases are properly coming of age. And so too is Elixir—a modern functional, fault-tolerant and concurrent programming language—a language preeminently suited to processing distributed datasets.

Using Elixir and a number of graph-aware packages in the Elixir ecosystem you'll easily be able to fit your information to graphs and networks. Learn about the graph models. Build a testbed app for comparing native graph data with external graph databases. Develop a set of applications as an umbrella app to drill down into the various graph models. Build native graph models with the libgraph package, and query graph databases of various stripes—property graphs with bolt_sips, RDF graphs with rdf and sparql, TinkerPop graphs with gremlex, and GraphQL-like interfaces with ex_dgraph. Transform data from one graph modeling regime to another. Understand why property graphs are hot, and how semantic graphs can scale up to web proportions.

Be ready to harness the awesome power of concurrent processing with distributed graph datasets for scaling and simplicity.


To follow along with the book, you should have Erlang/OTP 22+ and Elixir 1.9+ installed. The book will guide you through setting up an umbrella application for a graph testbed using a variety of graph databases for which Java SDK 8+ is generally required. Instructions for installing the graph databases are given in an appendix. Additionally Python 3.7+ is used for the example IPC (interprocess communication) child app.

Feature Points

  • Gain knowledge of the main graph data models (property graphs and RDF)
  • Get working familiarity with a variety of graph databases
  • Discover the Elixir ecosystem for creating and querying graphs
  • Follow along with creating a large Elixir umbrella app
  • Dive into some examples of distributed data processing

Key Selling Points

  • Responds to growing interest in knowledge graphs and graph databases
  • Compares principal graph data models—property graphs and RDF
  • Introduces Elixir programmers to graph data models and packages
  • Develops a graph testbed app for easy comparison of graph models

Market Information

This book is aimed at Elixir programmers who want to get a better understanding of how to use graphs and graph databases to manage information and to discover what kind of support currently exists within Elixir for accessing graph databases and how Elixir can be used to advantage in dealing with distributed data scenarios.

User Level

This is an applied book for intermediate programmers. A working application is developed.

Author Bio

Tony Hammond is a longtime data professional with a wide experience of linked data architecture, public identifier management, and knowledge representation and engineering. He has worked on both sides of the information supply chain, from international research centers to leading academic publishers. He is especially interested in using graph databases and ontologies to build out integrated systems over distributed datasets.