Probably the most interesting thing that I learned about RDF on my last project was that resource typing (via the use of rdf:type) was over-rated. As a long time distributed objects weenie, I naturally had this vision of resources (objects, if you will) with uniform interfaces (what else?), but also with types orthogonal to those interfaces (duh, since the interfaces are fixed) . You can’t have an object without a type can you?
Then reality hit. Despite the fact that I had actually speced out a type ontology for the project, and educated everybody about it, almost none of our RDF processing software actually checked the rdf:type triple! Apparently, if it walked like a duck, and quacked like a duck, then by golly, for all intents and purposes it was a duck! That was very liberating. I knew the moment I realized this, what had happened; I simply had overlooked what was important to the recipient of the documents, the data.
rdf:Description; not just a place holder for the lazy.
rdf:type; in many cases, YAGNI