Dublin Core terms inconsistent?

Is it correct that Dublin Core terms (http://purl.org/dc/terms/) is inconsistent?

The document describes itself using a data property dcterms:publisher. It uses a string as the object of this property, but in the same document dcterms:publisher has <rdfs:range rdf:resource="http://purl.org/dc/terms/Agent"/>

Wouldn't it be a small fix to replace the string "The Dublin Core Metadata Initiative" with an Agent resource?

I think my misunderstanding comes from the fact that people quote Dublin Core as being the most used ontology, but as far as I can see, Dublin Core should be seen as an annotation framework and not as something you can reason over. Is this view correct? Am I missing a very important part of Dublin Core?

I think it's wrong, and you ought to report it.

As for whether it's inconsistent, that's less clear. In RDF schema the only invalid statements concern datatypes, so it's not RDFS-inconsistent. OWL is less clear. There is no clear statement that dc:Agent is disjoint from literals, so I suspect it's not OWL-Full inconsistent. As for DL, I'm not sure. dc:publisher isn't stated to be an ObjectProperty, and dc:Agent is an rdfs:Class rather than an owl:Class. So the dc schema doesn't say enough to be inconsistent on this point. (There are other things in that document which I suspect would upset a DL reasoner, however)

Can you reason over DC? Of course you can. There are numerous subproperty assertions to help align dc11 with dc, and capture the narrowing of terms (like creators being contributors). What you don't get is the constraining aspect on instance data that OWL also provides, except in an informal sense (e.g. if something were inferred to be both an Agent and a LinguisticSystem I'd know something was wrong).

Yes, DC terms contains a number of bugs and dodgy things. Btw, if you want an OWL 2 DL version of DC terms to use for reasoning you can use the one I produced.