@memoarchitect/tools 0.7.2 → 0.8.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/README.md +1 -1
  2. package/corpus/README.md +63 -0
  3. package/corpus/sysml-v2-release/bnf/SysML-graphical-bnf.kgbnf +2264 -0
  4. package/package.json +4 -3
  5. package/packages/tools/lib/analysis/dsm.d.ts +1 -1
  6. package/packages/tools/lib/analysis/dsm.d.ts.map +1 -1
  7. package/packages/tools/lib/analysis/dsm.js +1 -1
  8. package/packages/tools/lib/analysis/dsm.js.map +1 -1
  9. package/packages/tools/lib/bin/memo.js +25 -0
  10. package/packages/tools/lib/bin/memo.js.map +1 -1
  11. package/packages/tools/lib/browser/index.d.ts +2 -0
  12. package/packages/tools/lib/browser/index.d.ts.map +1 -1
  13. package/packages/tools/lib/browser/index.js +1 -0
  14. package/packages/tools/lib/browser/index.js.map +1 -1
  15. package/packages/tools/lib/commands/dev.d.ts.map +1 -1
  16. package/packages/tools/lib/commands/dev.js +37 -15
  17. package/packages/tools/lib/commands/dev.js.map +1 -1
  18. package/packages/tools/lib/commands/dhf-lint.d.ts +10 -0
  19. package/packages/tools/lib/commands/dhf-lint.d.ts.map +1 -0
  20. package/packages/tools/lib/commands/dhf-lint.js +72 -0
  21. package/packages/tools/lib/commands/dhf-lint.js.map +1 -0
  22. package/packages/tools/lib/commands/dhf.d.ts.map +1 -1
  23. package/packages/tools/lib/commands/dhf.js +7 -1
  24. package/packages/tools/lib/commands/dhf.js.map +1 -1
  25. package/packages/tools/lib/commands/standards.d.ts +28 -0
  26. package/packages/tools/lib/commands/standards.d.ts.map +1 -0
  27. package/packages/tools/lib/commands/standards.js +203 -0
  28. package/packages/tools/lib/commands/standards.js.map +1 -0
  29. package/packages/tools/lib/commands/validate.d.ts.map +1 -1
  30. package/packages/tools/lib/commands/validate.js +13 -2
  31. package/packages/tools/lib/commands/validate.js.map +1 -1
  32. package/packages/tools/lib/dhf/document-compiler.d.ts.map +1 -1
  33. package/packages/tools/lib/dhf/document-compiler.js +13 -8
  34. package/packages/tools/lib/dhf/document-compiler.js.map +1 -1
  35. package/packages/tools/lib/dhf/document-registry.d.ts +16 -2
  36. package/packages/tools/lib/dhf/document-registry.d.ts.map +1 -1
  37. package/packages/tools/lib/dhf/document-registry.js +74 -23
  38. package/packages/tools/lib/dhf/document-registry.js.map +1 -1
  39. package/packages/tools/lib/dhf/index.d.ts +3 -0
  40. package/packages/tools/lib/dhf/index.d.ts.map +1 -1
  41. package/packages/tools/lib/dhf/index.js +4 -0
  42. package/packages/tools/lib/dhf/index.js.map +1 -1
  43. package/packages/tools/lib/dhf/query-engine.d.ts +12 -1
  44. package/packages/tools/lib/dhf/query-engine.d.ts.map +1 -1
  45. package/packages/tools/lib/dhf/query-engine.js +2 -1
  46. package/packages/tools/lib/dhf/query-engine.js.map +1 -1
  47. package/packages/tools/lib/dhf/query-executor.d.ts +72 -5
  48. package/packages/tools/lib/dhf/query-executor.d.ts.map +1 -1
  49. package/packages/tools/lib/dhf/query-executor.js +471 -81
  50. package/packages/tools/lib/dhf/query-executor.js.map +1 -1
  51. package/packages/tools/lib/dhf/script-runner.js +6 -6
  52. package/packages/tools/lib/dhf/script-runner.js.map +1 -1
  53. package/packages/tools/lib/dhf/standards-block.d.ts +40 -0
  54. package/packages/tools/lib/dhf/standards-block.d.ts.map +1 -0
  55. package/packages/tools/lib/dhf/standards-block.js +223 -0
  56. package/packages/tools/lib/dhf/standards-block.js.map +1 -0
  57. package/packages/tools/lib/dhf/standards-library.d.ts +123 -0
  58. package/packages/tools/lib/dhf/standards-library.d.ts.map +1 -0
  59. package/packages/tools/lib/dhf/standards-library.js +295 -0
  60. package/packages/tools/lib/dhf/standards-library.js.map +1 -0
  61. package/packages/tools/lib/dhf/standards-report.d.ts +189 -0
  62. package/packages/tools/lib/dhf/standards-report.d.ts.map +1 -0
  63. package/packages/tools/lib/dhf/standards-report.js +384 -0
  64. package/packages/tools/lib/dhf/standards-report.js.map +1 -0
  65. package/packages/tools/lib/dhf/template-lint.d.ts +42 -0
  66. package/packages/tools/lib/dhf/template-lint.d.ts.map +1 -0
  67. package/packages/tools/lib/dhf/template-lint.js +421 -0
  68. package/packages/tools/lib/dhf/template-lint.js.map +1 -0
  69. package/packages/tools/lib/dhf/template-resolver.d.ts.map +1 -1
  70. package/packages/tools/lib/dhf/template-resolver.js +17 -5
  71. package/packages/tools/lib/dhf/template-resolver.js.map +1 -1
  72. package/packages/tools/lib/importer/cameo-importer.js +2 -2
  73. package/packages/tools/lib/importer/cameo-importer.js.map +1 -1
  74. package/packages/tools/lib/importer/ea-importer.d.ts.map +1 -1
  75. package/packages/tools/lib/importer/ea-importer.js +4 -3
  76. package/packages/tools/lib/importer/ea-importer.js.map +1 -1
  77. package/packages/tools/lib/importer/owl-importer.d.ts.map +1 -1
  78. package/packages/tools/lib/importer/owl-importer.js +2 -3
  79. package/packages/tools/lib/importer/owl-importer.js.map +1 -1
  80. package/packages/tools/lib/language/generated/ast.d.ts +1155 -55
  81. package/packages/tools/lib/language/generated/ast.d.ts.map +1 -1
  82. package/packages/tools/lib/language/generated/ast.js +922 -9
  83. package/packages/tools/lib/language/generated/ast.js.map +1 -1
  84. package/packages/tools/lib/language/generated/grammar.d.ts.map +1 -1
  85. package/packages/tools/lib/language/generated/grammar.js +3643 -427
  86. package/packages/tools/lib/language/generated/grammar.js.map +1 -1
  87. package/packages/tools/lib/model/builder.d.ts.map +1 -1
  88. package/packages/tools/lib/model/builder.js +725 -43
  89. package/packages/tools/lib/model/builder.js.map +1 -1
  90. package/packages/tools/lib/model/kind-registry.d.ts +20 -0
  91. package/packages/tools/lib/model/kind-registry.d.ts.map +1 -1
  92. package/packages/tools/lib/model/kind-registry.js +38 -0
  93. package/packages/tools/lib/model/kind-registry.js.map +1 -1
  94. package/packages/tools/lib/model/manifest.d.ts +8 -0
  95. package/packages/tools/lib/model/manifest.d.ts.map +1 -1
  96. package/packages/tools/lib/model/manifest.js +3 -0
  97. package/packages/tools/lib/model/manifest.js.map +1 -1
  98. package/packages/tools/lib/model/naming.d.ts +57 -0
  99. package/packages/tools/lib/model/naming.d.ts.map +1 -0
  100. package/packages/tools/lib/model/naming.js +69 -0
  101. package/packages/tools/lib/model/naming.js.map +1 -0
  102. package/packages/tools/lib/model/native-project.d.ts.map +1 -1
  103. package/packages/tools/lib/model/native-project.js +10 -0
  104. package/packages/tools/lib/model/native-project.js.map +1 -1
  105. package/packages/tools/lib/model/ontology-loader.d.ts.map +1 -1
  106. package/packages/tools/lib/model/ontology-loader.js +3 -0
  107. package/packages/tools/lib/model/ontology-loader.js.map +1 -1
  108. package/packages/tools/lib/model/relationship-legality.d.ts +17 -0
  109. package/packages/tools/lib/model/relationship-legality.d.ts.map +1 -1
  110. package/packages/tools/lib/model/relationship-legality.js.map +1 -1
  111. package/packages/tools/lib/model/relationship-registry.d.ts +77 -0
  112. package/packages/tools/lib/model/relationship-registry.d.ts.map +1 -1
  113. package/packages/tools/lib/model/relationship-registry.js +217 -2
  114. package/packages/tools/lib/model/relationship-registry.js.map +1 -1
  115. package/packages/tools/lib/model/semantic.d.ts +46 -0
  116. package/packages/tools/lib/model/semantic.d.ts.map +1 -1
  117. package/packages/tools/lib/model/semantic.js +3 -0
  118. package/packages/tools/lib/model/semantic.js.map +1 -1
  119. package/packages/tools/lib/model/short-id.d.ts.map +1 -1
  120. package/packages/tools/lib/model/short-id.js +1 -3
  121. package/packages/tools/lib/model/short-id.js.map +1 -1
  122. package/packages/tools/lib/model/view-deriver.d.ts +10 -1
  123. package/packages/tools/lib/model/view-deriver.d.ts.map +1 -1
  124. package/packages/tools/lib/model/view-deriver.js +103 -5
  125. package/packages/tools/lib/model/view-deriver.js.map +1 -1
  126. package/packages/tools/lib/protocol/messages.d.ts +85 -3
  127. package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
  128. package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
  129. package/packages/tools/lib/server/dev-server.js +158 -5
  130. package/packages/tools/lib/server/dev-server.js.map +1 -1
  131. package/packages/tools/lib/server/package-source.d.ts +26 -0
  132. package/packages/tools/lib/server/package-source.d.ts.map +1 -0
  133. package/packages/tools/lib/server/package-source.js +81 -0
  134. package/packages/tools/lib/server/package-source.js.map +1 -0
  135. package/packages/tools/lib/server/package-writer.d.ts +94 -0
  136. package/packages/tools/lib/server/package-writer.d.ts.map +1 -0
  137. package/packages/tools/lib/server/package-writer.js +317 -0
  138. package/packages/tools/lib/server/package-writer.js.map +1 -0
  139. package/packages/tools/lib/server/persistor.d.ts +20 -0
  140. package/packages/tools/lib/server/persistor.d.ts.map +1 -1
  141. package/packages/tools/lib/server/persistor.js +29 -8
  142. package/packages/tools/lib/server/persistor.js.map +1 -1
  143. package/packages/tools/lib/server/relationship-writer.d.ts +13 -1
  144. package/packages/tools/lib/server/relationship-writer.d.ts.map +1 -1
  145. package/packages/tools/lib/server/relationship-writer.js +59 -0
  146. package/packages/tools/lib/server/relationship-writer.js.map +1 -1
  147. package/packages/tools/lib/server/sysml-notation.d.ts +1 -1
  148. package/packages/tools/lib/server/sysml-notation.d.ts.map +1 -1
  149. package/packages/tools/lib/server/sysml-notation.js +17 -0
  150. package/packages/tools/lib/server/sysml-notation.js.map +1 -1
  151. package/packages/tools/lib/server/view-layout-store.d.ts.map +1 -1
  152. package/packages/tools/lib/server/view-layout-store.js +1 -0
  153. package/packages/tools/lib/server/view-layout-store.js.map +1 -1
  154. package/packages/tools/lib/validator/behavior-validator.d.ts +1 -1
  155. package/packages/tools/lib/validator/behavior-validator.js +1 -1
  156. package/packages/tools/lib/validator/constraint-eval.d.ts +16 -0
  157. package/packages/tools/lib/validator/constraint-eval.d.ts.map +1 -1
  158. package/packages/tools/lib/validator/constraint-eval.js +102 -0
  159. package/packages/tools/lib/validator/constraint-eval.js.map +1 -1
  160. package/packages/tools/src/grammar/memo-sysml.langium +415 -25
