LexRDF: Can owl:Class be a subClass of one of its own instances?

LexRDF is a project designed to represent knowledge from a bunch of biomedical ontologies in a common framework.

But I don't think I grok the model: does this diagram make sense?

![LexRDF Entity Definition Overview](upload://qWkyftngbRASierP1leixGD17RZ.jpeg)

If I'm reading this right:

  • dashed arrows are rdf:type relations
  • open arrowheads are rdfs:subClassOf relations, and
  • solid two-way arrows are owl:sameAs.

So, in other words:

owl:Class owl:sameAs lg:concept.
lg:concept rdfs:subClassOf lg:entity.
lg:entity owl:sameAs skos:Concept.
skos:Concept a owl:Class.

Or, if I collapse across owl:sameAs relations, I'm left with:

skos:Concept a owl:Class.
owl:Class rdfs:subClassOf skos:Concept.

So... owl:Class is a subclass of one of its own members? I'm quite sure this hurts my brain, but I'm not quite sure if it's wrong.

  1. Is there a logical contradiction or trivial collapse here? or
  2. Even if this is a consistent set of assertions, do they convey any useful meaning?

First of all, when you talk about the semantics of OWL, there can be ambiguity because OWL has two different semantics. There is the direct semantics, which is based on Description Logics and applies to onolotgies that can be expressed in the functional syntax of OWL, and the RDF-based Semantics, which is based on RDF and apply to any RDF document. In the case of your example, it does not make sense to talk about the direct semantics, as your ontology is not valid according to the functional syntax, but it represents a valid RDF document.

Now, in the RDF semantics, classes are instances of rdfs:Class and rdfs:Class is also a class so it is an instance of itself. No problem with that as RDF differenciates the class itself from the set of its instances. In the RDF-based semantics of OWL, owl:Class is equivalent to rdfs:Class so it is an instance of itself as well.

In you example, I'm not sure that thick solid arrows are representing owl:sameAs because one of the arrows is apparently linking 3 things (owl:ObjectProperty, owl:DatatypeProperty and lg:association). I understand it as a kind of equivalence. But whether it's an owl:equivalentClass or an owl:sameAs relation doesn't change much: lg:concept represents the set of all classes (it is a class of classes), while lg:entity represents something more general which may contain also individuals that are not classes. The same happens with rdfs:Resource, which is an both instance and a super class of rdfs:Class.

Edit: in the RDF-based semantics, owl:ObjectProperty is equivalent to rdf:Property, which makes owl:DatatypeProperty a subclass of owl:ObjectProperty. So probably what is meant there is that lg:association is the same as (or equivalent to) owl:ObjectProperty.

Addition to Antoine's answer: Even if your ontology would be a legal OWL DL ontology, so even if the OWL 2 Direct Semantics would formally apply to it, it would still not be the case under the OWL 2 Direct Semantics that owl:Class would be a subclass of one of its own instances, this remains something that is really only the case under the OWL RDF-Based Semantics. The rational is that, unlike the OWL RDF-Based Semantics, the OWL Direct Semantics doesn't treat owl:Class as a (semantic) class at all. It is just used as a "syntactic marker" used in (purely syntactic!) declarations to tell that some URI is to be used as a class.

For example, by the declaration

Declaration(Class(ex:C))

it is stated that the URI "ex:C" will be used as a class. Now, the declaration above, given in OWL Functional Syntax, maps to the following RDF code:

ex:C rdf:type owl:Class .

Although it may look that way in RDF, this does not mean the ex:C is an instance of owl:Class, i.e., that owl:Class is a class. This would only be the meaning of this RDF triple under the OWL RDF-Based Semantics, not under the OWL Direct Semantics, under which the triple does not have any semantic meaning at all!

In general, people get easily confused when an OWL DL ontology is written in RDF, since they often tend to apply the RDF-Based semantics to such an RDF graph. If you want to know what the meaning of an OWL DL ontology is under the OWL Direct Semantics, you first have to map it to the OWL Functional Syntax (or OWL Structural Specification) and apply the OWL Direct Semantics to this translated ontology. Sorry for the inconvenience, but there is no other way, as the OWL 2 Direct Semantics is defined for the OWL 2 Structural Specification only.

So you're looking for solutions to:

    ?x a owl:Class .
    owl:Class rdfs:subClassOf ?x .

In OWL Full, owl:Thing is a solution. But in OWL DL, owl:Class is not a subclass of owl:Thing - in fact, they are disjoint.