Asserting subclasses of open ranges or domains

I had an interesting exchange on Semantic Web list on this issue last week. You can browse the whole thread, but I would recommend answers by Pat Hayes and John Sowa.
Below are extracts of my final answer.

1. There is quite a difference to make between concepts in ontologies strongly defined by domain experts, and targeted at feeding reasoners (e.g., bio-medical or legal ontologies), and lightweight ontologies such as FOAF, VCard, Dublin Core, Geonames ... which are mainly targeting interoperability of data, and of which meaning (if not formal semantics) emerge from usage and population. I can't define formally what a Person is, but I can say that you and I are some instances.

2. For the latter said ontologies, the main objective is to provide guidelines for applications harvesting and managing data. The actual formal semantics of those models is next to nothing, but implementations can reasonably leverage them on the basis of a common sense interpretation. For example the thousands of different data models to represent a person can be re-engineered as so many specifications of the generic class foaf:Person, therefore allowing a shallow, but efficient level of data interoperability.

3. There is no more, no less semantics nor potential usability in declaring skos:Concept to be in the range of dcterms:subject, than to declare foaf:Person to be a subclass of foaf:Agent. "Dont acte"

For some other ill-defined property ranges in the Semantic Web popular ontologies, another path would be to use enumerated classes, or in a more flexible way, to indicate a published vocabulary maintaining a reference enumeration. For example when LoC publishes later this year the authoritative ISO 639-2 list of languages as a SKOS Concept Scheme, the range of dcterms:language could be restricted to the values in such a list (using e.g., a restriction on the value of skos:inScheme). This would avoid Dublin Core to go through the painful task of defining formally the class dcterms:Linguistic System which is the current specified range - with the same lack of definition as foaf:Agent. Referring to some authority is certainly the best way to deal with the issue here. We (DC) don't know what a language is, go ask ISO 639-2 folks, apparently they know because they are able to provide a list.