Questions about Explanation Workbench in Protege 4.2

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Questions about Explanation Workbench in Protege 4.2

Qiu Ji
Dear all,

For the explanation plugin in Protege 4.2,  it is referred to as "Justification Based Explanation" (http://protegewiki.stanford.edu/wiki/Protege_4.2_Beta_Release_Notes). I have questions about this plugin (see below). Could somebody help me with them? Thank you very much for your help in advance!

1) What's the debugging approach behind this plugin? Is it the black-box approach or glass-box approach?

2) What's the difference between the debugging approaches in Pellet and the debugging approach in this explanation plugin in Protege 4.2? In Pellet 2.3.0, the debugging approaches include a black-box one and a glass-box one.

Thanks again!

Best regards,

Qiu

--
Qiu Ji
Southeast University
Nanjing, China

_______________________________________________
p4-feedback mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/p4-feedback
Reply | Threaded
Open this post in threaded view
|

Re: Questions about Explanation Workbench in Protege 4.2

Lorenz Buehmann
Hi,

as far as I know, the Explanation Workbench - by the way, it is a great feature - is developed by Matthew Horridge, and

1) I guess, it is based on a black-box approach, which is reasoner independent, otherwise you would always need the Pellet reasoner plugin
2) no idea what Matthew used for strategies in the expansion and pruning step

Lorenz


On 03/18/2013 03:26 AM, Qiu Ji wrote:
Dear all,

For the explanation plugin in Protege 4.2,  it is referred to as "Justification Based Explanation" (http://protegewiki.stanford.edu/wiki/Protege_4.2_Beta_Release_Notes). I have questions about this plugin (see below). Could somebody help me with them? Thank you very much for your help in advance!

1) What's the debugging approach behind this plugin? Is it the black-box approach or glass-box approach?

2) What's the difference between the debugging approaches in Pellet and the debugging approach in this explanation plugin in Protege 4.2? In Pellet 2.3.0, the debugging approaches include a black-box one and a glass-box one.

Thanks again!

Best regards,

Qiu

--
Qiu Ji
Southeast University
Nanjing, China


_______________________________________________
p4-feedback mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/p4-feedback


_______________________________________________
p4-feedback mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/p4-feedback
Reply | Threaded
Open this post in threaded view
|

Re: Questions about Explanation Workbench in Protege 4.2

Qiu Ji
Dear Lorenz,

Thank you very much for your quick reply!

Yes, this plugin is indeed a great feature. Besides, its efficiency is much higher than the black-box approach in Pellet in most cases according to my tests. Both black-box approaches are implemented by Matthew. As far as I know, the black-box approaches have different implementations.

I am wondering what is the difference to make their performance different. I am not sure whether the black-box approach in Protege 4.2 is the one described in his thesis. Anyone knows? Thanks a lot!

Best regards,

Qiu

On Mon, Mar 18, 2013 at 3:13 PM, Lorenz Bühmann <[hidden email]> wrote:
Hi,

as far as I know, the Explanation Workbench - by the way, it is a great feature - is developed by Matthew Horridge, and

1) I guess, it is based on a black-box approach, which is reasoner independent, otherwise you would always need the Pellet reasoner plugin
2) no idea what Matthew used for strategies in the expansion and pruning step

Lorenz



On 03/18/2013 03:26 AM, Qiu Ji wrote:
Dear all,

For the explanation plugin in Protege 4.2,  it is referred to as "Justification Based Explanation" (http://protegewiki.stanford.edu/wiki/Protege_4.2_Beta_Release_Notes). I have questions about this plugin (see below). Could somebody help me with them? Thank you very much for your help in advance!

1) What's the debugging approach behind this plugin? Is it the black-box approach or glass-box approach?

2) What's the difference between the debugging approaches in Pellet and the debugging approach in this explanation plugin in Protege 4.2? In Pellet 2.3.0, the debugging approaches include a black-box one and a glass-box one.

Thanks again!

Best regards,

Qiu

--
Qiu Ji
Southeast University
Nanjing, China


_______________________________________________
p4-feedback mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/p4-feedback


_______________________________________________
p4-feedback mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/p4-feedback




