[Pellet-users] Defining an OWL class by Boolean set subtraction

John M. Linebarger jmlineb at comcast.net
Fri Jun 15 21:08:53 UTC 2007


Hello!  This may more appropriately be an OWL question, but since it involves a logically-defined class that is populated by a reasoner, and since the reasoner we are using is Pellet 1.5-RC1, I thought it might be OK to post it to this group.

We have a class called Test_or_Demo_Event that is logically defined by the existence and value of a datatype property as follows:

isTestOrDemoEvent has "Yes"

We have another class called EAS_Warning_Event that is logically defined as follows:

EAS_Event and Warning_Event

... where EAS_Event and Warning_Event are also defined by the existence and value of datatype properties, isEASEvent has "Yes" and isWarningEvent has "Yes" respectively.

I run these through the Pellet reasoner and display them using SPARQL from a Jena program, and I get all the individuals that I expect.  So far so good.

But what I want is the class defined by the Boolean set subtraction of the two classes, because there is an individual in the EAS_Warning_Event class that I want to remove; this is the individual that is the sole occupant of the Test_or_Demo_Event class.  I try the first logical thing that comes to my head, which is this:

EAS_Warning_Event and not Test_or_Demo_Event

... and get absolutely no individuals assigned to that class.  We suspect that this definition flies foul of the open world assumption, because not Test_or_Demo_Event itself has no members, since there is no way of knowing the non-existence of properties with a particular value.

If so, is there another way of defining a class in OWL by Boolean set subtraction that obeys the open world assumption?  Is there fuzzy thinking on our part that you can clarify for us such that we can accomplish our goal?

Many thanks!  Enjoy!

John M. Linebarger
Sandia National Laboratories


More information about the Pellet-users mailing list