Hello all

I've had last week private exchanges with Tom Baker about the definition of the range of a certain number of dcterms properties, which are currently let open in the specification document at http://dublincore.org/documents/dcmi-terms/. Among those are dcterms:language and dcterms:subject. I will let the former for a further message, and focus here on the latter.

Now that the SKOS specification has been cast in stone by W3C, it seems that instances of skos:Concept should be natural candidates for being values of dcterms:subject, but it is too restrictive to have in the specification something like the following

dcterms:subject    rdfs:range    skos:Concept

Nevertheless, it would be a good idea to express that instances of the class skos:Concept are among the ones that can be used as values of dcterms:subject.
So I've came to the following idea, which I would be happy to discuss here. Since we don't know how the RDF landscape will evolve, we certainly don't want to specify the range of dcterms:subject beyond the fact that it contains skos:Concept. The way to do this is as following :

dcterms:subject    rdfs:range   _:b
skos:Concept    rdfs:subClassOf   _:b

The semantics of rdfs:range and rdfs:subClassOf entails that the blank node _:b is of type rdfs:Class, but the two above statements keep agnostic on the extension or any description of this class, beyond the fact that it is a superclass of skos:Concept.

Note that those statements, although apparently perfectly valid and capturing the intended semantics, are not well handled by out-of-the-shelf ontology editors. Having a class declared only as the object of predicates, with no description, and morever no URI, does not make Protégé and Swoop very happy (not tried others). You can't construct this using the interface, and the import is not very successful either ...

Can we proceed from this to something understandable by specification human readers, and tractable by current RDF tools?

Best

Bernard