--
Qiu Ji
Southeast University
Nanjing, China

_______________________________________________
p4-feedback mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/p4-feedback
Reply | Threaded
Open this post in threaded view
|

Re: Questions about Explanation Workbench in Protege 4.2

Matthew Horridge-2
Administrator
Hi Qiu, Lorenz,

Yes, you're both correct... the explanation generation in P4 is black box based (and it is the one I used to get results for my thesis).  There are two main differences optimisations in the code used by P4 compared with the other code you mention:  (1) The use of syntactic locality based modules to extract a module for the given entailment (this speeds up entailment testing and reduces the search space) and, (2) the use of a divide and conquer strategy for pruning rather than the sliding window used in the other code (this reduces the number of entailment checks that have to be performed).  There are a few other improvements, but these are the main ones.

Cheers,

Matthew

On 18 Mar 2013, at 00:39, Qiu Ji wrote:

> Dear Lorenz,
>
> Thank you very much for your quick reply!
>
> Yes, this plugin is indeed a great feature. Besides, its efficiency is much higher than the black-box approach in Pellet in most cases according to my tests. Both black-box approaches are implemented by Matthew. As far as I know, the black-box approaches have different implementations.
>
> I am wondering what is the difference to make their performance different. I am not sure whether the black-box approach in Protege 4.2 is the one described in his thesis. Anyone knows? Thanks a lot!
>
> Best regards,
>
> Qiu
>
> On Mon, Mar 18, 2013 at 3:13 PM, Lorenz Bühmann <[hidden email]> wrote:
> Hi,
>
> as far as I know, the Explanation Workbench - by the way, it is a great feature - is developed by Matthew Horridge, and
>
> 1) I guess, it is based on a black-box approach, which is reasoner independent, otherwise you would always need the Pellet reasoner plugin
> 2) no idea what Matthew used for strategies in the expansion and pruning step
>
> Lorenz
>
>
>
> On 03/18/2013 03:26 AM, Qiu Ji wrote:
>> Dear all,
>>
>> For the explanation plugin in Protege 4.2,  it is referred to as "Justification Based Explanation" (http://protegewiki.stanford.edu/wiki/Protege_4.2_Beta_Release_Notes). I have questions about this plugin (see below). Could somebody help me with them? Thank you very much for your help in advance!
>>
>> 1) What's the debugging approach behind this plugin? Is it the black-box approach or glass-box approach?
>>
>> 2) What's the difference between the debugging approaches in Pellet and the debugging approach in this explanation plugin in Protege 4.2? In Pellet 2.3.0, the debugging approaches include a black-box one and a glass-box one.
>>
>> Thanks again!
>>
>> Best regards,
>>
>> Qiu
>>
>> --
>> Qiu Ji
>> Southeast University
>> Nanjing, China
>>
>>
>> _______________________________________________
>> p4-feedback mailing list
>>
>> [hidden email]
>> https://mailman.stanford.edu/mailman/listinfo/p4-feedback
>
>
> _______________________________________________
> p4-feedback mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/p4-feedback
>
>
>
>
> --
> Qiu Ji
> Southeast University
> Nanjing, China
> _______________________________________________
> p4-feedback mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/p4-feedback

_______________________________________________
p4-feedback mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/p4-feedback
Reply | Threaded
Open this post in threaded view
|

Re: Questions about Explanation Workbench in Protege 4.2

Qiu Ji
Dear Matthew,

Thank you very much for your information!

By the way, may I ask you a question regarding the glass-box approach in Pellet? I have tried Pellet 2.3.0 and Pellet 2.2.2 to compute justifications for some entailments in a set of ontologies. I found that, in several cases, the similar exception (see below) is thrown  when applying the glass-box approach to compute all justifications. The attached exception is obtained when computing justifications for the entailment

"http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_3725000 subClassOf http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_0000093"

in ontology neural-electromagnetic-ontologies.owl, which is used in your thesis. It seems there is some problem when constructing the hitting set tree. Do you know what's the exact reason for this?

Thanks a lot!

Best regards,

Qiu

