|
Hi! There exists rdfs:range and rdfs:domain. Is it also possible to say something like: :domainOf owl:inverseOf rdfs:domain , to be able to state that a certain class is the domain of a certain property (here called :domainOf)? Same for rdfs:range. Thank you very much in advance! DJ |
|
This is an example of "syntax reflection" (and there are a couple of other terms around to refer to this). It's allowed syntactically in OWL Full, and the semantics of OWL Full supports it the way you expect. It also works under the OWL 2 RL/RDF rules, pD*, and many available RDF entailment rule reasoners, such as the Jena reasoner, or OWLIM (using pD* or the OWL 2 RL rules). You can play around with it using Ivan Herman's online OWL RL reasoner . However, it is not allowed in OWL DL or any of its profiles (syntax error). In fact, none of the OWL DL reasoners I know will provide results you might expect, although some OWL DL reasoners are flexible enough to read ontologies with such stuff without signaling an error. Another, similar example is to build the inverse of
It would be nice to be able to do this anonymously, instead, as in
but that's not allowed in RDF, because blank nodes must not occur in predicate position. (On the other hand, anonymous inverse properties is something that actually is supported by OWL DL, when using the native OWL DL syntax, but then, it isn't allowed to use it with |


It could be possible if one could make statements about classes and use properties as objects. Why do you need this? Domains and ranges often are complex class expressions, not bare sets of classes.
Well I would like to say that both the subject and the object, given a certain predicate, belong to the same class; now the built-ins rdfs:range and rdfs:domain come to mind, and especially their inverses, so to be able to say: The RANGE and DOMAIN of a certain PREDICATE must be the SAME. But probably DL wont allow it? So I must find an other way out?