What is SHACL, and how does it differ from OWL?
The W3C language that validates an RDF graph against declared shapes: it states what the data must have, not what can be inferred.
SHACL, the Shapes Constraint Language, is the language for declaring what shape the data inside an RDF graph must take, and it has been a W3C Recommendation since July 2017. You write shapes, themselves in RDF, stating things like: every supplier must have exactly one tax identifier, this field must be a string, this relationship must point at a node of type contract. Then you hand the graph to a validator, which returns a report listing the violations. The shapes live in a graph kept separate from the data one, so the same graph can be validated against different contracts depending on who consumes it. It exists because a knowledge graph has no schema rejecting the wrong row the way a relational database would: it accepts any well-formed statement, even when the value is plainly wrong, and without a declared check the error goes in and stays in.
Why the ontology is not enough
This is the costliest misunderstanding, and it concerns OWL. OWL exists to infer: if you declare that every invoice has an issuer and you find an invoice without one, OWL does not flag an error: a reasoner catches contradictions, not gaps, and from that absence it concludes the issuer exists and is not yet known. That is open-world logic, right for reasoning over incomplete knowledge and wrong as a quality gate. SHACL does the opposite: it validates the graph for what it contains at the moment you hand it over, and reports the absence. The two coexist in the same graph and answer two different questions, what may I conclude and what must I require, but using the first to do the second's job lets every dirty record through.
A concrete example
A company builds a graph joining supplier records, contracts and orders so an assistant can work on top of it. With no declared shapes, a supplier imported from an old business system arrives with no tax identifier and its address written into a notes field: nobody notices until the assistant answers a question about active contracts in one region and leaves it out. With SHACL that record does not slip in quietly, it lands in a validation report naming the node and the constraint it broke. The gain is not theoretical: it moves the error from answer time to load time.
Why it matters for decision-makers
Anyone putting an agent or a GraphRAG system on top of a graph is buying two separate things: the meaning, which lives in the ontology, and the guarantee that the data honors it, which lives here. The second is almost always skipped, and the standard itself leaves room: a validator implementing only the Core profile silently ignores constraints written in SPARQL, so two products both conformant with SHACL can return different verdicts on the same graph. The question to put to anyone proposing a knowledge graph is blunt: which constraints are declared, and what happens to a record that breaks them.
Frequently asked questions
Related terms
- RDF (Resource Description Framework) · The W3C standard that represents data as subject-predicate-object triples identified by unique IRIs.
- OWL (Web Ontology Language) · The W3C standard language for building ontologies with formal semantics: not just a shared dictionary, but verifiable inference rules.
- Ontology (data & AI) · The formal vocabulary defining your business entities and their relationships: the shared schema data and AI reason on.
- Knowledge graph · A network representing company data as entities and relationships: customers, products, contracts and the links connecting them.
- Data quality · How fit your data is for its intended use: complete, correct, fresh and consistent across systems. Measured, not declared.
A term that hits close to home? Let's talk.
CONTACT ME