Skip to content

Commit 9caaa30

Browse files
committed
ST6RI-827 Updated reflective KerML.kerml and SysML.sysml models.
(These will need to be regenerated again after later updates for other issue resolutions.) - Regenerated model library index. - Updated KerML and SysML Xpect libraries.
1 parent 1e54ac9 commit 9caaa30

13 files changed

Lines changed: 14481 additions & 14267 deletions

File tree

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

Lines changed: 57 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

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

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ standard library package Occurrences {
7474
feature redefines incomingTransferSort default (that as Occurrence).incomingTransferSort;
7575
}
7676

77+
/* Occurrences may be suboccurrences of no more than one other occurrence. */
78+
feature superoccurrence: Occurrence[0..1] subsets occurrences inverse of suboccurrences;
79+
7780
feature withoutOccurrences: Occurrence[0..*] unions successors, predecessors, outsideOfOccurrences
7881
inverse of withoutOccurrences {
7982
doc
@@ -152,13 +155,17 @@ standard library package Occurrences {
152155
* including at least this occurrence.
153156
*/
154157

155-
/* timeCoincidentOccurrences occurrences happen during each other. */
156158
feature thatOccurrence: Occurrence[1] subsets longerOccurrence;
157159
feature thisOccurrence: Occurrence[1] subsets shorterOccurrence;
158160

161+
/* timeCoincidentOccurrences occurrences happen during each other. */
159162
connector :HappensDuring
160163
from [1] shorterOccurrence references thisOccurrence
161164
to [1] longerOccurrence references thatOccurrence;
165+
166+
/* timeCoincidentOccurrences is transitive */
167+
subset thatOccurrence.timeCoincidentOccurrences
168+
subsets thisOccurrence.timeCoincidentOccurrences;
162169
}
163170

164171
feature spaceEnclosedOccurrences: Occurrence[1..*] subsets occurrences {
@@ -168,10 +175,14 @@ standard library package Occurrences {
168175
* including this one.
169176
*/
170177

171-
/* spaceEnclosedOccurrences is transitive. */
172178
feature largerSpace: Occurrence[1] subsets that;
173179
feature smallerSpace: Occurrence[1] subsets self;
180+
181+
/* spaceEnclosedOccurrences is transitive. */
174182
subset smallerSpace.spaceEnclosedOccurrences subsets largerSpace.spaceEnclosedOccurrences;
183+
184+
/* smallerSpace are outside occurrences that are outside their largerSpace */
185+
subset smallerSpace.outsideOfOccurrences subsets largerSpace.outsideOfOccurrences;
175186
}
176187

177188
feature all spaceTimeEnclosedOccurrences: Occurrence[1..*] subsets timeEnclosedOccurrences, spaceEnclosedOccurrences
@@ -181,6 +192,9 @@ standard library package Occurrences {
181192
* Occurrences that this one completely includes in both space and time,
182193
* including this one.
183194
*/
195+
196+
/* spaceTimeEnclosedOccurrences is transitive */
197+
subset largerSpace.spaceTimeEnclosedOccurrences subsets smallerSpace.spaceTimeEnclosedOccurrences;
184198
}
185199

186200
feature all spaceTimeEnclosedPoints : Occurrence[1..*] subsets spaceTimeEnclosedOccurrences {
@@ -202,13 +216,17 @@ standard library package Occurrences {
202216
* and vice-versa, including this one.
203217
*/
204218

205-
/* spaceTimeCoincidentOccurrences occurrences are inside of each other. */
206219
feature redefines thatOccurrence subsets largerSpace;
207220
feature redefines thisOccurrence subsets smallerSpace;
208221

222+
/* spaceTimeCoincidentOccurrences occurrences are inside of each other. */
209223
connector :InsideOf
210224
from [1] largerSpace references thatOccurrence
211225
to [1] smallerSpace references thisOccurrence;
226+
227+
/* spaceTimeCoincidentOccurrences is transitive */
228+
subset thatOccurrence.spaceTimeCoincidentOccurrences
229+
subsets thisOccurrence.spaceTimeCoincidentOccurrences;
212230
}
213231

214232
feature outsideOfOccurrences: Occurrence[0..*] subsets withoutOccurrences inverse of outsideOfOccurrences {
@@ -288,6 +306,9 @@ standard library package Occurrences {
288306
feature portionOccurrence: Occurrence[1] subsets that;
289307
feature portionedOccurrence: Occurrence[1] subsets self;
290308
binding [1] portionOccurrence.portionOfLife = [1] portionedOccurrence.portionOfLife;
309+
310+
/* portionOf is transitive */
311+
subset portionedOccurrence.portionOf subsets portionOccurrence.portionOf;
291312
}
292313

293314
portion feature timeSlices: Occurrence[1..*] subsets portions {
@@ -304,6 +325,12 @@ standard library package Occurrences {
304325
* Occurrences of which this occurrence is a time slice, including at least this
305326
* occurrence.
306327
*/
328+
329+
feature timeSliceOccurrence: Occurrence[1] subsets that;
330+
feature timeSlicedOccurrence: Occurrence[1] subsets self;
331+
332+
/* timeSliceOf is transitive */
333+
subset timeSlicedOccurrence.timeSliceOf subsets timeSliceOccurrence.timeSliceOf;
307334
}
308335

309336
portion feature all snapshots: Occurrence[1..*] subsets timeSlices {
@@ -353,6 +380,11 @@ standard library package Occurrences {
353380
/*
354381
* The snapshot at the end of the occurrence in time.
355382
*/
383+
384+
/* suboccurrences at the end of an Occurrence must also end. */
385+
feature subendshot : Occurrence [0..*] chains self.suboccurrences.endShot {
386+
feature superendshot : Occurrence [1] subsets that;
387+
subset superendshot subsets self.timeCoincidentOccurrences; }
356388
}
357389

358390
connector :HappensJustBefore
@@ -383,6 +415,9 @@ standard library package Occurrences {
383415
feature spaceSliceOccurrence: Occurrence[1] subsets that;
384416
feature spaceSlicedOccurrence: Occurrence[1] subsets self;
385417
inv { spaceSliceOccurrence.innerSpaceDimension <= spaceSlicedOccurrence.innerSpaceDimension }
418+
419+
/* spaceSliceOf is transitive */
420+
subset spaceSlicedOccurrence.spaceSliceOf subsets spaceSliceOccurrence.spaceSliceOf;
386421
}
387422

388423
portion feature spaceShots: Occurrence[1..*] subsets spaceSlices {
@@ -401,6 +436,9 @@ standard library package Occurrences {
401436
feature spaceShotOccurrence: Occurrence[1] subsets that;
402437
feature spaceShottedOccurrence: Occurrence[1] subsets self;
403438
inv { spaceShotOccurrence.innerSpaceDimension < spaceShottedOccurrence.innerSpaceDimension }
439+
440+
/* spaceShotOf is transitive */
441+
subset spaceShottedOccurrence.spaceShotOf subsets spaceShotOccurrence.spaceShotOf;
404442
}
405443

406444
feature unionsOf: Set[0..*] {
@@ -416,7 +454,7 @@ standard library package Occurrences {
416454
feature union: Occurrence[0..1];
417455

418456
connector :Within
419-
from [0..*] smallerOccurrence references elements
457+
from [0..*] smallerOccurrence references elements
420458
to [1] largerOccurrence references union;
421459
connector :Within
422460
from [0..*] smallerOccurrence references union.spaceTimeEnclosedPoints

0 commit comments

Comments
 (0)