Introduction

Get an overview of the course that includes learning outcomes, intended audience, and the technologies we will work with.

Overview

In this course, we’re going to discuss connections and disconnections, graph data structures and Elixir, distributed data, and distributed computing. We’re also going to discuss the graph.

A graph
A graph

Graphs as an organizational pattern operate at all levels, from the smallest static structures—for example, chemical compounds such as a water molecule—to large-scale dynamic structures—for example, web-based social networks such as Facebook or Twitter. They allow us to link data points together with minimal fuss or overhead. As often noted, graphs lend themselves well to a schema-less style of data connection.

Learning outcomes

What kinds of graph models are there, and how can we access them from our preferred language, Elixir? This is what we’ll look to answer. We’ll also see:

  • How easy is it to get started with graphs?

  • How can we build native graph structures in Elixir?

  • How can we query graph databases with Cypher, Gremlin, and GraphQL?

  • How can we query linked open data with SPARQL?

Now, graph structures are great at helping us connect data. However, in practice, graphs themselves tend to be disconnected from each other both physically in terms of location and conceptually in terms of the data model. We want to be able to move our graph data between graph models and graph databases. We want to straddle across different implementations.

We’ll aim to get a better understanding of graph models and of Elixir packages that can be used to build graphs and query graph databases. We’ll also see how we can use Elixir’s support for concurrency to affect the processing of connected and distributed data.

Intended audience

Our primary audience is the practicing Elixir programmers who want to get a better understanding of the graph processing landscape and see what support already exists both within Elixir and also what can be readily accessed from Elixir.

We’ll be mainly interested in using graphs for creating and supporting information networks. The aim is more on moving data around and working with and across different types of graph models rather than on exploring graph algorithms per se. There are other resources for that. Here we want to focus on the graph models themselves and how we might bridge from one model to another.

Technologies we will use

We’ll work our way through developing a complete application. Some basic knowledge of Elixir is assumed, although we’ll proceed at a gentle pace and will explain new concepts as they are encountered. We’ll make use of a number of standard Elixir technologies, such as:

  • Umbrella apps

  • Behaviors

  • Macros

  • Protocols

  • OTP

This course might also be of interest to those who don’t know Elixir but have some acquaintance with graphs and are curious to learn more about how the two main graph paradigms—property graphs and RDFResource Description Framework Resource Description Frameworkgraphs—intersect and the tooling to make them interoperate. In this case, the given Elixir code examples may be read as a kind of pseudocode.