Talk:Metaclass (knowledge representation)

Latest comment: 4 months ago by TomT0m in topic Quantification of "whose instances"

Questions to Emw

edit

rdf:type and reflexivity

edit

@Emw: Hi, rdf:type is not reflexive, as if it where, we would have doggy_the_dog rdf:type doggy_the_dog ... did I miss something ? subclass of is though, as every class is a subclass of itself. TomT0m (talk) 16:50, 18 April 2015 (UTC)Reply

TomT0m, if rdf:type is not reflexive, then how is rdfs:Class and instance of itself? Emw (talk) 17:06, 18 April 2015 (UTC)Reply
@Emw: mmm for me a reflexive relation R is a relation in which for all element x of the domain of the relation, xRx. If a relation is not reflexive, it implies that for some element x there is not(xRx). So rdfs:Class type rdfs:Class can totally hold if not. Did I miss something in the rdfs:Class definition ? TomT0m (talk) 17:18, 18 April 2015 (UTC)Reply
Fair enough, good point. I've changed the wording here accordingly. That said, a property can be used reflexively even if the property itself is not reflexive. For example, the property looks at can be used reflexively ("Alice looks at Alice") or not ("Alice looks at Bob). Emw (talk) 19:21, 18 April 2015 (UTC)Reply
Of course, what you're trying to say is that the relation is not irreflexive. I don't no if it's worth mentioning here. TomT0m (talk) 14:30, 19 April 2015 (UTC)Reply
No, I am not trying to say that the relation is not irreflexive. I am trying to point out a reflexive usage of a property. The whole sentence about rdfs:Class being an instance of itself is probably not worth mentioning in the article. Same with RDFS being its own metamodel. Those are internal and esoteric details, and likely intimidate or distract the reader more than they educate them. Emw (talk) 14:48, 19 April 2015 (UTC)Reply

rdfs part of rdf

edit

I, just so we can talk and try to avoid misunderstanding : RDFS is included into RDF, see https://en.wikipedia.org/wiki/Resource_Description_Framework#RDF_vocabulary and the primer of the W3C: the primer notes RDFS spec as a part of the RDF spec. So there is no point into claiming this is an extension. THis may be true historically but it is now included in RDF. Would you agree ? TomT0m (talk) Another document to prove my point : http://www.omgwiki.org/odmftf/lib/exe/fetch.php?id=archive%3Aftf1&cache=cache&media=10_rdfs_metamodel_rev.pdf TomT0m (talk) — Preceding undated comment added 17:37, 18 April 2015 (UTC)Reply

No. Saying RDFS is part of RDF is like saying OWL is part of RDF. If anything, RDF is part of RDFS and RDF is part of OWL, but not vice versa. Even then, using the phrase "part of" is semantically imprecise at best.
W3C specifications repeatedly refer to RDFS as an extension of RDF, e.g. in http://www.w3.org/TR/rdf11-mt/#rdfs_interpretations where it states "RDF Schema extends RDF", in http://www.w3.org/TR/rdf11-mt/#extensions where it states "RDFS, described later in this document, is one such semantic extension", and in http://www.w3.org/TR/rdf-schema/#h2_abstract where it states "RDF Schema is an extension of the basic RDF vocabulary". Emw (talk) 18:00, 18 April 2015 (UTC)Reply
@Emw: OWL spec is totally outside RDF spec. RDFS spec is defined, as you noted, in the same document. and in RDF Schema is an extension of the basic RDF vocabulary you note basic vocabulary. This does not imply that this vocabulary is not a part of the RDF standard. The issue is minor though, but I think we totally can treat RDF/RDFS as a whole, and it is true that "RDFS is included in the RDF specification". The other questions are much bigger issues because it challenges your understanding of the whole stuff. As this one in some sense. TomT0m (talk) 18:12, 18 April 2015 (UTC) PS:btw this this made your "copyedit" of my text statement a bit strange as you did not try to discuss but removed stuff and added some very dubious if not totally false statements ... can't say I appreciate to be honest. TomT0m (talk) 18:35, 18 April 2015 (UTC)Reply
RDFS is not defined in the same document as RDF, and I never said it was. There is clearly more support for referring to RDFS as an extension of RDF than for referring to RDFS as a part of RDF, although the latter wording may not be invalid in a loose interpretation. I agree the issue is minor and that RDF and RDFS can be discussed in the same section. Note that I restored your original section title and retained the discussion of rdfs:Class as a metaclass, even though I think the latter's relevance is questionable. Regarding my copyediting of your statements in the article, I would note that most of your contributions require significant editing for basic grammar, coherency, style, context, and focus, as indicated by the initial version of this article here. Emw (talk) 19:09, 18 April 2015 (UTC)Reply

