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
: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?classtypesrdfontology
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 .
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).