Thanks, Eve,
Most helpful!
I'll reply in-line with some more quesiotns...
It seems to me that the property tags are mandatory (that is their existence is mandatory, their value may be discretionary).
Not quite.
Stereotype properties are always instantiated with the stereotype.
Confirming that their (notional) existence is mandatory in the Profile.
You could handle EA_OnPostCreate* to delete one or more tags to change that behavior. The result would be the UI would no longer show that property.
I take it there is NO UI method to do this. Seems reasonable that there shouldn't be.
A user could then manually add it back using the add tagged value dialog (selecting the qualified name) and it would go back to its normal location.
Confirmed...
On a purely conceptual level, the property may still be there, but for any practical definition, it's not.
Not sure I follow here. See my discussion below.
It sounds like you are interested in similar behavior to BPMN, where depending on the value of other properties some may be visible or hidden. (That's not currently possible to implement in your own technology, still hoping we can get there)
Not quite. However, that would be a useful mechanism, especially if diagram dependent.
What I'm after is similar. I'll describe an envisioned process (because it's simpler than a declarative).
The profile defines the set of tags that will be considered properties of specific metatypes and the remaining "less equal than others" (in the profile and the general set) are just tags.
If the tag is a property tag and it is missing from the metatype instance, then the tag name can be greyed out (disabled) and the value is either empty or designated extrinsically as "«Missing»". If the user double clicks the name, they are asking to create the tag and the normal process is invoked.
If the tag is designated as optional in the profile, then if a default value is provided, then it will be instantiated with the default value at the metatype instantiation (or even stereotype synchronisation). If no default value is provided, then it is not instantiated (and thus the name is greyed out etc.).
Hopefully, that's clear.
What do other's think?
Paolo