org.semanticweb.owlapi.model.OWLRuntimeException: Explanation contains removed axiom: EquivalentClasses(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_3725000> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_0000093> ObjectSomeValuesFrom(<http://www.obofoundry.org/ro/ro.owl#has_proper_part> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_0745000> DataSomeValuesFrom(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_7943000> DataIntersectionOf(DataRangeRestriction(xsd:decimal facetRestriction(minInclusive "270"^^xsd:decimal)) DataRangeRestriction(xsd:decimal facetRestriction(maxInclusive "350"^^xsd:decimal)) )))) ObjectSomeValuesFrom(<http://www.obofoundry.org/ro/ro.owl#has_proper_part> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_6902000> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/IAO_0000221> ObjectIntersectionOf(<http://purl.org/obo/owl/PATO#PATO_0000049> ObjectSomeValuesFrom(<http://purl.org/obo/owl/OBO_REL#inheres_in> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_8225000> ObjectSomeValuesFrom(<http://purl.org/obo/owl/OBO_REL#unfolds_in> <http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_0000005>))))) DataSomeValuesFrom(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_7943000> DataRangeRestriction(xsd:decimal facetRestriction(maxInclusive "-0.4"^^xsd:decimal))))) ObjectSomeValuesFrom(<http://www.obofoundry.org/ro/ro.owl#proper_part_of> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_0000495> ObjectSomeValuesFrom(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_4940000> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_2202000> DataHasValue(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_2466000> "stimulus_onset"^^xsd:string))) ObjectSomeValuesFrom(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_4940000> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_8938000> DataHasValue(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_2466000> "linguistic_object"^^xsd:string)))))) )
    at com.clarkparsia.owlapi.explanation.HSTExplanationGenerator.constructHittingSetTree(HSTExplanationGenerator.java:320)
    at com.clarkparsia.owlapi.explanation.HSTExplanationGenerator.getExplanations(HSTExplanationGenerator.java:154)
    at com.clarkparsia.owlapi.explanation.HSTExplanationGenerator.getExplanations(HSTExplanationGenerator.java:131)
    at com.clarkparsia.owlapi.explanation.PelletExplanation.getUnsatisfiableExplanations(PelletExplanation.java:154)
    at com.clarkparsia.owlapi.explanation.PelletExplanation.getEntailmentExplanations(PelletExplanation.java:82)
    at com.clarkparsia.owlapi.explanation.PelletExplanation.getSubClassExplanations(PelletExplanation.java:126)
    at debug.PelletJustifications$1.run(PelletJustifications.java:133)
    at debug.PelletJustifications$2.run(PelletJustifications.java:309)




On Tue, Mar 19, 2013 at 1:10 AM, Matthew Horridge <[hidden email]> wrote:
Hi Qiu, Lorenz,

Yes, you're both correct... the explanation generation in P4 is black box based (and it is the one I used to get results for my thesis).  There are two main differences optimisations in the code used by P4 compared with the other code you mention:  (1) The use of syntactic locality based modules to extract a module for the given entailment (this speeds up entailment testing and reduces the search space) and, (2) the use of a divide and conquer strategy for pruning rather than the sliding window used in the other code (this reduces the number of entailment checks that have to be performed).  There are a few other improvements, but these are the main ones.

Cheers,

Matthew

On 18 Mar 2013, at 00:39, Qiu Ji wrote:

> Dear Lorenz,
>
> Thank you very much for your quick reply!
>
> Yes, this plugin is indeed a great feature. Besides, its efficiency is much higher than the black-box approach in Pellet in most cases according to my tests. Both black-box approaches are implemented by Matthew. As far as I know, the black-box approaches have different implementations.
>
> I am wondering what is the difference to make their performance different. I am not sure whether the black-box approach in Protege 4.2 is the one described in his thesis. Anyone knows? Thanks a lot!
>
> Best regards,
>
> Qiu
>
> On Mon, Mar 18, 2013 at 3:13 PM, Lorenz Bühmann <[hidden email]> wrote:
> Hi,
>
> as far as I know, the Explanation Workbench - by the way, it is a great feature - is developed by Matthew Horridge, and
>
> 1) I guess, it is based on a black-box approach, which is reasoner independent, otherwise you would always need the Pellet reasoner plugin
> 2) no idea what Matthew used for strategies in the expansion and pruning step
>
> Lorenz
>
>
>
> On 03/18/2013 03:26 AM, Qiu Ji wrote:
>> Dear all,
>>
>> For the explanation plugin in Protege 4.2,  it is referred to as "Justification Based Explanation" (http://protegewiki.stanford.edu/wiki/Protege_4.2_Beta_Release_Notes). I have questions about this plugin (see below). Could somebody help me with them? Thank you very much for your help in advance!
>>
>> 1) What's the debugging approach behind this plugin? Is it the black-box approach or glass-box approach?
>>
>> 2) What's the difference between the debugging approaches in Pellet and the debugging approach in this explanation plugin in Protege 4.2? In Pellet 2.3.0, the debugging approaches include a black-box one and a glass-box one.
>>
>> Thanks again!
>>
>> Best regards,
>>
>> Qiu
>>
>> --
>> Qiu Ji
>> Southeast University
>> Nanjing, China
>>
>>
>> _______________________________________________
>> p4-feedback mailing list
>>
>> [hidden email]
>> https://mailman.stanford.edu/mailman/listinfo/p4-feedback
>
>
> _______________________________________________
> p4-feedback mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/p4-feedback
>
>
>
>
> --
> Qiu Ji
> Southeast University
> Nanjing, China
> _______________________________________________
> p4-feedback mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/p4-feedback

