[SNIP]
From reading your thoughts on sematypes, I can't see how what you are describing is much different from a stereotype. EA uses stereotypes as the extension method, including for defining new metatypes. But that doesn't mean that all stereotypes represent a metatype. UML does sometimes specify a different keyword or rendering to denote that a specific property is set, but they could be specified as a stereotype (or extended stereotype) instead. BPMN uses different icons/decorations to show different properties, they could be expressed by stereotypes or enumeration properties on the base metatype as easily as they could be specified as a new metatype.
What is so different about sematypes that won't be understood by anyone not already familiar with the modeling paradigm in your environment?
Second part...
When we started to try and formalise our MDG and its related conceptual metamodel, we found a couple of problems. We liked the mechanism that Sparx provides; of a unique combination of Type and Stereotype denotes a metatype - which will be inserted in place of the type in most circumstances. Our users could therefore worry about what metatype am I using rather than having to worry about the specific stereotype involved - they just looked n one field instead of having to join two.
The metamodel uses metaclass and stereotype, but the metaclass is the EA type, and you can't extend that (AFAIK). For example, we wanted (ArchiMate) Assignment to be a metaclass. Anyway, we decided we need to understand what a metatype was (outside EA) Unfortunately, the only references and definitions we could find were biological:
Metatype: a topotype or homeotype determined by the original author of its species.
or to do with knowledge representation:
Metatype: the type of a type
So we decided that a metatype was the first order specialization of the metaclass - so (as I noted before) if
Specialization is the metaclass then
Inheritance and
Restriction are the two metatypes. NOTE: this is taking place in a conceptual metamodel, the limitations of the Sparx metaclasses aren't relevant here.
The requirement for being a metatype became: "Your nature must be different from another metatype for the same class".
The combination of Sparx Type and Stereotype enabled us to implement this model as three distinct types:
Specialization,
Inheritance and
Restriction Then along came these semantic variants of Associations - they're not (by nature) different from the other Associations, but their meaning (semantics) are specific. As you correctly observe, the same stereotype technology will allow us to implement and render these semantically specific variants. But conceptually they aren't metatypes according to our definition. So we invented sematypes: A type whose nature is the same as its metaclass (or even metatype) but whose semantics are specific and unique.
From the inside out, all of these concepts are just types and stereotypes, but from the outside in, they are conceptually different and it appears possible for the non-modeller users to appreciate and understand the distinction and use them meaningfully.
YMMVWFUs...
Paolo