I've gotten inferencing on inverseOf to work in Virtuoso, so that DEFINE input:inference 'urn:ifs.ontology' select ?o where { <X> ifs:has-address ?o . }
returns an address that's actually associated the other way with ifs:address-of. However, if I try DEFINE input:inference 'urn:ifs.ontology' select ?p ?o where { <X> ?p ?o . } the address is not returned. I guess this means that Virtuoso will only run rules for defined predicates? I also tried DEFINE input:inference 'urn:ifs.ontology' select ?p ?o where { ?p owl:inverseOf ifs:address-of . <X> ?p ?o . } so that ?p will be bound by the time we try the final clause, but that didn't work, either. Is it impossible to get this to work without actually specifying the predicate in the query? We really need this to work in the open form, since we are using ontology annotation to see which properties to look for. --Lars M. http://www.garshol.priv.no/tmphoto/ http://www.garshol.priv.no/blog/