11standard library package KerML {
2+ doc
3+ /*
4+ * This package contains a reflective KerML model of the KerML abstract syntax.
5+ */
6+
27 private import ScalarValues::*;
38 import Kernel::*;
49
@@ -19,18 +24,25 @@ standard library package KerML {
1924 feature body : String[1..1];
2025 }
2126
27+ metaclass Dependency specializes Relationship {
28+ feature client : Element[1..*] redefines source;
29+ feature supplier : Element[1..*] redefines target;
30+ }
31+
2232 metaclass Documentation specializes Comment {
2333 derived feature documentedElement : Element[1..1] subsets owner redefines annotatedElement;
2434 }
2535
26- metaclass Element {
36+ abstract metaclass Element {
2737 feature elementId : String[1..1];
2838 feature aliasIds : String[0..*];
29- feature shortName : String[0..1];
30- feature name : String[0..1];
39+ feature declaredShortName : String[0..1];
40+ feature declaredName : String[0..1];
3141 feature isImpliedIncluded : Boolean[1..1];
32- derived feature effectiveName : String[0..1];
42+ derived feature shortName : String[0..1];
43+ derived feature name : String[0..1];
3344 derived feature qualifiedName : String[0..1];
45+ derived feature isLibraryElement : Boolean[1..1];
3446
3547 feature owningRelationship : Relationship[0..1];
3648 composite feature ownedRelationship : Relationship[0..*];
@@ -43,14 +55,13 @@ standard library package KerML {
4355 derived feature textualRepresentation : TextualRepresentation[0..*] subsets ownedElement;
4456 }
4557
46- metaclass Import specializes Relationship {
58+ abstract metaclass Import specializes Relationship {
4759 feature visibility : VisibilityKind[1..1];
48- feature importedMemberName : String[0..1];
4960 feature isRecursive : Boolean[1..1];
5061 feature isImportAll : Boolean[1..1];
5162
52- feature importedNamespace : Namespace[1..1] redefines target;
5363 derived feature importOwningNamespace : Namespace[1..1] subsets owningRelatedElement redefines source;
64+ derived feature importedElement : Element[1..1];
5465 }
5566
5667 metaclass Membership specializes Relationship {
@@ -63,6 +74,10 @@ standard library package KerML {
6374 derived feature membershipOwningNamespace : Namespace[1..1] subsets owningRelatedElement redefines source;
6475 }
6576
77+ metaclass MembershipImport specializes Import {
78+ feature importedMembership : Membership[1..1] redefines target;
79+ }
80+
6681 metaclass Namespace specializes Element {
6782 abstract derived feature membership : Membership[0..*];
6883 composite derived feature ownedImport : Import[0..*] subsets ownedRelationship;
@@ -72,6 +87,10 @@ standard library package KerML {
7287 derived feature importedMembership : Membership[0..*] subsets membership;
7388 }
7489
90+ metaclass NamespaceImport specializes Import {
91+ feature importedNamespace : Namespace[1..1] redefines target;
92+ }
93+
7594 metaclass OwningMembership specializes Membership {
7695 derived feature ownedMemberElementId : String[1..1] redefines memberElementId;
7796 derived feature ownedMemberShortName : String[0..1] redefines memberShortName;
@@ -80,14 +99,14 @@ standard library package KerML {
8099 composite derived feature ownedMemberElement : Element[1..1] subsets ownedRelatedElement redefines memberElement;
81100 }
82101
83- metaclass Relationship specializes Element {
102+ abstract metaclass Relationship specializes Element {
84103 feature isImplied : Boolean[1..1];
85104
86105 feature target : Element[0..*] subsets relatedElement;
87106 feature source : Element[0..*] subsets relatedElement;
88107 feature owningRelatedElement : Element[0..1] subsets relatedElement;
89108 composite feature ownedRelatedElement : Element[0..*] subsets relatedElement;
90- derived feature relatedElement : Element[2 ..*];
109+ derived feature relatedElement : Element[0 ..*];
91110 }
92111
93112 metaclass TextualRepresentation specializes AnnotatingElement {
@@ -144,7 +163,7 @@ standard library package KerML {
144163 feature direction : FeatureDirectionKind[0..1];
145164
146165 derived feature owningType : Type[0..1] subsets owningNamespace, featuringType;
147- derived feature 'type' : Type[1 ..*];
166+ derived feature 'type' : Type[0 ..*];
148167 composite derived feature ownedRedefinition : Redefinition[0..*] subsets ownedSubsetting;
149168 composite derived feature ownedSubsetting : Subsetting[0..*] subsets ownedSpecialization;
150169 derived feature owningFeatureMembership : FeatureMembership[0..1] subsets owningMembership;
@@ -266,10 +285,10 @@ standard library package KerML {
266285 import Core::*;
267286
268287 metaclass Association specializes Classifier, Relationship {
269- derived feature relatedType : Type[2 ..*] redefines relatedElement;
288+ derived feature relatedType : Type[0 ..*] redefines relatedElement;
270289 derived feature sourceType : Type[0..1] subsets relatedType redefines source;
271- derived feature targetType : Type[1 ..*] subsets relatedType redefines target;
272- derived feature associationEnd : Feature[2 ..*] redefines endFeature;
290+ derived feature targetType : Type[0 ..*] subsets relatedType redefines target;
291+ derived feature associationEnd : Feature[0 ..*] redefines endFeature;
273292 }
274293
275294 metaclass AssociationStructure specializes Structure, Association;
@@ -282,7 +301,7 @@ standard library package KerML {
282301 metaclass BindingConnector specializes Connector;
283302
284303 metaclass BooleanExpression specializes Expression {
285- derived feature 'predicate' : Predicate[1 ..1] redefines 'function';
304+ derived feature 'predicate' : Predicate[0 ..1] redefines 'function';
286305 }
287306
288307 metaclass Class specializes Classifier;
@@ -294,11 +313,11 @@ standard library package KerML {
294313 metaclass Connector specializes Feature, Relationship {
295314 feature isDirected : Boolean[1..1];
296315
297- derived feature relatedFeature : Feature[2 ..*] redefines relatedElement;
298- derived feature association : Association[1 ..*] redefines 'type';
299- derived feature connectorEnd : Feature[2 ..*] redefines endFeature;
316+ derived feature relatedFeature : Feature[0 ..*] redefines relatedElement;
317+ derived feature association : Association[0 ..*] redefines 'type';
318+ derived feature connectorEnd : Feature[0 ..*] redefines endFeature;
300319 derived feature sourceFeature : Feature[0..1] subsets relatedFeature redefines source;
301- derived feature targetFeature : Feature[1 ..*] subsets relatedFeature redefines target;
320+ derived feature targetFeature : Feature[0 ..*] subsets relatedFeature redefines target;
302321 }
303322
304323 metaclass DataType specializes Classifier;
@@ -310,7 +329,7 @@ standard library package KerML {
310329 metaclass Expression specializes Step {
311330 derived feature isModelLevelEvaluable : Boolean[1..1];
312331
313- derived feature 'function' : Function[1 ..1] redefines 'behavior';
332+ derived feature 'function' : Function[0 ..1] redefines 'behavior';
314333 derived feature result : Feature[1..1] subsets parameter, output;
315334 }
316335
@@ -355,15 +374,16 @@ standard library package KerML {
355374 derived feature itemType : Classifier[0..*];
356375 derived feature targetInputFeature : Feature[0..1];
357376 derived feature sourceOutputFeature : Feature[0..1];
358- derived feature itemFlowEnd : ItemFlowEnd[2..*] redefines connectorEnd;
377+ derived feature itemFlowEnd : ItemFlowEnd[0..2] subsets connectorEnd;
359378 derived feature itemFeature : ItemFeature[0..1] subsets ownedFeature;
360- derived feature itemFlowFeature : ItemFlowFeature[2..*];
361- derived feature 'interaction' : Interaction[1..*] redefines association, 'behavior';
379+ derived feature 'interaction' : Interaction[0..*] redefines association, 'behavior';
362380 }
363381
364382 metaclass ItemFlowEnd specializes Feature;
365383
366- metaclass ItemFlowFeature specializes Feature;
384+ metaclass LibraryPackage specializes Package {
385+ feature isStandard : Boolean[1..1];
386+ }
367387
368388 metaclass LiteralBoolean specializes LiteralExpression {
369389 feature value : Boolean[1..1];
@@ -387,8 +407,12 @@ standard library package KerML {
387407
388408 metaclass Metaclass specializes Structure;
389409
410+ metaclass MetadataAccessExpression specializes Expression {
411+ feature referencedElement : Element[1..1];
412+ }
413+
390414 metaclass MetadataFeature specializes AnnotatingElement, Feature {
391- derived feature 'metaclass' : Metaclass[1 ..1] redefines 'type';
415+ derived feature 'metaclass' : Metaclass[0 ..1] redefines 'type';
392416 }
393417
394418 metaclass MultiplicityRange specializes Multiplicity {
@@ -401,8 +425,6 @@ standard library package KerML {
401425
402426 metaclass OperatorExpression specializes InvocationExpression {
403427 feature operator : String[1..1];
404-
405- composite derived feature operand : Expression[0..*];
406428 }
407429
408430 metaclass Package specializes Namespace {
@@ -430,10 +452,8 @@ standard library package KerML {
430452 feature operator : String[1..1] redefines operator;
431453 }
432454
433- metaclass SourceEnd specializes Feature;
434-
435455 metaclass Step specializes Feature {
436- derived feature 'behavior' : Behavior[1 ..*] redefines 'type';
456+ derived feature 'behavior' : Behavior[0 ..*] subsets 'type';
437457 derived feature parameter : Feature[0..*] redefines directedFeature;
438458 }
439459
@@ -448,7 +468,5 @@ standard library package KerML {
448468
449469 metaclass SuccessionItemFlow specializes Succession, ItemFlow;
450470
451- metaclass TargetEnd specializes Feature;
452-
453471 }
454472}
0 commit comments