_______________________________________________
p4-feedback mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/p4-feedback



--
Qiu Ji
Southeast University
Nanjing, China

_______________________________________________
p4-feedback mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/p4-feedback
Reply | Threaded
Open this post in threaded view
|

Re: Questions about Explanation Workbench in Protege 4.2

Lorenz Buehmann
Thanks Matthew.

@Qiu Ji: This is a bug in Pellet, and should be mentioned on the Pellet mailing list. Maybe it is is because in the glass-box approach the explanation is not always minimal and needs sometimes a pruning step as postprocessing. But to be honest, not sure. I also went into this problem, e.g. when debugging the TAMBIS ontology.

Lorenz
On 03/19/2013 03:16 AM, Qiu Ji wrote:
Dear Matthew,

Thank you very much for your information!

By the way, may I ask you a question regarding the glass-box approach in Pellet? I have tried Pellet 2.3.0 and Pellet 2.2.2 to compute justifications for some entailments in a set of ontologies. I found that, in several cases, the similar exception (see below) is thrown  when applying the glass-box approach to compute all justifications. The attached exception is obtained when computing justifications for the entailment

"http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_3725000 subClassOf http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_0000093"

in ontology neural-electromagnetic-ontologies.owl, which is used in your thesis. It seems there is some problem when constructing the hitting set tree. Do you know what's the exact reason for this?

Thanks a lot!

Best regards,

Qiu

