An advantage of teaching courses on a regular basis is that your students always make you re-visit the basics. You can't take anything for granted with beginners.
Over coffee at Bio-IT World last week, a developer of semantic systems was interested in expanding his knowledge from RDF (with which he was very well versed) to RDFS (with which he was not). He was confused about the difference between "partOf" and "subClassOf"
This seems like an apples-and-oranges distinction to those of us who have spent two decades or more thinking about it, but his question brought me back to think - why would anyone confuse these two?
I gave an example that cleared it up for him right away, so I decided to jot it down here.
When you say "A carburetor is part of a car", you don't mean that when I point to some particular carburetor, that you will conclude that it is also a car. That's just silly.
But when I say "A housecat is an [is subClassOf] animal", and I show you my cat, you may conclude that it is an animal. And in fact, that is what you understand me to have said.
The confusion comes in if you aren't thinking of classes; if I say that this carburetor is part of this car, well, the carburetor isn't a car, but it does go everywhere the car does. And if you view this particular carburetor abstractly as the class of all molecules in it, or something like that, then it is a subclass of the car, but that sort of thinking usually leads to madness.
Once you realize whether you are talking about classes or instances, and that inference is the way to understand meaning, the whole thing gets a lot simpler.