RDF, OWL and SHACL alternative

The RDF, OWL and SHACL alternative: operational ontologies on SQL

Synalog describes only what your data contains, in one closed-world language that compiles to SQL on your existing databases.

At a glance

SynaLemma vs RDF, OWL and SHACL at a glance

SynaLemma vs RDF, OWL and SHACL at a glance
CriterionSynaLemmaRDF, OWL, SHACL
What the ontology describes Only the concepts your data contains, computed from your tablesA domain, for publishing and linking
Logic Closed world, like your databaseOpen world: a missing fact is unknown
Languages One: rules, queries and assertionsRDF, OWL, SHACL, SPARQL, plus R2RML to reach SQL
Where it runs Compiles to SQL on your existing databasesA triple store, or mappings to relational tables
Totals, averages, rankings Part of the language, with recursion and negationOutside OWL reasoning: written in SPARQL
Checks A verifier proves every rule terminates; assertions check the dataReasoners check consistency; SHACL validates data
Time to the first answer The layer grows from the first questionModelling up front, commonly months or years
RDF, OWL, SHACL

Why teams look for an alternative to RDF, OWL and SHACL

  • Open world

    In OWL, a missing fact is unknown, not false (OWL 2 primer).

  • Four languages

    RDF, OWL, SHACL and SPARQL, plus R2RML to reach relational tables (R2RML).

  • A triple store or mappings

    The data has to move or be mapped.

  • No business aggregates in OWL

    Totals, averages and rankings are written in SPARQL.

  • Modelling up front

    Ontology projects commonly take months or years before the first answer.

SynaLemma

SynaLemma vs RDF, OWL and SHACL: key differences

  1. Operational ontologies

    Only the concepts and relationships your data contains, each one computed from your tables.

  2. Closed world

    What is not in the data is false, as in your database. Assertions check the data directly.

  3. One language on SQL

    Rules, queries and assertions in Synalog, compiled to SQL on PostgreSQL, BigQuery, Databricks, Trino, Presto, DuckDB and SQLite.

  4. Reasoning with aggregates

    Recursion, aggregation, negation and time in one program, verified to terminate.

  5. No modelling project first

    The analyst writes rules as questions are asked. The layer grows from the first question.

Synalog

Example: a closed-world check

Revenue per customer, with three assertions. The second one is the check OWL's open world cannot make on its own. Customer 12 is missing; the engine names the row.

shop.l
Order(order_id:, customer_id:, amount:, status:) :- orders(order_id:, customer_id:, amount:, status:);
Customer(customer_id:, country:) :- customers(customer_id:, country:);

@Assert(Revenue,
      one_row_per_customer: "∀ c r s, Revenue c r → Revenue c s → r = s",
      known_customer:       "∀ c r, Revenue c r → ∃ k, Customer c k",
      positive:             "∀ c, Revenue c > 0");
Revenue(customer_id:, revenue? += amount) distinct :-
  Order(customer_id:, amount:, status: "delivered");
$ synalog shop.l verify
✓ Revenue.one_row_per_customer holds ✗ Revenue.known_customer is violated: ∀ c r, Revenue c r → ∃ k, Customer c k 1 counterexample: +----+----+ | c | r | +----+----+ | 12 | 20 | +----+----+ 1 row ✓ Revenue.positive holds
FAQ

RDF, OWL and SHACL alternative: FAQ

What is an operational ontology?

An ontology that describes only the concepts and relationships your data contains, each computed from your tables.

Do I need a triple store or a graph database?

No. Synalog compiles to SQL and runs on your existing databases. Graph queries are recursive rules.

Can Synalog check that every order has a customer?

Yes, with an assertion. Synalog is closed-world, so the engine returns the rows with no customer.

See it on your data

Bring a question your current stack can't answer.

In 30 minutes, we show SynaLemma answering it, with the rule behind the number and the checks it passed.