Looks like a Pellet issue.

If I run your code using the OWLMicro reasoner I see:

All Mary related statements :
 - (http://localhost/boc#Mary rdf:type owl:NamedIndividual)
 - (http://localhost/boc#Mary rdf:type http://localhost/boc#Mother)
 - (http://localhost/boc#Mary rdf:type owl:Thing)
 - (http://localhost/boc#Mary rdf:type http://localhost/boc#Woman)

Perhaps Pellet does not support the bindSchema mode. You'll need to check with the Pellet folks.

Dave

On 27/06/13 09:32, mycircuit wrote:
Sorry, about my last mail, hit the send key inadvertently.
Here is the problem:

Hi, I am struggling to understand the usage of this idiom:

    reasoner = reasoner.bindSchema(schema);
    InfModel infModel = ModelFactory.createInfModel( reasoner, data );

when using separate models for tbox ( schema ) and abox ( data ).

I am posting the data and the code, sorry if this is a bit long, but I
think it is required to understand the question.

This is schema.owl:

@prefix : <http://localhost/boc#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <http://localhost/boc> .
<http://localhost/boc> rdf:type owl:Ontology .

#################################################################
#
#    Classes
#
#################################################################

###  http://localhost/boc#Mother

:Mother rdf:type owl:Class ;

         rdfs:subClassOf :Woman .

###  http://localhost/boc#Woman

:Woman rdf:type owl:Class .

###  Generated by the OWL API (version
3.4.4.owlapi-parent-3.4.4-3-g757b63c) http://owlapi.sourceforge.net


and this is data.owl:

@prefix : <http://localhost/boc#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <http://localhost/boc> .
<http://localhost/boc> rdf:type owl:Ontology .

#################################################################
#
#    Classes
#
#################################################################

###  http://localhost/boc#Mother

:Mother rdf:type owl:Class .

#################################################################
#
#    Individuals
#
#################################################################


###  http://localhost/boc#Mary

:Mary rdf:type :Mother ,
                owl:NamedIndividual .


###  Generated by the OWL API (version
3.4.4.owlapi-parent-3.4.4-3-g757b63c) http://owlapi.sourceforge.net


 From these models, a reasoner can infer that the Individual Mary is a Woman.

When I use the bindSchema method on the reasoner ( as explained on the Jena
website ), the program runs and the model is
validated, but there is no inference ( ie. Mary is not listed as a Woman ):

     String base = "http://localhost/boc";;
         com.hp.hpl.jena.reasoner.Reasoner reasoner =

org.mindswap.pellet.jena.PelletReasonerFactory.theInstance().create();



         OntModel data = ModelFactory.createOntologyModel(
OntModelSpec.OWL_DL_MEM);
         InputStream is = FileManager.get().open("data.owl");
         data.read( is, base, "TURTLE" );

         OntModel schema = ModelFactory.createOntologyModel(
OntModelSpec.OWL_DL_MEM );
          is = FileManager.get().open("schema.owl");
         schema.read( is, base, "TURTLE" );

        // this is the thing that does not trigger inference as expected
         reasoner = reasoner.bindSchema(schema);
         InfModel infModel = ModelFactory.createInfModel( reasoner, data );

         ValidityReport report = infModel.validate();
         assert ( report.isClean() );

         System.out.println("All Mary related statements :");

         Resource mary = infModel.createResource(base+"#Mary");
         printStatements(infModel, mary, null, null);
     }


     public void printStatements(InfModel m, Resource s, Property p,
Resource o) {
         for (StmtIterator i = m.listStatements(s,p,o); i.hasNext(); ) {
             Statement stmt = i.nextStatement();
             System.out.println(" - " + PrintUtil.print(stmt));
         }
     }


This prints:

Realizing:  33% complete in 00:00
Realizing:  66% complete in 00:00
Realizing:  100% complete in 00:00
Realizing finished in 00:00
  - (http://localhost/boc#Mary rdf:type owl:Thing)
  - (http://localhost/boc#Mary rdf:type http://localhost/boc#Mother)
  - (http://localhost/boc#Mary owl:sameAs http://localhost/boc#Mary)
  - (http://localhost/boc#Mary rdf:type owl:NamedIndividual)

=>  - (http://localhost/boc#Mary rdf:type http://localhost/boc#Woman )  is
missing


What am I missing ?

Thanks for your time.
mycircuit



On 27 June 2013 10:12, mycircuit <mycirc...@sunrise.ch> wrote:

Hi, I am struggling to understand the usage of this idiom:

reasoner = reasoner.bindSchema(schema);
InfModel infModel = ModelFactory.createInfModel( reasoner, data );




Reply via email to