Thanks Dave,

That helped. plain.remove(baseModel) worked oddly for me, removing something
I did not want to remove, but listing statements with filter works great.

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

> On Fri, 2011-08-19 at 21:12 +0400, Andrey Razumovsky wrote:
> > Hi Jena folks,
> >
> > I would like to know how to know what reasoner has added to my OntModel,
> > i.e. given Graph and InfGraph get all newly added triples. In fact, I
> could
> > not even implement straightforward way - I've not found any way to get
> all
> > triples from the Graph.
> > Could you advice some handy mehods please? I'm using Jena 2.6.4
>
> If you are talking about the built in Rule reasoners then the first
> thing to be aware of is that some triples are added as new deductions
> straight away and then more are determined dynamically in response to
> questions.
>
> So while you can get the basic forward deductions using
> getDeductionsModel() if you want all the deducible triples you need to
> ask the reasoner for everything.
>
> One easy way to do that is to create a plain no-inference model to hold
> the materialized deductions:
>
>  OntModel inf   = ModelFactory.createOntologyModel(infspec, baseModel);
>  OntModel plain =
>           ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
>  plain.add(inf);
>
> If you want only the deductions then do:
>
>   plain.remove(baseModel);
>
> If you want the deductions on the fly rather than storing them, then
> instead use:
>
>   inf.listStatements()
>
> If you want the deductions on the fly but not the base data then use:
>
>   inf.listStatements().filterDrop( f )
>
> where f is a filter to drop the statments which were in base Model
> (exercise for the reader :)).
>
> Dave
>
>
>


-- 
Andrey

Reply via email to