rdfs and type token distinction

edit

I don't understand how rdfs helps to capture type/token distinction better than rdf alone, because everything that is only the subject of a rdf:type statement can be considered a token, and on the right of rdf:type of a type.

In rdfs however, even a metaclass is an instance of class. So it is a type in a sense, but a higher order type, not a plain type with tokens instances. TomT0m (talk) 16:58, 18 April 2015 (UTC)Reply

Please capitalize "RDF" and "RDFS" when discussing those things, per convention.
You're right about the question at hand, though. I've updated that coverage per your comment. Emw (talk) 15:39, 19 April 2015 (UTC)Reply

Focus of the introduction to OWL and RDF

edit

@Emw: Re. thinking about it I think it is a bad idea to focus in the introduction to OWL and RDF are they are just one of the many ontology languages, and the metaclass concept may apply to all of them. I'd rather cite them as a (significant) example, and focus on how useful metaclasses are with mapping real world concepts such as species, more technically on their application as pattern of classes (example : they map very well to definition like a chemical element is a type of atom defined by the same atomic number, where the atomic number is defined in the metaclass instanciation, and third by their use in modelling of languages itself, to contextualize the mention that RDFS is its own metamodel. All of these are real application of Metaclasses. Then we focus in the body of the article. TomT0m (talk) 10:06, 20 April 2015 (UTC)Reply

TomT0m, in the Semantic Web, metaclasses are overwhelmingly discussed in the context of OWL and RDFS. I think the current introduction gives them proportionate emphasis relative to their prominence in reliable sources. SKOS, OBO, and niche ontology languages may also support metaclasses, but I don't think their prominence in reliable sources warrants discussing that in the introduction beyond something to the effect of "and other languages". Also, those other languages aren't currently discussed in the article. Implementation in RDF, RDFS, and OWL comprises the main content of the article, thus summarizing that material as the current introduction does is good summary style.
I do not think discussing the use of metaclasses in implementing the RDFS or OWL languages themselves is a good idea in the introduction. The only sources I've seen mention that are targeted to a niche within a niche; general sources on metaclasses rarely mention it. Briefly mentioning such metaclass usage in the body as you've done makes sense to me, though.
@Emw: OK, no big deal, I guess it is still a cultural stuff, in france we often prefer to define the notions independantly of contrete implementations or tools, then give examples on technologies that uses the concept. TomT0m (talk)
I agree that briefly discussing metaclasses in the context of chemical elements in the introduction is reasonable. The current introduction does so in the fourth paragraph.
Regarding your chemical element proposal, though, I would note that your definition "a chemical element is a type of atom defined by the same atomic number" is subtly but importantly off. A chemical element is not a type of atom, but rather a type of chemical substance. More precisely, a chemical element is a chemical substance consisting of a single type of atom distinguished by its atomic number. For example, molecular hydrogen (H2) is not a type of atom (it consists of two atoms), but it is a chemical element because it is a chemical substance consisting of a single type of atom defined by the same atomic number. Similarly, a liter of liquid hydrogen would also be an example of a chemical element because all its atoms have 1 proton in their nucleus (i.e. atomic number 1). But a liter of liquid hydrogen is not a type of atom, as it consists of many atoms. Emw (talk) 12:25, 23 April 2015 (UTC)Reply
Yes, I always take the definition given in french article and courses, see for example a definition gave on a french pedagogical site On donne le nom d’élément chimique à l’ensemble des entités chimiques (atomes, isotopes ou ions) caractérisées par le même nombre Z de protons dans leur noyau. Les éléments chimiques sont représentés par leur symbole chimique. (The name chemical element is given to the set of all chemicals entities (atoms, isotope or ions) characterized by the same Z protons' number in their kernel. So really it's just a cultural stuff and a matter of choice. I must admit I don't like the english definition because it's too complicated : a single type of atom defined by the same atomic number. is the definition in france, and you add in english the constraint that makes it must be like existing in a bottle, making it equivalent to pure chemical substance. The pure chemical substance addition seems curbersome in most example we could give. But it's no big deal if we give the definition we use. I think it's a problem that a single type of atom defined by the same atomic number. does not have traditionally a names in english. :) TomT0m (talk) 13:01, 23 April 2015 (UTC)Reply

