As NOSQL begins to mature, there are four main families that have emerged. Three of those families (key-value, column family and document stores) address simple data, where independent records are stored and indexed and lack the familiar notion of a join. The fourth member of the NoSQL family, the graph databases, address more complex challenges with interconnected (joined-up) data making them ideal for high-fidelity modelling and high-performance querying of rich, real-world domains. In this article we’ll examine Neo4j, a popular graph database, and see how we can use graphs to store and query complex interconnected data for fun and profit.