OWL Class Expressions in Anger

Restrictions, intersections, unions — the building blocks for *defined* classes.

0/3 done

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.

Definitions vs descriptions

OWL class expressions are job descriptions and the HR system that auto-tags matching employees.

At an employer, two kinds of statements coexist:

  • 'A senior engineer is a kind of engineer.' — a one-way fact (every senior engineer is an engineer, but not every engineer is senior). This is rdfs:subClassOf — a necessary condition.
  • 'An adult is exactly a person who has an age greater than 18.' — a two-way definition: anyone matching the description is automatically an adult; anyone who is an adult must match. This is owl:equivalentClassnecessary AND sufficient.

The HR system can only auto-tag people based on definitions of the second kind. Tell it 'a Senior is anyone with title=Engineer and years_at_company >= 5' and it'll silently retag every qualifying employee tonight. Tell it only 'every Senior is an Engineer' (necessary condition) and it'll never tag anyone — because the definition runs only one way. That gap between subClassOf and equivalentClass is the whole reason OWL reasoning becomes genuinely useful.

Reading in progress · 0 of 3 activities done