[Pellet-users] Pellet cache free
Nick Drummond
nick.drummond at cs.manchester.ac.uk
Thu Oct 4 14:07:43 UTC 2007
Evren,
Does this mean that classify() must be called to force a new
classification or does pellet try to keep up with all changes as they
happen?
Cheers for your help
Nick
On 4 Oct 2007, at 13:13, Evren Sirin wrote:
> On 10/3/07 10:29 AM, Nick Drummond wrote:
>> Hi Evren,
>>
>> I've had a bug report about caching pellet results in Protege4.0.
>> I wrote a bit of test code to see what was happening with pellet
>> (below).
>>
>> It seems that to get pellet to drop the previous results and
>> recalculate, I need to call Reasoner.refresh(), which is not a
>> part of the OWL API.
>> Could the reasoner listen to changes in the ontology and set a
>> refreshRequired flag to perform this refresh when classify() is
>> subsequently called?
>>
> Pellet reasoner implements the OntologyChangeListener interface but
> does not add itself automatically as a listener. This is left as an
> option to the user because some applications might prefer to do
> manual/scheduled synchronization. In your case, if you simply add
> the line:
>
> mngr.addOntologyChangeListener( r );
>
> after the reasoner is created you will see that results from the
> reasoner reflect the latest changes. Depending on the type of the
> change (add/remove) and axiom (subclass, subproperty, etc.),
> applying the changes might require full reload so the time it takes
> to apply the changes will vary greatly.
>
> Cheers,
> Evren
>> I know this behaviour isn't specified in the OWLAPI docs.
>>
>> Cheers
>>
>> Nick
>>
>> public void testPelletReload(){
>> OWLOntologyManager mngr =
>> OWLManager.createOWLOntologyManager ();
>> try {
>> OWLOntology ont = mngr.createOntology(URI.create
>> ("http:// www.co-ode.org/ontologies/test/test.owl"));
>> OWLDataFactory df = mngr.getOWLDataFactory();
>> OWLClass a = df.getOWLClass(URI.create("http://
>> www.co- ode.org/ontologies/test/test.owl#A"));
>> OWLClass b = df.getOWLClass(URI.create("http://
>> www.co- ode.org/ontologies/test/test.owl#B"));
>> OWLSubClassAxiom bSubA = df.getOWLSubClassAxiom(b, a);
>> List<OWLOntologyChange> changes = new
>> ArrayList<OWLOntologyChange>();
>> changes.add(new AddAxiom(ont, bSubA));
>> mngr.applyChanges(changes);
>>
>> Reasoner r = new Reasoner(mngr);
>> r.loadOntology(ont);
>> r.classify();
>>
>> Set<Set<OWLClass>> results = r.getSubClasses(a);
>> for (Set<OWLClass> result : results){
>> System.out.println("result = " + result);
>> }
>>
>> changes.clear();
>> changes.add(new RemoveAxiom(ont, bSubA));
>> mngr.applyChanges(changes);
>>
>> // r.refresh(); // calling this prevents the problem
>> r.classify();
>>
>> results = r.getSubClasses(a); // still contains B
>> for (Set<OWLClass> result : results){
>> System.out.println("result = " + result);
>> }
>>
>> }
>> catch (OWLOntologyCreationException e) {
>> logger.error(e);
>> fail();
>> }
>> catch (OWLOntologyChangeException e) {
>> logger.error(e);
>> fail();
>> }
>> }
>>
>> _______________________________________________
>> 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