Hi all,
I need some help with some SWRL. I don't understand why Stardog is not making the inferences I expect.
I have an simple test ontology that defines the following:
* Peter is an Employee
* Denise is an Employees.
* Peter worksFor Champion
* Denise worksFor Champion
Furthermore I have a SWRL rule that employees of the same company are coworkers:
Employee(e1) ^ Employee(e2) ^ worksFor(e1, c1) ^ worksFor(e2, c2) ^ sameAs(c1, c2) -> hasCoworker(e1, e2)
Given this rule, I would expect to see that "Peter hasCoworker Denise" and "Denise hasCoworker Peter" but this isn't the case.
I've seen some clues on the web that sameAs reasoning will not work unless I explicitly have sameAs axioms in my ontology. I can understand why this might be necessary if the 2 employees had different worksFor URIs, but in my example the URIs of Denise and Peter's companies are already identical. In fact, my editor (Protege) won't even allow me to assert that tag:test#champion is the same as tag:test#champion.
One solution that occured to me is using actual URI in a SWRL rule? I know how to compare strings in SWRL but I don't know the to bind to the URI of an individual. Is this possible? Is there another better solution?
I've attached a turtle file with my test ontology and individuals if it helps explain the issue.
Thanks for any insights.
Regards,
Peter Neorr