Tags and keywords
In general, one should try to interpret snippets as directly as possible without "sneaking in" information that is not from an authoritative, traceable source. A little bit of general knowledge about elementary particles is nevertheless used here to interpret this snippet (in awareness of the previous snippets).
It is assumed that Charge
is a value property of any abstract ElementaryParticle
. It is also assumed that elementary particles can be either neutral or charged but not both (as represented by an OCL constraint).
The values of isCharged:Boolean
and isNeutral:Boolean
are then redefined and fixed in ChargedLepton
and NeutralLepton
respectively.
A GeneralizationSet has been used to indicate the hierarchy is {disjoint} (a concrete Lepton instance has to be one or the other). It is also marked as {complete}, although the source snippet is not completely clear on that, as it says "Two main classes of leptons exist" - leaving it a little bit open about whether only those two classes of leptons exists (it is assumed here for now that there are indeed only two).
A custom stereotype keyword «pa:term» with an attribute 'aka' has been used to indicate alternative names for the blocks as tagged values, so block NeutralLepton
is {aka = 'neutrino'}
.
As always, the newly elicited elements are moved out of the 'source' zone into the main model; one can then update some of the relevant Package Diagrams and BDDs.