[Pellet-users] Inference problem

Ibach, Brandon L brandon.l.ibach at lmco.com
Mon Sep 24 14:58:32 UTC 2007


Recheck your Java code and I think you will find that Pellet gave you
exactly what you asked it for about Pierre. :)

You may already be aware of this and simply testing rules, but your
second rule (A Boy is a Person) is expressible in plain OWL without
SWRL.

-Brandon :)
 

> -----Original Message-----
> From: pellet-users-bounces at lists.owldl.com 
> [mailto:pellet-users-bounces at lists.owldl.com] On Behalf Of 
> Role Francois
> Sent: Monday, September 24, 2007 5:55 AM
> To: pellet-users at lists.owldl.com
> Subject: [Pellet-users] Inference problem
> 
> Hi,
> 
> 
> 
> Thanks for your previous reply.
> I am now starting to write and run two simple swrl rules, 
> using a slightly
> modified version of Rulesexample.java (source and rules below).
> 
> 
> 
> I want the Reasoner to infer :
> 
> 
> 
> - that Luc is a person (given that he is a Boy  =  BoyRule)  
> = it works
> 
> - that Jacques is Pierre's uncle (standard UncleRule) = it 
> does not work
> 
> 
> 
> The call to "printPropertyValues( Pierre, uncle );"     
> prints  "Pierre
> has parent(s): Paul"  ??
> 
> There are also some "Consistency not" messages in the output, 
> that worry me.
> 
> 
> 
> run:
> 
> .................................
> 
>  2 Properties: 3 Individuals: 4 Strategy: RuleStrategy
> 
>      [java]  INFO [main] (ABox.java:1530) - ABox consistency for 0
> individuals
> 
>      [java]  INFO [main] (ABox.java:1619) - Consistent: true 
> Tree depth: 5
> Tree
> 
> size: 16 Time: 47
> 
>      [java] Pierre has parent(s): Paul
> 
>      [java]  INFO [main] (ABox.java:1532) - Consistency
> not(http://localhost/ess
> 
> ai.owl#Person) for 0 individuals []
> 
>      [java]  INFO [main] (ABox.java:1619) - Consistent: true 
> Tree depth: 1
> Tree
> 
> size: 1 Time: 15
> 
>      [java]  INFO [main] (ABox.java:1532) - Consistency
> http://localhost/essai.o
> 
> wl#Person for 0 individuals []
> 
>      [java]  INFO [main] (ABox.java:1619) - Consistent: true 
> Tree depth: 4
> Tree
> 
> size: 4 Time: 0
> 
>      [java]  INFO [main] (ABox.java:1532) - Consistency
> not(http://localhost/ess
> 
> ai.owl#Person) for 4 individuals [http://localhost/essai.owl#Luc,
> http://localho
> 
> st/essai.owl#Paul, http://localhost/essai.owl#Jacques,
> http://localhost/essai.ow
> 
> l#Pierre]
> 
>      [java]  INFO [main] (ABox.java:1619) - Consistent: false 
> Tree depth:
> 0 Tree
> 
>  size: 16 Time: 16
> 
>      [java]  INFO [main] (ABox.java:1532) - Consistency
> not(http://localhost/ess
> 
> ai.owl#Person) for 2 individuals [http://localhost/essai.owl#Luc,
> http://localho
> 
> st/essai.owl#Paul]
> 
>      [java]  INFO [main] (ABox.java:1619) - Consistent: false 
> Tree depth:
> 0 Tree
> 
>  size: 16 Time: 31
> 
>      [java]  INFO [main] (ABox.java:1532) - Consistency
> not(http://localhost/ess
> 
> ai.owl#Person) for 2 individuals [http://localhost/essai.owl#Jacques,
> http://loc
> 
> alhost/essai.owl#Pierre]
> 
>      [java]  INFO [main] (ABox.java:1619) - Consistent: false 
> Tree depth:
> 0 Tree
> 
>  size: 16 Time: 0
> 
>      [java] Person instances: Luc, Paul, Jacques, Pierre
> 
> 
> 
> 
> 
> 
> 
> JAVA CODE
> 
> ===========
> 
> 
> 
> public class RulesExample {
> 
>     public static void main(String[] args) {
> 
>     String ont = "http://localhost/essai.owl";
> 
>     OntModel model = ModelFactory.createOntologyModel(
> PelletReasonerFactory.THE_SPEC, null ) ;
> 
>     model.read( ont );
> 
>     ObjectProperty uncle = model.getObjectProperty( ont + "#parent" );
> 
>     OntClass Person = model.getOntClass( ont + "#Person" );
> 
>     Individual Pierre = model.getIndividual( ont + "#Pierre" );
> 
>     Individual Paul = model.getIndividual( ont + "#Paul" );
> 
>     Individual Jacques = model.getIndividual( ont + "#Jacques" );
> 
>     model.prepare();
> 
>     printPropertyValues( Pierre, uncle );  // should display 
> Jacques not OK
> 
>     printInstances( Person);  // should include Luc OK
> 
>  }
> 
> 
> 
> 
> 
> SWRL  FILE
> 
> ==========
> 
> 
> 
> <!-- *******************************     Classes  
> *********************************************  -->
> 
> 
> 
> 	<owl:Class rdf:about="#Person">
> 
> 		<rdfs:subClassOf>
> 
> 			<owl:Restriction>
> 
> 				<owl:onProperty 
> rdf:resource="#parent" />
> 
> 				<owl:someValuesFrom 
> rdf:resource="#Person" />
> 
> 			</owl:Restriction>
> 
> 		</rdfs:subClassOf>
> 
> 	</owl:Class>
> 
> 
> 
>       <owl:Class rdf:about="#Boy" />
> 
> 
> 
> 
> 
>   <!-- *******************************     Properties  
> *********************************************  -->
> 
> 
> 
>        <owl:ObjectProperty rdf:about="#uncle" />
> 
>         <owl:ObjectProperty rdf:about="#parent" />
> 
>          <owl:ObjectProperty rdf:about="#brother" />
> 
> 
> 
> 
> 
> 	<!-- *******************************     Instances 
> *********************************************  -->
> 
> 
> 
>       <dl-safe:Person rdf:about="#Pierre">
> 
> 		<dl-safe:parent rdf:resource="#Paul" />
> 
> 	</dl-safe:Person>
> 
> 
> 
>       <dl-safe:Person rdf:about="#Paul">
> 
> 		<dl-safe:brother rdf:resource="#Jacques" />
> 
> 	</dl-safe:Person>
> 
> 
> 
>       <dl-safe:Person rdf:about="#Jacques" />
> 
> 
> 
>        <dl-safe:Boy rdf:about="#Luc" />
> 
> 
> 
> 
> 
> 
> 
>    <!-- So Jacques is Pierre's uncle  -->
> 
> 
> 
>       <!-- *******************************       Rules 
> *********************************************  -->
> 
> 
> 
> 	<swrl:Variable rdf:about="#a" />
> 
> 	<swrl:Variable rdf:about="#b" />
> 
> 	<swrl:Variable rdf:about="#c" />
> 
> 
> 
> 
> 
>      <swrl:Imp rdf:about="#UncleRule">
> 
>        <swrl:head rdf:parseType="Collection">
> 
>              <swrl:IndividualPropertyAtom>
> 
> 				<swrl:propertyPredicate 
> rdf:resource="#uncle" />
> 
> 				<swrl:argument1 rdf:resource="#a" />
> 
> 				<swrl:argument2 rdf:resource="#c" />
> 
> 		</swrl:IndividualPropertyAtom>
> 
> 	</swrl:head>
> 
>       <swrl:body rdf:parseType="Collection">
> 
> 	     <swrl:IndividualPropertyAtom>
> 
> 				<swrl:propertyPredicate 
> rdf:resource="#parent" />
> 
> 				<swrl:argument1 rdf:resource="#a" />
> 
> 				<swrl:argument2 rdf:resource="#b" />
> 
> 		</swrl:IndividualPropertyAtom>
> 
>             <swrl:IndividualPropertyAtom>
> 
> 				<swrl:propertyPredicate 
> rdf:resource="#brother" />
> 
> 				<swrl:argument1 rdf:resource="#b" />
> 
> 				<swrl:argument2 rdf:resource="#c" />
> 
> 		</swrl:IndividualPropertyAtom>
> 
>       </swrl:body>
> 
>      </swrl:Imp>
> 
> 
> 
> 
> 
> <!-- a boy is a person -->
> 
> 
> 
>      <swrl:Imp rdf:about="#BoyRule">
> 
>        <swrl:head rdf:parseType="Collection">
> 
>             <swrl:ClassAtom>
> 
> 				<swrl:classPredicate 
> rdf:resource="#Person" />
> 
> 				<swrl:argument1 rdf:resource="#a" />
> 
> 			</swrl:ClassAtom>
> 
> 
> 
> 	</swrl:head>
> 
>       <swrl:body rdf:parseType="Collection">
> 
> 	     <swrl:ClassAtom>
> 
> 				<swrl:classPredicate 
> rdf:resource="#Boy" />
> 
> 				<swrl:argument1 rdf:resource="#a" />
> 
> 			</swrl:ClassAtom>
> 
> 
> 
>                   </swrl:body>
> 
>      </swrl:Imp>
> 
> 
> 
> _______________________________________________
> Pellet-users mailing list
> Pellet-users at lists.owldl.com
> http://lists.owldl.com/mailman/listinfo/pellet-users
> _______________________________________________
> 
> Sponsored by Clark & Parsia, LLC http://clarkparsia.com/
> 


More information about the Pellet-users mailing list