-
Notifications
You must be signed in to change notification settings - Fork 74
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create an option to dump a list of explanations for unsatisfiable classes #329
Comments
This would be awesome.
Would be nice as a |
Does the |
I think this could reuse the functionality in ExplainOperation, but it would be a little more specific. It would need to get the list of unsatisfiable classes " |
not sure what you mean, I do this manually in Protege all the time, the first explanation is always fine |
I mean what you wrote in your “bonus” above. We can take just one explanation for each, but I frequently see thousands of unsatisfiable classes at once. |
FYI The algorithm for computing the most general unsatisfiable classes is called root unsatisfiable classes; https://www.sciencedirect.com/science/article/pii/S1570826805000260 |
Nice, thanks @matentzn! |
There is some – possibly shoddy ;) – code in the explanation package for computing root/derived unsatisfiable classes. See this interface and this implementation. I do recall there being some basic problems with original definitions of root/derived unsatisfiable classes but, right now, I'm struggling to remember the exact problems, other than that they were broken. I also can't find my notes from 10 years ago. I think the formal definition, that was couched in terms of justifications, was broken as I came up with some counter examples. If I think of them, I'll post them. |
I would like to mention that I would be veeeery interested in this ticket to be implemented. I am currently faced with huge ontologies and unsats all the time, and I would like a way I can dump a random (ideally root) justification for x unsatisfiable classes as markdown (some parameter to say: dump unsat explanations, if any, and another to restrict the number, in case there are thousands). |
* Updated explain command Various updates * Update CHANGELOG.md * Render source ontology of axioms in Markdown see #329 (comment) * Added new option for unsats: most_general see #686 (comment) Another method for avoiding redundant explanations. * Create uvula_multiple_unsat_all_explanation.md Added because missing for CI testing * Added missing examples * Adding a bit of determinism to subset unsat * Regularise order of axiom summary * Regularise list of unsat order * Some last fixes
I believe #779 resolved this, but please reopen if you need. |
A complement to #174
Analogous owltools option:
-e
orrun-reasoner
command. owltools dumps a flat list of axioms in the explanation rendering IRIs as IRI-label pairs.For robot, it would be super-awesome to have something similar, but more user friendly
Protege will find all explanations but will allow you to interrupt its search. I personally think the choice of explanation is abitrary and would be happy for the tool to include just one.
Maybe an option to find max N.
Bonus: in an ontology with multiple unsats, it can be useful to start with the one with the most minimal explanation, typically the MRCAs of all unsats in the asserted hierarchy. It may even be possible to combine explanations to find the most likely offending axiom.
Bonus bonus: plug in kboom to use probabilistic OWL inference to find the most likely overall resolution...
I believe @matentzn is working on something like this. I am neutral as to whether this is part of robot or a separate dependency on maven central that robot can include.
The text was updated successfully, but these errors were encountered: