The modeling of role in 2.2 has problems. Will a single person playing multiple roles be entered as multiple property statements for the same resource, or will there be a way to specify multiple roles in the context of a single property statement? Will BIBFRAME have an option for unspecified or "other" role, given that the role terms appear to be part of BIBFRAME's controlled vocabulary in Example 2?
The addition of Role as a BIBFRAME Authority resource mediating between a Work and a Person in 3.2 would lead to requiring multiple BIBFRAME Authorities for the same entity playing different roles. That runs counter to the plan of having one BIBFRAME Authority per entity. Section 3.4 acknowledges this, but argues that multi-role cases (or at least those resulting from anomalous data) will be a "very, very small percentage of the whole"--but inevitably it will tend to be those named entities which are most prolific which will turn out to have the most roles (and the most anomalous roles in existing data), so dealing with these cases more efficiently will still be a concern.
Rather than either of these, would it be possible instead to limit BIBFRAME Work properties to Creator and Contributor (roughly reflecting the distinction in Simplified Dublin Core and MARC's 1XX/7XX) and then allow repeatable Type attributes or a Type attribute with multiple values for those the Creator and Contributor properties to specify role more precisely for a given entity's relationship to a resource? The Type attribute would not be required, so if an agent's role has no controlled value, the agent could still be named in relation to the Work in more general terms as a Creator or Contributor. BIBFRAME Instance records might need to add another general role term or two, but would leave more specific role terms to a Type attribute.
The "bad data" case could be managed by defining a separate "typeUnrecognized" attribute which could contain any text. To ensure better control of "good data", the Creator/Contributor Type attributes might be expanded into typeTerm, typeCode, and typeURI, each with declared schema-level or implementation-level parameters.
Adding a new work in which someone named in an existing BIBFRAME Authority has a new role should not require adding a new BIBFRAME Authority. Making role part of the BIBFRAME Authority will place a burden on it which a lightweight abstraction layer shouldn't have to carry.
Stephen