Gram graph exchange format

Gram is a textual format for data graphs, inspired by Cypher and extended to anticipate the greater expressiveness of GQL.

Named values are packed into records, qualified with labels, given identity, and organized into expressive patterns. It's JSON for data graphs!

In gram, everything is a path. Nodes and relationships are special cases of a path. A graph is composed by writing a sequence of paths, which makes gram ideal for streaming (even non-graph) data.

The reference implementation is written in TypeScript and produces an AST.

Roadmap targets include:

  • port to other languages
  • integrate with D3, cytoscape, graphology, ...
  • add import/export from Neo4j using Relate framework

Thoughts? Opinions? Complaints? I'd love to hear them all. :slight_smile:


An introductory blog post about gram, explaining some of the motivation.