The three restrictions you'll use
Restrictions = anonymous classes
An OWL restriction is an anonymous class whose members satisfy a condition on a property. Three flavours dominate real models:
owl:someValuesFrom—∃ R.C. Has at least one R-value of type C.owl:allValuesFrom—∀ R.C. Every R-value (if any) is of type C. Note the trap: vacuously true when there are no R-values.owl:hasValue—∃ R.{a}. Has the specific individual a as an R-value.
Plus the cardinality restrictions: min, max, exactly.
Necessary vs sufficient
rdfs:subClassOf says "every member of A is a member of B" — a necessary condition. owl:equivalentClass says "A is exactly the things that satisfy this condition" — both necessary and sufficient. The latter is what lets a reasoner classify an individual into a derived class.