@@ -0,0 +1,2264 @@
1
+ // Corrected manually by HP de Koning
2
+
3
+ // Part 2 - Systems Modeling Language (SysML)
4
+
5
+ // Clause 8.2.3 Graphical Notation
6
+
7
+ // Clause 8.2.3.1 Graphical Notation Overview
8
+
9
+ // Clause 8.2.3.2 Elements and Relationships Graphical Notation
10
+
11
+ element =
12
+ dependencies-and-annotations-element
13
+ | general-element
14
+ | element-inside-textual-compartment
15
+
16
+ compartment =| general-compartment
17
+
18
+ general-compartment =
19
+ <img src="images/general-compartment.svg" width="408.0">
20
+ general-view
21
+
22
+ general-view =
23
+ (general-element)*
24
+ (dependencies-and-annotations-element)*
25
+ (ellipsis-at-lower-left-corner)?
26
+
27
+ ellipsis-at-lower-left-corner = '...'
28
+
29
+ general-element =
30
+ general-node
31
+ | general-relationship
32
+
33
+ element-node =
34
+ usage-node | definition-node | annotation-node | namespace-node
35
+
36
+ element-inside-textual-compartment =
37
+ <img src="images/element-inside-textual-compartment.svg" width="404.15999999999997">
38
+
39
+ rel-name =
40
+ Identification
41
+ | QualifiedName
42
+
43
+ // Note. An element inside a textual compartment is selected by graying out a substring containing the element. The grayed-out section must cover a single element within the textual syntax inside the compartment.
44
+
45
+ // Clause 8.2.3.3 Dependencies Graphical Notation
46
+
47
+ dependencies-and-annotations-element =| dependencies-element
48
+
49
+ dependencies-element =|
50
+ binary-dependency
51
+ | n-ary-dependency
52
+
53
+ binary-dependency =
54
+ <img src="images/binary-dependency.svg" width="505.91999999999996">
55
+
56
+ n-ary-dependency =
57
+ &n-ary-association-dot (n-ary-dependency-client-or-supplier-link &element-node)+
58
+
59
+ n-ary-dependency-client-or-supplier-link =
60
+ n-ary-dependency-client-link
61
+ | n-ary-dependency-supplier-link
62
+
63
+ n-ary-association-dot =
64
+ <img src="images/n-ary-association-dot.svg" width="92.1599985">
65
+
66
+ n-ary-dependency-client-link =
67
+ <img src="images/n-ary-dependency-client-link.svg" width="526.08">
68
+
69
+ n-ary-dependency-supplier-link =
70
+ <img src="images/n-ary-dependency-supplier-link.svg" width="534.24">
71
+
72
+ // Note. An n-ary dependency must have two or more client elements or two or more supplier elements.
73
+
74
+ // Clause 8.2.3.4 Annotations Graphical Notation
75
+
76
+ dependencies-and-annotations-element =|
77
+ annotation-node
78
+ | annotation-link
79
+
80
+ annotation-node =
81
+ comment-node
82
+ | documentation-node
83
+ | textual-representation-node
84
+
85
+ text-block = (LINE_TEXT)*
86
+
87
+ comment-node =
88
+ comment-without-keyword
89
+ | comment-with-keyword
90
+
91
+ comment-without-keyword =
92
+ <img src="images/comment-without-keyword.svg" width="233.76">
93
+
94
+ comment-with-keyword =
95
+ <img src="images/comment-with-keyword.svg" width="396.0">
96
+
97
+ documentation-node =
98
+ <img src="images/documentation-node.svg" width="409.91999999999996">
99
+
100
+ documentation-compartment =
101
+ <img src="images/documentation-compartment.svg" width="408.0">
102
+ Identification
103
+ text-block
104
+
105
+ textual-representation-node =
106
+ <img src="images/textual-representation-node.svg" width="229.92000000000002">
107
+
108
+ language-string = 'language' STRING_VALUE
109
+
110
+ annotation-link =
111
+ <img src="images/annotation-link.svg" width="473.76">
112
+
113
+ annotated-element =
114
+ element
115
+ | element-inside-textual-compartment
116
+
117
+ // Note. A comment node may be attached to zero, one, or more than one annotated elements. All other annotation nodes must be attached to one and only one annotated element.
118
+
119
+ // Clause 8.2.3.5 Namespaces and Packages Graphical Notation
120
+
121
+ general-node =| namespace-node
122
+
123
+ namespace-node =| package-node
124
+
125
+ package-node =
126
+ package-with-name-inside
127
+ | package-with-name-in-tab
128
+ | imported-package-with-name-inside
129
+ | imported-package-with-name-in-tab
130
+
131
+ package-with-name-inside =
132
+ <img src="images/package-with-name-inside.svg" width="233.76">
133
+
134
+ package-with-name-in-tab =
135
+ <img src="images/package-with-name-in-tab.svg" width="289.91997">
136
+
137
+ imported-package-with-name-inside =
138
+ <img src="images/imported-package-with-name-inside.svg" width="233.76">
139
+
140
+ imported-package-with-name-in-tab =
141
+ <img src="images/imported-package-with-name-in-tab.svg" width="289.91997">
142
+
143
+ package-compartment =
144
+ general-compartment
145
+ | documentation-compartment
146
+ | packages-compartment
147
+ | members-compartment
148
+ | relationships-compartment
149
+
150
+ compartment =| package-compartment
151
+
152
+ packages-compartment =
153
+ <img src="images/packages-compartment.svg" width="408.0">
154
+ packages-compartment-contents
155
+
156
+ packages-compartment-contents = packages-compartment-element* '…'?
157
+
158
+ packages-compartment-element = el-prefix? Identification
159
+
160
+ members-compartment =
161
+ <img src="images/members-compartment.svg" width="408.0">
162
+ members-compartment-contents
163
+
164
+ members-compartment-contents = members-compartment-element* '…'?
165
+
166
+ members-compartment-element = el-prefix? (DefinitionElement | UsageElement)
167
+
168
+ relationships-compartment =
169
+ <img src="images/relationships-compartment.svg" width="408.0">
170
+ relationships-compartment-contents
171
+
172
+ relationships-compartment-contents = (relationships-compartment-element)* '…'?
173
+
174
+ relationships-compartment-element = el-prefix? relationship-name QualifiedName
175
+
176
+ relationship-name =
177
+ 'defines' | 'defined by' | 'specializes' | 'specialized by' | 'connect to'
178
+ | 'subsets' | 'subsetted by' | 'performs' | 'performed by' | 'allocated' | 'allocated to'
179
+ | 'satisfy' | 'satisfied by'
180
+
181
+ general-relationship =|
182
+ import
183
+ | top-level-import
184
+ | recursive-import
185
+ | owned-membership
186
+ | unowned-membership
187
+
188
+ import =
189
+ <img src="images/import.svg" width="636.0">
190
+
191
+ top-level-import =
192
+ <img src="images/top-level-import.svg" width="636.0">
193
+
194
+ recursive-import =
195
+ <img src="images/recursive-import.svg" width="636.0">
196
+
197
+ owned-membership =
198
+ <img src="images/owned-membership.svg" width="433.91999999999996">
199
+
200
+ unowned-membership =
201
+ <img src="images/unowned-membership.svg" width="433.91999999999996">
202
+
203
+ // Clause 8.2.3.6 Definition and Usage Graphical Notation
204
+
205
+ general-node =| type-node
206
+
207
+ type-node =
208
+ definition-node
209
+ | usage-node
210
+
211
+ general-node =| usage-node definition-node
212
+
213
+ namespace-node =| type-node
214
+
215
+ definition-name-with-alias =
216
+ DefinitionDeclaration
217
+ ( '«alias»' ( QualifiedName (',' QualifiedName)* ) )?
218
+
219
+ usage-name-with-alias =
220
+ '^'? UsageDeclaration
221
+ ( '«alias»' ( QualifiedName (',' QualifiedName)* ) )?
222
+
223
+ compartment-stack = (compartment)*
224
+
225
+ compartment =|
226
+ features-compartment
227
+ | variants-compartment
228
+ | variant-elementusages-compartment
229
+
230
+ features-compartment =
231
+ <img src="images/features-compartment.svg" width="408.0">
232
+ features-compartment-contents
233
+
234
+ features-compartment-contents = (features-compartment-element)* '…'?
235
+
236
+ features-compartment-element = el-prefix? UsagePrefix usage-cp
237
+
238
+ variants-compartment =
239
+ <img src="images/variants-compartment.svg" width="408.0">
240
+ variants-compartment-contents
241
+
242
+ variants-compartment-contents = members-compartment-contents
243
+
244
+ variant-elementusages-compartment =
245
+ <img src="images/variant-elementusages-compartment.svg" width="408.0">
246
+ variants-compartment-contents
247
+
248
+ general-relationship =|
249
+ type-relationship
250
+
251
+ type-relationship =
252
+ subclassification
253
+ | subsetting
254
+ | definition
255
+ | redefinition
256
+ | composite-feature-membership
257
+ | noncomposite-feature-membership
258
+
259
+ subclassification =
260
+ <img src="images/subclassification.svg" width="476.15999999999997">
261
+
262
+ definition =
263
+ <img src="images/definition.svg" width="461.76">
264
+
265
+ subsetting =
266
+ <img src="images/subsetting.svg" width="449.76">
267
+
268
+ reference-subsetting =
269
+ <img src="images/reference-subsetting.svg" width="461.76">
270
+
271
+ redefinition =
272
+ <img src="images/redefinition.svg" width="420.0">
273
+
274
+ composite-feature-membership =
275
+ <img src="images/composite-feature-membership.svg" width="361.91997">
276
+
277
+ noncomposite-feature-membership =
278
+ <img src="images/noncomposite-feature-membership.svg" width="361.91997">
279
+
280
+ el-prefix = '^' | '/'
281
+
282
+ usage-cp = usageDeclaration ValuePart?
283
+
284
+ extended-def =
285
+ <img src="images/extended-def.svg" width="318.239985">
286
+
287
+ extended-def-name-compartment =
288
+ '«' BasicDefinitionPrefix? DefinitionExtensionKeyword+ 'def' '»'
289
+ definition-name-with-alias
290
+
291
+ // Note. This production is only valid for cases where one or more
292
+ // DefinitionExtensionKeyword names a MetadataDefinition that is a direct
293
+ // or indirect specialization of KerML metaclass SemanticMetadata.
294
+
295
+ definition-node =| extended-def
296
+
297
+ extended-usage =
298
+ <img src="images/extended-usage.svg" width="320.15999999999997">
299
+
300
+ extended-usage-name-compartment =
301
+ '«' BasicUsagePrefix? UsageExtensionKeyword+ '»'
302
+ usage-name-with-alias
303
+
304
+ // Note. This production is only valid for cases where one or more
305
+ // UsageExtensionKeyword names a MetadataDefinition that is a direct
306
+ // or indirect specialization of KerML metaclass SemanticMetadata.
307
+
308
+ usage-node =| extended-usage
309
+
310
+ // Clause 8.2.3.7 Attributes Graphical Notation
311
+
312
+ definition-node =| attribute-def
313
+
314
+ attribute-def =
315
+ <img src="images/attribute-def.svg" width="318.239985">
316
+
317
+ attribute-def-name-compartment =
318
+ '«' DefinitionPrefix 'attribute' 'def' '»'
319
+ definition-name-with-alias
320
+
321
+ usage-node =| attribute
322
+
323
+ attribute =
324
+ <img src="images/attribute.svg" width="320.15999999999997">
325
+
326
+ attribute-name-compartment =
327
+ '«' UsagePrefix 'attribute' '»'
328
+ usage-name-with-alias
329
+
330
+ compartment =| attributes-compartment
331
+
332
+ attributes-compartment =
333
+ <img src="images/attributes-compartment.svg" width="408.0">
334
+ attributes-compartment-contents
335
+
336
+ attributes-compartment-contents = (attributes-compartment-element)* '…'?
337
+
338
+ attributes-compartment-element = el-prefix? UsagePrefix usage-cp
339
+
340
+ // Clause 8.2.3.8 Enumerations Graphical Notation
341
+
342
+ definition-node =| enumeration-def
343
+
344
+ enumeration-def =
345
+ <img src="images/enumeration-def.svg" width="318.239985">
346
+
347
+ enumeration-def-name-compartment =
348
+ '«' DefinitionPrefix 'enum' 'def' '»'
349
+ definition-name-with-alias
350
+
351
+ usage-node =| enumeration
352
+
353
+ enumeration =
354
+ <img src="images/enumeration.svg" width="320.15999999999997">
355
+
356
+ enumeration-name-compartment =
357
+ '«' UsagePrefix 'enum' '»'
358
+ usage-name-with-alias
359
+
360
+ compartment =| enums-compartment
361
+
362
+ enums-compartment =
363
+ <img src="images/enums-compartment.svg" width="408.0">
364
+ enums-compartment-contents
365
+
366
+ enums-compartment-contents = (enums-compartment-element)* '…'?
367
+
368
+ enums-compartment-element = el-prefix? UsagePrefix usage-cp
369
+
370
+ // Clause 8.2.3.9 Occurrences Graphical Notation
371
+
372
+ definition-node =| occurrence-def
373
+
374
+ general-relationship =| portion-relationship
375
+
376
+ occurrence-def =
377
+ <img src="images/occurrence-def.svg" width="318.239985">
378
+
379
+ occurrence-def-name-compartment =
380
+ '«' DefinitionPrefix 'occurrence' 'def' '»'
381
+ definition-name-with-alias
382
+
383
+ usage-node =|
384
+ occurrence
385
+ | occurrence-ref
386
+ | timeslice-or-snapshot-node
387
+
388
+ occurrence =
389
+ <img src="images/occurrence.svg" width="318.239985">
390
+
391
+ occurrence-ref =
392
+ <img src="images/occurrence-ref.svg" width="318.239985">
393
+
394
+ occurrence-name-compartment =
395
+ '«' OccurrenceUsagePrefix 'occurrence' '»'
396
+ usage-name-with-alias
397
+
398
+ timeslice-or-snapshot-node =
399
+ timeslice
400
+ | snapshot
401
+
402
+ timeslice =
403
+ <img src="images/timeslice.svg" width="318.239985">
404
+
405
+ timeslice-name-compartment =
406
+ '«timeslice»'
407
+ usage-name-with-alias
408
+
409
+ snapshot =
410
+ <img src="images/snapshot.svg" width="318.239985">
411
+
412
+ snapshots-name-compartment =
413
+ '«snapshot»'
414
+ usage-name-with-alias
415
+
416
+ event-occurrence-def =
417
+ <img src="images/event-occurrence-def.svg" width="366.24">
418
+
419
+ event-occurrence-def-name-compartment =
420
+ '«' DefinitionPrefix 'event' 'occurrence' 'def' '»'
421
+ definition-name-with-alias
422
+
423
+ definition-node =| event-occurrence-def
424
+
425
+ event-occurrence =
426
+ <img src="images/event-occurrence.svg" width="318.239985">
427
+
428
+ event-occurrence-name-compartment =
429
+ '«' OccurrenceUsagePrefix 'event' 'occurrence' '»'
430
+ usage-name-with-alias
431
+
432
+ usage-node =| event-occurrence
433
+
434
+ event-edge =
435
+ <img src="images/event-edge.svg" width="522.24">
436
+
437
+ eventer = usage-node | definition-node
438
+
439
+ portion-relationship =
440
+ <img src="images/portion-relationship.svg" width="577.92">
441
+
442
+ compartment =|
443
+ occurrences-compartment
444
+ | individuals-compartment
445
+ | timeslices-compartment
446
+ | snapshots-compartment
447
+ | sequence-compartment
448
+
449
+ occurrences-compartment =
450
+ <img src="images/occurrences-compartment.svg" width="408.0">
451
+ occurrences-compartment-contents
452
+
453
+ occurrences-compartment-contents = (occurrences-compartment-element)* '…'?
454
+
455
+ occurrences-compartment-element = el-prefix? OccurrenceUsagePrefix usage-cp
456
+
457
+ individuals-compartment =
458
+ <img src="images/individuals-compartment.svg" width="408.0">
459
+ individuals-compartment-contents
460
+
461
+ individuals-compartment-contents = (individuals-compartment-element)* '…'?
462
+
463
+ individuals-compartment-element = occurrences-compartment-element
464
+
465
+ timeslices-compartment =
466
+ <img src="images/timeslices-compartment.svg" width="408.0">
467
+ timeslices-compartment-contents
468
+
469
+ timeslices-compartment-contents = (timeslices-compartment-element)* '…'?
470
+
471
+ timeslices-compartment-element = occurrences-compartment-element
472
+
473
+ snapshots-compartment =
474
+ <img src="images/snapshots-compartment.svg" width="408.0">
475
+ snapshots-compartment-contents
476
+
477
+ snapshots-compartment-contents = (snapshots-compartment-element)* '…'?
478
+
479
+ snapshots-compartment-element = occurrences-compartment-element
480
+
481
+ sequence-compartment =
482
+ <img src="images/sequence-compartment.svg" width="408.0">
483
+ sequence-view
484
+
485
+ sequence-view = (sq-graphical-element)*
486
+
487
+ sq-graphical-element =
488
+ sq-graphical-node
489
+ | sq-graphical-relationship
490
+ | dependencies-and-annotations-element
491
+
492
+ sq-graphical-node = sq-head-node | lifeline
493
+
494
+ sq-head-node = sq-part | sq-port
495
+
496
+ sq-part =
497
+ <img src="images/sq-part.svg" width="233.76">
498
+
499
+ sq-port =
500
+ <img src="images/sq-port.svg" width="168.0">
501
+
502
+ sq-port-label = UsageDeclaration
503
+
504
+ sq-l-node =
505
+ lifeline
506
+ | sq-proxy
507
+
508
+ lifeline =
509
+ <img src="images/lifeline.svg" width="145.91999850000002">
510
+
511
+ sq-proxy =
512
+ <img src="images/sq-proxy-1.svg" width="133.91999850000002">
513
+ |
514
+ <img src="images/sq-proxy-2.svg" width="224.159985">
515
+
516
+ proxy-label = '.'? FeatureChainMember
517
+
518
+ sq-graphical-relationship = message | sq-succession
519
+
520
+ succession-label = UsageDeclaration?
521
+
522
+ sq-succession =
523
+ <img src="images/sq-succession.svg" width="768.0">
524
+
525
+ succession-label = Identification
526
+
527
+ // Note: the proxy nodes attached to a succession must refer to an event
528
+
529
+ // Clause 8.2.3.10 Items Graphical Notation
530
+
531
+ definition-node =| item-def
532
+
533
+ interconnection-element =| item| item-ref
534
+
535
+ item-def =
536
+ <img src="images/item-def.svg" width="318.239985">
537
+
538
+ item-def-name-compartment =
539
+ '«' DefinitionPrefix 'item' 'def' '»'
540
+ definition-name-with-alias
541
+
542
+ usage-node =| item
543
+
544
+ item =
545
+ <img src="images/item.svg" width="318.239985">
546
+
547
+ item-name-compartment =
548
+ '«' OccurrenceUsagePrefix 'item' '»'
549
+ usage-name-with-alias
550
+
551
+ item-ref =
552
+ <img src="images/item-ref.svg" width="318.239985">
553
+
554
+ compartment =| items-compartment
555
+
556
+ items-compartment =
557
+ <img src="images/items-compartment.svg" width="408.0">
558
+ items-compartment-contents
559
+
560
+ items-compartment-contents = (items-compartment-element)* '…'
561
+
562
+ items-compartment-element = el-prefix? OccurrenceUsagePrefix usage-cp
563
+
564
+ // Clause 8.2.3.11 Parts Graphical Notation
565
+
566
+ definition-node =| part-def
567
+
568
+ interconnection-element =| part | part-ref
569
+
570
+ part-def =
571
+ <img src="images/part-def.svg" width="433.91999999999996">
572
+
573
+ part-def-name-compartment =
574
+ '«' DefinitionPrefix 'part' 'def' '»'
575
+ definition-name-with-alias
576
+
577
+ usage-node =| part
578
+
579
+ part =
580
+ <img src="images/part.svg" width="420.0">
581
+
582
+ part-name-compartment =
583
+ '«' OccurrenceUsagePrefix 'part' '»'
584
+ usage-name-with-alias
585
+
586
+ part-ref =
587
+ <img src="images/part-ref.svg" width="420.0">
588
+
589
+ compartment =|
590
+ parts-compartment
591
+ | directed-features-compartment
592
+ | interconnection-compartment
593
+
594
+ parts-compartment =
595
+ <img src="images/parts-compartment.svg" width="408.0">
596
+ parts-compartment-contents
597
+
598
+ parts-compartment-contents = (parts-compartment-element)* '…'?
599
+
600
+ parts-compartment-element = el-prefix? OccurrenceUsagePrefix usage-cp
601
+
602
+ directed-features-compartment =
603
+ <img src="images/directed-features-compartment.svg" width="408.0">
604
+ directed-features-compartment-contents
605
+
606
+ directed-features-compartment-contents = (directed-features-compartment-element)* '…'?
607
+
608
+ directed-features-compartment-element =
609
+ el-prefix FeatureDirection DefinitionBodyItem*
610
+
611
+ interconnection-compartment =
612
+ <img src="images/interconnection-compartment.svg" width="408.0">
613
+ interconnection-view
614
+
615
+ interconnection-view =|
616
+ (interconnection-element)*
617
+ (dependencies-and-annotations-element)*
618
+ (ellipsis-at-lower-left-corner)?
619
+
620
+ general-view =| interconnection-view
621
+
622
+ // Clause 8.2.3.12 Ports Graphical Notation
623
+
624
+ definition-node =| port-def
625
+
626
+ port-def =
627
+ <img src="images/port-def.svg" width="433.91999999999996">
628
+
629
+ port-def-name-compartment =
630
+ '«' DefinitionPrefix 'port' 'def' '»'
631
+ definition-name-with-alias
632
+
633
+ usage-node =| port-usage
634
+
635
+ port-usage =
636
+ <img src="images/port-usage.svg" width="420.0">
637
+
638
+ port-name-compartment =
639
+ '«' OccurrenceUsagePrefix 'port' '»'
640
+ usage-name-with-alias
641
+
642
+ compartment =| ports-compartment
643
+
644
+ ports-compartment =
645
+ <img src="images/ports-compartment.svg" width="408.0">
646
+ ports-compartment-contents
647
+
648
+ ports-compartment-contents = (ports-compartment-element)* '…'?
649
+
650
+ ports-compartment-element = el-prefix? OccurrenceUsagePrefix usage-cp
651
+
652
+ interconnection-element =| port-def | port-usage
653
+
654
+ pdh =
655
+ <img src="images/pdh-1.svg" width="63.8400015">
656
+ |
657
+ <img src="images/pdh-2.svg" width="60.0">
658
+ |
659
+ <img src="images/pdh-3.svg" width="60.0">
660
+
661
+ pdv =
662
+ <img src="images/pdv-1.svg" width="29.759999999999998">
663
+ |
664
+ <img src="images/pdv-2.svg" width="29.759999999999998">
665
+ |
666
+ <img src="images/pdv-3.svg" width="29.759999999999998">
667
+
668
+ port-l =
669
+ <img src="images/port-l-1.svg" width="123.83999699999998">
670
+ |
671
+ <img src="images/port-l-2.svg" width="118.079991">
672
+ |
673
+ <img src="images/port-l-3.svg" width="96.0">
674
+ |
675
+ proxy-v
676
+
677
+ port-r =
678
+ <img src="images/port-r-1.svg" width="123.83999699999998">
679
+ |
680
+ <img src="images/port-r-2.svg" width="145.91999850000002">
681
+ |
682
+ <img src="images/port-r-3.svg" width="99.83999699999998">
683
+ |
684
+ proxy-v
685
+
686
+ port-t =
687
+ <img src="images/port-t-1.svg" width="154.07999999999998">
688
+ |
689
+ <img src="images/port-t-2.svg" width="152.16">
690
+ |
691
+ <img src="images/port-t-3.svg" width="224.159985">
692
+ |
693
+ proxy-h
694
+
695
+ port-b =
696
+ <img src="images/port-b-1.svg" width="152.16">
697
+ |
698
+ <img src="images/port-b-2.svg" width="188.159985">
699
+ |
700
+ <img src="images/port-b-3.svg" width="224.159985">
701
+ |
702
+ proxy-h
703
+
704
+ port-label = QualifiedName (':' QualifiedName)?
705
+
706
+ proxy-v =
707
+ <img src="images/proxy-v-1.svg" width="133.91999850000002">
708
+ |
709
+ <img src="images/proxy-v-2.svg" width="224.159985">
710
+
711
+ proxy-h =
712
+ <img src="images/proxy-h-1.svg" width="138.23999400000002">
713
+ |
714
+ <img src="images/proxy-h-2.svg" width="138.23999400000002">
715
+
716
+ // Note. Dotted line port productions (references) are only possible for nested ports
717
+
718
+ // Note. The proxy option of a port production is valid only on a part usage contained within an interconnection view.
719
+
720
+ // Clause 8.2.3.13 Connections Graphical Notation
721
+
722
+ definition-node =| connection-def
723
+
724
+ connection-def =
725
+ <img src="images/connection-def.svg" width="318.239985">
726
+
727
+ connection-def-name-compartment =
728
+ '«' DefinitionPrefix 'connection' 'def' '»'
729
+ definition-name-with-alias
730
+
731
+ usage-node =| connection
732
+
733
+ connection =
734
+ <img src="images/connection.svg" width="320.15999999999997">
735
+
736
+ connection-name-compartment =
737
+ '«' OccurrenceUsagePrefix 'connection' '»'
738
+ usage-name-with-alias
739
+
740
+ compartment =| connections-compartment
741
+
742
+ connections-compartment =
743
+ <img src="images/connections-compartment.svg" width="408.0">
744
+ connections-compartment-contents
745
+
746
+ connections-compartment-contents = (connections-compartment-element)* '…'?
747
+
748
+ connections-compartment-element =
749
+ el-prefix? OccurrenceUsagePrefix UsageDeclaration
750
+
751
+ interconnection-element =|
752
+ connection-def
753
+ | connection
754
+ | connection-relationship
755
+ | attribute
756
+
757
+ connection-relationship =
758
+ binding-connection
759
+ | connection-graphical
760
+ | n-ary-connection
761
+ | n-ary-connection-def
762
+ | connection-definition-elaboration
763
+ | connection-usage-elaboration
764
+ | connection-def-graphical
765
+
766
+ connection-graphical =
767
+ <img src="images/connection-graphical-1.svg" width="838.0799549999999">
768
+ |
769
+ <img src="images/connection-graphical-2.svg" width="809.760045">
770
+
771
+ c-adornment =
772
+ (a-property | a-direction | a-subsetting |a-redefinition)*
773
+
774
+ a-property =
775
+ 'ordered' | 'nonunique' | 'abstract' | 'derived' | 'readonly'
776
+
777
+ a-direction =
778
+ 'in' | 'out' | 'inout'
779
+
780
+ a-subsetting =
781
+ 'subsets' OwnedSubsetting (',' OwnedSubsetting)*
782
+
783
+ a-redefinition =
784
+ 'redefines' OwnedRedefinition (',' OwnedRedefinition)*
785
+
786
+ connection-end = usage-node | usage-edge
787
+
788
+ usage-edge =| connection-graphical | binding-connection
789
+
790
+ connection-label = UsageDeclaration
791
+
792
+ connection-def-graphical =
793
+ <img src="images/connection-def-graphical-1.svg" width="852.0">
794
+ |
795
+ <img src="images/connection-def-graphical-2.svg" width="785.760045">
796
+
797
+ general-relationship =| connection-def-graphical
798
+
799
+ cdef-label = Identification
800
+
801
+ n-ary-connection-def =
802
+ n-ary-def-connection-dot n-ary-def-segment+
803
+
804
+ n-ary-def-connection-dot =
805
+ <img src="images/n-ary-def-connection-dot.svg" width="180.0">
806
+
807
+ n-ary-def-segment =
808
+ <img src="images/n-ary-def-segment.svg" width="776.1600000000001">
809
+
810
+ definition-node =| n-ary-def-connection-dot
811
+
812
+ general-relationship =| n-ary-def-segment
813
+
814
+ n-ary-connection =
815
+ n-ary-connection-dot n-ary-segment+
816
+
817
+ n-ary-connection-dot =
818
+ <img src="images/n-ary-connection-dot.svg" width="128.16000300000002">
819
+
820
+ usage-node =| n-ary-connection-dot
821
+
822
+ cdot-label = UsageDeclaration
823
+
824
+ n-ary-segment =
825
+ <img src="images/n-ary-segment.svg" width="639.839955">
826
+
827
+ binding-connection =
828
+ <img src="images/binding-connection.svg" width="528.0">
829
+
830
+ rolename = Identification?
831
+
832
+ multiplicity = MultiplicityRange?
833
+
834
+ connection-definition-elaboration =
835
+ <img src="images/connection-definition-elaboration.svg" width="207.84">
836
+
837
+ connection-usage-elaboration =
838
+ <img src="images/connection-usage-elaboration.svg" width="207.84">
839
+
840
+ // Note. The usage-nodes at the ends of a binding-connection must be of compatible types.
841
+
842
+ // Clause 8.2.3.14 Interfaces Graphical Notation
843
+
844
+ definition-node =| interface-def
845
+
846
+ interconnection-element =| interface
847
+
848
+ interface-def =
849
+ <img src="images/interface-def.svg" width="318.239985">
850
+
851
+ interface-def-name-compartment =
852
+ '«' DefinitionPrefix 'interface' 'def' '»'
853
+ definition-name-with-alias
854
+
855
+ usage-node =| interface
856
+
857
+ interface =
858
+ <img src="images/interface.svg" width="320.15999999999997">
859
+
860
+ interface-name-compartment =
861
+ '«' OccurrenceUsagePrefix 'interface' '»'
862
+ usage-name-with-alias
863
+
864
+ compartment =|
865
+ interfaces-compartment
866
+ | ends-compartment
867
+
868
+ interfaces-compartment =
869
+ <img src="images/interfaces-compartment.svg" width="408.0">
870
+ interfaces-compartment-contents
871
+
872
+ interfaces-compartment-contents = (interfaces-compartment-element)* '…'?
873
+
874
+ interfaces-compartment-element =
875
+ el-prefix? OccurrenceUsagePrefix InterfaceUsageDeclaration
876
+
877
+ ends-compartment =
878
+ <img src="images/ends-compartment.svg" width="408.0">
879
+ ends-compartment-contents
880
+
881
+ ends-compartment-contents = (ends-compartment-element)* '…'?
882
+
883
+ ends-compartment-element = QualifiedName (':' QualifiedName)?
884
+
885
+ connection-relationship =|
886
+ interface-connection
887
+
888
+ interface-connection =
889
+ <img src="images/interface-connection.svg" width="780.0">
890
+
891
+ interface-label = UsageDeclaration?
892
+
893
+ // Clause 8.2.3.15 Allocations Graphical Notation
894
+
895
+ definition-node =| allocation-def
896
+
897
+ allocation-def =
898
+ <img src="images/allocation-def.svg" width="318.239985">
899
+
900
+ allocation-def-name-compartment =
901
+ '«' DefinitionPrefix 'allocation' 'def' '»'
902
+ definition-name-with-alias
903
+
904
+ usage-node =| allocation
905
+
906
+ allocation =
907
+ <img src="images/allocation.svg" width="320.15999999999997">
908
+
909
+ allocation-name-compartment =
910
+ '«' OccurrenceUsagePrefix 'allocation' '»'
911
+ usage-name-with-alias
912
+
913
+ compartment =| allocations-compartment
914
+
915
+ allocations-compartment =
916
+ <img src="images/allocations-compartment.svg" width="408.0">
917
+ allocations-compartment-contents
918
+
919
+ allocations-compartment-contents = (allocations-compartment-element)* '…'?
920
+
921
+ allocations-compartment-element =
922
+ el-prefix? OccurrenceUsagePrefix AllocationUsageDeclaration UsageBody*
923
+
924
+ general-relationship =| allocate-relationship
925
+
926
+ allocate-relationship =
927
+ <img src="images/allocate-relationship.svg" width="528.0">
928
+
929
+ allocation-node =
930
+ general-node
931
+ | element-in-textual-compartment
932
+
933
+ usage-edge =| allocate-relationship
934
+
935
+ // Clause 8.2.3.16 Flows Graphical Notation
936
+
937
+ definition-node =| flow-def
938
+
939
+ flow-def =
940
+ <img src="images/flow-def.svg" width="318.239985">
941
+
942
+ flow-def-name-compartment =
943
+ '«' DefinitionPrefix 'succession'? 'flow' 'def' '»'
944
+ definition-name-with-alias
945
+
946
+ usage-node =| flow-node
947
+
948
+ flow-node =
949
+ <img src="images/flow-node.svg" width="320.15999999999997">
950
+
951
+ flow-name-compartment =
952
+ '«' OccurrenceUsagePrefix ( 'message' | 'succession'? 'flow' ) '»'
953
+ usage-name-with-alias
954
+
955
+ compartment =| flows-compartment
956
+
957
+ flows-compartment =
958
+ <img src="images/flows-compartment.svg" width="408.0">
959
+ flows-compartment-contents
960
+
961
+ flows-compartment-contents = (flows-compartment-element)* '...'?
962
+
963
+ flows-compartment-element =
964
+ el-prefix? OccurrenceUsagePrefix
965
+ ( 'message' MessageDeclaration
966
+ | 'succession'? FlowDeclaration
967
+ )
968
+
969
+ interconnection-element =|
970
+ flow-def
971
+ | flow
972
+
973
+ connection-relationship =|
974
+ message-connection
975
+ | flow
976
+ | succession-flow
977
+ | flow-on-connection
978
+
979
+ usage-edge =| message | flow | succession-flow
980
+
981
+ msg-end-node =
982
+ occurrence| sq-l-node| item | part | port | action | state
983
+ | use-case | verification-case | analysis-case | proxy
984
+
985
+ message =
986
+ <img src="images/message.svg" width="773.760045">
987
+
988
+ // Note: proxy nodes and ends of messages must refer to occurrences
989
+
990
+ message-label =
991
+ UsageDeclaration? ('of' FlowPayloadFeatureMember)? | FlowPayloadFeatureMember
992
+
993
+ flow =
994
+ <img src="images/flow.svg" width="776.1600000000001">
995
+
996
+ flow-label =
997
+ UsageDeclaration? ('of' FlowPayloadFeatureMember)? | FlowPayloadFeatureMember
998
+
999
+ flow-end-node =
1000
+ parameter | proxy
1001
+
1002
+ // Note: proxy nodes at ends of flows must refer to directed features
1003
+
1004
+ succession-flow =
1005
+ <img src="images/succession-flow.svg" width="776.1600000000001">
1006
+
1007
+ succession-flow-label = flow-label
1008
+
1009
+ flow-on-connection =
1010
+ <img src="images/flow-on-connection.svg" width="558.24">
1011
+
1012
+ flow-node =
1013
+ flow-node-r
1014
+ | flow-node-l
1015
+ | sflow-node-r
1016
+ | sflow-node-l
1017
+ | message-node-r
1018
+ | message-node-l
1019
+
1020
+ flow-node-r =
1021
+ <img src="images/flow-node-r.svg" width="99.83999699999998">
1022
+
1023
+ flow-node-l =
1024
+ <img src="images/flow-node-l.svg" width="101.759994">
1025
+
1026
+ sflow-node-r =
1027
+ <img src="images/sflow-node-r.svg" width="145.91999850000002">
1028
+
1029
+ sflow-node-l =
1030
+ <img src="images/sflow-node-l.svg" width="145.91999850000002">
1031
+
1032
+ message-node-r =
1033
+ <img src="images/message-node-r.svg" width="120.0">
1034
+
1035
+ message-node-l =
1036
+ <img src="images/message-node-l.svg" width="106.079991">
1037
+
1038
+ flow-label =
1039
+ Identification | FlowPayloadFeatureMember
1040
+
1041
+ // Clause 8.2.3.17 Actions Graphical Notation
1042
+
1043
+ definition-node =| action-def
1044
+
1045
+ action-def =
1046
+ <img src="images/action-def.svg" width="476.15999999999997">
1047
+
1048
+ action-def-name-compartment =
1049
+ '«' DefinitionPrefix 'action' 'def' '»'
1050
+ definition-name-with-alias
1051
+
1052
+ usage-node =|
1053
+ action
1054
+ | perform-action-usage
1055
+
1056
+ action =
1057
+ <img src="images/action.svg" width="430.08000000000004">
1058
+
1059
+ action-name-compartment =
1060
+ '«' OccurrenceUsagePrefix 'action' '»'
1061
+ usage-name-with-alias
1062
+
1063
+ perform-action-usage =
1064
+ <img src="images/perform-action-usage.svg" width="425.76">
1065
+
1066
+ action-ref =
1067
+ <img src="images/action-ref.svg" width="430.08000000000004">
1068
+
1069
+ perform-action-name-compartment =
1070
+ '«' OccurrenceUsagePrefix 'perform' 'action' '»'
1071
+ usage-name-with-alias
1072
+
1073
+ compartment =|
1074
+ actions-compartment
1075
+ | perform-actions-compartment
1076
+ | parameters-compartment
1077
+ | action-flow-compartment
1078
+
1079
+ actions-compartment =
1080
+ <img src="images/actions-compartment.svg" width="408.0">
1081
+ actions-compartment-contents
1082
+
1083
+ actions-compartment-contents = (actions-compartment-element)* '…'?
1084
+
1085
+ actions-compartment-element =
1086
+ el-prefix? OccurrenceUsagePrefix ActionUsageDeclaration
1087
+
1088
+ perform-actions-compartment =
1089
+ <img src="images/perform-actions-compartment.svg" width="408.0">
1090
+ perform-actions-compartment-contents
1091
+
1092
+ perform-actions-compartment-contents = (perform-actions-compartment-element)* '…'?
1093
+
1094
+ perform-actions-compartment-element =
1095
+ el-prefix? OccurrenceUsagePrefix PerformActionUsageDeclaration
1096
+
1097
+ parameters-compartment =
1098
+ <img src="images/parameters-compartment.svg" width="408.0">
1099
+ parameters-compartment-contents
1100
+
1101
+ parameters-compartment-contents = (parameters-compartment-element)* '…'?
1102
+
1103
+ parameters-compartment-element =
1104
+ el-prefix? FeatureDirection UsageDeclaration ValueOrFlowPart? DefinitionBodyItem*
1105
+
1106
+ performed-by-compartment =
1107
+ <img src="images/performed-by-compartment.svg" width="408.0">
1108
+ performed-by-compartment-contents
1109
+
1110
+ performed-by-compartment-contents = QualifiedName* '…'?
1111
+
1112
+ action-flow-compartment =
1113
+ <img src="images/action-flow-compartment.svg" width="408.0">
1114
+ action-flow-view
1115
+
1116
+ action-flow-view =
1117
+ (dependencies-and-annotations-element)*
1118
+ (action-flow-element)*
1119
+ (perform-action-swimlanes)?
1120
+
1121
+ action-flow-element =|
1122
+ action-ref
1123
+ | action
1124
+ | action-flow-node
1125
+ | action-flow-relationship
1126
+
1127
+ action-flow-node =
1128
+ start-node
1129
+ | done-node
1130
+ | terminate-node
1131
+ | fork-node
1132
+ | join-node
1133
+ | decision-node
1134
+ | merge-node
1135
+ | send-action-node
1136
+ | accept-action-node
1137
+ | while-loop-action-node
1138
+ | for-loop-action-node
1139
+ | if-else-action-node
1140
+ | assign-action-node
1141
+
1142
+ action-flow-relationship =
1143
+ flow
1144
+ | aflow-succession
1145
+ | binding-connection
1146
+ | else-branch
1147
+
1148
+ param-l =
1149
+ <img src="images/param-l-1.svg" width="154.07999999999998">
1150
+ |
1151
+ <img src="images/param-l-2.svg" width="145.91999850000002">
1152
+ |
1153
+ proxy-v
1154
+
1155
+ param-r =
1156
+ <img src="images/param-r-1.svg" width="156.0">
1157
+ |
1158
+ <img src="images/param-r-2.svg" width="152.16">
1159
+ |
1160
+ proxy-v
1161
+
1162
+ param-t =
1163
+ <img src="images/param-t-1.svg" width="181.92000000000002">
1164
+ |
1165
+ <img src="images/param-t-2.svg" width="219.84">
1166
+ |
1167
+ proxy-h
1168
+
1169
+ param-b =
1170
+ <img src="images/param-b-1.svg" width="178.07999999999998">
1171
+ |
1172
+ <img src="images/param-b-2.svg" width="224.159985">
1173
+ |
1174
+ proxy-h
1175
+
1176
+ param-label = QualifiedName (':' QualifiedName)*
1177
+
1178
+ start-node =
1179
+ <img src="images/start-node.svg" width="61.91999849999999">
1180
+
1181
+ done-node =
1182
+ <img src="images/done-node.svg" width="68.1599985">
1183
+
1184
+ terminate-node =
1185
+ <img src="images/terminate-node.svg" width="36.0">
1186
+
1187
+ fork-node =
1188
+ <img src="images/fork-node.svg" width="92.1599985">
1189
+
1190
+ join-node =
1191
+ <img src="images/join-node.svg" width="92.1599985">
1192
+
1193
+ decision-node =
1194
+ <img src="images/decision-node.svg" width="60.0">
1195
+
1196
+ merge-node =
1197
+ <img src="images/merge-node.svg" width="60.0">
1198
+
1199
+ send-action-node =
1200
+ <img src="images/send-action-node.svg" width="430.08000000000004">
1201
+
1202
+ send-action-name-compartment =
1203
+ '«' OccurrenceUsagePrefix 'send' 'action' '»'
1204
+ usage-name-with-alias
1205
+
1206
+ send-action-expression = NodeParameterMember 'to' NodeParameterMember
1207
+
1208
+ accept-action-node =
1209
+ <img src="images/accept-action-node.svg" width="430.08000000000004">
1210
+
1211
+ accept-action-name-compartment =
1212
+ '«' OccurrenceUsagePrefix 'accept' 'action' '»'
1213
+ usage-name-with-alias
1214
+
1215
+ accept-action-expression = AcceptParameterPart
1216
+
1217
+ while-loop-action-node =
1218
+ <img src="images/while-loop-action-node.svg" width="396.0">
1219
+
1220
+ while-condition =
1221
+ <img src="images/while-condition.svg" width="408.0">
1222
+ condition-expression
1223
+
1224
+ until-condition =
1225
+ <img src="images/until-condition.svg" width="408.0">
1226
+ condition-expression
1227
+
1228
+ while-loop-action-name-compartment =
1229
+ '«' OccurrenceUsagePrefix 'loop' '»'
1230
+ usage-name-with-alias
1231
+
1232
+ for-loop-action-node =
1233
+ <img src="images/for-loop-action-node.svg" width="409.91999999999996">
1234
+
1235
+ iteration =
1236
+ <img src="images/iteration.svg" width="408.0">
1237
+ iteration-expression
1238
+
1239
+ loop-body =
1240
+ <img src="images/loop-body.svg" width="408.0">
1241
+ action-body
1242
+
1243
+ for-loop-action-name-compartment =
1244
+ '«' OccurrenceUsagePrefix 'loop' '»'
1245
+ usage-name-with-alias
1246
+
1247
+ if-else-action-node =
1248
+ <img src="images/if-else-action-node.svg" width="430.08000000000004">
1249
+
1250
+ if-condition =
1251
+ <img src="images/if-condition.svg" width="408.0">
1252
+ condition-expression
1253
+
1254
+ then-body =
1255
+ <img src="images/then-body.svg" width="408.0">
1256
+ action-body
1257
+
1258
+ else-body =
1259
+ <img src="images/else-body.svg" width="408.0">
1260
+ action-body
1261
+
1262
+ ifelse-action-name-compartment =
1263
+ '«' OccurrenceUsagePrefix 'if' '»'
1264
+ usage-name-with-alias
1265
+
1266
+ action-body =
1267
+ action-body-textual | action-flow-view
1268
+
1269
+ condition-expression =
1270
+ ExpressionParameterMember
1271
+
1272
+ iteration-expression =
1273
+ ForVariableDeclarationMember 'in' NodeParameterMember
1274
+
1275
+ action-body-textual =
1276
+ ActionBodyParameterMember
1277
+
1278
+ assign-action-node =
1279
+ <img src="images/assign-action-node.svg" width="430.08000000000004">
1280
+
1281
+ assign-action-name-compartment =
1282
+ '«' OccurrenceUsagePrefix 'assign' '»'
1283
+ usage-name-with-alias
1284
+
1285
+ perform-actions-swimlanes = (swimlane)*
1286
+
1287
+ swimlane =
1288
+ <img src="images/swimlane.svg" width="180.0">
1289
+
1290
+ parameter =
1291
+ param-l | param-r | param-t | param-b
1292
+
1293
+ aflow-succession =
1294
+ <img src="images/aflow-succession.svg" width="522.24">
1295
+
1296
+ else-branch =
1297
+ <img src="images/else-branch.svg" width="522.24">
1298
+
1299
+ perform-edge =
1300
+ <img src="images/perform-edge.svg" width="522.24">
1301
+
1302
+ performer-node = part | action | part-def | action-def | distinguished-parameter
1303
+
1304
+ usage-edge =| succession perform-edge
1305
+
1306
+ guard-expression = '[' OwnedExpression ']'
1307
+
1308
+ // Note. All swimlanes are attached to each other on vertical edges and aligned along the top and bottom horizontal edges.
1309
+
1310
+ // Note. The proxy option of a parameter production is valid only on an action usage contained within an action flow view.
1311
+
1312
+ // Clause 8.2.3.18 States Graphical Notation
1313
+
1314
+ definition-node =| state-def
1315
+
1316
+ state-def =
1317
+ <img src="images/state-def.svg" width="318.239985">
1318
+
1319
+ state-def-name-compartment =
1320
+ '«' DefinitionPrefix 'state' 'def' '»'
1321
+ definition-name-with-alias
1322
+ ('«' 'parallel' '»')?
1323
+
1324
+ usage-node =|
1325
+ state
1326
+ | exhibit-state-usage
1327
+
1328
+ state =
1329
+ <img src="images/state.svg" width="318.239985">
1330
+
1331
+ state-ref =
1332
+ <img src="images/state-ref.svg" width="318.239985">
1333
+
1334
+ state-name-compartment =
1335
+ '«' OccurrenceUsagePrefix 'state' '»'
1336
+ usage-name-with-alias
1337
+ ('«' 'parallel' '»')?
1338
+
1339
+ exhibit-state-usage =
1340
+ <img src="images/exhibit-state-usage.svg" width="425.76">
1341
+
1342
+ state-subaction-body = state-subaction-body-textual | action-flow-view
1343
+
1344
+ state-subaction-body-textual = state-subaction-declaration? ( '{' ActionBodyItem* '}' )?
1345
+
1346
+ state-subaction-declaration =
1347
+ PerformActionUsageDeclaration
1348
+ | AcceptNodeDeclaration
1349
+ | SendNodeDeclaration
1350
+ | AssignmentNodeDeclaration
1351
+
1352
+ state-do-action =
1353
+ <img src="images/state-do-action.svg" width="408.0">
1354
+ state-subaction-body
1355
+
1356
+ state-entry-action =
1357
+ <img src="images/state-entry-action.svg" width="408.0">
1358
+ state-subaction-body
1359
+
1360
+ state-exit-action =
1361
+ <img src="images/state-exit-action.svg" width="408.0">
1362
+ state-subaction-body
1363
+
1364
+ entry-action =
1365
+ <img src="images/entry-action-1.svg" width="51.8400015">
1366
+ |
1367
+ <img src="images/entry-action-2.svg" width="430.08000000000004">
1368
+
1369
+ entry-action-name-comp =
1370
+ '«' 'entry' OccurrenceUsagePrefix 'action' '»'
1371
+ usage-name-with-alias
1372
+
1373
+ exit-action =
1374
+ <img src="images/exit-action.svg" width="430.08000000000004">
1375
+
1376
+ exit-action-name-comp =
1377
+ '«' 'exit' OccurrenceUsagePrefix 'action' '»'
1378
+ usage-name-with-alias
1379
+
1380
+ do-action =
1381
+ <img src="images/do-action.svg" width="430.08000000000004">
1382
+
1383
+ do-action-name-comp =
1384
+ '«' 'do' OccurrenceUsagePrefix 'action' '»'
1385
+ usage-name-with-alias
1386
+
1387
+ exhibit-state-name-compartment =
1388
+ '«exhibit-state»'
1389
+ state-name-compartment
1390
+
1391
+ compartment =|
1392
+ states-compartment
1393
+ | state-actions-compartment
1394
+ | exhibit-states-compartment
1395
+ | successions-compartment
1396
+ | state-transition-compartment
1397
+
1398
+ states-compartment =
1399
+ <img src="images/states-compartment.svg" width="408.0">
1400
+ states-compartment-contents
1401
+
1402
+ states-compartment-contents = (states-compartment-element)* '…'?
1403
+
1404
+ states-compartment-element =
1405
+ el-prefix? OccurrenceUsagePrefix ActionUsageDeclaration
1406
+
1407
+ state-actions-compartment =
1408
+ <img src="images/state-actions-compartment.svg" width="408.0">
1409
+ state-actions-compartment-contents
1410
+
1411
+ state-actions-compartment-contents = (state-actions-compartment-element)* '…'?
1412
+
1413
+ state-actions-compartment-element =
1414
+ el-prefix? EntryActionMember | DoActionMember | ExitActionMember
1415
+
1416
+ exhibit-states-compartment =
1417
+ <img src="images/exhibit-states-compartment.svg" width="408.0">
1418
+ exhibit-states-compartment-contents
1419
+
1420
+ exhibit-states-compartment-contents = exhibit-state-scompartment-element* '…'?
1421
+
1422
+ exhibit-states-compartment-element-compartment = UsageDeclaration
1423
+
1424
+ successions-compartment =
1425
+ <img src="images/successions-compartment.svg" width="408.0">
1426
+ successions-compartment-contents
1427
+
1428
+ successions-compartment-contents = QualifiedName* '…'?
1429
+
1430
+ state-transition-compartment =
1431
+ <img src="images/state-transition-compartment.svg" width="408.0">
1432
+ state-transition-view
1433
+
1434
+ state-transition-view =
1435
+ (state-transition-element)*
1436
+ (dependencies-and-annotations-element)*
1437
+
1438
+ state-transition-element =
1439
+ state-transition-node
1440
+ | transition
1441
+ | st-succession
1442
+
1443
+ state-transition-node =
1444
+ state
1445
+ | state-ref
1446
+ | start-node
1447
+ | entry-action
1448
+ | do-action
1449
+ | exit-action
1450
+ | done-node
1451
+ | fork-node
1452
+ | join-node
1453
+ | decision-node
1454
+ | merge-node
1455
+ | terminate-node
1456
+ | action
1457
+ | perform-action-usage
1458
+ | action-ref
1459
+
1460
+ transition =
1461
+ <img src="images/transition-1.svg" width="649.92">
1462
+ |
1463
+ <img src="images/transition-2.svg" width="649.92">
1464
+
1465
+ state-source =
1466
+ state | state-ref
1467
+
1468
+ transition-label = trigger-expression '/' ActionUsage
1469
+
1470
+ trigger-expression = AcceptParameterPart (guard-expression)?
1471
+
1472
+ st-succession =
1473
+ <img src="images/st-succession-1.svg" width="675.839955">
1474
+ |
1475
+ <img src="images/st-succession-2.svg" width="684.0">
1476
+
1477
+ exhibit-edge =
1478
+ <img src="images/exhibit-edge.svg" width="492.0">
1479
+
1480
+ exhibitor = part | part-def
1481
+
1482
+ general-relationship =| exhibit-edge
1483
+
1484
+ usage-edge =| transition | st-succession | exhibit-edge
1485
+
1486
+ // Clause 8.2.3.19 Calculations Graphical Notation
1487
+
1488
+ definition-node =| calc-def
1489
+
1490
+ calc-def =
1491
+ <img src="images/calc-def.svg" width="476.15999999999997">
1492
+
1493
+ calc-def-name-compartment =
1494
+ '«' DefinitionPrefix 'calc' 'def' '»'
1495
+ definition-name-with-alias
1496
+
1497
+ usage-node =| calc
1498
+
1499
+ calc =
1500
+ <img src="images/calc.svg" width="430.08000000000004">
1501
+
1502
+ calc-name-compartment =
1503
+ '«' OccurrenceUsagePrefix 'calc' '»'
1504
+ usage-name-with-alias
1505
+
1506
+ action-flow-element =|
1507
+ calc-def
1508
+ | calc
1509
+
1510
+ compartment =|
1511
+ calcs-compartment
1512
+ | result-compartment
1513
+
1514
+ calcs-compartment =
1515
+ <img src="images/calcs-compartment.svg" width="408.0">
1516
+ calcs-compartment-contents
1517
+
1518
+ calcs-compartment-contents = calcs-compartment-element* '…'?
1519
+
1520
+ calcs-compartment-element = el-prefix? OccurrenceUsagePrefix ActionUsageDeclaration
1521
+
1522
+ result-compartment =
1523
+ <img src="images/result-compartment.svg" width="408.0">
1524
+ result-compartment-contents
1525
+
1526
+ result-compartment-contents = OwnedExpression
1527
+
1528
+ // Clause 8.2.3.20 Constraints Graphical Notation
1529
+
1530
+ definition-node =| constraint-def
1531
+
1532
+ constraint-def =
1533
+ <img src="images/constraint-def.svg" width="476.15999999999997">
1534
+
1535
+ constraint-def-name-compartment =
1536
+ '«' DefinitionPrefix 'constraint' 'def' '»'
1537
+ definition-name-with-alias
1538
+
1539
+ usage-node =
1540
+ constraint
1541
+ | assert-constraint-node
1542
+
1543
+ constraint =
1544
+ <img src="images/constraint.svg" width="430.08000000000004">
1545
+
1546
+ constraint-ref =
1547
+ <img src="images/constraint-ref.svg" width="430.08000000000004">
1548
+
1549
+ constraint-name-compartment =
1550
+ '«' OccurrenceUsagePrefix 'constraint' '»'
1551
+ usage-name-with-alias
1552
+
1553
+ assert-constraint-node =
1554
+ <img src="images/assert-constraint-node.svg" width="425.76">
1555
+
1556
+ assert-constraint-name-compartment =
1557
+ '«assert constraint»'
1558
+ constraint-name-compartment
1559
+
1560
+ assume-constraint-node =
1561
+ <img src="images/assume-constraint-node.svg" width="384.0">
1562
+
1563
+ assume-constraint-name-compartment =
1564
+ '«' OccurrenceUsagePrefix 'assume' 'constraint' '»'
1565
+ usage-name-with-alias
1566
+
1567
+ usage-node =| assume-constraint-node | assert-constraint-node
1568
+
1569
+ assume-edge =
1570
+ <img src="images/assume-edge.svg" width="505.91999999999996">
1571
+
1572
+ assumer = requirement | requirement-def
1573
+
1574
+ general-relationship =| assume-edge
1575
+
1576
+ assert-edge =
1577
+ <img src="images/assert-edge.svg" width="505.91999999999996">
1578
+
1579
+ assertor = usage-node | definition-node
1580
+
1581
+ general-relationship =| assert-edge
1582
+
1583
+ compartment =|
1584
+ constraints-compartment
1585
+ | assert-constraints-compartment
1586
+
1587
+ constraints-compartment =
1588
+ <img src="images/constraints-compartment.svg" width="408.0">
1589
+ constraints-compartment-contents
1590
+
1591
+ constraints-compartment-contents = (constraints-usage-compartment-element)* '…'?
1592
+
1593
+ constraints-usage-compartment-element =
1594
+ el-prefix? OccurrenceUsagePrefix ConstraintUsageDeclaration CalculationBody*
1595
+
1596
+ assert-constraints-compartment =
1597
+ <img src="images/assert-constraints-compartment.svg" width="408.0">
1598
+ assert-constraints-compartment-contents
1599
+
1600
+ assert-constraints-compartment-contents = (assert-constraints-compartment-element)* '…'?
1601
+
1602
+ assert-constraints-compartment-element =
1603
+ el-prefix? OccurrenceUsagePrefix ( 'not' )?
1604
+ ( OwnedSubsetting FeatureSpecializationPart? | UsageDeclaration )
1605
+ CalculationUsageParameterPart CalculationBody
1606
+
1607
+ interconnection-element =|
1608
+ constraint-ref
1609
+ | constraint
1610
+
1611
+ // Clause 8.2.3.21 Requirements Graphical Notation
1612
+
1613
+ definition-node =|
1614
+ requirement-def
1615
+ | concern-def
1616
+
1617
+ requirement-def =
1618
+ <img src="images/requirement-def.svg" width="476.15999999999997">
1619
+
1620
+ requirement-def-name-compartment =
1621
+ '«' DefinitionPrefix 'requirement' 'def' '»'
1622
+ definition-name-with-alias
1623
+
1624
+ usage-node =
1625
+ requirement
1626
+ | satisfy-requirement-usage
1627
+ | concern
1628
+
1629
+ requirement =
1630
+ <img src="images/requirement.svg" width="430.08000000000004">
1631
+
1632
+ requirement-ref =
1633
+ <img src="images/requirement-ref.svg" width="430.08000000000004">
1634
+
1635
+ requirement-name-compartment =
1636
+ '«' OccurrenceUsagePrefix 'requirement' '»'
1637
+ usage-name-with-alias
1638
+
1639
+ satisfy-requirement-usage =
1640
+ <img src="images/satisfy-requirement-usage.svg" width="425.76">
1641
+
1642
+ satisfy-requirement-name-compartment =
1643
+ '«satisfy requirement»'
1644
+ requirement-name-compartment
1645
+
1646
+ concern-def =
1647
+ <img src="images/concern-def.svg" width="318.239985">
1648
+
1649
+ concern-def-name-compartment =
1650
+ '«' DefinitionPrefix 'concern' 'def' '»'
1651
+ definition-name-with-alias
1652
+
1653
+ concern =
1654
+ <img src="images/concern.svg" width="318.239985">
1655
+
1656
+ concern-name-compartment =
1657
+ '«' OccurrenceUsagePrefix 'concern' '»'
1658
+ usage-name-with-alias
1659
+
1660
+ compartment =|
1661
+ constraints-compartment
1662
+ | assert-constraints-compartment
1663
+
1664
+ compartment =|
1665
+ requirements-compartment
1666
+ | require-constraints-compartment
1667
+ | assume-constraints-compartment
1668
+ | satisfy-requirements-compartment
1669
+ | satisfies-compartment
1670
+ | actors-compartment
1671
+ | subject-compartment
1672
+ | stakeholders-compartment
1673
+ | frames-compartment
1674
+
1675
+ requirements-compartment =
1676
+ <img src="images/requirements-compartment.svg" width="408.0">
1677
+ requirements-compartment-contents
1678
+
1679
+ requirements-compartment-contents = (requirements-compartment-element)* '…'?
1680
+
1681
+ requirements-compartment-element =
1682
+ OccurrenceUsagePrefix ConstraintUsageDeclaration
1683
+
1684
+ require-constraints-compartment =
1685
+ <img src="images/require-constraints-compartment.svg" width="408.0">
1686
+ require-constraints-compartment-contents
1687
+
1688
+ require-constraints-compartment-contents = require-constraint-element* '…'?
1689
+
1690
+ require-constraint-element =
1691
+ el-prefix? requireMemberPrefix? RequirementConstraintUsage
1692
+
1693
+ assume-constraints-compartment =
1694
+ <img src="images/assume-constraints-compartment.svg" width="408.0">
1695
+ assume-constraints-compartment-contents
1696
+
1697
+ assume-constraints-compartment-contents = require-constraint-element* '…'?
1698
+
1699
+ satisfy-requirements-compartment =
1700
+ <img src="images/satisfy-requirements-compartment.svg" width="408.0">
1701
+ satisfy-requirements-compartment-contents
1702
+
1703
+ satisfy-requirements-compartment-contents = text-block
1704
+
1705
+ satisfies-compartment =
1706
+ <img src="images/satisfies-compartment.svg" width="408.0">
1707
+ satisfies-compartment-contents
1708
+
1709
+ satisfies-compartment-contents = UsageDeclaration* '…'?
1710
+
1711
+ actors-compartment =
1712
+ <img src="images/actors-compartment.svg" width="408.0">
1713
+ actors-compartment-contents
1714
+
1715
+ actors-compartment-contents = (actors-compartment-element)* '…'?
1716
+
1717
+ actors-compartment-element = el-prefix? MemberPrefix usage-cp
1718
+
1719
+ subject-compartment =
1720
+ <img src="images/subject-compartment.svg" width="408.0">
1721
+ subject-compartment-contents
1722
+
1723
+ subject-compartment-contents = (subject-compartment-element)* '…'?
1724
+
1725
+ subject-compartment-element = el-prefix? MemberPrefix usage-cp
1726
+
1727
+ stakeholders-compartment =
1728
+ <img src="images/stakeholders-compartment.svg" width="408.0">
1729
+ stakeholders-compartment-contents
1730
+
1731
+ stakeholders-compartment-contents = (stakeholders-compartment-element)* '…'?
1732
+
1733
+ stakeholders-compartment-element = el-prefix? MemberPrefix usage-cp
1734
+
1735
+ frames-compartment =
1736
+ <img src="images/frames-compartment.svg" width="408.0">
1737
+ frames-compartment-contents
1738
+
1739
+ frames-compartment-contents = (frames-compartment-element)* '…'?
1740
+
1741
+ frames-compartment-element = el-prefix* MemberPrefix? FramedConcernUsage
1742
+
1743
+ concerns-compartment =
1744
+ <img src="images/concerns-compartment.svg" width="408.0">
1745
+ concerns-compartment-contents
1746
+
1747
+ interconnection-element =|
1748
+ requirement-ref
1749
+ | requirement
1750
+ | concern
1751
+ | distinguished-parameter
1752
+ | distinguished-parameter-link
1753
+ | concern-stakeholder-link
1754
+
1755
+ general-relationship =| frame-relationship
1756
+
1757
+ subject-actors-stakeholders-node =| requirement
1758
+
1759
+ distinguished-parameter =
1760
+ subject
1761
+ | actor
1762
+ | stakeholder
1763
+
1764
+ subject =
1765
+ <img src="images/subject.svg" width="178.07999999999998">
1766
+
1767
+ actor =
1768
+ <img src="images/actor-1.svg" width="94.0799955">
1769
+ |
1770
+ <img src="images/actor-2.svg" width="176.16">
1771
+
1772
+ stakeholder =
1773
+ <img src="images/stakeholder.svg" width="178.07999999999998">
1774
+
1775
+ subject-name = UsageDeclaration
1776
+
1777
+ actor-name = UsageDeclaration
1778
+
1779
+ stakeholder-name = UsageDeclaration
1780
+
1781
+ distinguished-parameter-link =
1782
+ <img src="images/distinguished-parameter-link.svg" width="666.24">
1783
+
1784
+ frame-relationship =
1785
+ <img src="images/frame-relationship.svg" width="507.84000000000003">
1786
+
1787
+ concern-stakeholder-link =
1788
+ <img src="images/concern-stakeholder-link.svg" width="372.0">
1789
+
1790
+ satisfy-edge =
1791
+ <img src="images/satisfy-edge.svg" width="505.91999999999996">
1792
+
1793
+ satisfier = usage-node | definition-node
1794
+
1795
+ general-relationship =| satisfy-edge
1796
+
1797
+ require-edge =
1798
+ <img src="images/require-edge.svg" width="505.91999999999996">
1799
+
1800
+ requirer = usage-node | definition-node
1801
+
1802
+ general-relationship =| require-edge
1803
+
1804
+ require-constraint-node =
1805
+ <img src="images/require-constraint-node.svg" width="384.0">
1806
+
1807
+ require-constraint-name-compartment =
1808
+ '«' OccurrenceUsagePrefix 'require' 'constraint' '»'
1809
+ usage-name-with-alias
1810
+
1811
+ usage-node =| require-constraint-node
1812
+
1813
+ frame-concern-node =
1814
+ <img src="images/frame-concern-node.svg" width="384.0">
1815
+
1816
+ frame-concern-name-compartment =
1817
+ '«' OccurrenceUsagePrefix 'frame' 'concern' '»'
1818
+ usage-name-with-alias
1819
+
1820
+ usage-node =| frame-concern-node
1821
+
1822
+ frame-edge =
1823
+ <img src="images/frame-edge.svg" width="452.15999999999997">
1824
+
1825
+ framer = requirement | requirement-def | viewpoint | viewpoint-def
1826
+
1827
+ general-relationship =| frame-edge
1828
+
1829
+ // Clause 8.2.3.22 Cases Graphical Notation
1830
+
1831
+ compartment =| objective-compartment
1832
+
1833
+ objective-compartment =
1834
+ <img src="images/objective-compartment.svg" width="408.0">
1835
+ objective-compartment-contents
1836
+
1837
+ objective-compartment-contents = (objective-compartment-element)* '…'?
1838
+
1839
+ objective-compartment-element =
1840
+ comp-prefix? MemberPrefix ConstraintUsageDeclaration RequirementBody
1841
+
1842
+ // Clause 8.2.3.23 Analysis Cases Graphical Notation
1843
+
1844
+ definition-node =| analysis-def
1845
+
1846
+ analysis-def =
1847
+ <img src="images/analysis-def.svg" width="476.15999999999997">
1848
+
1849
+ analysis-def-name-compartment =
1850
+ '«' DefinitionPrefix 'analysis' 'def' '»'
1851
+ definition-name-with-alias
1852
+
1853
+ usage-node =| analysis
1854
+
1855
+ analysis =
1856
+ <img src="images/analysis.svg" width="430.08000000000004">
1857
+
1858
+ analysis-name-compartment =
1859
+ '«' OccurrenceUsagePrefix 'analysis' '»'
1860
+ usage-name-with-alias
1861
+
1862
+ compartment =| analyses-compartment
1863
+
1864
+ analyses-compartment =
1865
+ <img src="images/analyses-compartment.svg" width="408.0">
1866
+ analyses-compartment-contents
1867
+
1868
+ analyses-compartment-contents = analyses-compartment-element* '…'?
1869
+
1870
+ analyses-compartment-element =
1871
+ el-prefix? OccurrenceUsagePrefix ConstraintUsageDeclaration CaseBody
1872
+
1873
+ action-flow-element =|
1874
+ analysis-def
1875
+ | analysis
1876
+
1877
+ subject-actors-stakeholders-node =| analysis | analysis-def
1878
+
1879
+ // Clause 8.2.3.24 Verification Cases Graphical Notation
1880
+
1881
+ definition-node =| verification-def
1882
+
1883
+ verification-def =
1884
+ <img src="images/verification-def.svg" width="476.15999999999997">
1885
+
1886
+ verification-def-name-compartment =
1887
+ '«' DefinitionPrefix 'verification' 'def' '»'
1888
+ definition-name-with-alias
1889
+
1890
+ usage-node =| verification
1891
+
1892
+ verification =
1893
+ <img src="images/verification.svg" width="430.08000000000004">
1894
+
1895
+ verification-name-compartment =
1896
+ '«' OccurrenceUsagePrefix 'verification' '»'
1897
+ usage-name-with-alias
1898
+
1899
+ verify-requirement-node =
1900
+ <img src="images/verify-requirement-node.svg" width="384.0">
1901
+
1902
+ verify-requirement-name-compartment =
1903
+ '«' OccurrenceUsagePrefix 'verify' 'requirement' '»'
1904
+ usage-name-with-alias
1905
+
1906
+ usage-node =| verify-requirement-node
1907
+
1908
+ compartment =|
1909
+ verifications-compartment
1910
+ | verifies-compartment
1911
+ | verification-methods-compartment
1912
+
1913
+ verifications-compartment =
1914
+ <img src="images/verifications-compartment.svg" width="408.0">
1915
+ verifications-compartment-contents
1916
+
1917
+ verifications-compartment-contents = (verifications-compartment-element)* '…'?
1918
+
1919
+ verifications-compartment-element =
1920
+ el-prefix? OccurrenceUsagePrefix ConstraintUsageDeclaration CaseBody '…'
1921
+
1922
+ verifies-compartment =
1923
+ <img src="images/verifies-compartment.svg" width="408.0">
1924
+ verifies-compartment-contents
1925
+
1926
+ verifies-compartment-contents = (verifies-compartment-element)* '…'?
1927
+
1928
+ verifies-compartment-element = el-prefix? MemberPrefix RequirementVerificationUsage '…'
1929
+
1930
+ verification-methods-compartment =
1931
+ <img src="images/verification-methods-compartment.svg" width="408.0">
1932
+ verification-methods-compartment-contents
1933
+
1934
+ verification-methods-compartment-contents = (verification-methods-compartment-element)* '…'?
1935
+
1936
+ verification-methods-compartment-element = MetadataBody
1937
+
1938
+ action-flow-element =|
1939
+ verification-def
1940
+ | verification
1941
+
1942
+ general-relationship =| verify-relationship
1943
+
1944
+ verify-relationship =
1945
+ <img src="images/verify-relationship.svg" width="522.24">
1946
+
1947
+ subject-actors-stakeholders-node =| verification | verification-def
1948
+
1949
+ // Clause 8.2.3.25 Use Cases Graphical Notation
1950
+
1951
+ definition-node =| use-case-def
1952
+
1953
+ use-case-def =
1954
+ <img src="images/use-case-def.svg" width="476.15999999999997">
1955
+
1956
+ use-case-def-name-compartment =
1957
+ '«' DefinitionPrefix 'use' 'case' 'def' '»'
1958
+ definition-name-with-alias
1959
+
1960
+ usage-node =|
1961
+ use-case
1962
+ | include-use-case-usage
1963
+
1964
+ use-case =
1965
+ <img src="images/use-case.svg" width="430.08000000000004">
1966
+
1967
+ use-case-name-compartment =
1968
+ '«' OccurrenceUsagePrefix 'use' 'case' '»'
1969
+ usage-name-with-alias
1970
+
1971
+ include-use-case-usage =
1972
+ <img src="images/include-use-case-usage.svg" width="394.08000000000004">
1973
+
1974
+ include-use-case-name-compartment =
1975
+ '«include use case»'
1976
+ requirement-name-compartment
1977
+
1978
+ compartment =|
1979
+ use-cases-compartment
1980
+ | include-actions-compartment
1981
+ | includes-compartment
1982
+
1983
+ use-cases-compartment =
1984
+ <img src="images/use-cases-compartment.svg" width="408.0">
1985
+ use-cases-compartment-contents
1986
+
1987
+ use-cases-compartment-contents = use-cases-compartment-element* '…'?
1988
+
1989
+ use-cases-compartment-element = el-prefix? OccurrenceUsagePrefix ConstraintUsageDeclaration
1990
+
1991
+ include-use-cases-compartment =
1992
+ <img src="images/include-use-cases-compartment.svg" width="408.0">
1993
+ include-use-cases-compartment-contents
1994
+
1995
+ include-use-cases-compartment-contents = (include-use-cases-compartment-element)* '…'?
1996
+
1997
+ include-use-cases-compartment-element =
1998
+ el-prefix? OccurrenceUsagePrefix
1999
+ ( OwnedSubsetting FeatureSpecializationPart? | UsageDeclaration )
2000
+ ( ValuePart | ActionUsageParameterList )? CaseBody
2001
+
2002
+ includes-compartment =
2003
+ <img src="images/includes-compartment.svg" width="408.0">
2004
+ includes-compartment-contents
2005
+
2006
+ includes-compartment-contents = (includes-compartment-element)* '…'?
2007
+
2008
+ includes-compartment-element =
2009
+ el-prefix? OccurrenceUsagePrefix
2010
+ ( OwnedSubsetting FeatureSpecializationPart? | UsageDeclaration )
2011
+
2012
+ action-flow-element =|
2013
+ use-case-def
2014
+ | use-case
2015
+
2016
+ general-relationship =| include-use-case-relationship
2017
+
2018
+ include-use-case-relationship =
2019
+ <img src="images/include-use-case-relationship.svg" width="449.76">
2020
+
2021
+ subject-actors-stakeholders-node =| use-case | use-case-def
2022
+
2023
+ // Clause 8.2.3.26 Views and Viewpoints Graphical Notation
2024
+
2025
+ root-view =
2026
+ framed-view
2027
+
2028
+ definition-node =|
2029
+ viewpoint-def
2030
+ | view-def
2031
+
2032
+ viewpoint-def =
2033
+ <img src="images/viewpoint-def.svg" width="318.239985">
2034
+
2035
+ viewpoint-def-name-compartment =
2036
+ '«' DefinitionPrefix 'viewpoint' 'def' '»'
2037
+ definition-name-with-alias
2038
+
2039
+ view-def =
2040
+ <img src="images/view-def.svg" width="318.239985">
2041
+
2042
+ view-def-name-compartment =
2043
+ '«' DefinitionPrefix 'view' 'def' '»'
2044
+ definition-name-with-alias
2045
+
2046
+ usage-node =|
2047
+ viewpoint
2048
+ | view
2049
+ | framed-view
2050
+
2051
+ viewpoint =
2052
+ <img src="images/viewpoint.svg" width="318.239985">
2053
+
2054
+ viewpoint-name-compartment =
2055
+ '«' OccurrenceUsagePrefix 'viewpoint' '»'
2056
+ usage-name-with-alias
2057
+
2058
+ view =
2059
+ <img src="images/view.svg" width="318.239985">
2060
+
2061
+ view-name-compartment =
2062
+ '«' OccurrenceUsagePrefix 'view' '»'
2063
+ usage-name-with-alias
2064
+
2065
+ compartment =|
2066
+ views-compartment
2067
+ | viewpoints-compartment
2068
+ | exposes-compartment
2069
+ | filters-compartment
2070
+ | rendering-compartment
2071
+
2072
+ views-compartment =
2073
+ <img src="images/views-compartment.svg" width="408.0">
2074
+ views-compartment-contents
2075
+
2076
+ views-compartment-contents = (views-compartment-element)* '…'
2077
+
2078
+ views-compartment-element =
2079
+ el-prefix? OccurrenceUsagePrefix UsageDeclaration? ValueOrFlowPart? ViewBody
2080
+
2081
+ viewpoints-compartment =
2082
+ <img src="images/viewpoints-compartment.svg" width="408.0">
2083
+ viewpoints-compartment-contents
2084
+
2085
+ viewpoints-compartment-contents = (viewpoints-compartment-element)* '…'?
2086
+
2087
+ viewpoints-compartment-element =
2088
+ el-prefix? OccurrenceUsagePrefix ConstraintUsageDeclaration RequirementBody
2089
+
2090
+ exposes-compartment =
2091
+ <img src="images/exposes-compartment.svg" width="408.0">
2092
+ exposes-compartment-contents
2093
+
2094
+ exposes-compartment-contents = exposes-compartment-element* '…'?
2095
+
2096
+ exposes-compartment-element = MembershipExpose | NamespaceExpose
2097
+
2098
+ filters-compartment =
2099
+ <img src="images/filters-compartment.svg" width="408.0">
2100
+ filters-compartment-contents
2101
+
2102
+ filters-compartment-contents = (filters-compartment-element)* '…'?
2103
+
2104
+ filters-compartment-element = el-prefix? MemberPrefix OwnedExpression
2105
+
2106
+ rendering-compartment =
2107
+ <img src="images/rendering-compartment.svg" width="408.0">
2108
+ rendering-compartment-contents
2109
+
2110
+ rendering-compartment-contents = usage-cp* '…'?
2111
+
2112
+ interconnection-element =|
2113
+ viewpoint-def
2114
+ | viewpoint
2115
+ | view-def
2116
+ | view
2117
+
2118
+ framed-view =
2119
+ <img src="images/framed-view.svg" width="608.16">
2120
+
2121
+ frameless-view =
2122
+ general-view
2123
+ | interconnection-view
2124
+ | action-flow-view
2125
+ | state-transition-view
2126
+ | sequence-view
2127
+
2128
+ view-frame-name-compartment = '«view»' QualifiedName (':' QualifiedName)?
2129
+
2130
+ view-frame-info-contents = Expose? ElementFilterMember? AnnotatingElement*
2131
+
2132
+ view-frame-info-compartment-tr =
2133
+ <img src="images/view-frame-info-compartment-tr.svg" width="318.239985">
2134
+
2135
+ view-frame-info-compartment-bl =
2136
+ <img src="images/view-frame-info-compartment-bl.svg" width="318.239985">
2137
+
2138
+ view-frame-info-compartment-br =
2139
+ <img src="images/view-frame-info-compartment-br.svg" width="318.239985">
2140
+
2141
+ general-relationship =| expose-relationship
2142
+
2143
+ expose-relationship =
2144
+ expose-r | toplevel-expose-r | recursive-expose-r
2145
+
2146
+ expose-r =
2147
+ <img src="images/expose-r.svg">
2148
+
2149
+ toplevel-expose-r =
2150
+ <img src="images/toplevel-expose-r.svg" width="378.24">
2151
+
2152
+ recursive-expose-r =
2153
+ <img src="images/recursive-expose-r.svg" width="378.24">
2154
+
2155
+ // Note. The view frame info compartments are optional elements. The AnnotatingElement* enables adding any relevant supporting information related to a view, possibly using a configurable rendering.
2156
+
2157
+ // Note. A model library in Section 9.2.18 defines standard graphical view definitions for SysML. These may be supplemented by further, customized view definitions specific to a model.
2158
+
2159
+ // Clause 8.2.3.27 Metadata Graphical Notation
2160
+
2161
+ annotation-node =| metadata-feature-annotation-node
2162
+
2163
+ metadata-feature-annotation-node =
2164
+ <img src="images/metadata-feature-annotation-node.svg" width="325.91997">
2165
+
2166
+ metadata-feature-decl = Identification
2167
+
2168
+ metadata-feature-name-value-list =
2169
+ ( metadata-feature-name '=' expression-text )*
2170
+
2171
+ metadata-feature-name = Identification
2172
+
2173
+ expression-text = text-block
2174
+
2175
+ metadata-def =
2176
+ <img src="images/metadata-def.svg" width="318.239985">
2177
+
2178
+ metadata-def-name-compartment =
2179
+ '«' BasicUsagePrefix? keyword* 'metadata' 'def' '»'
2180
+ definition-name-with-alias
2181
+
2182
+ // End of BNF
2183
+
2184
+
2185
+
2186
+ // Consolidated partial productions:
2187
+
2188
+ // action-flow-element =
2189
+ // action | action-flow-node | action-flow-relationship | action-ref | analysis | analysis-def | calc | calc-def
2190
+ // | use-case | use-case-def | verification | verification-def
2191
+
2192
+ // annotation-node =
2193
+ // metadata-feature-annotation-node
2194
+
2195
+ // compartment =
2196
+ // action-flow-compartment | actions-compartment | actors-compartment | allocations-compartment | analyses-compartment
2197
+ // | assert-constraints-compartment | assert-constraints-compartment | assume-constraints-compartment
2198
+ // | attributes-compartment | calcs-compartment | connections-compartment | constraints-compartment
2199
+ // | constraints-compartment | directed-features-compartment | ends-compartment | enums-compartment
2200
+ // | exhibit-states-compartment | exposes-compartment | features-compartment | filters-compartment | flows-compartment
2201
+ // | frames-compartment | general-compartment | include-actions-compartment | includes-compartment
2202
+ // | individuals-compartment | interconnection-compartment | interfaces-compartment | items-compartment
2203
+ // | objective-compartment | occurrences-compartment | package-compartment | parameters-compartment | parts-compartment
2204
+ // | perform-actions-compartment | ports-compartment | rendering-compartment | require-constraints-compartment
2205
+ // | requirements-compartment | result-compartment | satisfies-compartment | satisfy-requirements-compartment
2206
+ // | sequence-compartment | snapshots-compartment | stakeholders-compartment | state-actions-compartment
2207
+ // | state-transition-compartment | states-compartment | subject-compartment | successions-compartment
2208
+ // | timeslices-compartment | use-cases-compartment | variant-elementusages-compartment | variants-compartment
2209
+ // | verification-methods-compartment | verifications-compartment | verifies-compartment | viewpoints-compartment
2210
+ // | views-compartment
2211
+
2212
+ // connection-relationship =
2213
+ // flow | flow-on-connection | interface-connection | message-connection | succession-flow
2214
+
2215
+ // definition-node =
2216
+ // action-def | allocation-def | analysis-def | attribute-def | calc-def | concern-def | connection-def
2217
+ // | constraint-def | enumeration-def | event-occurrence-def | extended-def | flow-def | interface-def | item-def
2218
+ // | n-ary-def-connection-dot | occurrence-def | part-def | port-def | requirement-def | state-def | use-case-def
2219
+ // | verification-def | view-def | viewpoint-def
2220
+
2221
+ // dependencies-and-annotations-element =
2222
+ // annotation-link | annotation-node | dependencies-element
2223
+
2224
+ // dependencies-element =
2225
+ // binary-dependency | n-ary-dependency
2226
+
2227
+ // general-node =
2228
+ // definition-node | namespace-node | type-node | usage-node
2229
+
2230
+ // general-relationship =
2231
+ // allocate-relationship | assert-edge | assume-edge | connection-def-graphical | exhibit-edge | expose-relationship
2232
+ // | frame-edge | frame-relationship | import | include-use-case-relationship | n-ary-def-segment | owned-membership
2233
+ // | portion-relationship | recursive-import | require-edge | satisfy-edge | top-level-import | type-relationship
2234
+ // | unowned-membership | verify-relationship
2235
+
2236
+ // general-view =
2237
+ // interconnection-view
2238
+
2239
+ // interconnection-element =
2240
+ // attribute | concern | concern-stakeholder-link | connection | connection-def | connection-relationship | constraint
2241
+ // | constraint-ref | distinguished-parameter | distinguished-parameter-link | flow | flow-def | interface | item
2242
+ // | item-ref | part | part-ref | port-def | port-usage | requirement | requirement-ref | view | view-def | viewpoint
2243
+ // | viewpoint-def
2244
+
2245
+ // interconnection-view =
2246
+ // dependencies-and-annotations-element | ellipsis-at-lower-left-corner | interconnection-element
2247
+
2248
+ // namespace-node =
2249
+ // package-node | type-node
2250
+
2251
+ // subject-actors-stakeholders-node =
2252
+ // analysis | analysis-def | requirement | use-case | use-case-def | verification | verification-def
2253
+
2254
+ // usage-edge =
2255
+ // allocate-relationship | binding-connection | connection-graphical | exhibit-edge | flow | message | perform-edge
2256
+ // | st-succession | succession | succession-flow | transition
2257
+
2258
+ // usage-node =
2259
+ // action | allocation | analysis | assert-constraint-node | assume-constraint-node | attribute | calc | connection
2260
+ // | enumeration | event-occurrence | exhibit-state-usage | extended-usage | flow-node | frame-concern-node | framed-view
2261
+ // | include-use-case-usage | interface | item | n-ary-connection-dot | occurrence | occurrence-ref | part
2262
+ // | perform-action-usage | port-usage | require-constraint-node | state | timeslice-or-snapshot-node | use-case
2263
+ // | verification | verify-requirement-node | view | viewpoint
2264
+