Galigator / openllet

Openllet is an OWL 2 reasoner in Java, build on top of Pellet.
https://www.w3.org/TR/owl2-primer/
Other
96 stars 26 forks source link

Infinite loop in CompletionStrategy? #41

Open dlutz2 opened 5 years ago

dlutz2 commented 5 years ago

Attached is a ontology that appears to cause an infinite loop in the EmptySRIQStrategy, continuously calling SomeValuesRule(), blocking and branching without end. A fragment of the logging which shows the repeated portion the loop:

openllet.core.tableau.completion.EmptySRIQStrategy   complete Starting with _node anon(6)
openllet.core.tableau.completion.EmptySRIQStrategy   expand Stop _blocked anon(6)
openllet.core.tableau.completion.EmptySRIQStrategy   complete Starting with _node anon(7)
openllet.core.tableau.completion.CompletionStrategy   applyUniversalRestrictions REF : anon(8) _TOP_OBJECT_PROPERTY_
openllet.core.tableau.completion.rule.SomeValuesRule   applySomeValuesRule SOME: anon(7) -> agent_in -> anon(8) : Process (*)   - DS{branch:4, depends:[0, 1, 2, 3]}
openllet.core.tableau.completion.CompletionStrategy   applyUniversalRestrictions REF : anon(9) _TOP_OBJECT_PROPERTY_
openllet.core.tableau.completion.rule.SomeValuesRule   applySomeValuesRule SOME: anon(7) -> has_part -> anon(9) : Agent (*) -   DS{branch:5, depends:[0, 1, 2, 3, 4]}
  <start repeat>
openllet.core.tableau.completion.EmptySRIQStrategy   complete Starting with _node anon(8)
openllet.core.tableau.completion.EmptySRIQStrategy   expand Stop _blocked anon(8)
openllet.core.tableau.completion.EmptySRIQStrategy   complete Starting with _node anon(9)
 ...

As far as I can tell, it is valid OWL2 DL and Openllint doesn't spot anything. I have tried changing OpenlletOptions (USE_COMPLETION_STRATEGY, and IGNORE_INVERSES) but no change.

openllet-owlapi (2.64)

thanks

SRIQTest.owl.txt

Galigator commented 5 years ago

Thx for the report I will start looking for solutions in one week