@@ -9,16 +9,18 @@ standard library package KerML {
99
1010 package Root {
1111 metaclass AnnotatingElement specializes Element {
12- feature annotation : Annotation[0..*] ordered;
1312 derived feature annotatedElement : Element[1..*] ordered redefines annotatedElement;
14- composite derived feature ownedAnnotatingRelationship : Annotation[0..*] subsets annotation, ownedRelationship;
13+ composite derived feature ownedAnnotatingRelationship : Annotation[0..*] ordered subsets annotation, ownedRelationship;
14+ derived feature owningAnnotatingRelationship : Annotation[0..1] subsets owningRelationship, annotation;
15+ derived feature annotation : Annotation[0..*] ordered;
1516 }
1617
1718 metaclass Annotation specializes Relationship {
18- feature annotatingElement : AnnotatingElement[1..1] redefines source;
1919 feature annotatedElement : Element[1..1] redefines target, annotatedElement;
20+ derived feature annotatingElement : AnnotatingElement[1..1] redefines source;
2021 derived feature owningAnnotatedElement : Element[0..1] subsets annotatedElement, owningRelatedElement;
2122 derived feature owningAnnotatingElement : AnnotatingElement[0..1] subsets annotatingElement, owningRelatedElement;
23+ composite derived feature ownedAnnotatingElement : AnnotatingElement[0..1] subsets annotatingElement, ownedRelatedElement;
2224 }
2325
2426 metaclass Comment specializes AnnotatingElement {
@@ -139,6 +141,11 @@ standard library package KerML {
139141 derived feature owningType : Type[0..1] subsets conjugatedType, owningRelatedElement;
140142 }
141143
144+ metaclass CrossSubsetting specializes Subsetting {
145+ feature crossedFeature : Feature[1..1] redefines subsettedFeature;
146+ derived feature crossingFeature : Feature[1..1] redefines owningFeature, subsettingFeature;
147+ }
148+
142149 metaclass Differencing specializes Relationship {
143150 feature differencingType : Type[1..1] redefines target;
144151 derived feature typeDifferenced : Type[1..1] subsets owningRelatedElement redefines source;
@@ -147,7 +154,7 @@ standard library package KerML {
147154 metaclass Disjoining specializes Relationship {
148155 feature typeDisjoined : Type[1..1] redefines source;
149156 feature disjoiningType : Type[1..1] redefines target;
150- derived feature owningType : Type[0..1] subsets typeDisjoined, owningRelatedElement ;
157+ derived feature owningType : Type[0..1] subsets owningRelatedElement, typeDisjoined ;
151158 }
152159
153160 metaclass EndFeatureMembership specializes FeatureMembership {
@@ -160,8 +167,9 @@ standard library package KerML {
160167 feature isComposite : Boolean[1..1];
161168 feature isEnd : Boolean[1..1];
162169 feature isDerived : Boolean[1..1];
163- feature isReadOnly : Boolean[1..1];
164170 feature isPortion : Boolean[1..1];
171+ feature isVariable : Boolean[1..1];
172+ feature isConstant : Boolean[1..1];
165173 feature direction : FeatureDirectionKind[0..1];
166174
167175 derived feature owningType : Type[0..1] subsets owningNamespace, featuringType;
@@ -178,6 +186,8 @@ standard library package KerML {
178186 composite derived feature ownedFeatureChaining : FeatureChaining[0..*] ordered subsets ownedRelationship;
179187 composite derived feature ownedReferenceSubsetting : ReferenceSubsetting[0..1] subsets ownedSubsetting;
180188 derived feature featureTarget : Feature[1..1];
189+ derived feature crossFeature : Feature[0..1];
190+ composite derived feature ownedCrossSubsetting : CrossSubsetting[0..1] subsets ownedSubsetting;
181191 }
182192
183193 metaclass FeatureChaining specializes Relationship {
@@ -194,12 +204,12 @@ standard library package KerML {
194204 metaclass FeatureInverting specializes Relationship {
195205 feature featureInverted : Feature[1..1] redefines source;
196206 feature invertingFeature : Feature[1..1] redefines target;
197- derived feature owningFeature : Feature[0..1] subsets owningRelatedElement, featureInverted ;
207+ derived feature owningFeature : Feature[0..1] subsets featureInverted, owningRelatedElement ;
198208 }
199209
200- metaclass FeatureMembership specializes OwningMembership, Featuring {
201- derived feature owningType : Type[1..1] redefines membershipOwningNamespace, 'type' ;
202- composite derived feature ownedMemberFeature : Feature[1..1] redefines ownedMemberElement, 'feature' ;
210+ metaclass FeatureMembership specializes OwningMembership {
211+ derived feature owningType : Type[1..1] redefines membershipOwningNamespace;
212+ composite derived feature ownedMemberFeature : Feature[1..1] redefines ownedMemberElement;
203213 }
204214
205215 metaclass FeatureTyping specializes Specialization {
@@ -208,11 +218,6 @@ standard library package KerML {
208218 derived feature owningFeature : Feature[0..1] subsets typedFeature redefines owningType;
209219 }
210220
211- abstract metaclass Featuring specializes Relationship {
212- feature 'type' : Type[1..1] subsets relatedElement;
213- feature 'feature' : Feature[1..1] subsets relatedElement;
214- }
215-
216221 metaclass Intersecting specializes Relationship {
217222 feature intersectingType : Type[1..1] redefines target;
218223 derived feature typeIntersected : Type[1..1] subsets owningRelatedElement redefines source;
@@ -227,13 +232,13 @@ standard library package KerML {
227232
228233 metaclass ReferenceSubsetting specializes Subsetting {
229234 feature referencedFeature : Feature[1..1] redefines subsettedFeature;
230- derived feature referencingFeature : Feature[1..1] redefines subsettingFeature, owningFeature ;
235+ derived feature referencingFeature : Feature[1..1] redefines owningFeature, subsettingFeature ;
231236 }
232237
233238 metaclass Specialization specializes Relationship {
234239 feature general : Type[1..1] redefines target;
235240 feature specific : Type[1..1] redefines source;
236- derived feature owningType : Type[0..1] subsets specific, owningRelatedElement ;
241+ derived feature owningType : Type[0..1] subsets owningRelatedElement, specific ;
237242 }
238243
239244 metaclass Subclassification specializes Specialization {
@@ -276,10 +281,10 @@ standard library package KerML {
276281 derived feature directedFeature : Feature[0..*] ordered subsets 'feature';
277282 }
278283
279- metaclass TypeFeaturing specializes Featuring {
280- feature featureOfType : Feature[1..1] redefines source, 'feature' ;
281- feature featuringType : Type[1..1] redefines target, 'type' ;
282- derived feature owningFeatureOfType : Feature[0..1] subsets featureOfType, owningRelatedElement ;
284+ metaclass TypeFeaturing specializes Relationship {
285+ feature featureOfType : Feature[1..1] redefines source;
286+ feature featuringType : Type[1..1] redefines target;
287+ derived feature owningFeatureOfType : Feature[0..1] subsets owningRelatedElement, featureOfType ;
283288 }
284289
285290 metaclass Unioning specializes Relationship {
@@ -299,7 +304,7 @@ standard library package KerML {
299304 derived feature associationEnd : Feature[0..*] redefines endFeature;
300305 }
301306
302- metaclass AssociationStructure specializes Structure, Association ;
307+ metaclass AssociationStructure specializes Association, Structure ;
303308
304309 metaclass Behavior specializes Class {
305310 derived feature 'step' : Step[0..*] subsets 'feature';
@@ -324,8 +329,11 @@ standard library package KerML {
324329 derived feature connectorEnd : Feature[0..*] ordered redefines endFeature;
325330 derived feature sourceFeature : Feature[0..1] ordered subsets relatedFeature redefines source;
326331 derived feature targetFeature : Feature[0..*] ordered subsets relatedFeature redefines target;
332+ derived feature defaultFeaturingType : Type[0..1];
327333 }
328334
335+ metaclass ConstructorExpression specializes InstantiationExpression;
336+
329337 metaclass DataType specializes Classifier;
330338
331339 metaclass ElementFilterMembership specializes OwningMembership {
@@ -336,7 +344,7 @@ standard library package KerML {
336344 derived feature isModelLevelEvaluable : Boolean[1..1];
337345
338346 derived feature 'function' : Function[0..1] redefines 'behavior';
339- derived feature result : Feature[1..1] subsets parameter, output ;
347+ derived feature result : Feature[1..1] subsets output, parameter ;
340348 }
341349
342350 metaclass FeatureChainExpression specializes OperatorExpression {
@@ -357,35 +365,40 @@ standard library package KerML {
357365 composite derived feature value : Expression[1..1] redefines ownedMemberElement;
358366 }
359367
368+ metaclass Flow specializes Connector, Step {
369+ derived feature payloadType : Classifier[0..*] ordered nonunique;
370+ derived feature targetInputFeature : Feature[0..1] ordered nonunique;
371+ derived feature sourceOutputFeature : Feature[0..1] ordered nonunique;
372+ derived feature flowEnd : FlowEnd[0..2] ordered subsets connectorEnd;
373+ derived feature payloadFeature : PayloadFeature[0..1] subsets ownedFeature;
374+ derived feature 'interaction' : Interaction[0..*] ordered redefines association, 'behavior';
375+ }
376+
377+ metaclass FlowEnd specializes Feature;
378+
360379 metaclass Function specializes Behavior {
361380 derived feature isModelLevelEvaluable : Boolean[1..1];
362381
363382 derived feature expression : Expression[0..*] subsets 'step';
364- derived feature result : Feature[1..1] subsets parameter, output ;
383+ derived feature result : Feature[1..1] subsets output, parameter ;
365384 }
366385
367- metaclass Interaction specializes Behavior, Association;
368-
369- metaclass Invariant specializes BooleanExpression {
370- feature isNegated : Boolean[1..1];
386+ metaclass IndexExpression specializes OperatorExpression {
387+ feature operator : String[1..1] redefines operator;
371388 }
372389
373- metaclass InvocationExpression specializes Expression {
374- derived feature argument : Expression[0..*] ordered subsets ownedFeature;
390+ abstract metaclass InstantiationExpression specializes Expression {
391+ derived feature argument : Expression[0..*] ordered;
392+ derived feature instantiatedType : Type[1..1] subsets 'member';
375393 }
376394
377- metaclass ItemFeature specializes Feature ;
395+ metaclass Interaction specializes Association, Behavior ;
378396
379- metaclass ItemFlow specializes Connector, Step {
380- derived feature itemType : Classifier[0..*] ordered nonunique;
381- derived feature targetInputFeature : Feature[0..1] ordered nonunique;
382- derived feature sourceOutputFeature : Feature[0..1] ordered nonunique;
383- derived feature itemFlowEnd : ItemFlowEnd[0..2] ordered subsets connectorEnd;
384- derived feature itemFeature : ItemFeature[0..1] subsets ownedFeature;
385- derived feature 'interaction' : Interaction[0..*] ordered redefines association, 'behavior';
397+ metaclass Invariant specializes BooleanExpression {
398+ feature isNegated : Boolean[1..1];
386399 }
387400
388- metaclass ItemFlowEnd specializes Feature ;
401+ metaclass InvocationExpression specializes InstantiationExpression ;
389402
390403 metaclass LibraryPackage specializes Package {
391404 feature isStandard : Boolean[1..1];
@@ -414,7 +427,7 @@ standard library package KerML {
414427 metaclass Metaclass specializes Structure;
415428
416429 metaclass MetadataAccessExpression specializes Expression {
417- feature referencedElement : Element[1..1];
430+ derived feature referencedElement : Element[1..1] subsets 'member' ;
418431 }
419432
420433 metaclass MetadataFeature specializes AnnotatingElement, Feature {
@@ -424,7 +437,7 @@ standard library package KerML {
424437 metaclass MultiplicityRange specializes Multiplicity {
425438 derived feature lowerBound : Expression[0..1] subsets bound;
426439 derived feature upperBound : Expression[1..1] subsets bound;
427- abstract derived feature bound : Expression[1..2] ordered redefines ownedMember;
440+ derived feature bound : Expression[1..2] ordered subsets ownedMember;
428441 }
429442
430443 metaclass NullExpression specializes Expression;
@@ -441,6 +454,8 @@ standard library package KerML {
441454 composite derived feature ownedMemberParameter : Feature[1..1] redefines ownedMemberFeature;
442455 }
443456
457+ metaclass PayloadFeature specializes Feature;
458+
444459 metaclass Predicate specializes Function;
445460
446461 metaclass ResultExpressionMembership specializes FeatureMembership {
@@ -460,14 +475,9 @@ standard library package KerML {
460475
461476 metaclass Structure specializes Class;
462477
463- metaclass Succession specializes Connector {
464- derived feature transitionStep : Step[0..1];
465- derived feature triggerStep : Step[0..*];
466- derived feature effectStep : Step[0..*];
467- derived feature guardExpression : Expression[0..*];
468- }
478+ metaclass Succession specializes Connector;
469479
470- metaclass SuccessionItemFlow specializes Succession, ItemFlow ;
480+ metaclass SuccessionFlow specializes Succession, Flow ;
471481
472482 }
473483}
0 commit comments