Skip to content

Commit a2e4d12

Browse files
committed
Updated Parts Tree and Parts Interconnection validation cases.
1 parent 36a731a commit a2e4d12

12 files changed

Lines changed: 8561 additions & 7825 deletions
Binary file not shown.
Lines changed: 17 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,28 @@
11
package '1c-Parts Tree Redefinition' {
2-
3-
/* Definitions */
4-
52
class Vehicle {
63
feature mass;
74
}
8-
95
class AxleAssembly { }
10-
116
class Axle {
127
feature mass;
138
}
14-
159
class FrontAxle specializes Axle {
1610
feature steeringAngle;
1711
}
18-
1912
class Wheel { }
2013

21-
/* Usages */
22-
23-
/**
24-
* 'vehicle1' is a package-owned feature of type Vehicle.
25-
* It is not marked as a "part", because that is only
26-
* valid in the context of a nested feature.
27-
*/
2814
vehicle1: Vehicle {
29-
/**
30-
* This redefines the 'mass' feature from Vehicle to give
31-
* it a fixed value.
32-
*/
33-
feature mass redefines Vehicle::mass = 1000;
34-
35-
/**
36-
* 'frontAxleAssembly' is a nested feature of feature 'vehicle1'.
37-
* It is marked as a "part", which indicates that it is a
38-
* composite part of the containing feature.
39-
*
40-
* (And similarly for 'rearAxleAssembly'.)
41-
*/
15+
feature mass redefines Vehicle::mass = 1000;
4216
part frontAxleAssembly: AxleAssembly {
43-
part frontAxle: Axle;
44-
45-
/**
46-
* 'frontWheel' is a nested feature of type 'Wheel' with
47-
* multiplicity "2". This means that this axle assembly
48-
* must have exactly two wheels. However, there is still
49-
* only one 'frontWheel' feature. The feature is "ordered",
50-
* so that the first wheel can be distinguished from the
51-
* second.
52-
*/
17+
part frontAxle: Axle;
5318
part frontWheel: Wheel[2] ordered;
54-
}
55-
19+
}
5620
part rearAxleAssembly: AxleAssembly {
5721
part rearAxle: Axle;
5822
part rearWheel: Wheel[2] ordered;
59-
}
60-
23+
}
6124
}
6225

63-
64-
/**
65-
* 'vehicle1_c1' is a redefinition of 'vehicle1'.
66-
*/
6726
vehicle1_c1 redefines vehicle1 {
6827
/*
6928
* Note: These imports are currently necessary because of qualified name
@@ -72,45 +31,17 @@ package '1c-Parts Tree Redefinition' {
7231
import vehicle1::*;
7332
import vehicle1::frontAxleAssembly::*;
7433
import vehicle1::rearAxleAssembly::*;
75-
76-
/**
77-
* The 'mass' value is redefined again to a new value.
78-
*/
79-
feature mass redefines vehicle1::mass = 2000;
80-
81-
/**
82-
* 'frontAxleAssembly' must be redefined in order to redefine and
83-
* subset its composite parts.
84-
*/
85-
part redefines frontAxleAssembly {
86-
87-
/**
88-
* This redefines the part 'frontAxle' to have type 'FrontAxle',
89-
* without changing the name of the part.
90-
*/
91-
part redefines frontAxle: FrontAxle;
92-
93-
/**
94-
* 'frontWheel_1' is a separate feature from 'frontWheel',
95-
* but it essentially provides an alternate name specifically
96-
* for the first of the two front wheels, as given by the
97-
* expression frontWheel[1].
98-
*
99-
* (And similarly for 'frontWheel_2'.)
100-
*/
101-
part frontWheel_1 subsets frontWheel = frontWheel[1];
102-
part frontWheel_2 subsets frontWheel = frontWheel[2];
103-
}
104-
105-
/**
106-
* 'rearAxleAssembly' must be redefined in order to add new subsetted
107-
* features. However, 'rearAxle' is inherited without redefinition.
108-
*/
109-
part redefines rearAxleAssembly {
110-
part rearWheel_1 subsets rearWheel = rearWheel[1];
111-
part rearWheel_2 subsets rearWheel = rearWheel[2];
112-
}
113-
114-
}
115-
34+
35+
feature mass redefines vehicle1::mass = 2000;
36+
part frontAxleAssembly_c1: AxleAssembly redefines frontAxleAssembly {
37+
part frontAxle_c1: FrontAxle redefines frontAxle;
38+
part frontWheel_1: Wheel subsets frontWheel = frontWheel[1];
39+
part frontWheel_2: Wheel subsets frontWheel = frontWheel[2];
40+
}
41+
part rearAxleAssembly_c1: AxleAssembly redefines rearAxleAssembly {
42+
part rearAxle_c1: Axle redefines rearAxle;
43+
part rearWheel_1: Wheel subsets rearWheel = rearWheel[1];
44+
part rearWheel_2: Wheel subsets rearWheel = rearWheel[2];
45+
}
46+
}
11647
}
Binary file not shown.

