One key to a good or great talk? Having a good "hook," to interest the audience. Ian Robinson decided that a good way to grab audience attention yesterday at the Strange Loop conference in St. Louis was to use Doctor Who to talk about the Neo4j graph database. He's not wrong.

What could have been an extremely dry and boring presentation was fairly lively. Robinson started with a quick overview of Doctor Who, just in case the audience wasn't familiar with the show. I don't think he needed to have worried, given the demographic.

So what is a graph database, anyway? Basically, Neo4j is a database that stores the relationships between nodes using semi-structured data. Robinson says that it's fully ACID-compliant, high-availability, and capable of dealing with 32 billion nodes, 32 billion relationships and 64 billion properties.

It can run as a standalone server, or embedded in a Java application. (The site claims it has a footprint of around 750kb.) Neo4j is released under the GNU General Public License for the community edition, and under the Affero GPL (AGPL) for the commercial editions. (Robinson says that companies can "buy their way out" of the AGPL if they want.)

After the requisite explanation of the show, he then started talking about how Neo4j might be put to use. One example he provided was tracking the Doctor's frequent nemeses, the Daleks. More accurately, he discussed tracking the Dalek props that were used in the show. Apparently there's a Web site called Dalek 6388 that (as he says) "wondrously and laboriously" has gone through all publicity photos, episodes and so on to track the various Dalek costumes.

Robinson showed how you might track each and every piece of a Dalek costume, along with the episodes that it's appeared in using Neo4j. First Robinson graphed it out visually, then showed code examples of how you would retrieve the information using Java and the new Cypher graph query language.

Assuming you don't have a need to track Doctor Who props, what else might you use Neo4j for? Robinson mentioned that one of his first jobs was working with supply chain traceability. He gave the example of the late 90s Mad Cow outbreak in the U.K. Robinson explained you might use Neo4j to track the history of any given cow that turned up with Mad Cow, and then be able to tell which locations it'd been to and any other cattle it'd been in contact with.

Robinson finished off the presentation with a demonstration of the Neo4j Webadmin interface, and ran through a few queries to show results returned by Neo4j. If you're interested in learning more about Neo4j, Robinson recommends starting with the tutorial.