The SUBTYPE OF keyword is used only with definitions and specifies that a definition can inherit properties of another type.
This also applies the naming state of the parent type to the new subtype at the point when the SUBTYPE relationship is created. See NAME_OPTIONAL and NAME_REQUIRED.
Examples
In the following example, Def3 is defined as a subtype of both Def1 and Def2. Therefore, it inherits all properties that appear in both of those definition types.
RENAME DEFINITION "User 1" TO "Def1" RENAME DEFINITION "User 2" TO "Def2" RENAME DEFINITION "User 3" TO "Def3"
DEFINITION "Def1" { PROPERTY "Prop1" { EDIT TEXT } }
If you want a situation where only some types are inherited, use a BOOLEAN property in each super-type along with a CHAPTER with a TESTPROC which tests that property. Users can name properties uniquely to avoid confusion such as "type-property" and might need to do so where different edit types need to be used.
DEFINITION "SysML Class" { SUBTYPE OF "SysML BehavioredClassifier" SUBTYPE OF "SysML EncapsulatedClassifier" SUBTYPE OF "SysML ConstraintBlock" SUBTYPE OF "SysML InterfaceBlock" SUBTYPE OF "SysML ~InterfaceBlock" SUBTYPE OF "SysML Requirement" SUBTYPE OF "SysML Block" SUBTYPE OF "SysML View" SUBTYPE OF "SysML Viewpoint" }