Skip to content
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

Inconsistent ontology makes the UI unresponsive #877

Closed
csnyulas opened this issue Mar 28, 2019 · 1 comment
Closed

Inconsistent ontology makes the UI unresponsive #877

csnyulas opened this issue Mar 28, 2019 · 1 comment
Assignees
Labels
Status: Fixed Added to indicate that a closed issue represents a bug that has been fixed Type: Critical Bug A type of bug that causes Protege to not start, not load/save ontologies, data loss etc.

Comments

@csnyulas
Copy link
Member

I created a simple inconsistent ontology by adding these 4 statements:

image

I created a new property and I tried to specify the Domain of the new property.

While the "Class expression editor" and the Data restriction creator" editors are usable, the "Object restriction creator" and "Class hierarchy" editors are not.

@LorenzBuehmann
Copy link

LorenzBuehmann commented Apr 4, 2019

Yes, I can reproduce this. Looks like the tree renderer fails while during satisfiablity check due the inconsistency:

Uncaught Exception in thread 'AWT-EventQueue-0' 
org.semanticweb.owlapi.reasoner.InconsistentOntologyException: Inconsistent ontology
	at org.semanticweb.HermiT.Reasoner.throwInconsistentOntologyExceptionIfNecessary(Reasoner.java:2296) ~[na:na]
	at org.semanticweb.HermiT.Reasoner.checkPreConditions(Reasoner.java:2288) ~[na:na]
	at org.semanticweb.HermiT.Reasoner.isSatisfiable(Reasoner.java:784) ~[na:na]
	at org.protege.editor.owl.ui.renderer.ProtegeTreeNodeRenderer.isSatisfiable(ProtegeTreeNodeRenderer.java:161) ~[na:na]
	at org.protege.editor.owl.ui.renderer.ProtegeTreeNodeRenderer.getTreeCellRendererComponent(ProtegeTreeNodeRenderer.java:99) ~[na:na]
	at javax.swing.plaf.basic.BasicTreeUI.paintRow(BasicTreeUI.java:1536) ~[na:1.8.0_121]
	at javax.swing.plaf.basic.BasicTreeUI.paint(BasicTreeUI.java:1224) ~[na:1.8.0_121]
	at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintComponent(JComponent.java:780) ~[na:1.8.0_121]
	at org.protege.editor.owl.ui.tree.OWLObjectTree.paintComponent(OWLObjectTree.java:813) ~[na:na]
	at javax.swing.JComponent.paint(JComponent.java:1056) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JViewport.paint(JViewport.java:728) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JLayeredPane.paint(JLayeredPane.java:586) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5217) ~[na:1.8.0_121]
	at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:290) ~[na:1.8.0_121]
	at javax.swing.RepaintManager.paint(RepaintManager.java:1272) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1042) ~[na:1.8.0_121]
	at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39) ~[na:1.8.0_121]
	at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79) ~[na:1.8.0_121]
	at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116) ~[na:1.8.0_121]
	at java.awt.Container.paint(Container.java:1975) ~[na:1.8.0_121]
	at java.awt.Window.paint(Window.java:3904) ~[na:1.8.0_121]
	at javax.swing.RepaintManager$4.run(RepaintManager.java:842) ~[na:1.8.0_121]
	at javax.swing.RepaintManager$4.run(RepaintManager.java:814) ~[na:1.8.0_121]
	at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_121]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) ~[na:1.8.0_121]
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) ~[na:1.8.0_121]
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) ~[na:1.8.0_121]
	at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) ~[na:1.8.0_121]
	at javax.swing.RepaintManager.access$1200(RepaintManager.java:64) ~[na:1.8.0_121]
	at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) ~[na:1.8.0_121]
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) ~[na:1.8.0_121]
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) ~[na:1.8.0_121]
	at java.awt.EventQueue.access$500(EventQueue.java:97) ~[na:1.8.0_121]
	at java.awt.EventQueue$3.run(EventQueue.java:709) ~[na:1.8.0_121]
	at java.awt.EventQueue$3.run(EventQueue.java:703) ~[na:1.8.0_121]
	at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_121]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) ~[na:1.8.0_121]
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) ~[na:1.8.0_121]
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) [na:1.8.0_121]
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) [na:1.8.0_121]
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) [na:1.8.0_121]
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) [na:1.8.0_121]
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) [na:1.8.0_121]
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) [na:1.8.0_121]
Uncaught Exception in thread 'AWT-EventQueue-0' 
org.semanticweb.owlapi.reasoner.InconsistentOntologyException: Inconsistent ontology
	at org.semanticweb.HermiT.Reasoner.throwInconsistentOntologyExceptionIfNecessary(Reasoner.java:2296) ~[na:na]
	at org.semanticweb.HermiT.Reasoner.checkPreConditions(Reasoner.java:2288) ~[na:na]
	at org.semanticweb.HermiT.Reasoner.isSatisfiable(Reasoner.java:784) ~[na:na]
	at org.protege.editor.owl.ui.renderer.ProtegeTreeNodeRenderer.isSatisfiable(ProtegeTreeNodeRenderer.java:161) ~[na:na]
	at org.protege.editor.owl.ui.renderer.ProtegeTreeNodeRenderer.getTreeCellRendererComponent(ProtegeTreeNodeRenderer.java:99) ~[na:na]
	at javax.swing.plaf.basic.BasicTreeUI.paintRow(BasicTreeUI.java:1536) ~[na:1.8.0_121]
	at javax.swing.plaf.basic.BasicTreeUI.paint(BasicTreeUI.java:1224) ~[na:1.8.0_121]
	at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintComponent(JComponent.java:780) ~[na:1.8.0_121]
	at org.protege.editor.owl.ui.tree.OWLObjectTree.paintComponent(OWLObjectTree.java:813) ~[na:na]
	at javax.swing.JComponent.paint(JComponent.java:1056) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JViewport.paint(JViewport.java:728) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JLayeredPane.paint(JLayeredPane.java:586) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintChildren(JComponent.java:889) ~[na:1.8.0_121]
	at javax.swing.JComponent.paint(JComponent.java:1065) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210) ~[na:1.8.0_121]
	at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:290) ~[na:1.8.0_121]
	at javax.swing.RepaintManager.paint(RepaintManager.java:1272) ~[na:1.8.0_121]
	at javax.swing.JComponent._paintImmediately(JComponent.java:5158) ~[na:1.8.0_121]
	at javax.swing.JComponent.paintImmediately(JComponent.java:4969) ~[na:1.8.0_121]
	at javax.swing.RepaintManager$4.run(RepaintManager.java:831) ~[na:1.8.0_121]
	at javax.swing.RepaintManager$4.run(RepaintManager.java:814) ~[na:1.8.0_121]
	at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_121]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) ~[na:1.8.0_121]
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) ~[na:1.8.0_121]
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) ~[na:1.8.0_121]
	at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) ~[na:1.8.0_121]
	at javax.swing.RepaintManager.access$1200(RepaintManager.java:64) ~[na:1.8.0_121]
	at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) ~[na:1.8.0_121]
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) ~[na:1.8.0_121]
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) ~[na:1.8.0_121]
	at java.awt.EventQueue.access$500(EventQueue.java:97) ~[na:1.8.0_121]
	at java.awt.EventQueue$3.run(EventQueue.java:709) ~[na:1.8.0_121]
	at java.awt.EventQueue$3.run(EventQueue.java:703) ~[na:1.8.0_121]
	at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_121]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) ~[na:1.8.0_121]
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) ~[na:1.8.0_121]
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) [na:1.8.0_121]
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) [na:1.8.0_121]
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) [na:1.8.0_121]
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) [na:1.8.0_121]
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) [na:1.8.0_121]
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) [na:1.8.0_121]

Apparently, this happens for any inconsistent ontology, even the most simple
one with

Individual: a
 Types: owl:Nothing

can show the explanation but the UI will be stuck.

@matthewhorridge matthewhorridge self-assigned this Apr 4, 2019
@matthewhorridge matthewhorridge added Status: Fixed Added to indicate that a closed issue represents a bug that has been fixed Type: Critical Bug A type of bug that causes Protege to not start, not load/save ontologies, data loss etc. labels Apr 4, 2019
@matthewhorridge matthewhorridge added this to the Protégé 5.6.0 milestone Apr 4, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Fixed Added to indicate that a closed issue represents a bug that has been fixed Type: Critical Bug A type of bug that causes Protege to not start, not load/save ontologies, data loss etc.
Projects
None yet
Development

No branches or pull requests

3 participants