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.
SynaLemma vs RDF, OWL and SHACL at a glance
| Criterion | SynaLemma | RDF, OWL, SHACL |
|---|---|---|
| What the ontology describes | Only the concepts your data contains, computed from your tables | A domain, for publishing and linking |
| Logic | Closed world, like your database | Open world: a missing fact is unknown |
| Languages | One: rules, queries and assertions | RDF, OWL, SHACL, SPARQL, plus R2RML to reach SQL |
| Where it runs | Compiles to SQL on your existing databases | A triple store, or mappings to relational tables |
| Totals, averages, rankings | Part of the language, with recursion and negation | Outside OWL reasoning: written in SPARQL |
| Checks | A verifier proves every rule terminates; assertions check the data | Reasoners check consistency; SHACL validates data |
| Time to the first answer | The layer grows from the first question | Modelling up front, commonly months or years |
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 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.
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.
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"); Sources
Checked against each product's public documentation on the review date. To report an error: contact@synalinks.com.
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.
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.