[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