] .
ex:book1 rdf:type owl:NamedIndividual ,
ex:Book .
ex:chapter1 rdf:type owl:NamedIndividual ;
ex:hasBook ex:book1 ,
ex:newspaper1 .
ex:john rdf:type owl:NamedIndividual ;
ex:hasLine ex:line1 .
ex:line1 rdf:type owl:NamedIndividual ;
ex:hasPage ex:page1 .
ex:newspaper1 rdf:type owl:NamedIndividual .
ex:page1 rdf:type owl:NamedIndividual ;
ex:hasChapter ex:chapter1 .
==================================
Basically it is a line like john -> line1 -> page1 -> chapter1 -> book1 and I propagate the "writesBook" property until it gets to John. This is easier to see in Protege than here.
If you put this in Protege, run Hermit, you can see that it is inferred that john writesBook book1, as expected.
If you put it in a Stardog database, then you can do:
SELECT ?s ?o {
?s ex:writesBook ?o .
}
and the expected RESULT (amongst a few others) should be: ex:john ex:book1
However, I don't get this in any reasoning regime. In this small example, I could see that EL did actually propagate the initial chain, but didn't get to john.
Then if you add the following file, the expected result is obtained with RL,SL, etc.
example_add.ttl
====================================================
ex:book1 ex:RolifBook ex:book1 .
====================================================
I hope I didn't make any mistake while creating the example.
It is actually not a problem for me to create an additional "self" axiom to get this work, but just wondering if it was supported in Stardog at all. Thanks!