The Object Management Group (OMG) likes to consider classes in a 4-level model, in which there is data, metadata (models), metametadata (metamodels), etc. This is way too confusing, so it is fortunate that W3C's standard only take up roughly 3-levels (much like Lisp). The Resource Description Framework (RDF) defines 3 metaclasses that do not fit nicely into OMG's architecture, so they span several modeling levels. This can be seen in the image below, where containment indicates a
rdf:subClassOf relationship, and the arrows indicate a
Although there was no indication in the standards that
owl:Class is an instance of
rdfs:Class, it is a logical consequence, because
owl:Class is a subclass of
rdfs:Class is an instance of itself. However, the same could be said of
rdfs:Datatype, for which there is an explicit mention that
rdfs:Datatype is both a subclass and an instance of
rdfs:Class. There was also an issue about this, which decided the reason for
owl:Class was to be distinct from
rdfs:Datatype, not because of some cyclic dependancy stuff. So to keep the model simple, and to minimize cycles, we can ignore the fact that
rdfs:Datatype is an instance of
rdfs:Class, because this is implied by the fact that
rdfs:Class is an instance of itself.
To overview some of the triples in this model, the standards say
rdfs:Class rdf:type rdfs:Class .
owl:Class rdf:subClassOf rdfs:Class .
rdfs:Datatype rdf:subClassOf rdfs:Class .
rdfs:Class rdf:subClassOf rdfs:Resource .
rdfs:Resource rdf:type rdfs:Class .
Notably, we have ignored the
rdf:Property class, which is part of the model level, not the metamodel level. So the image above is an accurate depiction of the Web metamodel, which consists of only four metaclasses:
owl:Class. Aside from
owl:DataRange, this is a fairly complete picture of the Web metamodel. For beginners, the distinctions between these five metaclasses are essential before more indepth discussions take place. If one has any confusion about these distinctions, then nothing else about OWL will make any sense.