There are two different use cases when creating an instance ‘A’ based on a TypeDefinitionNode‘A_Type’. Either ‘A’ is used as normal instance or it is used as an InstanceDeclarationof another TypeDefinitionNode.

In the first case, it is not required that newly created or referenced instances based on InstanceDeclarationshave a ModellingRule, however, it is allowed that they have any ModellingRuleindependent of the ModellingRuleof their InstanceDeclaration.

In Figure 24an example is given. The instances A1, A2, and A3 are all valid instances of Type_A, although B of A1 has no ModellingRuleand B of A3 has a different ModellingRulethan B of Type_A.

image027.png

Figure 24– Example on changing instances based on InstanceDeclarations

In the second case, all instances that are referenced directly or indirectly from ‘A’ based on InstanceDeclarationsof ‘A_Type’ initially maintain the same ModellingRuleas their InstanceDeclarations.The ModellingRulesmay be updated; the allowed changes to the ModellingRulesof these Nodes are the same as those defined for subtyping in 6.4.4.2.

In Figure 25an example of such a scenario is given. Type_B uses an InstanceDeclarationbased on Type_A (upper part of the Figure). Later on the ModellingRuleof the InstanceDeclaration A1 is changed (lower part of the Figure). A1 has become the NamingRuleof Mandatory(changed from Optional).

image028.png

Figure 25– Example on changing InstanceDeclarations based on an InstanceDeclaration