# Knowledge graphs

Make the relationships between facts explicit.

Source: https://docs.minds.sh/docs/concepts/knowledge-graphs



A knowledge graph connects entities with named relationships. Instead of storing only “Alice manages the project,” you can represent **Alice**, **the project**, and the **manages** relationship separately. Applications can then ask how people, work, sources, and decisions connect.

## Nodes and edges [#nodes-and-edges]

A **node** represents an entity or concept. An **edge** connects two nodes and gives the relationship a name and direction. Properties add details to either one. A connection should represent a meaningful claim, not just the fact that two phrases appeared in the same document.

For example, a project can have an owner, depend on a service, and be supported by a source document. Those are three different relationships and should remain distinguishable.

## Ask about time [#ask-about-time]

Relationships change. Minds' bitemporal model distinguishes **valid time**, when a fact applies in the world, from **transaction time**, when the store recorded or retired it.

Suppose a project owner changed on Monday, but your system learned about it on Wednesday. Monday is the start of the new real-world relationship. Wednesday is when that information became known to the store. Keeping both helps answer “who owned it then?” and “what did we know at the time?”

## Keep the source attached [#keep-the-source-attached]

A graph edge is a claim. Lineage provides a way to inspect its source and derivation. When an answer matters, follow the relationship back to the evidence instead of treating connectivity as truth.

Start with [graph operations](/docs/api/instance/knowledge-graph), then use [lineage](/docs/api/instance/lineage) and [learning isolation](/docs/concepts/learning-isolation) where your workflow needs review.
