Strange Loop

Designing Cypher - a Graph Query Language

This is a talk about language design. It is also a talk about language implementation, and how the two go hand in hand. We've spent the past 5 years building Cypher for Neo4j, and have now opened it up for other vendors as well. This is the story of what we learned along the way so far.

This is a talk for anyone who is interested in learning about the things that are important to consider when designing a language for wide use.

We set out to build a language that was specialised while being expressive, a language where simple things are easy, and complex things possible. We desired a language that is easy to learn, with a straight path to mastery. We wanted a high level declarative language for which we could write a high performance implementation. We knew that we would make mistakes and needed a way to correct those, our language needed to be able to evolve while being reliable. We have not been very scientific about our process, but have still learned a lot along the way. In this talk we will share those learnings with you, so that you too can learn from our successes and mistakes.

This is not a story from an ivory tower, but a story about moving fast and breaking things. We never intended to build a language, but reluctantly found ourselves there anyway. With a small team and no budget we still produced something that a lot of people find very useful. We built something we are proud enough about to want to share the story of with the world.

Tobias Lindaaker

Tobias Lindaaker

Neo Technology

Tobias was one of the very first developers of Neo4j. He has been part of most aspects of the development and technical decisions over the past decade. Most recently, Tobias development efforts have been focused on the Cypher query language, and in particular on the openCypher project.