To clarify the difference between 'profile global vocabulary' and the 'resource affordances' I'll craft a minimal example as a json blob over alps to increase readability.
{"profile": {
"affordances":[
{"name":"anF","safe":"UNSAFE"},
{"name":"aB","safe":"UNSAFE"},
{"name":"aD","safe":"UNSAFE"},
{"name":"PROFILE_GLOBAL","safe":"UNSAFE"}
],
"representations":[
{"name":"Foo",
"elements":[
{"name":"a"},
{"name":"b"}],
"affordances":[
{"name":"anF"},
{"name":"aB"},
{"name":"NOT_GLOBAL","safe":"UNSAFE"}
]
},
{"name":"Bar",
"elements":[
{"name":"c"},
{"name":"d"}],
"affordances":[
{"name":"anF"},
{"name":"aD"},
{"name":"ANOTHER_NOT_GLOBAL","safe":"UNSAFE"}
]
}
]
}}
As you see in the above, there are global affordances which are defined to be applicable to all representations within the profile, and there are affordances defined only in the context of an individual representation.
This would be evaluated to be effectively equivalent to the following.
{"profile": {
"representations":[
{"name":"Foo",
"elements":[
{"name":"a"},
{"name":"b"}],
"affordances":[
{"name":"anF","safe":"UNSAFE"},
{"name":"aB","safe":"UNSAFE"},
{"name":"NOT_GLOBAL","safe":"UNSAFE"},
{"name":"PROFILE_GLOBAL","safe":"UNSAFE"}
]
},
{"name":"Bar",
"elements":[
{"name":"c"},
{"name":"d"}],
"affordances":[
{"name":"anF","safe":"UNSAFE"},
{"name":"aD","safe":"UNSAFE"},
{"name":"ANOTHER_NOT_GLOBAL","safe":"UNSAFE"},
{"name":"PROFILE_GLOBAL","safe":"UNSAFE"}
]
}
]
}}
However, without the global affordances, you have created a 1-1 binding which increases clarity, but greatly reduces flexibility for a generic client implementation while added redundant definitions. That is why my suggestion and original wording described the minimum set of expected affordances.
After going through a more concrete example, this does raise the question of exclusion from global affordances at some point, which may be desirable in some instances but I don't think it would be as large a gain as creating a global affordance set.
I feel this interpretation has an appropriate level of granularity when talking about the application profile, but the examples I have seen were only dealing in resource specific affordance definition. I don't see any particular reason why this wouldn't be a valid but as always a clear answer would be best.
I hope this is more clear, thoughts?