RE: abstract class

> > Compare with English. When I say "I am a human
> > being", that statement isn't
> > untrue because I didn't use the more accurate "I am
> > a man" or "I am an
> > Irishman" or "I am a married Irish Software
> > Developer between the ages of 25
> > to 35 in full-time employment who is registered to
> > vote and doesn't drive a
> > car".
>   I know it's not incorrect, but it's useless, I don't
> want to allow people to say useless information. When
> you say you are a human being you are also saying you
> are a man or a woman, that's the info I would like to
> have.

But can you say that I am a man without also saying that I am a human being?
That I am a human being is entailed by your statement whether you consider
it useful or not.

Until you manage to say I am a man, without entailing the fact that I am a
human being, I am going to consider your idea of a variety of class which
can't be the object of rdf:type, but which has subclasses which can to be, a
logical impossibility.

I'm in axiom-spouting mood today, how about this one "Useless information is
the key to interoperability." :) I'll justify it in a minute.

I don't think the decision about what is or isn't useless information can or
should be made at RDF level. The job of RDF is to give us the syntax to say
things, the job of RDFS, DAML+OIL and/or OWL is to give us a vocabulary to
use with that syntax, and information about how some pieces of that
vocabulary relate to other pieces.

Now there is nothing to stop RDF from saying useless things, no more than it
would be possible to build a mechanism into the English language that would
make tabloids stop writing :)

And the approach we take to survive that is the same we take with tabloids.
When the tabloids publish 25 pages about which celebrity is or isn't having
sexual relations with which other celebrity intelligent people simply ignore
it. When RDF contains statements that are of no use to an application
intelligent applications simply ignore it.

Similarly if you have a application which internally models "man" and
"woman" as subclasses of "human being" with the "human being" class being
abstract then any call to produce RDF describing the object would of course
cause the RDF class of "man" or "woman" to be used.

Now if this information is then used by an application compiling statistics
about the rate of ovarian cancer all of the "man" classes are of no use. A
class of "human being" is also of no use, because without knowing the gender
I can only mess up the statistics. So this application will not use
resources which are of type "man" or if it only knows it is of type "human
being".

Another application keeping track of how much holiday time an employee has
taken would not care about "man" or "woman" classes, and work with the
entailed statement that the resource in question is a "human being" (or at
least one would hope that a holiday time application wouldn't care!).

The ability of these three applications to work together is dependant on
information that one considers useless, and the other vital.

Now of course we don't want to flood our RDF streams with useless
information, but that isn't actually a concern. In your application whatever
is internally representing a resource of class "A" will never bother to
produce the XML <C rdf:about="...">, because the internal representation of
"C" would be abstract in OO terms.

> > Classes in RDF are far more comparable to nouns in
> > English than to classes
> > in OO.
> >
>   I don't totally agree. If you use RDF correctly you
> can represent the same that in UML (I think I saw the
> UML Vocabulary in RDF). Everything depends on the use
> you want for your RDF data.

UML doesn't prevent you from saying that an object is of an abstract class
(albeit indirectly through inheritance), nor does OO. You are prevented from
instantiating abstract types, but not from treating objects as abstract
classes. There is nothing special about abstract classes except for the fact
that you can't create a direct instance.

Since you don't instantiate anything in RDF the distinction doesn't apply
and all classes are abstract.

Received on Friday, 24 January 2003 07:05:17 UTC