I¹m doing some tests with jena reasoner and I concluded, that I cannot have a rule in the head of a forward rule. In a forward rule I only can have assert data, not deducted data.
I¹m right? Why the reason? In the example that I give below, we can rewrite the rule well to get the same result. However, I have a situation in a project where I have: c1, c2 -> c3, c4 - where c1 is a rule. I cannot rewrite in this form, c3, c4 <- c1, c2 because backward rules only can have one clause on the head. To overcome this, I only see one solution, materialize c1. Any other idea? In the follow example, r2, r3, and r4 works fine but r5 doesn¹t work. [r1: (?x exa:sportPartner ?y) <- (?x exa:playSport ?z), (?y exa:playSport ?z), notEqual(?x, ?y)] [r2: (?x exa:seaPartner ?y) <- (?x exa:playSport ?s1), (?y exa:playSport ?s2), notEqual(?x, ?y), (?s1 rdf:type exa:SeaSport), (?s2 rdf:type exa:SeaSport)] [r3: (?x exa:seaPartner1 ?y) <- (?x exa:sportPartner ?y), (?x rdf:type exa:ManOfSea), (?y rdf:type exa:ManOfSea) ] [r4: (?x exa:playSport ?s1), (?y exa:playSport ?s2), notEqual(?x, ?y), (?s1 rdf:type exa:SeaSport), (?s2 rdf:type exa:SeaSport) -> (?x exa:seaPartner2 ?y)] [r5: (?x exa:sportPartner ?y), (?x rdf:type exa:SeaMan), (?y rdf:type exa:SeaMan) -> (?x exa:seaPartner3 ?y)]
