RE: [SE] Suggestion of new note

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