For Objectand Variablethe intention of the ModellingRule OptionalPlaceholderis to expose the information that a complex TypeDefinitionexpects from instances of the TypeDefinitionto add instances with specific Referenceswithout defining BrowseNamesfor the instances. For example, a Device might have a Folder for DeviceParameters, and the DeviceParameters should be connected with a HasComponent Reference. However, the names of the DeviceParameters are specific to the instances. The example is shown in Figure 30, where an instance Device A adds two DeviceParameters in the Folder.


Figure 30– Example using OptionalPlaceholder with an Object and Variable

The ModellingRule OptionalPlaceholderadds no additional constraints on instances of the TypeDefinition. It just provides useful information when exposing a TypeDefinition. When the InstanceDeclarationis complex, i.e. it references other InstanceDeclarationswith hierarchicalReferences, these InstanceDeclarationsare not further considered for instantiating the TypeDefinition.

It is recommended that the BrowseNameand the DisplayNameof InstanceDeclarationshaving the OptionalPlaceholder ModellingRule shouldbe enclosed within angle brackets.

When overriding the InstanceDeclaration, the ModellingRuleshall remain OptionalPlaceholder.

For Methods,the ModellingRule OptionalPlaceholder is used to define the BrowseNamewhere subtypes and instances provide more information. The Method definition with the OptionalPlaceholder only defines the BrowseName. Aninstance or subtype defines the InputArgumentsand OutputArguments. A subtype shall also change the ModellingRuleto Optionalor Mandatory. The Methodis optional for instances.For example, a Device might have a Methodto perform calibration however the specific arguments for the Methoddepend on the instance of the Device. In this example Device A does not implement the Method, Device B implements the Methodwith no arguments and Device C implements the Methodaccepting a mode argument to select how the calibration is to be performed. The example is shown in Figure 31.


Figure 31– Example using OptionalPlaceholder with a Method