### Cypher is a query language for Neo4j graph databases that can be used to declare what kind of projection of your domain data you need for a certain UI component, similar to GraphQL. It allows for returning complex JSON documents and supports literal maps and collections, as well as powerful aggregation functions like COLLECT. New features in Neo4j 3.1 include map projections, which apply a map-like property-selector to entities, and pattern comprehensions, which allow for list comprehensions with graph patterns. These new features enable more syntactic sugar and flexibility in Cypher queries, making it easier to work with complex data structures and related entities.