OWL disjoint set of elements

Viewed 109

I am trying to create an OWL Ontology which captures the idea of a disjoint set of elements:

  • I have a class :Parent which is all individuals that have elements that I want to ensure are disjoint.
  • I have a relationship :element, which connects a :Parent to every child of that parent. element(p, c) is true if p is a parent of c.
  • I have a relationship :disjoint which is between children. disjoint(c1, c2) is true if c1 and c2 are "disjoint". Obviously IrreflexiveProperty(:disjoint), as nothing can be disjoint with itself.

My goal is to create an ontology which is consistent iff for every p, if p ∈ Parent then every :element of p is :disjoint with every other :element of p.

The approach I've been trying is to construct a :sibling property such that sibling(x, y) ↔ (x≠y) ∧ (∃p element(p, x) ∧ element(p, y)). I was able to define a property SubObjectProperty( ObjectPropertyChain( ObjectInverseOf( :element ) :element ) :siblingOrSelf ) which captures the set of all of the siblings I want to compare against plus the object itself (plus a set of :siblingOrSelf which are not siblings nor self, but I can ignore). However, I cannot figure out how to derive a :sibling relationship which is irreflexive. (or figure out another way to accomplish my goal)

If it is convenient for the solution, I can assume InverseFunctionalProperty(:element) (i.e. no child is a :element of two different parents).

0 Answers
Related