Hi Matt,
I don't have the book with me, so I'll try to answer without it:
First off, a primitive entity type does not need to play a non-existential (reference) role. Country(.Code) is a valid as a complete and properly formed ORM model where Country plays only the existential role attaching it to the CountryCode value type.
For a compound reference scheme all of the played roles that are part of the reference scheme are considered existential. The simple reference scheme is just a degenerate case of the compound.
For a subtype, you can consider subtyping at two different meta levels. The first is a type-level relationship, representing the normal supertype/subtype relationship between types. The second relationship is at the instance level, there the subtype instance has a 1-1 relationship with the supertype, with a mandatory constraint on the subtype role. We've been referring to this as the identity fact type in recent standardization exercises. Note that NORMA always creates this identify fact type, and actually infers the type-level relationship from its existence in the model. If you expand any subtype in the Fact Types section of the model browser you'll the associated roles and constraints.
So, the only requirement for a subtype is that it is an instance of its supertype, as represented by the mandatory constraint on the identity fact type role connected to the subtype. These mandatory subtype roles are not treated as existential, so all subtypes play a non-existential mandatory role and never have an implicit disjunctive mandatory.
So, in general, I think in all cases you're overstating the requirements for primitive and subtypes to play additional roles. The mandatory constraints will tell you what must be played (including the ever-present mandatory constraint for a subtype). If a primitive type plays non-existential roles none of which are simply or disjunctively mandatory, and the type is not marked as independent, then an implicit (simple or disjunctive) mandatory constraint is added automatically. These are always in-memory in NORMA and reflected in generation targets and population validation, but you won't seem them otherwise displayed in the UI. However, if the 'IsIndependent' property is enabled and false then you can assume there is an implicit mandatory constraint exists (assuming non-existential roles)
-Matt