Customizing the metamodel > Keywords for USRPROPS > SUBTYPE OF
  
SUBTYPE OF
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 }
}

DEFINITION "Def2"
{
  PROPERTY "Prop2" { EDIT NUMERIC }
}

DEFINITION "Def3"
{
  SUBTYPE OF "Def1"
  SUBTYPE OF "Def2"
}

DEFINITION "Def1"
{
  PROPERTY "Prop1b" { EDIT TEXT }
}

DEFINITION "Def2"
{
  PROPERTY "Prop2b" { EDIT NUMERIC }
}
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 Viewpoint"
{

  CHAPTER "Stereotype"
  PROPERTY "isStereotype Viewpoint"
{ EDIT BOOLEAN DEFAULT "F" LABEL "Viewpoint" }

  CHAPTER "Viewpoint"

   {TestProc TestPropertyValue TESTPROPERTY "isStereotype Viewpoint" TESTSTRING { "T" }}
  ...
}

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"
}
See also
AND_SUBTYPES
Keywords for USRPROPS