Skip to content

Commit 6dda6a3

Browse files
committed
ST6RI-628 Updated reflective KerML.kerml and SysML.sysml models.
1 parent ca325e6 commit 6dda6a3

8 files changed

Lines changed: 17096 additions & 13680 deletions

File tree

org.omg.kerml.xpect.tests/library/KerML.kerml

Lines changed: 49 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
standard 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

Comments
 (0)