Glossary
This chapter collects the core terms that appear throughout the book. Skim it when you encounter unfamiliar terminology or need a refresher on how concepts relate to one another in TribleSpace.
Attribute
A property that describes some aspect of an entity. Attributes occupy the
middle position in a trible and carry the ValueSchema (or blob-handle schema)
that interprets and validates the value. Modules mint them with the
attributes! macro, so they behave like detached struct fields: each attribute
remains independently typed even when many are combined to describe the same
entity, preserving its individual semantics. Provide an explicit 128-bit id in
the macro when you need a canonical column shared across crates or languages;
omit the literal to derive a deterministic id from the attribute name and value
schema (the macro calls Attribute::from_name for you), which is handy for
short-lived or internal attributes.
Blob
An immutable chunk of binary data addressed by the hash of its contents. Blobs
store payloads that do not fit in the fixed 32-byte value slot—long strings,
media assets, archived TribleSets, commit metadata, and other large
artifacts. Each blob is tagged with a BlobSchema so applications can decode it
back into native types.
Blob Store
An abstraction that persists blobs. Implementations back local piles, in-memory
workspaces, or remote object stores while presenting a common BlobStore
interface that handles hashing, deduplication, and retrieval.
Capability
A signed authorisation to act with a specific scope on a triblespace network.
Each capability is two SimpleArchive blobs: a cap blob carrying
cap_subject (the pubkey it authorises), cap_issuer, cap_scope_root, and
metadata::expires_at; and a sig blob whose sig_signs points at the cap
blob's handle and carries the issuer's signed_by + signature_r/s. Caps chain
off the team root (or off another cap with admin scope) and verify by walking
back to the configured team_root. Holders present the sig blob's handle on
connection (OP_AUTH); the relay enforces the verified scope on every
subsequent op. See the Capability Auth chapter.
Checkout
The result of Workspace::checkout. A Checkout pairs a TribleSet with the
CommitSet that produced it. It derefs to TribleSet for querying and its
AddAssign implementation merges both facts and commit sets, making it the
natural accumulator for incremental query loops.
Commit
A signed snapshot of repository state. Commits archive a TribleSet describing
the workspace contents and store metadata such as parent handles, timestamps,
authors, signatures, and optional messages. The metadata itself lives in a
SimpleArchive blob whose hash becomes the commit handle.
CommitSet
A set of commit handles. CommitSet implements CommitSelector by returning
itself, which is useful for incremental deltas (e.g.,
checkout(full.commits()..)). Supports union, intersection, and
difference operations.
Commit Selector
A query primitive that walks a repository’s commit graph to identify commits of
interest. Selectors power history traversals such as parents,
nth_ancestors, ranges like a..b, and helpers such as history_of(entity).
Constraint
The trait that every query operator implements. A constraint exposes six methods
— variables, estimate, propose, confirm, satisfied, and influence
— that let the Atreides join engine navigate the search space without a
separate planner. Custom data sources and application predicates participate in
queries by implementing this trait.
Entity
The first position in a trible. Entities identify the subject making a statement and group the attributes asserted about it. They are represented by stable identifiers so multiple facts about the same subject cohere.
In practice you pick an identifier policy:
- Extrinsic ids (for example
ufoid,fucid,genid) track a conceptual subject across edits and versions. Use these when you intend to accumulate additional facts over time. - Intrinsic ids (content-derived hashes) are recomputed from the entity's
asserted fields. The
entity!macro uses this policy when you omit the explicitid @prefix (or when you write_ @), so identical records unify naturally.
Ownership policies and schemas determine who may mint new facts for a given identifier.
Fragment
A bundle of tribles and exported IDs returned by the entity! macro and import
pipelines. Fragments compose via += to build larger datasets. Use
Fragment::root() to extract derived IDs, Fragment::empty() to start
accumulation, and spread (*) to pass child fragments into parent entities,
giving Merkle trees for free.
PATCH
The Persistent Adaptive Trie with Cuckoo-compression and Hash-maintenance.
A single PATCH stores one ordering of a trible set in a 256-ary trie whose
nodes use byte-oriented cuckoo hash tables and copy-on-write semantics. A
TribleSet maintains six PATCH instances — one per permutation of entity,
attribute, and value. Shared leaves keep permutations deduplicated, rolling
hashes let set operations skip unchanged branches, and queries only visit the
segments relevant to their bindings, further described in
the deep-dive chapter.
Pile
An append-only collection of blobs and branch records stored in a single file. Piles act as durable backing storage for repositories, providing a write-ahead-log style format that can be memory mapped, repaired after crashes, and safely shared between threads.
Repository
The durable record that ties blob storage, branch metadata, and namespaces together. A repository coordinates synchronization, replication, and history traversal across commits while enforcing signatures and branch ownership.
Schema
The set of attribute declarations and codecs that document and enforce the shape of data in TribleSpace. Schemas assign language-agnostic meaning to the raw bytes—they are not the concrete Rust types—so any implementation that understands the schema can interpret the payloads consistently. Value schemas map the fixed 32-byte payload of a trible to native types, while blob schemas describe arbitrarily long payloads so tribles referencing those blobs stay portable.
Scope
The set of permissions a Capability grants. Encoded as tribles
hung off the cap's cap_scope_root entity: one or more metadata::tag: PERM_*
triples (PERM_READ, PERM_WRITE, PERM_ADMIN) optionally combined with
scope_branch: <branch_id> triples that restrict the permission to specific
branches. An empty branch-restriction set means "every branch within the
permission set." Sub-capabilities issued via delegation must have a scope that
is a subset of the parent's; the verifier enforces this via scope_subsumes
during chain walk.
Team Root
The single immutable keypair that anchors a triblespace network's
capability chain. Generated once at team creation, used to sign
exactly one capability (the founder's), and then archived offline — the team
root never operates online. Like a CA: bootstrapping authority, not runtime
authority. The relay hard-codes the team root pubkey via
PeerConfig.team_root and rejects any cap chain that doesn't terminate at it.
Trible
A three-part tuple of entity, attribute, and value stored in a fixed 64-byte layout. Tribles capture atomic facts, and query engines compose them into joins and higher-order results.
TribleSpace
The overall storage model that organises tribles across blobs, PATCHes, and repositories. It emphasises immutable, content-addressed data, monotonic set semantics, and familiar repository workflows.
Value
The third position in a trible. Values store a fixed 32-byte payload interpreted through the attribute’s schema. They often embed identifiers for related entities or handles referencing larger blobs.
Workspace
A mutable working area for preparing commits. Workspaces track staged trible sets and maintain a private blob store so large payloads can be uploaded before publishing. Once a commit is finalised it becomes immutable like the rest of TribleSpace.