[Pellet-users] Inference problem

Role Francois francois.role at univ-paris5.fr
Mon Sep 24 09:54:34 UTC 2007


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>





More information about the Pellet-users mailing list