Stop wrestling
with schemas.
Model reality.

A time-traveling knowledge graph database and system of action. Entities, relationships, facts, and time — all queryable. No migrations. No JOINs. No lost history.

ontology-dbasserting...
_
streaming facts into the triple store...

On·tol·o·gy/änˈtäləjē/noun

1.The branch of metaphysics dealing with the nature of being.

2.A set of concepts and categories in a domain that shows their properties and the relations between them.

The Database

Built on facts,
not rows.

Relational databases store rows. Rows change. History disappears. UPDATE erases the past to store the present.

Ontology-DB stores facts. Facts never change. History is built in.

// the atom of data

[entity, attribute, value, timestamp]

Schema-free

Add attributes to any entity, anytime. No migrations, ever.

Time Travel

Every fact is timestamped. Query any point in history.

Relationships

First-class edges between entities. Not foreign keys.

Datalog

Declarative pattern-matching queries that compile to SQL.

Key Features

The primitives that
change everything.

Triples

  • Every fact is an independent [entity, attribute, value] triple.
  • No fixed schema — add attributes to any entity, anytime, no migrations.
  • Each triple is independently queryable and timestamped.
triple-store
employees ← UPDATE destroys history
name
email
role
salary
Alice
alice@
Eng Mgr
$185k
Bob
bob@
Sr Eng
$145k
Carol
carol@
PM Lead
$170k
triples ← every fact independent
:employee/name
"Alice Chen"
t=Jan 15
:employee/email
"alice@acme"
t=Jan 15
:employee/role
"Eng Manager"
t=Feb 01
:employee/salary
185,000
t=Mar 15
time-travelasOf: Now
JanFebMarAprMayJunNow
Active (5)
:name
"Alice Chen"
:email
"alice@acme"
:role
"Eng Manager"
:salary
$185,000
:dept
"Platform"
Retracted (4)
:role
"Sr Engineer"
:salary
$145,000
:salary
$165,000
:dept
"Backend"
9 facts stored · 0 deleted

Time Travel

  • Every fact records when it was asserted and retracted.
  • Query your data as-of any point in history with a single parameter.
  • No custom audit tables — history is built into the data model.

Entity Linking

  • Unify records across Salesforce, Stripe, Jira, and more.
  • :_meta/same-as links create a single identity across systems.
  • Query across all your systems with one Datalog query.
entity-linking
SF Salesforce
Acme Corp
sf:acme
Alice Chen
sf:alice
ST Stripe
cus_acme
stripe:cus_acme
sub_001
stripe:sub_001
JR Jira
ENG-1234
jira:ENG-1234
ENG-1235
jira:ENG-1235
3 systems · no connections
deploy-pipeline
author
typecheck
plan
apply
query
agent >|

Deploy Pipeline

  • Describe your domain in plain English — an AI agent writes the ontology.
  • Hindley-Milner type engine validates everything, no annotations needed.
  • Terraform-style plan/apply makes your ontology live atomically.

System of Action

A database that
thinks and acts.

Most databases store data and wait. Ontology-DB creates a closed loop of detection and resolution. Rules query for problems. Violations track them. Actions fix them. Forms collect what's needed. Processes orchestrate the whole thing.

When the underlying data changes, violations auto-resolve. The system heals itself.

closed-loop — employee onboarding
1/6Rule
RuleDatalog query runs continuously. Finds employees missing a completed I-9.
(define-constraint i9-required
  (where
    [?emp :employee/status "onboarding"]
    [?emp :employee/name ?name]
    (not [?form :form/entity ?emp]
         [?form :form/template "i9"]
         [?form :form/status "completed"])))

Rules

Datalog queries that define bad states. If the query returns rows, those rows are violations. Evaluated continuously.

Actions

Governed state transitions with preconditions and effects. Can require approval. Applied atomically with full audit trail.

Forms

Multi-party data collection with section dependencies. Versioned templates so in-flight documents are never disrupted.

Processes

DAGs that orchestrate actions, documents, queries, and human tasks into multi-step processes. Each step feeds the next.

Compare & Review

Why teams choose
Ontology-DB.

Features
OntologyDB
PostgreSQL
MongoDB
Neo4j
Schema evolution without migrations
~
~
Built-in time travel & audit trail
First-class entity relationships
Declarative Datalog queries
Built-in rules & processes
Cross-system entity linking
Append-only immutable storage

For Developers

Full control.
Two DSLs.

Lisp for AI generation and REPL-driven development. TypeScript for IDE autocomplete and compile-time safety. Both compile to the same intermediate representation with perfect round-trip fidelity. A Hindley-Milner type engine powers inference across the entire ontology.

The DSL Duality

Canonical source. Shared intermediate representation. Executable runtime metadata.

compile(lisp) → OntologyIR → deployable payload

  ┌──────────────┐
  │   Lisp DSL   │
  │  (.lisp)     │
  └──────┬───────┘
    compile │
           V
  ┌──────────────┐
  │  OntologyIR  │
  │  (shared)    │
  └──────┬───────┘
      emit │
           V
  ┌──────────────┐
  │ Runtime data │
  │  payload     │
  └──────┬───────┘
   validate │
           V
  ┌─────────────────────────────────────────────────────┐
  │  ✓ verified  ───  payload matches compiled IR       │
  │  deployable data keeps source semantics             │
  └─────────────────────────────────────────────────────┘
schema.lisp
waiting...
OntologyIR
waiting for IR...
runtime-payload.json
waiting for emit...
PASSRuntime payload preserves the canonical source semantics

Lisp DSL

Homoiconic. Token-efficient. Built for AI generation and REPL-driven development. No build step.

OntologyIR

The intermediate representation where source declarations become schema-flexible, compiler-checked runtime intent.

Runtime Payload

Deployable entity types, relationships, queries, rules, views, and workflow metadata.

Developer Intelligence

A Hindley-Milner type engine powers the entire Lisp DSL experience — inference, diagnostics, CEL validation, and autocomplete. No annotations required.

Algorithm W + row polymorphism + CEL bridge

Hindley-Milner Inference — Types inferred — no annotations needed
|

Hindley-Milner

Algorithm W with row polymorphism infers every type — entity attributes, action bindings, do-block expressions, even Datalog query result shapes. No annotations needed.

CEL Bridge

CEL expressions inside Lisp documents are type-checked against the entity schema. Variables like $entity, $input, $now are typed from context.

Row Polymorphism

Open record types let functions accept any record with the required fields — extra fields pass through. The type {:name String | r} means "has name, maybe more."

FAQ

Common questions
from builders.

Your data is already
a knowledge graph.

Unify your systems into a single queryable ontology. Every fact timestamped. Every relationship first-class. Every query can see the past.