sysml/src/validation/1-Parts Tree/1c-Parts Tree Redefinition.sysml

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,19 @@
2929
<ownedMemberElement xsi:type="sysml:Class"/>
3030
</ownedMembership>
3131
<ownedMembership memberName="vehicle1" memberElement="//@ownedMembership.5/@ownedMemberElement">
32-
<ownedElement xsi:type="sysml:Comment" body="/** &#xA;&#x9; * 'vehicle1' is a package-owned feature of type Vehicle.&#xA;&#x9; * It is not marked as a &quot;part&quot;, because that is only&#xA;&#x9; * valid in the context of a nested feature.&#xA;&#x9; */" commentedElement="//@ownedMembership.5/@ownedMemberElement"/>
3332
<ownedMemberElement xsi:type="sysml:Feature" type="//@ownedMembership.0/@ownedMemberElement">
3433
<ownedMembership xsi:type="sysml:FeatureMembership" memberName="mass" memberFeature="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.0/@ownedFeatureElement">
35-
<ownedElement xsi:type="sysml:Comment" body="/**&#xA;&#x9;&#x9; * This redefines the 'mass' feature from Vehicle to give&#xA;&#x9;&#x9; * it a fixed value.&#xA;&#x9;&#x9; */" commentedElement="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.0/@ownedFeatureElement"/>
3634
<ownedFeatureElement>
3735
<ownedElement xsi:type="sysml:Redefinition" redefiningFeature="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.0/@ownedFeatureElement" redefinedFeature="//@ownedMembership.0/@ownedMemberElement/@ownedMembership.0/@ownedFeatureElement"/>
3836
<value xsi:type="sysml:LiteralInteger" value="1000"/>
3937
</ownedFeatureElement>
4038
</ownedMembership>
4139
<ownedMembership xsi:type="sysml:FeatureMembership" memberName="frontAxleAssembly" memberFeature="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement" isPart="true">
42-
<ownedElement xsi:type="sysml:Comment" body="/**&#xA;&#x9;&#x9; * 'frontAxleAssembly' is a nested feature of feature 'vehicle1'.&#xA;&#x9;&#x9; * It is marked as a &quot;part&quot;, which indicates that it is a&#xA;&#x9;&#x9; * composite part of the containing feature.&#xA;&#x9;&#x9; * &#xA;&#x9;&#x9; * (And similarly for 'rearAxleAssembly'.)&#xA;&#x9;&#x9; */" commentedElement="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement"/>
4340
<ownedFeatureElement type="//@ownedMembership.1/@ownedMemberElement">
4441
<ownedMembership xsi:type="sysml:FeatureMembership" memberName="frontAxle" memberFeature="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.0/@ownedFeatureElement" isPart="true">
4542
<ownedFeatureElement type="//@ownedMembership.2/@ownedMemberElement"/>
4643
</ownedMembership>
4744
<ownedMembership xsi:type="sysml:FeatureMembership" memberName="frontWheel" memberFeature="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement" isPart="true">
48-
<ownedElement xsi:type="sysml:Comment" body="/** &#xA;&#x9;&#x9;&#x9; * 'frontWheel' is a nested feature of type 'Wheel' with&#xA;&#x9;&#x9;&#x9; * multiplicity &quot;2&quot;. This means that this axle assembly&#xA;&#x9;&#x9;&#x9; * must have exactly two wheels. However, there is still&#xA;&#x9;&#x9;&#x9; * only one 'frontWheel' feature. The feature is &quot;ordered&quot;,&#xA;&#x9;&#x9;&#x9; * so that the first wheel can be distinguished from the&#xA;&#x9;&#x9;&#x9; * second.&#xA;&#x9;&#x9;&#x9; */" commentedElement="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement"/>
4945
<ownedFeatureElement isOrdered="true" type="//@ownedMembership.4/@ownedMemberElement">
5046
<upper xsi:type="sysml:LiteralInteger" value="2"/>
5147
</ownedFeatureElement>
@@ -67,32 +63,27 @@
6763
</ownedMemberElement>
6864
</ownedMembership>
6965
<ownedMembership memberName="vehicle1_c1" memberElement="//@ownedMembership.6/@ownedMemberElement">
70-
<ownedElement xsi:type="sysml:Comment" body="/**&#xA;&#x9; * 'vehicle1_c1' is a redefinition of 'vehicle1'.&#xA;&#x9; */" commentedElement="//@ownedMembership.6/@ownedMemberElement"/>
7166
<ownedMemberElement xsi:type="sysml:Feature">
7267
<ownedElement xsi:type="sysml:Redefinition" redefiningFeature="//@ownedMembership.6/@ownedMemberElement" redefinedFeature="//@ownedMembership.5/@ownedMemberElement"/>
7368
<ownedImport importedPackage="//@ownedMembership.5/@ownedMemberElement"/>
7469
<ownedImport importedPackage="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement"/>
7570
<ownedImport importedPackage="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement"/>
7671
<ownedMembership xsi:type="sysml:FeatureMembership" memberName="mass" memberFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.0/@ownedFeatureElement">
77-
<ownedElement xsi:type="sysml:Comment" body="/**&#xA;&#x9;&#x9; * The 'mass' value is redefined again to a new value.&#xA;&#x9;&#x9; */" commentedElement="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.0/@ownedFeatureElement"/>
7872
<ownedFeatureElement>
7973
<ownedElement xsi:type="sysml:Redefinition" redefiningFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.0/@ownedFeatureElement" redefinedFeature="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.0/@ownedFeatureElement"/>
8074
<value xsi:type="sysml:LiteralInteger" value="2000"/>
8175
</ownedFeatureElement>
8276
</ownedMembership>
83-
<ownedMembership xsi:type="sysml:FeatureMembership" memberFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement" isPart="true">
84-
<ownedElement xsi:type="sysml:Comment" body="/**&#xA;&#x9;&#x9; * 'frontAxleAssembly' must be redefined in order to redefine and&#xA;&#x9;&#x9; * subset its composite parts. &#xA;&#x9;&#x9; */" commentedElement="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement"/>
85-
<ownedFeatureElement>
77+
<ownedMembership xsi:type="sysml:FeatureMembership" memberName="frontAxleAssembly_c1" memberFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement" isPart="true">
78+
<ownedFeatureElement type="//@ownedMembership.1/@ownedMemberElement">
8679
<ownedElement xsi:type="sysml:Redefinition" redefiningFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement" redefinedFeature="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement"/>
87-
<ownedMembership xsi:type="sysml:FeatureMembership" memberFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.0/@ownedFeatureElement" isPart="true">
88-
<ownedElement xsi:type="sysml:Comment" body="/**&#xA;&#x9;&#x9;&#x9; * This redefines the part 'frontAxle' to have type 'FrontAxle',&#xA;&#x9;&#x9;&#x9; * without changing the name of the part.&#xA;&#x9;&#x9;&#x9; */" commentedElement="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.0/@ownedFeatureElement"/>
80+
<ownedMembership xsi:type="sysml:FeatureMembership" memberName="frontAxle_c1" memberFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.0/@ownedFeatureElement" isPart="true">
8981
<ownedFeatureElement type="//@ownedMembership.3/@ownedMemberElement">
9082
<ownedElement xsi:type="sysml:Redefinition" redefiningFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.0/@ownedFeatureElement" redefinedFeature="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.0/@ownedFeatureElement"/>
9183
</ownedFeatureElement>
9284
</ownedMembership>
9385
<ownedMembership xsi:type="sysml:FeatureMembership" memberName="frontWheel_1" memberFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement" isPart="true">
94-
<ownedElement xsi:type="sysml:Comment" body="/**&#xA;&#x9;&#x9;&#x9; * 'frontWheel_1' is a separate feature from 'frontWheel',&#xA;&#x9;&#x9;&#x9; * but it essentially provides an alternate name specifically&#xA;&#x9;&#x9;&#x9; * for the first of the two front wheels, as given by the&#xA;&#x9;&#x9;&#x9; * expression frontWheel[1].&#xA;&#x9;&#x9;&#x9; * &#xA;&#x9;&#x9;&#x9; * (And similarly for 'frontWheel_2'.)&#xA;&#x9;&#x9;&#x9; */" commentedElement="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement"/>
95-
<ownedFeatureElement>
86+
<ownedFeatureElement type="//@ownedMembership.4/@ownedMemberElement">
9687
<ownedElement xsi:type="sysml:Subset" subsettedFeature="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement" subsettingFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement"/>
9788
<value xsi:type="sysml:SequenceAccessExpression">
9889
<primary xsi:type="sysml:ElementReferenceExpression" referent="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement"/>
@@ -101,7 +92,7 @@
10192
</ownedFeatureElement>
10293
</ownedMembership>
10394
<ownedMembership xsi:type="sysml:FeatureMembership" memberName="frontWheel_2" memberFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.2/@ownedFeatureElement" isPart="true">
104-
<ownedFeatureElement>
95+
<ownedFeatureElement type="//@ownedMembership.4/@ownedMemberElement">
10596
<ownedElement xsi:type="sysml:Subset" subsettedFeature="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement" subsettingFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.2/@ownedFeatureElement"/>
10697
<value xsi:type="sysml:SequenceAccessExpression">
10798
<primary xsi:type="sysml:ElementReferenceExpression" referent="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.1/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement"/>
@@ -111,22 +102,26 @@
111102
</ownedMembership>
112103
</ownedFeatureElement>
113104
</ownedMembership>
114-
<ownedMembership xsi:type="sysml:FeatureMembership" memberFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement" isPart="true">
115-
<ownedElement xsi:type="sysml:Comment" body="/**&#xA;&#x9;&#x9; * 'rearAxleAssembly' must be redefined in order to add new subsetted&#xA;&#x9;&#x9; * features. However, 'rearAxle' is inherited without redefinition.&#xA;&#x9;&#x9; */" commentedElement="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement"/>
116-
<ownedFeatureElement>
105+
<ownedMembership xsi:type="sysml:FeatureMembership" memberName="rearAxleAssembly_c1" memberFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement" isPart="true">
106+
<ownedFeatureElement type="//@ownedMembership.1/@ownedMemberElement">
117107
<ownedElement xsi:type="sysml:Redefinition" redefiningFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement" redefinedFeature="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement"/>
118-
<ownedMembership xsi:type="sysml:FeatureMembership" memberName="rearWheel_1" memberFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.0/@ownedFeatureElement" isPart="true">
119-
<ownedFeatureElement>
120-
<ownedElement xsi:type="sysml:Subset" subsettedFeature="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement" subsettingFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.0/@ownedFeatureElement"/>
108+
<ownedMembership xsi:type="sysml:FeatureMembership" memberName="rearAxle_c1" memberFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.0/@ownedFeatureElement" isPart="true">
109+
<ownedFeatureElement type="//@ownedMembership.2/@ownedMemberElement">
110+
<ownedElement xsi:type="sysml:Redefinition" redefiningFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.0/@ownedFeatureElement" redefinedFeature="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.0/@ownedFeatureElement"/>
111+
</ownedFeatureElement>
112+
</ownedMembership>
113+
<ownedMembership xsi:type="sysml:FeatureMembership" memberName="rearWheel_1" memberFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement" isPart="true">
114+
<ownedFeatureElement type="//@ownedMembership.4/@ownedMemberElement">
115+
<ownedElement xsi:type="sysml:Subset" subsettedFeature="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement" subsettingFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement"/>
121116
<value xsi:type="sysml:SequenceAccessExpression">
122117
<primary xsi:type="sysml:ElementReferenceExpression" referent="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement"/>
123118
<index xsi:type="sysml:LiteralInteger" value="1"/>
124119
</value>
125120
</ownedFeatureElement>
126121
</ownedMembership>
127-
<ownedMembership xsi:type="sysml:FeatureMembership" memberName="rearWheel_2" memberFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement" isPart="true">
128-
<ownedFeatureElement>
129-
<ownedElement xsi:type="sysml:Subset" subsettedFeature="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement" subsettingFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement"/>
122+
<ownedMembership xsi:type="sysml:FeatureMembership" memberName="rearWheel_2" memberFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.2/@ownedFeatureElement" isPart="true">
123+
<ownedFeatureElement type="//@ownedMembership.4/@ownedMemberElement">
124+
<ownedElement xsi:type="sysml:Subset" subsettedFeature="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement" subsettingFeature="//@ownedMembership.6/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.2/@ownedFeatureElement"/>
130125
<value xsi:type="sysml:SequenceAccessExpression">
131126
<primary xsi:type="sysml:ElementReferenceExpression" referent="//@ownedMembership.5/@ownedMemberElement/@ownedMembership.2/@ownedFeatureElement/@ownedMembership.1/@ownedFeatureElement"/>
132127
<index xsi:type="sysml:LiteralInteger" value="2"/>

0 commit comments

Comments
 (0)