A few points on the role proposal.
One of the issues is whether we can say :
bf:agent [bf:identifiedBy <agent resource> ]
and Thomas Berger points out that “objects of bf:identifiedBy are of class bf:Identifier,” (implication being that bf:identifiedBy has range bf:Identifier) so you can’t do that.
However, as I noted in my previous message (Identifier proposal) it is still open to debate whether bf:identifiedBy is merely a replacement for or generalization of bf:identifier. If the latter, then bf:identifiedBy would no longer have range bf:Identifier, and so the above would be allowed.
Along these lines is the question of whether we can further contract the above to (Karen’s example):
And again it depends on how/whether we define a range for bf:agent. If we define the range to be class bf:Agent, then no, we cannot. I think most of us are inclined not to want to restrict the vocabulary in this manner, and to allow such a contraction.
Steven Folsom notes that bf:contributor sounds like it’s an agent, when really it is a combination of a role and agent, and might be better named bf:contribution. I like that suggestion.
However, it does present one limitation - the proposal does allow for this contraction:
bf:contributor <agent resource>
which could be useful when you want to say that an agent is a contributor, without specifying a role.
It would not make sense to say:
bf:contribution <agent resource>
because it sounds too much like an agent is a contribution. However, perhaps we can live with this limitation.
So, changing contributor to contribution and repurposing contributor, we might say:
[ bf:contributor <agent resource> ;
bf:role <role resource> ]
and if no role is to be specified:
[ bf:contributor <agent resource> ]
Library of Congress