Hi,

thank you for the solution: This is it!
I recently tried to minimize the application's object dissipation, but I
didn't noticed this side effect.

-- Martin


2011/8/29 Dave Reynolds <[email protected]>

> Hi,
>
> On Mon, 2011-08-29 at 10:31 +0200, Martin Weitzel wrote:
>
> > I want to test within my InfModel, how modified (deleted, added)
> Statements
> > (via
> > Jena Java API) are dealt with by the Reasoner.
> >
> > The Model is initiated by:
> > infModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM);
> >
> > Then, individuals are added like:
> > final OntClass classOfferedHandlingCondition = infModel.getResource(
> > nsImotrisOntology + "#OfferedHandlingCondition").as(OntClass.class);
> >
> > final Individual individualOfferedService =
> > classOfferedServices.createIndividual(nsImotrisOntology +
> "#OfferedService_"
> > +
> > offeredService.id);
> >
> > This works fine _before_ reasoning. However, after Reasoning, the
> OntClass
> > cast
> > fails with:
> >
> > Cannot convert node
> >
> http://www.igd-r.fraunhofer.de/IMOTRIS/Ontologies/imotris.owl#OfferedServiceto
> > OntClass: it does not have rdf:type owl:Class or equivalent.
> >
> > But the rdf:type is definitely there: I am printing the related
> statements
> > with
> > listStatements() right before the cast.
> >
> > [Console Output:] -
> > (
> >
> http://www.igd-r.fraunhofer.de/IMOTRIS/Ontologies/imotris.owl#OfferedService
> > rdf:type owl:Class)
> >
> > If I disable the reasoner within exact the same setup, the cast works
> fine.
> >
> > The Reasoner is configured as follows:
> >
> > final GenericRuleReasoner reasoner = new
> > GenericRuleReasoner(Rule.rulesFromURL(owlResourceReasonerRulesLayer
> > .getFile().toURI().toURL().toExternalForm()));
> > infModel = ModelFactory.createInfModel(reasoner, infModel);
>
> > And the Rules are shown here: http://pastebin.com/i96sM1W3
> >
> >
> > So: Why is the OntClass cast impossible after reasoning? I would
> appreciate
> > any
> > hints!
>
> This is nothing to do with reasoning. We would need a complete minimal
> example to work out exactly what is going on but I suspect you are just
> getting the two models (the OntModel and the non-Ont-InfModel) mixed up
> since you assign them both to the same java variable. Depending on when
> you create the OntClasses and Individuals they will be pointing to one
> or other model and it would be easy to be printing from one but
> implicitly querying from the other.
>
> The easy way to get both inference and and OntModel API is to clone your
> own copy of the relevant OneModel spec:
>
>    OntModelSpec myspec = new OntModelSpec(OntModelSpec.OWL_MEM);
>    myspec.setReasoner(reasoner);
>    infModel = ModelFactory.createOntologyModel(myspec);
>
> Dave
>
>
>

Reply via email to