The Design Decision

Loka will never reject a triple for violating an OWL constraint. The database accepts everything. It is a store, not a reasoner.

OWL validation happens in the SDKs (Python, TypeScript, Rust, etc.), not in the database engine. When you insert a triple through an SDK:

  1. The SDK loads the OWL ontology from the database
  2. The SDK checks the triple against OWL constraints (domain, range, cardinality, disjoint classes, etc.)
  3. If the triple violates a constraint, the SDK throws an exception before the triple reaches the database
  4. If the triple passes, the SDK sends it to the database, which stores it unconditionally

Why Not Validate in the Database?

SDK Behavior

SettingBehavior
OWL validation enabled (default)SDK throws on constraint violation before sending to database
OWL validation disabledSDK sends all triples directly, no checking
Direct HTTP/SPARQL accessNo validation — database accepts everything

OWL validation is enabled by default in all SDKs. This means most users get constraint checking out of the box, but can disable it when they need raw performance or flexibility.

OWL as Data

The OWL ontology is stored in the database as regular RDF triples. The SDKs read it from the database and use it for validation. This means: