|
# Ontology Debugger Plug-In for Protégé
|
|
# Ontology Debugger Plug-In for Protégé
|
|
|
|
|
|
# IMPORTANT NOTE:
|
|
# IMPORTANT NOTE:
|
|
This plug-in is still in development! Very probably you may experience faulty and unexpected behaviour such as deadlocks, exceptions etc. You may report any bugs you experience in our [issue tracking system](https://git-ainf.aau.at/interactive-KB-debugging/debugger/issues). We will try to fix them as soon as possible. Thanks!
|
|
This plug-in is still in development! Very probably you may experience faulty and unexpected behaviour such as deadlocks, exceptions etc. You may report any bugs you experience in our [feedback](http://isbi.aau.at/ontodebug/feedback). We will try to fix them as soon as possible. Thank you!
|
|
|
|
|
|
# Installation
|
|
# Installation
|
|
|
|
|
|
These steps are necessary in order to run the plug-in:
|
|
These steps are necessary in order to run the plug-in:
|
|
* Download the most recent version of Protégé Desktop from [http://protege.stanford.edu/](http://protege.stanford.edu/) and follow the installation instructions. Note that the Debugger Plug-In is not compatible with Protégé version 4 and below.
|
|
* Download the latest version of Protégé Desktop from [http://protege.stanford.edu/](http://protege.stanford.edu/) and follow the installation instructions. Note that the Debugger Plug-In is not compatible with Protégé version 4 and below.
|
|
* Download the most recent [Protégé Ontology Debugger Plug-In](/uploads/c48430be5a83d1a6763f733451b4c3c1/org.exquisite.protege-1.0-SNAPSHOT.jar) and copy it into the ```plugins``` subfolder of your Protégé 5 desktop client. If your Protégé client is already running, then you have to restart the client to load the plug-In. You should see now a new menu entry named ```Ontology Debugger``` as shown here: ![ExquisiteDebuggerTab](/uploads/36b3ac39574518abc3b27b8e8f15fe47/ExquisiteDebuggerTab.PNG)
|
|
* Install the Ontology Debugger Plugin with Protégé's Update Function```File->Check for Plugins...``` and select *Ontology Debugger* ![update](/uploads/44aea3438356dd8f6a50bf5ca937d2c2/update.PNG)
|
|
|
|
|
|
|
|
* **Alternatively** you can also download the [latest jar-file](http://isbi.aau.at/ontodebug/plugin) of the *Ontology Debugger* and copy the jar-File into the ```plugins``` subfolder of your Protégé 5 desktop client.
|
|
|
|
* If your Protégé client is already running, then you have to restart the client to load the plug-In. You should now see a new menu entry called ```Debugger``` as shown here: ![menu](/uploads/e18d0faaa937e2ff179e729fb760d175/menu.PNG)
|
|
|
|
|
|
# How to use the Ontology Debugger Plug-In in Protégé
|
|
# How to use the Ontology Debugger Plug-In in Protégé
|
|
To demonstrate the features of our Debugger Plug-In, let us load the Koala ontology. Select ```File->Open from URL... ``` and enter the URL http://protege.stanford.edu/ontologies/koala.owl.
|
|
To demonstrate the features of our Debugger Plug-In and how to use it, let us load the *Koala ontology*. Select ```File->Open from URL... ``` and enter the URL http://protege.stanford.edu/ontologies/koala.owl or simply select the URL from the Bookmarks. For this demo please also select the provided *Hermit Reasoner* in the ```Reasoner``` menu.
|
|
|
|
|
|
|
|
![koala](/uploads/3de58c1126cd7b4b641a131c28195ca7/koala.PNG)
|
|
|
|
|
|
|
|
### The Ontology Debugger Tab
|
|
|
|
|
|
### The Ontology Debugger
|
|
Once you have loaded the *Koala ontology*, you can open the *Ontology Debugger Tab* by selecting ```Ontology Debugger->Open Ontology Debugger Tab``` in the menu. You may also activate the tab by selecting it in ```Window->Tabs```. The initial layout of the *Ontology Debugger* should look similar to this:
|
|
|
|
|
|
Once you have loaded the *Koala ontology*, you can open the *Ontology Debugger* by selecting ```Ontology Debugger->Open Ontology Debugger Tab``` in the menu. You may also activate the tab by selecting it in ```Window->Tabs```. The initial layout of the *Ontology Debugger* should look similar to this:
|
|
![0](/uploads/935a147bdf347c35b2b520f2448e36e3/0.PNG)
|
|
|
|
|
|
![debugger](/uploads/c76aeb8c4b28b0842b9062c37efc52d3/debugger.PNG)
|
|
The Ontology Debugger is divided into three main sections where each one is responsible for the presentation and manipulation of different kind of data during the debugging session of inconsistent and/or incoherent ontologies. In the following we will describe the sections and their meaning.
|
|
|
|
|
|
The Ontology Debugger can be seen as divided into three main sections where each one is responsible for the presentation and manipulation of different kind of data during the debugging session of inconsistent and/or incoherent ontologies. In the following we will describe the sections and their meaning.
|
|
##### Input Ontology/ Test Cases
|
|
|
|
|
|
##### Diagnosesmodel / Testcases
|
|
The left section shows us a list of all axioms from the the currently used __Input Ontology__ separating them between __Correct Axioms__ (also called the _Background Knowledge_) and the list of __Possibly Faulty Axioms__ (the _Knowledge Base_ or _KB_). __Correct Axioms__ are axioms that are guaranteed to be correct and are either identified as correct by an expert or are automatically assigned by the Ontology Debugger.
|
|
|
|
|
|
The left section is responsible to present the the currently used __Diagnosismodel__ consisting of __Correct Axioms__ (also called the _Background Knowledge_) which represent axioms that are asserted by the expert to be correct, then the __Possibly Faulty Axioms__ (the _Knowledge Base_ or _KB_) which represents the set of axioms that might be erroneous and thus be the causing for the inconsistencies / incoherencies.
|
|
Below, we see the list of __Possibly Faulty Axioms__ which represents the set of axioms that might be erroneous and thus might be the cause for the inconsistencies / incoherencies in your ontology.
|
|
|
|
|
|
In the separate __Testcases__-Tab the test cases from a debugging session are shown. There are two possible kinds of test cases: _Entailed Testcases_ represent test cases that must be entailed in the active ontology and _Non Entailed Testcases_ represent test cases that must not be entailed in the currently active ontology. In the following image we see two test cases that have been answered by an experted which have to be entailed in the _Koala_ ontology.
|
|
**Note**: when loading the *Koala ontology* the debugger automatically separates axioms of ```AxiomType ClassAssertion``` from the set of axioms and marks them as *Correct Axioms*. All other axioms are *Possibly Faulty* axioms. As long as the Debugging Session has not been started, the expert can modify this two lists by clicking on the icons ![possibly_Faulty](/uploads/7f346fc71a0f1ce07dfca997572d3c8c/possibly_Faulty.PNG)and the ![correct](/uploads/2d9ca85e6297e4d8fce519aad80429b3/correct.PNG) to assume axioms as possibly faulty or correct respectively.
|
|
|
|
|
|
![testcases](/uploads/b10cd0a725fc5f874d8630de49109423/testcases.PNG)
|
|
In the __Test Cases__-Tab the test cases of the current debugging session are shown. There are two possible kinds of test cases: _Entailed Test Cases_ represent test cases that must be entailed in the active ontology and _Non Entailed Testcases_ represent test cases that must not be entailed in the currently active ontology. In the following image we see two test cases that have been answered by an experted which have to be entailed in the _Koala_ ontology.
|
|
|
|
|
|
##### Diagnoses / Conflicts
|
|
![testcases](/uploads/1dd8c9a08e12990b0bccac895f45e604/testcases.PNG)
|
|
|
|
|
|
The mid-section shows us the diagnoses and conflicts that are calculated during an ontology debugging session. The debugging session itself can be started by clicking on the __Start Debugging__ button. Once a debugging session is started, diagnoses are calculated and one or more queries are computed, which the expert has to answer in order to find the error in the ontology. Each set of diagnoses are based on a minimal conflicts set which will be shown in the __Conflicts__ tab.
|
|
##### Faulty Axioms/ Conflicts
|
|
|
|
|
|
Before we can start a debugging session we have to select a reasoner. Protégé 5 already comes with a pre-installed HermiT solver, but you can also install other reasoners like FaCT++ or Pellet. Installing additional reasoner plug-ins in Protégé is done by selecting ```File->Check for plug-ins...```. Protégé has to be restarted once you have installed additional reasoner plug-ins.
|
|
The mid-section shows us the faulty axioms (also called diagnoses) and the conflicts that are calculated during an ontology debugging session. The debugging session itself can be started by clicking on the __Start Debugging__ button. Once a debugging session is started, diagnoses are calculated and one or more queries are computed, which the expert has to answer in order to find the error in the ontology.
|
|
|
|
|
|
If you start a debugging session (__Start Debugging__) using he HermiT solver and given the default settings you will probably see as set of such diagnoses: ![diagnoses](/uploads/5c4bc9fe3e2ec9ad490329b11d5ca479/diagnoses.PNG)
|
|
Each set of diagnoses are based on _minimal conflicts sets_ which will be shown in the __Conflicts__ tab. **Note** that the minimal conflict sets can only be calculated using *HS-Tree* and *HS-DAG* as *Diagnosis Engine Type* (selectable in the debuggers options). Since *HS-Tree* is the default engine you can also see the minimal conflict sets (because of a [known minor bug](https://git-ainf.aau.at/interactive-KB-debugging/debugger/issues/19) however you have to select the __Conflicts__ tab once before you start the session to be able to see the list of conflicts).
|
|
|
|
|
|
|
|
Before we can start a debugging session we have to select a reasoner. Protégé 5 already comes with a pre-installed *HermiT* solver, but you can also install other reasoners like *FaCT++* or *Pellet*. Installing additional reasoner plug-ins in Protégé is done by selecting ```File->Check for plug-ins...```. Protégé has to be restarted once you have installed additional reasoner plug-ins.
|
|
|
|
|
|
|
|
If you start a new debugging session (__Start Debugging__) using he _HermiT_ solver and without changing any settings you should most probably see as set of such diagnoses: ![FirstSessionStep](/uploads/9d0f0234eec7cff9b91c06dc329a19c9/FirstSessionStep.PNG)
|
|
|
|
|
|
##### Queries / Answers
|
|
##### Queries / Answers
|
|
Given the session from above, the right section will show us the following question to be answered by an expert: ```Marsupials DisjointWith Peron``` and ```Koala SubClassOf isHardWorking value false```. In our example we will define both axioms as __Entailed__. Acknowledging this decision by pressing __Commit__ shall list both in the __Answers__ section as well as in thelist of __Entailed Testcases__ in our left section. ![queries](/uploads/c24bda03d842df06a67d1fb6b14941f8/queries.PNG)
|
|
Given the session from above, the right section will show us the following question to be answered by an expert: ```hasDegree Domain Person``` and ```isHardWorking Domain Person```.
|
|
|
|
|
|
|
|
These two axioms are to be understood as questions generated from the Ontology Debugger given to the expert. Note that the questions may be axioms already stated in the ontology or logically entailed axioms given the axioms in the ontology.
|
|
|
|
|
|
|
|
The expert now has to answer _at least one_ question. If the expert thinks this statement or axiom is true, he answers by clicking on the ![plus0](/uploads/53e6de21ab2264a301910e4e31cbc7e4/plus0.PNG) icon (__Entailed__). If he believes that this statement is false, he answers by clicking on the ![minus0](/uploads/10c449a582f342be1211599213c6480b/minus0.PNG) icon (__Not Entailed__).
|
|
|
|
|
|
|
|
In our example we answer both questions with __Entailed__. Acknowledging this decision by pressing __Commit__ list both axioms in the __Answers__ section as well as in the list of __Entailed Testcases__ in the view for Test Cases in the left section. ![SecondSessionStep](/uploads/a57df3b75ec7a4cc11b722294283f424/SecondSessionStep.PNG)
|
|
|
|
|
|
Since we still have no solution the next set of diagnoses and queries are calculated. If we continue answering the questions we should finally find a diagnosis corresponding to our test cases and which represents the possible fault in the ontology.
|
|
Since we still have no solution the next set of diagnoses and queries are calculated. If we continue answering the questions we should finally find a diagnosis corresponding to our test cases and which represents the possible fault in the ontology.
|
|
|
|
|
|
![finished_session](/uploads/814d5a767a42468350c5b5a29b928275/finished_session.PNG)
|
|
![FinalSessionStep](/uploads/068312d3065c9bfb93cf41614570afd9/FinalSessionStep.PNG)
|
|
|
|
|
|
|
|
You can reproduce the answers given and the resulting diagnoses by looking at the answers view in the lower right.
|
|
|
|
|
|
|
|
Our debugging session ended with a found set of 3 faulty axioms:
|
|
|
|
- [x] ```KoalaWithPhD EquivalentTo Koala and (hasDegree value PhD)```
|
|
|
|
- [x] ```Quokka SubClassOf isHardWorking value true```
|
|
|
|
|
|
|
|
and
|
|
|
|
- [x] ```Koala SubClassOf isHardWorking value false```.
|
|
|
|
|
|
# Preference settings for the Ontology Debugger Plug-In in Protégé
|
|
# Preference settings for the Ontology Debugger Plug-In in Protégé
|
|
|
|
|
... | | ... | |