Can a class in one context be considered an instance in another?

BillyBBone Source

In a knowledge representation system like RDF, which is based on creating ontological hierarchies, can a class in one context be considered an instance in another?

Take the example of a triplestore which contains a library catalogue. It may contain statements such as:

:Book a rdfs:Class

:gullivers_travels a :Book
:moby_dick a :Book

This makes sense, but in another context, you may want to itemize the various editions of Moby Dick, and so it may also make sense to treat it as a class, e.g.:

:moby_dick a rdfs:Class

:moby_dick_manuscript a :moby_dick
:moby_dick_first_edition a :moby_dick
:moby_dick_second_edition a :moby_dick

Since :moby_dick is treated as either a class OR an instance, does that mean the two sets of statements can't co-exist without causing logical inconsistencies?

This question seems to imply that this is indeed the case.

Is this a design limitation in RDF, or are there more logically-viable ways of modelling such a relationship as the one above?



answered 1 month ago Antoine Zimmermann #1

As AKSW said, why not? In fact, in RDF, all classes are instances (of rdfs:Class and of rdfs:Resource). In OWL 2 DL, a class IRI can be an instance IRI at the same time. However, the class identified by the class IRI cannot be an instance, and the instance identified by the instance IRI cannot be a class. That is to say that in OWL 2 DL, if an IRI identifies a class and an instance, it identifies two things, not one. A possibly surprising consequence of this is that the following is consistent:

ex:x1  a  owl:Thing, owl:Class .
ex:x2  a  owl:Thing, owl:Class;
    owl:sameAs  ex:x1;
    owl:disjointWith  ex:x1 .
ex:x3  a  ex:x1 .

So, ex:x1 (the instance) is the same thing as ex:x2 (the instance) but ex:x1 (the class) is different from ex:x2 (the class).

comments powered by Disqus