org.semanticweb.owlapi.model.OWLRuntimeException: Explanation contains removed axiom: EquivalentClasses(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_3725000> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_0000093> ObjectSomeValuesFrom(<http://www.obofoundry.org/ro/ro.owl#has_proper_part> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_0745000> DataSomeValuesFrom(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_7943000> DataIntersectionOf(DataRangeRestriction(xsd:decimal facetRestriction(minInclusive "270"^^xsd:decimal)) DataRangeRestriction(xsd:decimal facetRestriction(maxInclusive "350"^^xsd:decimal)) )))) ObjectSomeValuesFrom(<http://www.obofoundry.org/ro/ro.owl#has_proper_part> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_6902000> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/IAO_0000221> ObjectIntersectionOf(<http://purl.org/obo/owl/PATO#PATO_0000049> ObjectSomeValuesFrom(<http://purl.org/obo/owl/OBO_REL#inheres_in> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_8225000> ObjectSomeValuesFrom(<http://purl.org/obo/owl/OBO_REL#unfolds_in> <http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_0000005>))))) DataSomeValuesFrom(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_7943000> DataRangeRestriction(xsd:decimal facetRestriction(maxInclusive "-0.4"^^xsd:decimal))))) ObjectSomeValuesFrom(<http://www.obofoundry.org/ro/ro.owl#proper_part_of> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_0000495> ObjectSomeValuesFrom(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_4940000> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_2202000> DataHasValue(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_2466000> "stimulus_onset"^^xsd:string))) ObjectSomeValuesFrom(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_4940000> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_8938000> DataHasValue(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_2466000> "linguistic_object"^^xsd:string)))))) )
    at com.clarkparsia.owlapi.explanation.HSTExplanationGenerator.constructHittingSetTree(HSTExplanationGenerator.java:320)
    at com.clarkparsia.owlapi.explanation.HSTExplanationGenerator.getExplanations(HSTExplanationGenerator.java:154)
    at com.clarkparsia.owlapi.explanation.HSTExplanationGenerator.getExplanations(HSTExplanationGenerator.java:131)
    at com.clarkparsia.owlapi.explanation.PelletExplanation.getUnsatisfiableExplanations(PelletExplanation.java:154)
    at com.clarkparsia.owlapi.explanation.PelletExplanation.getEntailmentExplanations(PelletExplanation.java:82)
    at com.clarkparsia.owlapi.explanation.PelletExplanation.getSubClassExplanations(PelletExplanation.java:126)
    at debug.PelletJustifications$1.run(PelletJustifications.java:133)
    at debug.PelletJustifications$2.run(PelletJustifications.java:309)




On Tue, Mar 19, 2013 at 1:10 AM, Matthew Horridge <[hidden email]> wrote:
Hi Qiu, Lorenz,

Yes, you're both correct... the explanation generation in P4 is black box based (and it is the one I used to get results for my thesis).  There are two main differences optimisations in the code used by P4 compared with the other code you mention:  (1) The use of syntactic locality based modules to extract a module for the given entailment (this speeds up entailment testing and reduces the search space) and, (2) the use of a divide and conquer strategy for pruning rather than the sliding window used in the other code (this reduces the number of entailment checks that have to be performed).  There are a few other improvements, but these are the main ones.

Cheers,

Matthew

On 18 Mar 2013, at 00:39, Qiu Ji wrote:

> Dear Lorenz,
>
> Thank you very much for your quick reply!
>
> Yes, this plugin is indeed a great feature. Besides, its efficiency is much higher than the black-box approach in Pellet in most cases according to my tests. Both black-box approaches are implemented by Matthew. As far as I know, the black-box approaches have different implementations.
>
> I am wondering what is the difference to make their performance different. I am not sure whether the black-box approach in Protege 4.2 is the one described in his thesis. Anyone knows? Thanks a lot!
>
> Best regards,
>
> Qiu
>
> On Mon, Mar 18, 2013 at 3:13 PM, Lorenz Bühmann <[hidden email]> wrote:
> Hi,
>
> as far as I know, the Explanation Workbench - by the way, it is a great feature - is developed by Matthew Horridge, and
>
> 1) I guess, it is based on a black-box approach, which is reasoner independent, otherwise you would always need the Pellet reasoner plugin
> 2) no idea what Matthew used for strategies in the expansion and pruning step
>
> Lorenz
>
>
>
> On 03/18/2013 03:26 AM, Qiu Ji wrote:
>> Dear all,
>>
>> For the explanation plugin in Protege 4.2,  it is referred to as "Justification Based Explanation" (http://protegewiki.stanford.edu/wiki/Protege_4.2_Beta_Release_Notes). I have questions about this plugin (see below). Could somebody help me with them? Thank you very much for your help in advance!
>>
>> 1) What's the debugging approach behind this plugin? Is it the black-box approach or glass-box approach?
>>
>> 2) What's the difference between the debugging approaches in Pellet and the debugging approach in this explanation plugin in Protege 4.2? In Pellet 2.3.0, the debugging approaches include a black-box one and a glass-box one.
>>
>> Thanks again!
>>
>> Best regards,
>>
>> Qiu
>>
>> --
>> Qiu Ji
>> Southeast University
>> Nanjing, China
>>
>>
>> _______________________________________________
>> p4-feedback mailing list
>>
>> [hidden email]
>> https://mailman.stanford.edu/mailman/listinfo/p4-feedback
>
>
> _______________________________________________
> p4-feedback mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/p4-feedback
>
>
>
>
> --
> Qiu Ji
> Southeast University
> Nanjing, China
> _______________________________________________
> p4-feedback mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/p4-feedback

