Omnist logo

Omnist

A data-interchange format built around one idea: a document is an ordered list of labeled edges, not a map.

Most formats model an object as a map from key to value. That works fine until a format needs to express "many" without a wrapper, or interleave repeated elements with other data — the shape XML uses and JSON, YAML, and TOML can't natively carry. Omnist's Document model handles all of it the same way: a node is a list of (label, value) edges, in order, with no special case for arrays. Two item edges are the array. There is no separate list type to define.

A Schema is a graph of named, closed records constraining those edges. Because both models are small and closed, a set of operations over schemas — inclusion, equivalence, minimization, extraction, inference — are decidable and total, not best-effort.

Read the specification →

Implementations

Five official ports, all built against the specification.

LanguageVersionMaturityDocs
Python0.9.0beta, referencepy.omnist.dev
TypeScript0.2.0-alphaalphats.omnist.dev
Rust0.2.1-alphaalphars.omnist.dev
Go0.2.0-alphaalphago.omnist.dev
Java0.2.1-alphaalphaj.omnist.dev