Search Mailing List Archives
[protege-owl] Query: Subclasses or Sibling
tar at ISI.EDU
Tue Apr 3 08:50:23 PDT 2007
On Apr 3, 2007, at 1:50 AM, Ronald Cornet wrote:
> William, and others (please see the question in item 2 below),
> So if I make a pizza with mozarella and tomatoes, I would like it
> to be recognized as a Margherita (I'm doing this by head, maybe the
> ingredients of Margherita are slightly different).
> This requires:
> 1. Margherita being defined as a "complete class", i.e., with
> necessary and sufficient conditions. I can handle that, and would
> prefer this in the Pizza example.
> 2. I would have to express that the toppings I've put on my pizza
> are the only toppings. Does anyone know how to do that in Protégé?
> I.e., how can I "close the world" when I've instantiated a pizza?
Sadly, I don't think this is particularly easy to do in OWL.
As far as I know, there isn't any construct that lets you directly
express number constraints on individuals. The only method I can
think of involves creating a class with the number restrictions and
making the individual in question a member of that class.
In this case, one would need a Pizza-with-exactly-two-toppings class
and then make your pizza have this as one of its types. Then it
would inherit the cardinality restriction and (with appropriate
disjointness assertions between toppings) it would be possible to
infer membership in the Margherita pizza class.
In general, any restrictions that rely on the allValuesFrom
restriction are really difficult to infer, because of the open world
semantics of OWL. There is no general mechanism for marking
instances "closed" with respect to fillers, and therefore no way to
have this inference proceed without making other very specific
constructs and using them. The same problem also applies to
cardinality and max cardinality restrictions.
Enumerating and testing fillers is only a valid inference technique
if one uses closed world semantics, or if there are explicit
cardinality restrictions that match the number of fillers. The
latter item is also a bit tricky because OWL doesn't use the unique
name assumption, so one needs to have made sure that the necessary
allDifferentFrom assertions have been made at well.
More information about the protege-owl