# Atomic Data Docs - Overview

Atomic Data is a modular specification for sharing, modifying and modeling graph data. It combines the ease of use of JSON, the connectivity of RDF (linked data) and the reliability of type-safety.

Venn diagram showing Atomic Data is the combination of JSON, RDF and Type-Safety

Atomic Data uses links to connect pieces of data, and therefore makes it easier to connect datasets to each other - even when these datasets exist on separate machines.


AtomicServer is an open source, powerful graph database + headless CMS. It's the reference implementation for the Atomic Data specification, written in Rust.

Atomic Data Core

Atomic Data has been designed with the following goals in mind:

  • Give people more control over their data
  • Make linked data easier to use
  • Make it easier for developers to build highly interoperable apps
  • Make standardization easier and cheaper

Atomic Data is Linked Data, as it is a strict subset of RDF. It is type-safe (you know if something is a string, number, date, URL, etc.) and extensible through Atomic Schema, which means that you can re-use or define your own Classes, Properties and Datatypes.

The default serialization format for Atomic Data is JSON-AD, which is simply JSON where each key is a URL of an Atomic Property. These Properties are responsible for setting the datatype (to ensure type-safety) and setting shortnames (which help to keep names short, for example in JSON serialization) and descriptions (which provide semantic explanations of what a property should be used for).

Read more about Atomic Data Core

Atomic Data Extended

Atomic Data Extended is a set of extra modules (on top of Atomic Data Core) that deal with data that changes over time, authentication, and authorization.

  • Commits communicate state changes. These Commits are signed using cryptographic keys, which ensures that every change can be audited. Commits are also used to construct a history of versions.
  • Agents are Users that enable authentication. They are Resources with their own Public and Private keys, which they use to identify themselves.
  • Collections: querying, filtering, sorting and pagination.
  • Paths: traverse graphs.
  • Hierarchies used for authorization and keeping data organized. Similar to folder structures on file-systems.
  • Invites: create new users and provide them with rights.
  • WebSockets: real-time updates.
  • Endpoints: provide machine-readable descriptions of web services.
  • Files: upload, download and metadata for files.

Tools & libraries

Get involved

Make sure to join our Discord if you'd like to discuss Atomic Data with others.


Keep in mind that none of the Atomic Data projects has reached a v1, which means that breaking changes can happen.

Reading these docs

This is written mostly as a book, so reading it in the order of the Table of Contents will probably give you the best experience. That being said, feel free to jump around - links are often used to refer to earlier discussed concepts. If you encounter any issues while reading, please leave an issue on Github. Use the arrows on the side / bottom to go to the next page.

Table of contents

What is Atomic Data


Specification (core)

Specification (extended)

Use Atomic Data

Acknowledgements | Newsletter | Get involved