original reasearch ?

edit

@Chocolateboy: Can you be more specific ? TomT0m (talk) 11:14, 11 May 2015 (UTC)Reply

@TomT0m: Several sections are well-referenced and clearly supported by the literature, but this goal seems to have been neglected in the intro, which is held in place by one meagre citation. While some of the stuff in the intro is expanded on and referenced in later sections, that doesn't mean intros are free from the usual expectation of verifiability. This is particularly true of the last paragraph, which contains a number of seemingly-bold statements, which don't appear to be sourced or explained anywhere else in the article. I've highlighted a few examples:
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. Accordingly, the nature of metaclasses is informed by philosophical notions such as abstract objects, the abstract and concrete, and type-token distinction. Metaclasses permit concepts to be construed as tokens of other concepts while retaining their ontological status as types. This enables types to be enumerated over, while preserving the ability to inherit from types. For example, metaclasses could allow a machine reasoner to infer from a human-friendly ontology how many elements are in the periodic table, or, given that number of protons is a property of chemical element and isotopes are a subclass of elements, how many protons exist in the isotope hydrogen-2.
In addition, the punning topic takes up a large chunk of the article — both in the intro and the dedicated section — but is entirely unreferenced. (If the examples are drawn from the literature, it wouldn't hurt to cite them as well.)
chocolateboy (talk) 14:03, 11 May 2015 (UTC)Reply
I'm also curious (and skeptic) about the first bold quote. Time to ping @Emw: then. TomT0m (talk) 17:13, 11 May 2015 (UTC)Reply

domain fork of metaclass

edit

The first sentence is currently: "In the Semantic Web, a metaclass is a class whose instances are classes."

And 'class' is never linked to another article which expands on what a class is.

On metaclass, the first sentence is currently: "In object-oriented programming, a metaclass is a class whose instances are classes."

Is a class in the Semantic Web the same as a class in computer programming? If not, what is it? John Vandenberg (chat) 01:35, 23 July 2015 (UTC)Reply

@John Vandenberg: Interesting question. I don't know the policies about this kind of cases here but I think the two notions, although obviously apparented, are different. A metaclass in OWL or RDF and a metaclass in python inherits the differences of OWL and RDF and python : they all are languages, but python is a programming language, and RDF is a knowledge representation one. While pythons encodes computer instructions, OWL encodes logical properties and are a declarative family of languages. Another good example is the difference of a classes in math and classes in computer programming and in knowledge representation : classes in ontologies, especially in OWL, are closer to the class notion in mathematics. I would oppose a merge of class in maths (Class (set theory)) and classes in programming (although there does not seem to have an article). You will be also interested in the class (knowledge representation) I created to be consistent, does not seemed fair that they do not have an article on their own. The main difference beetween maths and knowledge representation is that maths does not have to speak about the real world, but if you look closely classes in OWL are a special case of classes in maths : a class is a set defined by a logical formula on the properties of its members. But knowledge representation has the same differences that pure maths have with any other sciences, which leads to priciples like the class/token distinction that applies to the latter but not the former. So I created different articles. But of course the notions have to be linked somehow.
In the Wikidata era, I would say that they at least deserves different item and that merging would lead to a Bonny and Clyde case :) TomT0m (talk) 11:17, 23 July 2015 (UTC)Reply
Thanks for creating Class_(knowledge_representation) . I'm not interested in trying to merge articles, despite the provocative use of 'fork' in the section title. ;-)
See Talk:Class (knowledge representation) and Talk:Metaclass#History for establishing some more fundamentals. John Vandenberg (chat) 23:41, 23 July 2015 (UTC)Reply

