- From: John McClure <jmcclure@hypergrove.com>
- Date: Tue, 4 Oct 2005 14:50:48 -0700
- To: "Holger Knublauch" <holgi@stanford.edu>, <public-swbp-wg@w3.org>
Hi Holger, You asked about the significance of a root class. Maybe I can answer while also providing some grist about differences between OO and RDF class hierachies. Classes defined in OO systems are technically "metadata" -- programming objects whose method pointers are located in virtual function tables maintained by the OO runtime. Ontologies define classes that correspond to natural world concepts, to 'sets' of actual instances. Significant OO applications could but very rarely do, define a class for each worldly concept due to overhead and performance considerations. For instance, many ontologies eg WN and DOLCE, define classes corresponding to a "PhysicalThing" and a "ConceptualThing" -- these classes would rarely be defined by an application programmer. Rather, at a maximum, a programmer defines these concepts as a multi-valued FLAG. At the same time, no ontologist I know would advise the use of FLAGS to indicate type alternatives. Existence or not of an rdf:type specifying the value is certainly an adequate BINARY FLAG that a resource is of a certain type, while achieving (a) greater flexibility because multiple types can be specified for the instance and (b) greater robustness because there no hardwiring of what types (as specified by mult-valued flags) are <owl:disjointWith> one another, ie presumed mutually exclusive. That said, heavy application use of processing flags is a valid and often-recommended programming style to achieve good performance, maintainability, and so on -- but it's a terrible design for an ontology. How about classes that would be defined in both worlds -- what are their differences? On the data/property side, not much if any difference exists. On the code side, of course OO has its fabulous method-invoking mechanisms, providing all necessary facilities giving programmer control over the language's runtime method resolution process. RDF has none of that builtin. That's the leaf classes. Now the root class. Within the OO community are OO-compiler fans and OO-interpreter fans. C++ has no root class but Java and ECMA do. With ontologies however, the Resource and Thing classes are given which, in effect, avoids the debate altogether. Thanks, John McClure
Received on Tuesday, 4 October 2005 21:49:17 UTC