_______________________________________________
p4-feedback mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/p4-feedback



--
Qiu Ji
Southeast University
Nanjing, China


_______________________________________________
p4-feedback mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/p4-feedback


_______________________________________________
p4-feedback mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/p4-feedback
Reply | Threaded
Open this post in threaded view
|

Re: Questions about Explanation Workbench in Protege 4.2

Qiu Ji
Dear Lorenz,

Thanks for your quick reply!

Yes, I also observed the cases that the glass-box approach in Pellet returns some justifications which are not minimal. But for the example in my previous email, Pellet did find one real justification. But when constructing a hitting set, it seems Pellet forgets it has already find one justification and thus returns such an exception.

You are right. I will mention this problem on the Pellet mailinglist. Here, maybe we can get a quick answer from Matthew?

Thanks a lot!

Best regards,

Qiu

On Tue, Mar 19, 2013 at 10:44 AM, Lorenz Bühmann <[hidden email]> wrote:
Thanks Matthew.

@Qiu Ji: This is a bug in Pellet, and should be mentioned on the Pellet mailing list. Maybe it is is because in the glass-box approach the explanation is not always minimal and needs sometimes a pruning step as postprocessing. But to be honest, not sure. I also went into this problem, e.g. when debugging the TAMBIS ontology.

Lorenz

On 03/19/2013 03:16 AM, Qiu Ji wrote:
Dear Matthew,

Thank you very much for your information!

By the way, may I ask you a question regarding the glass-box approach in Pellet? I have tried Pellet 2.3.0 and Pellet 2.2.2 to compute justifications for some entailments in a set of ontologies. I found that, in several cases, the similar exception (see below) is thrown  when applying the glass-box approach to compute all justifications. The attached exception is obtained when computing justifications for the entailment

"http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_3725000 subClassOf http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_0000093"

in ontology neural-electromagnetic-ontologies.owl, which is used in your thesis. It seems there is some problem when constructing the hitting set tree. Do you know what's the exact reason for this?

Thanks a lot!

Best regards,

Qiu

