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?
As AKSW said, why not? In fact, in RDF, all classes are instances (of
rdfs:Class
and ofrdfs: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:So,
ex:x1
(the instance) is the same thing asex:x2
(the instance) butex:x1
(the class) is different fromex:x2
(the class).