[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