org.semanticweb.owlapi.model.OWLRuntimeException: Explanation contains removed axiom: EquivalentClasses(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_3725000> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_0000093> ObjectSomeValuesFrom(<http://www.obofoundry.org/ro/ro.owl#has_proper_part> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_0745000> DataSomeValuesFrom(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_7943000> DataIntersectionOf(DataRangeRestriction(xsd:decimal facetRestriction(minInclusive "270"^^xsd:decimal)) DataRangeRestriction(xsd:decimal facetRestriction(maxInclusive "350"^^xsd:decimal)) )))) ObjectSomeValuesFrom(<http://www.obofoundry.org/ro/ro.owl#has_proper_part> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_6902000> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/IAO_0000221> ObjectIntersectionOf(<http://purl.org/obo/owl/PATO#PATO_0000049> ObjectSomeValuesFrom(<http://purl.org/obo/owl/OBO_REL#inheres_in> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_8225000> ObjectSomeValuesFrom(<http://purl.org/obo/owl/OBO_REL#unfolds_in> <http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_0000005>))))) DataSomeValuesFrom(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_7943000> DataRangeRestriction(xsd:decimal facetRestriction(maxInclusive "-0.4"^^xsd:decimal))))) ObjectSomeValuesFrom(<http://www.obofoundry.org/ro/ro.owl#proper_part_of> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_0000495> ObjectSomeValuesFrom(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_4940000> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_2202000> DataHasValue(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_2466000> "stimulus_onset"^^xsd:string))) ObjectSomeValuesFrom(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_4940000> ObjectIntersectionOf(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_8938000> DataHasValue(<http://purl.bioontology.org/NEMO/ontology/NEMO.owl#NEMO_2466000> "linguistic_object"^^xsd:string)))))) )
    at com.clarkparsia.owlapi.explanation.HSTExplanationGenerator.constructHittingSetTree(HSTExplanationGenerator.java:320)
    at com.clarkparsia.owlapi.explanation.HSTExplanationGenerator.getExplanations(HSTExplanationGenerator.java:154)
    at com.clarkparsia.owlapi.explanation.HSTExplanationGenerator.getExplanations(HSTExplanationGenerator.java:131)
    at com.clarkparsia.owlapi.explanation.PelletExplanation.getUnsatisfiableExplanations(PelletExplanation.java:154)
    at com.clarkparsia.owlapi.explanation.PelletExplanation.getEntailmentExplanations(PelletExplanation.java:82)
    at com.clarkparsia.owlapi.explanation.PelletExplanation.getSubClassExplanations(PelletExplanation.java:126)
    at debug.PelletJustifications$1.run(PelletJustifications.java:133)
    at debug.PelletJustifications$2.run(PelletJustifications.java:309)




On Tue, Mar 19, 2013 at 1:10 AM, Matthew Horridge <[hidden email]> wrote:
Hi Qiu, Lorenz,

Yes, you're both correct... the explanation generation in P4 is black box based (and it is the one I used to get results for my thesis).  There are two main differences optimisations in the code used by P4 compared with the other code you mention:  (1) The use of syntactic locality based modules to extract a module for the given entailment (this speeds up entailment testing and reduces the search space) and, (2) the use of a divide and conquer strategy for pruning rather than the sliding window used in the other code (this reduces the number of entailment checks that have to be performed).  There are a few other improvements, but these are the main ones.

Cheers,

Matthew

On 18 Mar 2013, at 00:39, Qiu Ji wrote:

> Dear Lorenz,
>
> Thank you very much for your quick reply!
>
> Yes, this plugin is indeed a great feature. Besides, its efficiency is much higher than the black-box approach in Pellet in most cases according to my tests. Both black-box approaches are implemented by Matthew. As far as I know, the black-box approaches have different implementations.
>
> I am wondering what is the difference to make their performance different. I am not sure whether the black-box approach in Protege 4.2 is the one described in his thesis. Anyone knows? Thanks a lot!
>
> Best regards,
>
> Qiu
>
> On Mon, Mar 18, 2013 at 3:13 PM, Lorenz Bühmann <[hidden email]> wrote:
> Hi,
>
> as far as I know, the Explanation Workbench - by the way, it is a great feature - is developed by Matthew Horridge, and
>
> 1) I guess, it is based on a black-box approach, which is reasoner independent, otherwise you would always need the Pellet reasoner plugin
> 2) no idea what Matthew used for strategies in the expansion and pruning step
>
> Lorenz
>
>
>
> On 03/18/2013 03:26 AM, Qiu Ji wrote:
>> Dear all,
>>
>> For the explanation plugin in Protege 4.2,  it is referred to as "Justification Based Explanation" (http://protegewiki.stanford.edu/wiki/Protege_4.2_Beta_Release_Notes). I have questions about this plugin (see below). Could somebody help me with them? Thank you very much for your help in advance!
>>
>> 1) What's the debugging approach behind this plugin? Is it the black-box approach or glass-box approach?
>>
>> 2) What's the difference between the debugging approaches in Pellet and the debugging approach in this explanation plugin in Protege 4.2? In Pellet 2.3.0, the debugging approaches include a black-box one and a glass-box one.
>>
>> Thanks again!
>>
>> Best regards,
>>
>> Qiu
>>
>> --
>> Qiu Ji
>> Southeast University
>> Nanjing, China
>>
>>
>> _______________________________________________
>> p4-feedback mailing list
>>
>> [hidden email]
>> https://mailman.stanford.edu/mailman/listinfo/p4-feedback
>
>
> _______________________________________________
> p4-feedback mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/p4-feedback
>
>
>
>
> --
> Qiu Ji
> Southeast University
> Nanjing, China
> _______________________________________________
> p4-feedback mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/p4-feedback

_______________________________________________
p4-feedback mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/p4-feedback



--
Qiu Ji
Southeast University
Nanjing, China


_______________________________________________
p4-feedback mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/p4-feedback


_______________________________________________
p4-feedback mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/p4-feedback




--
Qiu Ji
Southeast University
Nanjing, China

_______________________________________________
p4-feedback mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/p4-feedback