Search Mailing List Archives

Limit search to: Subject & Body Subject Author
Sort by: Reverse Sort
Limit to: All This Week Last Week This Month Last Month
Select Date Range     through    

[protege-owl] P4.1 Protege modifications for our DB-backed OWL

Hilpold, Thomas (CIAO) hilpold at
Mon Feb 13 12:13:02 PST 2012

Hi all,


we are currently implementing a DB-backed OWL-API implemention ( that also supports versioning of ontologies and already use it within Protégé. During implementation we found that we needed to implement certain modifications in org.protege.editor.core.application and org.protege.editor.owl. that we would like to make available to fellow developers on the Protégé list and the Protégé team for further review.


A) org.protege.editor.core.application

A1) Customization of Welcome Frame

                We would like to have an extension point for the Welcome Frame to be able to change it's appearance.

                Our implementation also uses a custom Editorkit and we did not want the original editorkit to be visible by default, but introduced a setting

                that is available in the Preferences panel.


A2) JavaBackedPreferencesImpl

                We changed the PROTÉGÉ_PREFS_KEY to allow multiple installations of Protégé on the same machine under a different (Windows) Registry key.

                It might also be confusing to some to have different versions of protégé sharing the same settings on one machine.


B) org.protege.editor.owl

B1) HistoryManager

                We added a method clear() to the interface and implemented it in HistoryManagerImpl. 

                This was necessary to simplify semantics for the user after a Commit, Rollback or Revert of a loaded versioned ontology.


     * 2011.12.23 Hilpold Clear Undo Redo Stack.



    public void clear() {





B2) PhysicalLocationPanel 

                We use our own OWLIconProvider, beause we use different Icons for File-Based, Database-backed and Versioned Ontologies.

                To use this in the PhysicalLocationPanel, we added to the inner class:

                private class OntologySourcePanel

         public void setOntology(OWLOntology ont){

            final OWLModelManager mngr = owlEditorKit.getModelManager();

            String label = OWLOntologyCellRenderer.getOntologyLabelText(ont, mngr);

            //2012.02.01 hilpold use Owl Icon Provider

            OWLIconProvider owlICP = owlEditorKit.getWorkspace().getOWLIconProvider();

            Icon ontIcon = owlICP.getIcon(ont);






B3) AbstractOWLFrameSection

                We found that sometimes on large ontologies the handling of each individual change of a composite change list can lead to a minute long freeze of the UI. In a particular case, removing of one class caused ~6000 changes to be handled, which led to >30 mio comparisons in subclasses of           AbstractOWLFrameSection. We therefore decided to change the implementation as follows:


       * 2012.02.09 Hilpold if more than n changes, we do not call handle each one, but

       * reset the FrameSection afterwards. 


      private static final int CHANGE_LIST_SIZE_TO_RESET = 10;



    protected void handleChanges(List<? extends OWLOntologyChange> changes) {

        if (getRootObject() == null) {



        //2012.02.09 hilpold only handle small change list change by change

        if (changes.size() < CHANGE_LIST_SIZE_TO_RESET) {

              for (OWLOntologyChange change : changes) {

                  if (change.isAxiomChange()) {




        } else {





Kind regards,





Thomas Hilpold, Software Architect

Miami Dade County / CIAO 

111 NW 1st Street, Suite 2510, Miami, FL 33128-1900

(305) 375-4802 Ph

(305) 375-2004 Fax

hilpold at <mailto:hilpold at> <> 


Miami-Dade County is a public entity subject to Chapter 119 of the Florida Statutes concerning public records. E-mail messages are covered under such laws and thus subject to disclosure.



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the protege-owl mailing list