Going deeper — why the triple is the whole game
Why it works. Fixing the arity of every fact at exactly three makes RDF composable in a way tables and objects are not. Because every statement has the identical shape, two graphs authored by strangers merge by simple set-union of their triples — no schema reconciliation, no migration. The model is a labelled directed graph, and the triple is its edge. Everything richer (RDFS classes, OWL axioms, SHACL shapes, SPARQL patterns) is just more triples read by a tool that knows certain predicates — the data model never changes.
Why three and not two or four? Two slots (subject, value) can't name the relationship, so you'd lose the ability to mix relationship types freely. Four-plus slots (n-ary facts: 'Alice rated Inception 4 stars on Tuesday') do occur — but RDF deliberately keeps the atom binary and asks you to reify the extra context as its own node (a :Rating resource with its own triples). That keeps merge-by-union intact at the cost of an extra node when context is needed.
Where it bites.
- Order matters, direction matters.
:Alice :knows :Bob and :Bob :knows :Alice are different facts. RDF stores no reverse edge unless you assert it (or declare the property symmetric in OWL).
- No native n-ary facts. The moment a fact needs a third party or a timestamp, you must reify — beginners try to cram it into the object and lose the data.
- Predicates are global, not local. A predicate IRI means the same thing everywhere; you can't quietly redefine
:knows for one dataset without consequences when graphs merge.