The text in 13.1 as well as the hadRole description in the changelog seems to indicate that qualifiedAttribution should not be used when the relation is well captured by the semantics of dct:publisher, dct:creator and dct:contributor.
However, dct:contributor is not listed as one of the properties on a cataloged resource. This seems inconsistent.
Thanks for pointing this out, @matthiaspalmer .
dct:contributor is not explicitly included in the DCAT vocabulary as none of the contributed use cases and related requirements was asking for that.
The references in the DCAT spec to dct:contributor were added to give an example of a generic agent role. But indeed this may be misleading / generate confusion.
We probably need to remove such references, or rephrase them to make it clear that dct:contributor is used just as an example of a generic agent role.
@agbeltran , @dr-shorthair , @davebrowning , @pwin , @riccardoAlbertoni , WDYT?
dcat:hadRole provides a generic or extensible place to attach semantics to a relationship. As mentioned in the text in https://w3c.github.io/dxwg/dcat/#qualified-forms it can be used any time, but in some cases a more specific predicate from DC Terms or PROV or maybe other places is suitable and already in wide use. I don't think we can enumerate all the possibilities.
However, dct:contributor is not listed as one of the properties on a cataloged resource. This seems inconsistent.
I'd like to remind that DCAT should be interpreted following the usual RDF open-world assumptions around the presence/absence of properties, relationships. So, "not being listed" doesn't imply a property can't be used.
@dr-shorthair , @riccardoAlbertoni , I agree with you. But the fact that @matthiaspalmer raised this issue implies that readers may see it as an inconsistency.
As @andrea-perego said, it was confusing for me. Let me elaborate.
The two first sentences in 13.1:
The standard [DCTERMS] properties dct:contributor, dct:creator and dct:publisher, and the generic prov:wasAttributedTo from [PROV-O], support basic associations of responsible agents with a cataloged resource. However, there are many other roles of importance in relation to datasets and services - e.g. funder, distributor, custodian, editor.
I would use "basic associations" to refer only to the 2 properties to be expressed directly (dct:creator and dct:publisher). To include in the same sentence also the generic construction and one specific use of that construction (prov:wasAttributedTo with dct:contributor) is very confusing. Especially when the next sentence talks about "other roles" that makes the case for the use of that generic construction.
The sentence in the changelog is also confusing:
The property dcat:hadRole is added to support the use of prov:qualifiedAttribution to associate an agent with a resource, where the role of the agent with relation to the resource is specified, and is something other than the standard [DCTERMS] roles: creator, publisher or contributor.
I interpret "something other than" to mean "do not use dcat:hadRole for these listed predicates".
Furthermore, I found the following in chapter C2 which I missed before:
prov:wasAttributedTo provides a general link to all kinds of associated agents, such as project sponsors, managers, dataset owners, etc which are not correctly characterized using dct:creator, dct:contributor or dct:publisher.
Again, this seems to indicate that prov:wasAttributedTo should not be used for dct:contributor!
I understand the comment from @riccardoAlbertoni about the open world, but the DCAT "recommends" certain properties, including dct:creator, dct:publisher and prov:wasAttributedTo. So my point is that the W3C Recommendation should make clear if it "recommends" dct:contributor to be expressed directly on a cataloged resource or via prov:wasAttributedTo. Currently I think there are four different places that makes you scratch your head.
So why beat around the bush, just make the wording clear that dct:contributor is to be used in conjuction with prov:qualifiedAttribution and everything is fine. As @dr-shorthair says, it is impossible to enumerate all the possibilities, but since dct:contributor is mentioned several times it does not hurt to clarify how the relation is supposed to be expressed.
So, to summarize, this is how I read the document right now:
Should dct:contributor be expressed as a direct property?
Should dct:contributor be expressed via prov:wasAttributedTo
I think all mentions of dct:contributor in the document are more or less unclear, they should be revisited and clarified.
@matthiaspalmer , based on what you say, there's actually some confusion.
Properties prov:wasAttributedTo / dcat:hadRole has been added in order to provide a standard pattern to be used to express roles not available in existing vocabularies, and specifically in [DCTERMS]. So, if you want to use a role from [DCTERMS] which is not explicitly included in DCAT (as dct:contributor), you should indeed use it, and you should not use prov:wasAttributedTo / dcat:hadRole for that.
This is basically the sense of all the passages you quote, and you can probably find more background information in the use cases that triggered this feature in DCAT2 - see, e.g., https://www.w3.org/TR/dcat-ucr/#ID13
So, answering your questions:
Should dct:contributor be expressed as a direct property?
YES
Should dct:contributor be expressed via prov:wasAttributedTo?
NO
@andrea-perego I appreciate the common understanding that there is confusion here :-)
I do not really have an opinion which way it should be, I just want it to be clear.
If your interpretation holds, that it should be expressed directly. Then how should this be formulated better in DCAT? Below is a clumsy attempt:
The nr. 3 special case would make more sense if it applied to more properties, but as far as I know, there are no more properties in DCTerms that it applies to.
Maybe the three rules above can be formalized in a less awkward way?
There is definitely two simpler ways if it is important to keep the model / writings in DCAT simpler:
@matthiaspalmer , just to be crystal clear: the general principle to use existing roles if available does not apply to dct:contributor only, but to ALL available roles - e.g., in [DCTERMS] there are also dct:mediator and dct:rightsHolder.