Quantification of "whose instances"

edit

The article implicitly suggests two different definitions of metaclasses.

  1. Metaclasses are classes some of whose instances are classes.
  2. Metaclasses are classes all of whose instances are classes.

The (A) quantification is supported in the article's introduction as well as in the RDF and RDFS subsection. It is stated that metaclasses [can] be easily created by using rdf:type in a chain-like fashion, i.e. the two RDF triples A rdf:type B and B rdf:type C ensure that C is a metaclass.

The (B) quantification is supported in the recently added Metaclass classification section through a reference to a paper by D. Foxvog[1]. (According to the paper's page 2, metaclasses are classes each of whose instances is necessarily a class.)

Moreover, the article does not provide any references which would support the (A) case. On the other hand, several references exist (they can be found in the literature) that support the (B) case: in addition to[1], there is Stefik & Bobrow[2], Magkanaraki et al.[3], and Koide & Takeda[4] [5]. In [3], metaclasses are delimited as exactly the subclasses of the rdfs:Class (the authors make a claim that classes of classes should not be considered metaclasses unless they are descendants of rdfs:Class). In [4] all metaclasses must hold rdfs:Class as superclass. In [5], the class UnitOfMeasure from the SUMO ontology is given as an example of an ill-structured metaclass that should be remedied by making it a subclass of owl:Class. See What Is a Metaclass? for details. Hundblue (talk) 17:28, 30 March 2016 (UTC)Reply

The delimitation of metaclasses as subclasses of a built-in metaclass can also be observed in the paper about Protégé-2000 [6] that is cited in the Protégé subsection: all metaclasses inherit from the system class :CLASS (page 10). Hundblue (talk) 19:57, 30 March 2016 (UTC)Reply

The December 2025 edit by TomT0m

edit

I don't see any reason for removing the [dubious-discuss] note that followed the sentence This enables metaclasses to be easily created by using rdf:type in a chain-like fashion. The links [7] [8] added by TomT0m provide no justification for the quoted sentence.

  • The RDF 1.1 Primer [7] contains no single occurrence of the term metaclass. It just says that declaring two RDF triples ex:Jumbo rdf:type ex:Elephant and ex:Elephant rdf:type ex:Species results in a valid graph. There is no mention that this declaration makes ex:Species a metaclass.
  • The SWESE 2006 workshop paper [8] is by S. Koide and H. Takeda. The same authors published articles [4][5] mentioned above. These articles provide evidence against the quoted sentence (This enables metaclasses to be ...). In particular, in [4] it is explicitly stated that all metaclasses must hold rdfs:Class as superclass.

Hundblue (talk) 10:28, 13 January 2026 (UTC)Reply

Hi Hundblue, it's said nowhere that RDF has "special support" for metaclasses. It's different from OWL which is different from RDF but builds upon it, it's higher level in the reasoning stack. You can do RDF without doing OWL, it's important to note.
What I tried to say is that, by definition, an instance of an instance of a class is a metaclass, so RDF allows to express metaclasses as it allows to do that. It's different for OWL where it's explicitely impossible to do that in some flavors, but we should not mix those things up. Metaclasses in OWL in a very different story, see for example the notion of "punning" introduced to deal with the fact that some flavors of OWL-1 becomes Turing complete with metamodeling. TomT0m (talk) 12:17, 13 January 2026 (UTC)Reply
For a direct description of metaclasses in OWL read the w3C document about OWL2 directly :

OWL 1 DL required a strict separation between the names of, e.g., classes and individuals. OWL 2 DL relaxes this separation somewhat to allow different uses of the same term, e.g., Eagle, to be used for both a class, the class of all Eagles, and an individual, the individual representing the species Eagle belonging to the (meta)class of all plant and animal species. However, OWL 2 DL still imposes certain restrictions: it requires that a name cannot be used for both a class and a datatype and that a name can only be used for one kind of property. The OWL 2 Direct Semantics treats the different uses of the same name as completely separate, as is required in DL reasoners.

TomT0m (talk) 12:37, 13 January 2026 (UTC)Reply
One last thing : it seems that "rdf:type" does not entail directly that the values are classes. But ex:Jumbo rdf:type ex:Elephant and ex:Elephant rdf:type ex:Species stays valid if you add ex:Elephant rdf:type rdfs:Class together with ex:Specied rdf:type rdfs:Class (in RDFS), there are still no restrictions about that. The fact that (see RDF_Schema#Terminology we have rdfs:Class rdf:type rdfs:Class is also a pretty strong statement that there are few restrictions : classes can be instances of classes in RDFS, even if there is no explicit "metaclass" resource. TomT0m (talk) 13:48, 13 January 2026 (UTC)Reply

Hi, TomT0m. If I understand you correctly, your presupposition is the following implication:

If x is an instance of y and y is an instance of z then z is a metaclass.

That is, a sufficient condition for z to be a metaclass is to have an instance that has an instance. One might additionally assume that z is a class but in RDFS this is redundant: If a is an instance of b then b is necessarily a class. In RDFS, being a class means being an instance of the built-in rdfs:Class resource. This is equivalent of being a subclass of the built-in rdfs:Resource resource.

Now, the above boxed statement is exactly the thing I am questioning. How do you know that this implication holds? Which information sources do support a definition of metaclasses from which the above implication follows? There is nothing like that in the provided references. Instead, the referenced literature supports the following definition:

z is a metaclass if and only if z is a subclass of rdfs:Class.

If z is a subclass of rdfs:Class then (by RDFS axioms and entailment rules) each instance of z is necessarily a class. This cannot be said about the ex:Species resource in the example provided by the RDF 1.1 Primer. Adding a triple

ex:Foo rdf:type ex:Species

to the ex:Jumbo rdf:type ex:Elephant and ex:Elephant rdf:type ex:Species triples does not result in the triple ex:Foo rdf:type rdfs:Class be entailed (i.e. present in the resulting graph).Hundblue (talk) 14:57, 13 January 2026 (UTC)Reply

@Hundblue It may be not enough to prove it's a strict metaclass, if you take this definition, but it's enough to prove rdfs allows them isn't it ? Anyway rdfs does not define what a metaclass is. As far as I know as RDF as an open-world semantics you cannot disprove it either if you don't have a "ex:Foo" statement :)
Of course equivalently we also could say that we're allowed to subclass "class", and instantiate the result which gives a class, which can be itself instanciated. So it's enough to say you can subclass "Class". It's less direct however. TomT0m (talk) 20:09, 13 January 2026 (UTC)Reply

References

edit
  1. 1 2 D. Foxvog. "Instances of Instances Modeled via Higher-Order Classes" (PDF).
  2. M Stefik, D. Bobrow. "Object-oriented programming: Themes and variations".
  3. 1 2 Aimilia Magkanaraki; et al. "Benchmarking RDF Schemas for the Semantic Web". {{cite web}}: Explicit use of et al. in: |author= (help)
  4. 1 2 3 4 S. Koide, H. Takeda. "OWL-Full Reasoning from an Object Oriented Perspective" (PDF).
  5. 1 2 3 S. Koide, H. Takeda. "Meta-Circularity and MOP in Common Lisp for OWL Full" (PDF).
  6. N. F. Noy, R. W. Fergerson, M. A. Musen. The knowledge model of Protégé-2000 (PDF).{{cite conference}}: CS1 maint: multiple names: authors list (link)
  7. 1 2 "RDF 1.1 Primer". www.w3.org. Retrieved 2025-12-08.
  8. 1 2 Koide, Seiji; Takeda, Hideaki (2006). "MetaModeling in OOP, MOF, RDFS, and OWL" (PDF). Proceedings of the 2nd International Workshop on Semantic Web Enabled Software Engineering (SWESE 2006).