Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion docs/4___common_content.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ The following XML child elements denote the data type of a connector or dictiona
|Real / Float64 / Float32 / +
Integer / Int8 / UInt8 / Int16 / UInt16 / +
Int32 / UInt32 / Int64 / UInt64 / +
Boolean / String / Enumeration / Binary / Clock |Exactly one of these elements *MUST* be present to specify the type of the element.
Boolean / String / Enumeration / Binary / Clock / Terminal |Exactly one of these elements *MUST* be present to specify the type of the element.
See below for details.
|===

Expand Down Expand Up @@ -382,6 +382,21 @@ a|This optional attribute specifies the execution priority of the clock for sche
Lower values indicate higher priority.
|===

===== Terminal

image:images/SystemStructureCommon_Terminal.svg[image]

This type specifies that the connector in question represents a structured terminal, compatible with FMI 3.0 terminals.
It *MUST* only be used for connectors of kind `terminal`. For detailed terminal semantics and behavior, refer to the FMI 3.0 specification.

[width="100%",cols="28%,72%",options="header",]
|===
|Attribute |Description
|name |This required attribute references a terminal type definition by name.
The name *MUST* match the name of a Terminal entry in the Terminals XML element of the top-level SystemStructureDescription element.
The member-to-variable binding follows the naming convention `connectorName.memberName`.
|===

