Overview
Reification & N-ary Relations
Statements about statements; relations with more than two participants; temporal qualifications.
Why it matters
RDF triples are binary. When you need to say 'Alice rated this movie 4 stars on 2024-05-01', you must reify or use the N-ary pattern. Picking the wrong one wrecks queries.
Going deeper
A decision matrix, with the trade-off you're really making:
| Approach | Strength | Weakness |
|---|---|---|
| Classical reification (rdf:Statement) | Works in every RDF tool | 4 triples per fact — storage bloat, ugly SPARQL |
| N-ary class (LikingEvent) | Clean OWL semantics, reusable as an ODP | Adds a node per fact; learning curve for query authors |
| Named graphs (each fact in its own graph) | Native to SPARQL 1.1; great for provenance | Granularity choice is yours; can explode graph count |
| RDF-star (RDF)* | Most compact and ergonomic | Tool support is uneven; not all reasoners understand it |
Practical rule: use the N-ary class pattern by default if the qualified fact is itself first-class in the domain (Order, Rating, Visit). Use RDF* when you only need triple-level metadata (provenance, confidence) and your stack supports it end-to-end.