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.
Implementations
Five official ports, all built against the specification.
| Language | Version | Maturity | Docs |
|---|---|---|---|
| Python | 0.9.0 | beta, reference | py.omnist.dev |
| TypeScript | 0.2.0-alpha | alpha | ts.omnist.dev |
| Rust | 0.2.1-alpha | alpha | rs.omnist.dev |
| Go | 0.2.0-alpha | alpha | go.omnist.dev |
| Java | 0.2.1-alpha | alpha | j.omnist.dev |