Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Schema (mem: vocabulary)

Every memory is a set of RDF triples. The mem: vocabulary defines the classes and predicates.

Namespace

@prefix mem: <https://ns.flur.ee/memory#> .

Classes

A memory’s kind is expressed via rdf:type (a in Turtle) — there is no mem:kind predicate.

ClassKind
mem:Factfact
mem:Decisiondecision
mem:Constraintconstraint

mem:repo and mem:user are additional IRIs used as the range of mem:scope (see below).

Core predicates

PredicateRangeRequiredMeaning
mem:contentxsd:string (indexed as @fulltext)The textual content; BM25-searchable
mem:scopeIRI — mem:repo or mem:userWhich TTL file it lives in
mem:createdAtxsd:dateTimeInsertion timestamp
mem:tagxsd:string (multi-valued)optionalFree-form tags
mem:artifactRefxsd:string (multi-valued)optionalFile / symbol / URL references
mem:branchxsd:stringoptionalGit branch captured at write time

Optional predicates (any kind)

These predicates can appear on any memory kind. All values are stored as plain string literals (not IRIs).

PredicateRangeMeaning
mem:rationalexsd:string (indexed as @fulltext)Why — the reasoning behind this memory
mem:alternativesxsd:stringWhat else was considered
mem:severityxsd:string"must", "should", or "prefer"How hard a constraint is (constraints only)

ID format

Memory IRIs take the shape:

mem:<kind>-<ULID>

Examples:

mem:fact-01JDXYZ5A2B3C4D5E6F7G8H9J0
mem:decision-01JDABC6D7E8F9G0H1I2J3K4L5
mem:constraint-01JDLMN7O8P9Q0R1S2T3U4V5W6

ULIDs are sortable by creation time, which is why memories display nicely in chronological order without an explicit index.

Full example

@prefix mem: <https://ns.flur.ee/memory#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

mem:decision-01JDABC a mem:Decision ;
    mem:content "Use postcard for compact index encoding" ;
    mem:tag "encoding" ;
    mem:tag "indexer" ;
    mem:scope mem:repo ;
    mem:artifactRef "fluree-db-indexer/" ;
    mem:createdAt "2026-02-22T14:00:00Z"^^xsd:dateTime ;
    mem:rationale "no_std compatible, smaller output than bincode" ;
    mem:alternatives "bincode, CBOR, MessagePack" .

See also: TTL file format for how this shows up on disk.