Facts
A fact is one relationship.
{
"subject": "user:maya",
"predicate": "works_at",
"object": "company:acme"
}
That is user:maya — works_at → company:acme.
Entities: type:id
Use a namespace and an id, joined by a colon.
user:mayacompany:acmeproject:dashboardtopic:typescript
Gomind infers the type from the prefix. user:123 and question:123 are different entities. Deleting with forget_entity then removes every fact about that name.
Bare strings still store. They are harder to join later. Prefer type:id from the start.
Object: entity or literal
If the object looks like an entity name, Gomind treats it as a node in the graph.
If it is a value (vegetarian, Portland, senior engineer), it is stored as a literal. In responses that shows up as value instead of object.
Predicates
Keep them stable and snake_case: works_at, has_skill, display_name. Renaming a predicate later splits history.
Optional context is a note on the fact. It is not part of the triple.
What not to store
Do not invent facts. Store what a user said, what a system already knows, or what feed extracted. Confirm before storing sensitive data.