[1] Metaclasses are supported in the Web Ontology Language (OWL) and the data-modeling vocabulary RDFS.
Metaclasses are often modeled by setting them as the object of claims involving rdf:type and rdfs:subClassOf—built-in properties commonly referred to as instance of and subclass of.
OWL 2 DL supports metaclasses by a feature called punning,[2] in which one entity is interpreted as two different types of thing—a class and an individual—depending on its syntactic context.
Punning also enables other properties that would otherwise be applicable only to ordinary instances to be used directly on classes, for example "golden eagle conservation status least concern.
"[3] Having arisen from the fields of knowledge representation, description logic and formal ontology, Semantic Web languages have a closer relationship to philosophical ontology than do conventional programming languages such as Java or Python.
[6] This enables metaclasses to be easily created by using rdf:type in a chain-like fashion.
Notably, the resource rdfs:Class is an instance of itself,[7] demonstrating both the use of metaclasses in the language's internal implementation and a reflexive usage of rdf:type.
In metaclasses implemented by punning, the same subject is interpreted as two fundamentally different types of thing—a class and an individual—depending on its syntactic context.
This is similar to a pun in natural language, where different senses of the same word are emphasized to illustrate a point.
Unlike in natural language, where puns are typically used for comedic or rhetorical effect, the main goal of punning in Semantic Web technologies is to make concepts easier to represent, closer to how they are discussed in everyday speech or academic literature.