Search code examples
owlontology

Express relationship between properties with OWL


How is it possible to express relationships between properties of two (or more) OWL classes?

For example i have a class Student with a property called name and a class Person with a property lastname. With OWL i would like to describe that the properties lastnameand name are semantical equal (both means the lastname of a real person). All i found within the w3 Reference for OWL is that properties just can have a relationship to classes (e.g. name -> Person) with rdfs:domain and nothing to describe the relationship between properties.


Solution

  • While OWL doesn't provide support for arbitrary relationships between properties, the ones you'd typically want for modeling are available. In particular, there are:

    • rdfs:subPropertyOf (which is reused, even though it's not the OWL namespace), for indicating that one property implies another.
    • owl:equivalentProperty, which indicates that the properties are equivalent (i.e., owl:equivalentProperty(p,q) → (p(a,b) ↔ q(a,b)). owl:equivalentProperty is the RDF property you'd use for encoding both equivalent object properties as well as equivalent data properties.

    All i found within the w3 Reference for OWL is that properties just can have a relationship to classes (e.g. name -> Person) with rdfs:domain and nothing to describe the relationship between properties.

    I'm not sure what document you're referring to; Section 9 about Axioms describes lots of different relationships that can hold between properties: subproperty relationships, equivalence, disjointness, inverseness, all of which involve multiple properties.

    Ivo Velitchkov mentioned in a comment that: "This is possible with owl:sameAs in OWL Full but not in OWL DL." There is a note in the OWL 1 spec in the part of about equivalentProperty that says:

    NOTE: Property equivalence is not the same as property equality. Equivalent properties have the same "values" (i.e., the same property extension), but may have different intensional meaning (i.e., denote different concepts). Property equality should be expressed with the owl:sameAs construct. As this requires that properties are treated as individuals, such axioms are only allowed in OWL Full.

    That's a difference that may or may not mean much to the average modeler. The point is that even p(a,b) ↔ q(a,b) (owl:equivalentProperty) is not exactly the same as p = q (owl:sameAs). For instance, hasUnicorn(a,b) ↔ hasLeprechaun(a,b); since there are no unicorns or leprechauns, there are no such relationships for any individuals. But the property hasUnicorn isn't really the same property as hasLeprechaun; they're intended to be different intensionally.