Entailment, in three rules
Entailment in one sentence
An entailed triple is one that must be true given the triples you already wrote. You didn't type it — but any honest reasoner will list it, because the RDFS rules force it. That's it. Entailment is not magic, not statistics, not inference in the ML sense — it's pure book-keeping over a fixed rule set.
The three rules you'll meet every single day
| Rule | If you have… | …then you also have | Plain English |
|---|---|---|---|
| rdfs9 | c1 rdfs:subClassOf c2 and x rdf:type c1 | x rdf:type c2 | An instance of a sub-class is also an instance of the super-class. |
| rdfs7 | p1 rdfs:subPropertyOf p2 and s p1 o | s p2 o | A statement using a sub-property is also a statement using the super-property. |
| rdfs2 | p rdfs:domain d and s p o | s rdf:type d | If you use a property, the subject gets typed as the property's domain. |
| rdfs3 | p rdfs:range r and s p o | o rdf:type r | If you use a property, the object gets typed as the property's range. |
There are 14 rules in total (W3C RDF 1.1 Semantics §9.2). The other 10 are almost all about RDF/RDFS plumbing — propagating rdf:type of resources, rdfs:Resource membership, rdfs:Literal typing, etc. You almost never reason about them by hand; the four above carry 95% of the practical weight.
Why it's cheap
RDFS entailment is tractable: polynomial in the size of the graph. Practically every triple store materialises these inferences either at write time (forward chaining — store the closure) or rewrites them at query time (backward chaining — expand each ?x a :Person into its sub-classes).