**Unified Syntax Tree - a generic structured data building block standard**
“Unist” is short for “Unified Syntax Tree” - it is intended to function as an Abstract Base Class for more purpose-built extensions. It is a basic, [[JSON]]-based, hierarchical organizational scheme.
At it’s core, it’s a tree built around nodes:
```tsx
interface Node {
type: string
data: Data?
position: Position?
}
```
Nodes may contain other nodes. If so, they extend the Parent interface:
```tsx
interface Parent <: Node {
children: [Node]
}
```
The purpose of the Unist is to provide a common basic hierarchical structure to create utilities that can be then reused between different applications of Unist. Examples would be utilities for tree traversal, path-finding, find, filter, et cetera.
Although the word [[Ontology]] doesn’t appear anywhere in the GitHub, Unist feels **very similar** to the concept of an [[Ontology]] Representation Language.
Some [[Markdown Processers]] (like Remark) are capable of putting out HTML ************and/or************ Unist-structured JSON. [[Markdown]] in Unist is called “Mdast”.
The API for [[Notion]] reveals their data structure is either Unist-compliant or is heavily inspired by Unist.
# Example Markdown Implementation (from Remark)
## Input
```markdown
> Alpha bravo charlie.
```
## Output
```json
{
type: 'blockquote',
children: [{
type: 'paragraph',
children: [{type: 'text', value: 'Alpha bravo charlie.'}]
}]
}
```
****
## Source
[https://github.com/syntax-tree/unist](https://github.com/syntax-tree/unist)
## Related
- [[Markdown]]
- [[Notion]]
- [[Ontology]]