# The building blocks Everything in a house is one of four building blocks. This is the house's own account; you get it in full from `overview` under `model_documentation`. | Block | What it is | |---|---| | **Thing** | a node. Kinds: `Text` (a literal string), `Identity` (an individual, a document, a hierarchy: an identity with no content of its own), `Form` (a record schema defined at runtime), `FormedThing` (a value of a form), `Versioned` (a hull that chains the versions of a slot), `Binary` (bytes identified by their hash), `TimeNode` and `GeoCell` (nodes of the calendar and of the spatial grid) | | **Link** | an edge that is at the same time a fact. Facts are retracted, never deleted; skills show active facts | | **Chain** | an ordered list as a value | | **Tree** | a canonical set as a value; named anchors point at tree roots to form collections such as "Concepts", "Forms" or the instances of an aspect | ## Three things to keep apart - **Values** are their content. The text "The bridge was finished in 1887." is one node, however often you store it; `store_text` answers `is_new: false` the second time. The same holds for formed values: equal form and equal values are the same node. - **Individuals** have an identity of their own. Two calls of `create_person` with the same name create two people, on purpose: names are labels, and one name often covers several individuals. Creating never searches. - **Facts** are links. "This claim is stated in that source" is a link you assert and can retract. A retracted fact keeps its content, and asserting it again reactivates it. ## IDs IDs are opaque Base64 strings. Pass them back exactly as received. Every answer names a node as a triple of `id`, `kind` and `label`, so you can decide what to open next without a second call. ## The closed vocabulary of standard links Besides typed links of your own (link forms), there are nine standard meanings, shared by every house: `Tag`, `Title`, `Index`, `Identify`, `Answer`, `DependOn`, `Promote`, `Previous`, `PartOf`. The reading rule is always the same: the link is a statement about its From end, and To is the referent. `PartOf` reads "To contains From"; `Identify` is where identifiers from foreign systems hang. `assert_link` writes them. ## Time is order, not timestamps The graph has no modification timestamps. "Current" means position in a version chain, not a date. When something happened is a fact of its own, asserted with `assert_time`. ## Words you will meet The skill names and their descriptions are English. Part of the built-in vocabulary is German, and one German word runs through all descriptions: | Word | Meaning | |---|---| | fassung | a version of a document or of a versioned slot | | Bestand | a holding: a body of material that belongs together | | Verdichtung | a digest: a condensed description of a document or a group | | Gespräch | a conversation | | Ort, Organisation | place, organisation (built-in aspects beside `Person`) | | Planung, Vorlage, Agenda | planning, template, agenda (the plan vocabulary) | | Helfer, Sprecher | helper, speaker | ## Go deeper - [forms-aspects-concepts](forms-aspects-concepts.md): how to define your own kinds - [evidence-and-provenance](evidence-and-provenance.md): notes, open questions, what carries a claim - [finding-things](finding-things.md): the ways to get back what you stored - [a-memory-you-can-shape](a-memory-you-can-shape.md)