[Pellet-users] Problems with cardinality consistency checking
Ibach, Brandon L
brandon.l.ibach at lmco.com
Tue Oct 30 17:18:16 UTC 2007
Maxime,
I hate to say it, but now that you've gotten past the UNA, you've
run squarely into the other major obstacle that many people hit when
getting into OWL, which is the Open World Assumption (OWA). Basically,
the OWA means that just because we don't know something doesn't mean it
isn't true (or possible, anyway). So, in your example, even though we
haven't said that Chair_1 has a fourth leg (say, Leg_1), it is still
possible that it does. In other words, Pellet won't say that Chair_1 is
inconsistent unless it can *prove* that it is inconsistent, and as it
stands, it can't prove that Chair_1 does *not* have a fourth leg.
Unfortunately, while there are some ways to work around the OWA,
they are rarely very appealing. You've hit on one technique, which is
to enumerate all of the Legs so that Pellet knows there can't possibly
be any more than the five you've told it about (which you've also
established as being five *distinct* instances, with the AllDifferent
construct). However, you haven't established to Pellet that Leg_2,
Leg_3 and Leg_4 are the only ones that Chair_1 has.
As I said, there are a variety of techniques that could be used, all
with their drawbacks, and deciding which one might be worth trying is
going to depend on what you're willing to put into the maintenance of
your data, since they pretty much all make it more work to keep
everything consistent, and what you want the reasoner to accomplish for
you, since many of the things it *could* tell you would be redundant
once you've given it enough information to allow it to make the
inferences, particularly when it comes to cardinality restrictions. In
other words, if you want the reasoner to tell you that a chair has 4
legs, you pretty much have to tell the reasoner that it has 4 legs, in
which case you haven't really gotten much value from the reasoner.
On a bright note, for the future, anyway, this is definitely an
important issue and it should be getting some significant attention as
part of the efforts going into the new version of OWL.
-Brandon :)
________________________________
From: pellet-users-bounces at lists.owldl.com
[mailto:pellet-users-bounces at lists.owldl.com] On Behalf Of Maxime Pelcat
Sent: Tuesday, October 30, 2007 9:09 AM
To: pellet-users at lists.owldl.com
Subject: [Pellet-users] Problems with cardinality consistency
checking
Dear Brandon and Pellet experts,
Thanks a lot for the previous answer, it explains the
conception problem we had. However, we still fail in
making our ontology work because the min cardinality
is not yet checked by Pellet as we would like. The previous
given example works correctly (a chair can not have 5 legs).
But, when we try to create a chair with 3 legs, Pellet finds
our owl consistent. I join the example:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:p1="http://www.owl-ontologies.com/assert.owl#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns="http://ietr-image.insa-rennes.fr/public/test.owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://ietr-image.insa-rennes.fr/public/test.owl">
<owl:Ontology rdf:about=""/>
<owl:Class rdf:ID="Chair">
<rdfs:subClassOf>
<owl:Restriction>
>4</owl:cardinality>
<owl:onProperty>
<owl:ObjectProperty rdf:ID="hasLegs"/>
</owl:onProperty>
</owl:Restriction>
</rdfs:subClassOf>
http://www.w3.org/2002/07/owl#Thing"/>
</owl:Class>
<owl:Class rdf:ID="Leg"/>
<owl:ObjectProperty rdf:about="#hasLegs">
<rdfs:range rdf:resource="#Leg"/>
<rdfs:domain rdf:resource="#Chair"/>
</owl:ObjectProperty>
<owl:AllDifferent>
<owl:distinctMembers rdf:parseType="Collection">
<Leg rdf:ID="Leg_4"/>
<Leg rdf:ID="Leg_3"/>
<Leg rdf:ID="Leg_2"/>
<Leg rdf:ID="Leg_5"/>
<Leg rdf:ID="Leg_1"/>
</owl:distinctMembers>
</owl:AllDifferent>
<Chair rdf:ID="Chair_1">
<hasLegs rdf:resource="#Leg_2"/>
<hasLegs rdf:resource="#Leg_3"/>
<hasLegs rdf:resource="#Leg_4"/>
</Chair>
</rdf:RDF>
Sorry to bother once more but can you tell me what goes wrong
and if I can really check
with owl what I am trying to check (a class with a property on
exactly a number of given
instances)?
We also tried with a collection of possible legs but the answer
was the same:
<owl:Class rdf:ID="Leg">
<owl:equivalentClass>
<owl:Class>
<owl:oneOf rdf:parseType="Collection">
<Leg rdf:ID="Leg_1"/>
<Leg rdf:ID="Leg_2"/>
<Leg rdf:ID="Leg_3"/>
<Leg rdf:ID="Leg_4"/>
<Leg rdf:ID="Leg_5"/>
</owl:oneOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
Thanks,
Maxime
________________________________
Ne gardez plus qu'une seule adresse mail ! Copiez vos mails
<http://www.trueswitch.com/yahoo-fr/> vers Yahoo! Mail
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.owldl.com/pipermail/pellet-users/attachments/20071030/610b72b0/attachment.htm
More information about the Pellet-users
mailing list