[#ssc_transformations]
==== Transformation Choice

Expand Down
61 changes: 59 additions & 2 deletions docs/5___ssd.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ The root element of an SSD file *MUST* be a SystemStructureDescription element,
|Attribute |Description
|version |This required attribute specifies the version of this specification that the system description conforms to.
Only major and minor version number are included, the patch version number *MUST NOT* be included in this attribute.
For the current release this *MUST* be either 1.0 or 2.0.
For the current release this *MUST* be either 1.0, 2.0, or 2.1.
If it is 1.0 the file *MUST* also conform fully to the 1.0 standard.
|name |This required attribute provides a name, which can be used for purposes of presenting the system structure to the user, for example when selecting individual variant SSDs from an SSP.
|===
Expand All @@ -32,6 +32,8 @@ The following XML child elements are specified for the SystemStructureDescriptio
See <<Enumerations>> for its definition.
|Units |This optional element *MUST* contain definitions for all units referenced in the system description file.
See <<Units>> for its definition.
|Terminals |This optional element *MUST* contain definitions for all terminal types referenced in the system description file.
See <<Terminals>> for its definition.
|DefaultExperiment |This optional element *MAY* contain information of a default simulation setup that is supplied with the system definition for informational purposes, see description below.
|===

Expand Down Expand Up @@ -144,6 +146,10 @@ This can be used for example to allow a connector to function as both an input a
Connectors of kind `unspecified` are used to define connectors for which the flow of information is either not yet specified, or is determined at runtime, for example for acausal connections of Modelica models.
Such connectors can be connected to any other connector under the rules of the underlying modeling language.

Connectors of kind `terminal` are used to group member connectors into a structured interface, compatible with FMI 3.0 terminals.
The name of the connector follows the naming convention `connectorName.memberName` for the member bindings.
Such a connector *MUST* reference a terminal type definition via a Terminal child element (see <<ssc_types>> for details).

|===

The following XML child elements are specified for the Connector element:
Expand All @@ -154,7 +160,7 @@ The following XML child elements are specified for the Connector element:
|Real / Float64 / Float32 / +
Integer / Int8 / UInt8 / Int16 / UInt16 / +
Int32 / UInt32 / Int64 / UInt64 / +
Boolean / String / Enumeration / Binary / Clock |Exactly one of these elements *CAN* be present to specify the type of the Connector.
Boolean / String / Enumeration / Binary / Clock / Terminal |Exactly one of these elements *CAN* be present to specify the type of the Connector.
See <<ssc_types>> for details.
|Dimension |One or more of these optional elements specify the connector array dimensions, making the connector an array connector.
See <<ssc_dimensions>> for details.
Expand Down Expand Up @@ -838,3 +844,54 @@ If that lookup yields no match, the lookup is performed on the enclosing system,

It is an error if no matching signal dictionary is found.
|===

[#Terminals]
=== Terminals

image:images/SystemStructureDescription_Terminals.svg[image]

This optional element provides the set of global terminal type definitions for the system structure description.
Terminal type definitions are referenced by name from connectors of kind `terminal`.

==== Terminal

image:images/SystemStructureDescription_Terminal.svg[image]

This element defines a terminal type, which groups member connectors and optional nested sub-terminals into a structured interface compatible with FMI 3.0 terminals.

The member-to-variable binding follows the naming convention `connectorName.memberName`, where `connectorName` is the name of the connector of kind `terminal` in the system or component, and `memberName` is the name of the member connector defined in this terminal type.

[width="100%",cols="28%,72%",options="header",]
|===
|Attribute |Description
|name |This required attribute gives the terminal type a unique name within the Terminals element.
Qualified names using reverse domain name notation (e.g. `com.example.MyTerminalType`) are *RECOMMENDED*.
|matchingRule a|
This required attribute specifies the rule used to match member connectors when two terminals are connected.
Compatible with FMI 3.0 terminal matching semantics:

`plug` -- All members must match by `memberName`.

`bus` -- Partial matching by `memberName` is allowed; unmatched members are left unconnected.

`sequence` -- Matching is done by member order; the count of members must match.

`none` -- No automatic matching is performed.

Each terminal's `matchingRule` is evaluated independently.
|terminalKind |This optional attribute specifies the terminal kind using FMI 3.0 semantics.
Use reverse domain name notation (e.g. `com.example.MyTerminalType`).
|===

The following XML child elements are specified for the Terminal element:

[width="100%",cols="23%,77%",options="header",]
|===
|Element |Description
|Connectors |This optional element *MUST* contain the member connectors of this terminal type.
Member connectors *MUST* use kind `local`.
See <<Connectors>> for details.
|Terminals |This optional element *MUST* contain nested sub-terminal type definitions.
|Annotations |This optional element *MAY* contain annotations.
See <<Annotations>> for details.
|===
21 changes: 20 additions & 1 deletion schema/SystemStructureCommon.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
This is the normative XML Schema 1.0 schema for the MAP SSP
SystemStructure 2.0 common content across formats.

Version: 2.0.1-rc.1
Version: 2.1.0-alpha

Copyright 2016 -- 2026 Modelica Association Project "SSP"

Expand Down Expand Up @@ -614,6 +614,25 @@
<xs:attribute name="priority" type="xs:unsignedInt" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Terminal">
<xs:annotation>
<xs:documentation xml:lang="en">
References a global terminal type definition by name.
The member-to-variable binding follows the naming
convention connectorName.memberName.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
References a Terminal defined in the Terminals
section of the enclosing SystemStructureDescription.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:group>

Expand Down
83 changes: 81 additions & 2 deletions schema/SystemStructureDescription.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
<xs:annotation>
<xs:documentation xml:lang="en">
This is the normative XML Schema 1.0 schema for the MAP SSP
SystemStructureDescription 2.0 format.
SystemStructureDescription 2.1 format.

Version: 2.0.1-rc.1
Version: 2.1.0-alpha

Copyright 2016 -- 2026 Modelica Association Project "SSP"

Expand Down Expand Up @@ -50,6 +50,7 @@
<xs:element name="System" type="ssd:TSystem"/>
<xs:element name="Enumerations" minOccurs="0" type="ssc:TEnumerations"/>
<xs:element name="Units" minOccurs="0" type="ssc:TUnits"/>
<xs:element name="Terminals" minOccurs="0" type="ssd:TTerminals"/>
<xs:element name="DefaultExperiment" minOccurs="0" type="ssd:TDefaultExperiment"/>
<xs:group ref="ssc:GMetaData"/>
<xs:group ref="ssc:GSignature"/>
Expand All @@ -65,6 +66,7 @@
<xs:restriction base="xs:normalizedString">
<xs:pattern value="1[.]0"/>
<xs:pattern value="2[.]0"/>
<xs:pattern value="2[.]1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
Expand Down Expand Up @@ -795,6 +797,7 @@
<xs:enumeration value="local"/>
<xs:enumeration value="inout"/>
<xs:enumeration value="unspecified"/>
<xs:enumeration value="terminal"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
Expand Down Expand Up @@ -1053,6 +1056,82 @@
</xs:sequence>
</xs:complexType>

<xs:complexType name="TTerminals">
<xs:annotation>
<xs:documentation xml:lang="en">
A set of terminal type definitions, referenced by name from
connectors of kind "terminal".
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Terminal" minOccurs="1" maxOccurs="unbounded" type="ssd:TTerminal"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TTerminal">
<xs:annotation>
<xs:documentation xml:lang="en">
Defines a terminal type with member connectors (kind="local"),
optional nested sub-terminals, and a matching rule.
Compatible with FMI 3.0 terminals.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Connectors" minOccurs="0" type="ssd:TConnectors">
<xs:annotation>
<xs:documentation xml:lang="en">
The member connectors of this terminal, using kind="local".
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Terminals" minOccurs="0" type="ssd:TTerminals">
<xs:annotation>
<xs:documentation xml:lang="en">
Nested sub-terminals.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Annotations" minOccurs="0" type="ssc:TAnnotations"/>
</xs:sequence>
<xs:attributeGroup ref="ssc:ABaseElement"/>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
Unique name of the terminal type. Qualified names
(e.g. reverse domain name notation) are recommended.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="matchingRule" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
Matching rule for connecting terminals (FMI 3.0 semantics):
- plug: All members must match by memberName.
- bus: Partial matching by memberName allowed.
- sequence: Matching by member order; count must match.
- none: No automatic matching.
Each terminal's matchingRule is evaluated independently.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:normalizedString">
<xs:enumeration value="plug"/>
<xs:enumeration value="bus"/>
<xs:enumeration value="sequence"/>
<xs:enumeration value="none"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="terminalKind" type="xs:normalizedString" use="optional">
<xs:annotation>
<xs:documentation xml:lang="en">
Optional terminal kind (FMI 3.0 semantics). Use reverse domain
name notation (e.g. "com.example.MyTerminalType").
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>

<xs:complexType name="TDefaultExperiment">
<xs:annotation>
<xs:documentation xml:lang="en">
Expand Down
83 changes: 81 additions & 2 deletions schema/SystemStructureDescription11.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
<xs:annotation>
<xs:documentation xml:lang="en">
This is the XML Schema 1.1 schema for the MAP SSP
SystemStructureDescription 2.0 format. It is provided
SystemStructureDescription 2.1 format. It is provided
as a non-normative alternative to the XML Schema 1.0 schema
to support simpler cross-namespace validation of SSD files.

Version: 2.0.1-rc.1
Version: 2.1.0-alpha

Copyright 2016 -- 2026 Modelica Association Project "SSP"

Expand Down Expand Up @@ -59,6 +59,7 @@
<xs:element name="System" type="ssd:TSystem"/>
<xs:element name="Enumerations" minOccurs="0" type="ssc:TEnumerations"/>
<xs:element name="Units" minOccurs="0" type="ssc:TUnits"/>
<xs:element name="Terminals" minOccurs="0" type="ssd:TTerminals"/>
<xs:element name="DefaultExperiment" minOccurs="0" type="ssd:TDefaultExperiment"/>
<xs:group ref="ssc:GMetaData"/>
<xs:group ref="ssc:GSignature"/>
Expand All @@ -74,6 +75,7 @@
<xs:restriction base="xs:normalizedString">
<xs:pattern value="1[.]0"/>
<xs:pattern value="2[.]0"/>
<xs:pattern value="2[.]1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
Expand Down Expand Up @@ -779,6 +781,7 @@
<xs:enumeration value="local"/>
<xs:enumeration value="inout"/>
<xs:enumeration value="unspecified"/>
<xs:enumeration value="terminal"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
Expand Down Expand Up @@ -1000,6 +1003,82 @@
</xs:sequence>
</xs:complexType>

<xs:complexType name="TTerminals">
<xs:annotation>
<xs:documentation xml:lang="en">
A set of terminal type definitions, referenced by name from
connectors of kind "terminal".
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Terminal" minOccurs="1" maxOccurs="unbounded" type="ssd:TTerminal"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="TTerminal">
<xs:annotation>
<xs:documentation xml:lang="en">
Defines a terminal type with member connectors (kind="local"),
optional nested sub-terminals, and a matching rule.
Compatible with FMI 3.0 terminals.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Connectors" minOccurs="0" type="ssd:TConnectors">
<xs:annotation>
<xs:documentation xml:lang="en">
The member connectors of this terminal, using kind="local".
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Terminals" minOccurs="0" type="ssd:TTerminals">
<xs:annotation>
<xs:documentation xml:lang="en">
Nested sub-terminals.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Annotations" minOccurs="0" type="ssc:TAnnotations"/>
</xs:sequence>
<xs:attributeGroup ref="ssc:ABaseElement"/>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
Unique name of the terminal type. Qualified names
(e.g. reverse domain name notation) are recommended.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="matchingRule" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
Matching rule for connecting terminals (FMI 3.0 semantics):
- plug: All members must match by memberName.
- bus: Partial matching by memberName allowed.
- sequence: Matching by member order; count must match.
- none: No automatic matching.
Each terminal's matchingRule is evaluated independently.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:normalizedString">
<xs:enumeration value="plug"/>
<xs:enumeration value="bus"/>
<xs:enumeration value="sequence"/>
<xs:enumeration value="none"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="terminalKind" type="xs:normalizedString" use="optional">
<xs:annotation>
<xs:documentation xml:lang="en">
Optional terminal kind (FMI 3.0 semantics). Use reverse domain
name notation (e.g. "com.example.MyTerminalType").
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>

<xs:complexType name="TDefaultExperiment">
<xs:annotation>
<xs:documentation xml:lang="en">
Expand Down
Loading
Loading