ilia gurjanov
ilia gurjanov

Reputation: 11

OWL. Union of object property

Suppose I have the following instance data and property axiom:

Mary hasChild John
Ben hasChild Tom
Mary hasHusband Ben

hasHusbandChild: hasHusband • hasChild

How can I create the property hasChilds such that:

hasChilds: hasChild ⊔ hasHusbandChild

is true?

Upvotes: 1

Views: 855

Answers (1)

Joshua Taylor
Joshua Taylor

Reputation: 85913

OWL doesn't support union properties where you can say things like

  1. p ≡ q ⊔ r

but you can get the effects of:

  1. q ⊔ r ⊑ p

by doing two axioms:

  1. q ⊑ p
  2.  r ⊑ p

Now, 2 is not the same as 1, because with 1, you know that if p(x,y), then either q(x,y) or r(x,y), whereas with 2, p(x,y) can be true without either q(x,y) or r(x,y) being true.

Similarly, you can't define property chains in OWL like:

  1. q • r ≡ p

but you use property chains on the left-hand side of subproperty axioms:

  1. q • r ⊑ p

The difference between the two, of course, is that with 6 you can have p(x,y) without x and y being connected by a q • r chain.

It's not quite clear what you're asking, but I think what you're trying to ask is whether there's a way to say that the child of x's spouse is also a child of x. You can do that in OWL2 using property chains, specifically that

hasSpouse • hasChild ⊑ hasChild

This is equivalent to the first-order axiom:

∀ x,y,z : (hasSpouse(x,y) ∧ hasChild(y,z)) → hasChild(x,z)

A number of other questions on Stack Overflow are relevant here and will provide more guidance about how to add this kind of axiom to your OWL ontology:

As an alternative, you could also encode the first-order axiom as a SWRL rule.

Upvotes: 3

Related Questions