You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: lioncore/metametamodel.adoc
+29-27Lines changed: 29 additions & 27 deletions
Original file line number
Diff line number
Diff line change
@@ -84,7 +84,7 @@ EPackages have instead sub-packages and MPS Languages have virtual folders.
84
84
For this use case, different Metamodels could be used instead.
85
85
86
86
.Characteristics
87
-
A Metamodel has a [[Metamodel.name, Metamodel.name]]`name`and an [[Metamodel.id, Metamodel.id]]`id`, similarly to MPS Languages.
87
+
A Metamodel has a [[Metamodel.name, Metamodel.name]]`name`, a [[Metamodel.key, Metamodel.key]]`key`, and a [[Metamodel.version, Metamodel.version]]`version`, similar to MPS Languages.
88
88
89
89
[[Metamodel.elements, Metamodel.elements]]
90
90
Each Metamodel will contain a list of <<MetamodelElement, Metamodel elements>> in its `elements` containment.
@@ -112,7 +112,7 @@ Single entities could be Concept instances, such as Invoice #1/2022.
112
112
A Concept is roughly equivalent to an `EClass` (with the `isInterface` flag set to `false`) or an MPS’s `ConceptDeclaration`.
113
113
114
114
.Characteristics
115
-
A Concept has a <<NamespacedEntity.simpleName, `simpleName`>> and an <<NamespacedEntity.id, `id`>>.
115
+
A Concept has a <<NamespacedEntity.name, `name`>> and an <<NamespacedEntity.key, `key`>>.
116
116
117
117
[[Concept.abstract, Concept.abstract]]
118
118
A Concept can be concrete (i.e., instantiable) or abstract, marked by boolean `abstract` property.
@@ -144,7 +144,7 @@ For example, `Named` would be a ConceptInterface.
144
144
A ConceptInterface in LionWeb will be roughly equivalent to an `EClass` (with the `isInterface` flag set to `true`) or an MPS’s `ConceptInterfaceDeclaration`.
145
145
146
146
.Characteristics
147
-
A ConceptInterface has a <<NamespacedEntity.simpleName, `simpleName`>> and an <<NamespacedEntity.id, `id`>>.
147
+
A ConceptInterface has a <<NamespacedEntity.name, `name`>> and an <<NamespacedEntity.key, `key`>>.
148
148
149
149
A ConceptInterface is an <<FeaturesContainer>> (as it has features).
150
150
It is indirectly a <<MetamodelElement>> (as it is a top level element in a <<Metamodel>>), a <<NamespacedEntity>> (as it has an identity and it is contained in the namespace of the Metamodel), and a <<NamespaceProvider>> (as it act as the namespace for its features).
@@ -174,7 +174,7 @@ A PrimitiveType is similar to Ecore’s `EDataType` and to MPS’ `PrimitiveData
174
174
Differently from ECore’s `EDataType` PrimitiveType has no flag `serializable`, and it does not inherit fields such as `instanceClassName`, `instanceClass`, or `defaultValue`.
175
175
176
176
.Characteristics
177
-
A PrimitiveType has a <<NamespacedEntity.simpleName, `simpleName`>> and an <<NamespacedEntity.id, `id`>>.
177
+
A PrimitiveType has a <<NamespacedEntity.name, `name`>> and an <<NamespacedEntity.key, `key`>>.
178
178
179
179
A PrimitiveType is a <<DataType>> (as it can be used as <<Property.type, type>> of a <<Property>>).
180
180
It is indirectly a <<MetamodelElement>> (as it is a top level element in a <<Metamodel>>) and a <<NamespacedEntity>> (as it has an identity and it is contained in the namespace of the Metamodel).
@@ -197,7 +197,7 @@ An Enumeration is similar to Ecore’s `EEnum` and to MPS’ `EnumerationDeclara
197
197
Differently from ECore’s `EEnum` Enumeration has no flag `serializable`, and it does not inherit fields such as `instanceClassName`, `instanceClass`, or `defaultValue`.
198
198
199
199
.Characteristics
200
-
An Enumeration has a <<NamespacedEntity.simpleName, `simpleName`>> and an <<NamespacedEntity.id, `id`>>.
200
+
An Enumeration has a <<NamespacedEntity.name, `name`>> and an <<NamespacedEntity.key, `key`>>.
201
201
202
202
[[Enumeration.literals, Enumeration.literals]]
203
203
An Enumeration contains <<EnumerationLiteral, EnumerationLiterals>> in its `literals` containment.
It can calculate the `qualifiedName` by combining the name of the namespace, which it can obtain from its own <<NamespaceProvider>>.
380
+
[[NamespacedEntity.key, NamespacedEntity.key]]
381
+
A NamespacedEntity has an `key`.
384
382
385
383
.Constraints
386
-
A NamespaceEntity's `simpleName` must be unique within the NamespaceProvider.
384
+
A NamespaceEntity's `name` must be unique within the NamespaceProvider.
385
+
A NamespaceEntity's `key` must be unique within the Metamodel.
386
+
387
387
388
388
[[MetamodelElement]]
389
389
==== MetamodelElement
@@ -399,7 +399,7 @@ MetamodelElement is similar to MPS’ `IStructureElement`.
399
399
The difference is that `IStructureElement` includes also elements that cannot appear as top level elements of a structure aspects, such as `LinkDeclaration`, `PropertyDeclaration`, and `EnumerationMemberDeclaration`.
400
400
401
401
.Characteristics
402
-
A MetamodelElement has a <<NamespacedEntity.simpleName, `simpleName`>> and an <<NamespacedEntity.id, `id`>>.
402
+
A MetamodelElement has a <<NamespacedEntity.name, `name`>> and an <<NamespacedEntity.key, `key`>>.
403
403
404
404
A MetamodelElement is a <<NamespacedEntity>> (as it has an identity and it is contained in the namespace of its <<Metamodel>>).
405
405
@@ -429,7 +429,7 @@ A Concept can have several features.
429
429
FeaturesContainer is similar to `EClass` in Ecore (which is used both for classes and interfaces) and to `AbstractConceptDeclaration` in MPS.
430
430
431
431
.Characteristics
432
-
A FeaturesContainer has a <<NamespacedEntity.simpleName, `simpleName`>> and an <<NamespacedEntity.id, `id`>>.
432
+
A FeaturesContainer has a <<NamespacedEntity.name, `name`>> and an <<NamespacedEntity.key, `key`>>.
0 commit comments