On Mon, 2011-09-12 at 15:49 +0000, David Jordan wrote: > I want to express set difference in OWL, I was a bit surprised that this is > not directly supported. > I’d be interested in hearing whether the following would work, and how > efficient it will be to compute. > Assume you have sets A and B. > I can define the union and intersection of A and B in OWL, we can call them > AUB and AIB, respectively. > Then I am guessing that A – B would be defined as follows: > A_B owl:intersectionOf ( > A > [ a owl:Class ; owl:complementOf AIB ] > ). > > My big concern is the computing of the owl:complementOf AIB. > Is the implementation going to take into account that the outer expression is > doing an intersection with A, so that it strictly takes the elements in AIB > and subtracts them from A?
In the case of Jena rules then irrelevant because we don't support complementOf :) For an mythical OWL full reasoner that attempted to aggressively materialize inferences then the extension of the b-node would be part of the closure. But in general you can't enumerate a complementOf anyway unless there is some bounding expression (remember the Open World assumption). For a DL reasoner that it should treat the b-node simply as syntax and will be attempting to prove membership of the (A intersect (¬B)) expression. Dave
