Hello everyone,
I encountered an issue when using "rolification" (use of an object property to indicate the class membership of an individual) and swrl-rules in combination. Maybe someone here has an idea regarding the cause and possibilities to circumvent this issue?
When using multiple atoms with only one variable each in context of an DL-safe rule, the call PelletReasoner.getKB.realize() fails with the following exception:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at com.clarkparsia.pellet.rules.rete.BetaNode.join(BetaNode.java:123)
at com.clarkparsia.pellet.rules.rete.Interpreter.processBetaNodes(Interpreter.java:109)
at com.clarkparsia.pellet.rules.rete.Interpreter.run(Interpreter.java:236)
at com.clarkparsia.pellet.rules.ContinuousRulesStrategy.applyRete(ContinuousRulesStrategy.java:179)
at com.clarkparsia.pellet.rules.ContinuousRulesStrategy.complete(ContinuousRulesStrategy.java:322)
at org.mindswap.pellet.ABox.isConsistent(ABox.java:1423)
at org.mindswap.pellet.ABox.isConsistent(ABox.java:1260)
at org.mindswap.pellet.KnowledgeBase.consistency(KnowledgeBase.java:1987)
at org.mindswap.pellet.KnowledgeBase.isConsistent(KnowledgeBase.java:2061)
at org.mindswap.pellet.KnowledgeBase.ensureConsistency(KnowledgeBase.java:2075)
at org.mindswap.pellet.KnowledgeBase.classify(KnowledgeBase.java:2083)
at org.mindswap.pellet.KnowledgeBase.realize(KnowledgeBase.java:2111)
I use the rolification of a class in order to increase the performance of the reasoning process. The following model (functional syntax) may be used to reproduce the error:
)
There seems to be an related issue which was fixed several years ago, see [1]. This however only seems to work for one atom like p(?x, ?x) in context of an swrl rule.
I also filed an issue at github (see [2]) not being aware of this list. Thank you for your efforts.
Greetings,
Christian