sysml-validate 0.11.0 → 0.14.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/LICENSE +27 -27
  2. package/README.md +200 -200
  3. package/out/main.js +598 -142
  4. package/out/main.js.map +4 -4
  5. package/package.json +57 -57
  6. package/resources/sysml.dimension-table.json +1 -1
  7. package/resources/sysml.library/Domain Libraries/Analysis/.meta.json +9 -9
  8. package/resources/sysml.library/Domain Libraries/Analysis/.project.json +26 -26
  9. package/resources/sysml.library/Domain Libraries/Analysis/AnalysisTooling.sysml +33 -33
  10. package/resources/sysml.library/Domain Libraries/Analysis/SampledFunctions.sysml +118 -118
  11. package/resources/sysml.library/Domain Libraries/Analysis/StateSpaceRepresentation.sysml +143 -143
  12. package/resources/sysml.library/Domain Libraries/Analysis/TradeStudies.sysml +170 -170
  13. package/resources/sysml.library/Domain Libraries/Cause and Effect/.meta.json +7 -7
  14. package/resources/sysml.library/Domain Libraries/Cause and Effect/.project.json +22 -22
  15. package/resources/sysml.library/Domain Libraries/Cause and Effect/CausationConnections.sysml +82 -82
  16. package/resources/sysml.library/Domain Libraries/Cause and Effect/CauseAndEffect.sysml +81 -81
  17. package/resources/sysml.library/Domain Libraries/Geometry/.meta.json +7 -7
  18. package/resources/sysml.library/Domain Libraries/Geometry/.project.json +26 -26
  19. package/resources/sysml.library/Domain Libraries/Geometry/ShapeItems.sysml +898 -898
  20. package/resources/sysml.library/Domain Libraries/Geometry/SpatialItems.sysml +167 -167
  21. package/resources/sysml.library/Domain Libraries/Metadata/.meta.json +9 -9
  22. package/resources/sysml.library/Domain Libraries/Metadata/.project.json +18 -18
  23. package/resources/sysml.library/Domain Libraries/Metadata/ImageMetadata.sysml +77 -77
  24. package/resources/sysml.library/Domain Libraries/Metadata/ModelingMetadata.sysml +142 -142
  25. package/resources/sysml.library/Domain Libraries/Metadata/ParametersOfInterestMetadata.sysml +38 -38
  26. package/resources/sysml.library/Domain Libraries/Metadata/RiskMetadata.sysml +99 -99
  27. package/resources/sysml.library/Domain Libraries/Quantities and Units/.meta.json +28 -28
  28. package/resources/sysml.library/Domain Libraries/Quantities and Units/.project.json +22 -22
  29. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQ.sysml +42 -42
  30. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQAcoustics.sysml +439 -439
  31. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQAtomicNuclear.sysml +2726 -2726
  32. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQBase.sysml +206 -206
  33. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQCharacteristicNumbers.sysml +1991 -1991
  34. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQChemistryMolecular.sysml +1353 -1353
  35. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQCondensedMatter.sysml +1223 -1223
  36. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQElectromagnetism.sysml +2333 -2333
  37. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQInformation.sysml +958 -958
  38. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQLight.sysml +1537 -1537
  39. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQMechanics.sysml +1564 -1564
  40. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQSpaceTime.sysml +1169 -1169
  41. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQThermodynamics.sysml +1256 -1256
  42. package/resources/sysml.library/Domain Libraries/Quantities and Units/MeasurementRefCalculations.sysml +30 -30
  43. package/resources/sysml.library/Domain Libraries/Quantities and Units/MeasurementReferences.sysml +526 -526
  44. package/resources/sysml.library/Domain Libraries/Quantities and Units/Quantities.sysml +107 -107
  45. package/resources/sysml.library/Domain Libraries/Quantities and Units/QuantityCalculations.sysml +70 -70
  46. package/resources/sysml.library/Domain Libraries/Quantities and Units/SI.sysml +378 -378
  47. package/resources/sysml.library/Domain Libraries/Quantities and Units/SIPrefixes.sysml +48 -48
  48. package/resources/sysml.library/Domain Libraries/Quantities and Units/TensorCalculations.sysml +49 -49
  49. package/resources/sysml.library/Domain Libraries/Quantities and Units/Time.sysml +274 -274
  50. package/resources/sysml.library/Domain Libraries/Quantities and Units/USCustomaryUnits.sysml +260 -260
  51. package/resources/sysml.library/Domain Libraries/Quantities and Units/VectorCalculations.sysml +62 -62
  52. package/resources/sysml.library/Domain Libraries/Requirement Derivation/.meta.json +7 -7
  53. package/resources/sysml.library/Domain Libraries/Requirement Derivation/.project.json +18 -18
  54. package/resources/sysml.library/Domain Libraries/Requirement Derivation/DerivationConnections.sysml +62 -62
  55. package/resources/sysml.library/Domain Libraries/Requirement Derivation/RequirementDerivation.sysml +38 -38
  56. package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/.meta.json +8 -8
  57. package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/.project.json +10 -10
  58. package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/Collections.kerml +176 -176
  59. package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/ScalarValues.kerml +23 -23
  60. package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/VectorValues.kerml +63 -63
  61. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/.meta.json +22 -22
  62. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/.project.json +14 -14
  63. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/BaseFunctions.kerml +79 -79
  64. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/BooleanFunctions.kerml +22 -22
  65. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/CollectionFunctions.kerml +68 -68
  66. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ComplexFunctions.kerml +47 -47
  67. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ControlFunctions.kerml +116 -116
  68. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/DataFunctions.kerml +42 -42
  69. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/IntegerFunctions.kerml +43 -43
  70. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/NaturalFunctions.kerml +27 -27
  71. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/NumericalFunctions.kerml +42 -42
  72. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/OccurrenceFunctions.kerml +153 -153
  73. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/RationalFunctions.kerml +49 -49
  74. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/RealFunctions.kerml +56 -56
  75. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ScalarFunctions.kerml +32 -32
  76. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/SequenceFunctions.kerml +110 -110
  77. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/StringFunctions.kerml +25 -25
  78. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/TrigFunctions.kerml +34 -34
  79. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/VectorFunctions.kerml +272 -272
  80. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/.meta.json +21 -21
  81. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/.project.json +14 -14
  82. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Base.kerml +94 -94
  83. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Clocks.kerml +155 -155
  84. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/ControlPerformances.kerml +134 -134
  85. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/FeatureReferencingPerformances.kerml +189 -189
  86. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/KerML.kerml +483 -483
  87. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Links.kerml +66 -66
  88. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Metaobjects.kerml +57 -57
  89. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Objects.kerml +212 -212
  90. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Observation.kerml +160 -160
  91. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Occurrences.kerml +992 -992
  92. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Performances.kerml +292 -292
  93. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/SpatialFrames.kerml +196 -196
  94. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/StatePerformances.kerml +144 -144
  95. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Transfers.kerml +280 -280
  96. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/TransitionPerformances.kerml +65 -65
  97. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Triggers.kerml +187 -187
  98. package/resources/sysml.library/LICENSE +276 -276
  99. package/resources/sysml.library/NOTICE.md +20 -20
  100. package/resources/sysml.library/Systems Library/Actions.sysml +556 -556
  101. package/resources/sysml.library/Systems Library/Allocations.sysml +28 -28
  102. package/resources/sysml.library/Systems Library/AnalysisCases.sysml +37 -37
  103. package/resources/sysml.library/Systems Library/Attributes.sysml +24 -24
  104. package/resources/sysml.library/Systems Library/Calculations.sysml +36 -36
  105. package/resources/sysml.library/Systems Library/Cases.sysml +70 -70
  106. package/resources/sysml.library/Systems Library/Connections.sysml +59 -59
  107. package/resources/sysml.library/Systems Library/Constraints.sysml +43 -43
  108. package/resources/sysml.library/Systems Library/Flows.sysml +125 -125
  109. package/resources/sysml.library/Systems Library/Interfaces.sysml +88 -88
  110. package/resources/sysml.library/Systems Library/Items.sysml +152 -152
  111. package/resources/sysml.library/Systems Library/Metadata.sysml +31 -31
  112. package/resources/sysml.library/Systems Library/Parts.sysml +80 -80
  113. package/resources/sysml.library/Systems Library/Ports.sysml +53 -53
  114. package/resources/sysml.library/Systems Library/Requirements.sysml +193 -193
  115. package/resources/sysml.library/Systems Library/StandardViewDefinitions.sysml +123 -123
  116. package/resources/sysml.library/Systems Library/States.sysml +102 -102
  117. package/resources/sysml.library/Systems Library/SysML.sysml +539 -539
  118. package/resources/sysml.library/Systems Library/UseCases.sysml +56 -56
  119. package/resources/sysml.library/Systems Library/VerificationCases.sysml +102 -102
  120. package/resources/sysml.library/Systems Library/Views.sysml +163 -163
  121. package/resources/sysml.library.index.json +1 -1
@@ -1,67 +1,67 @@
1
- standard library package Links {
2
- doc
3
- /*
4
- * This package defines associations and features that are related to the typing of links.
5
- */
6
-
7
- private import Base::Anything;
8
- private import Base::things;
9
-
10
- abstract assoc Link specializes Anything {
11
- doc
12
- /*
13
- * Link is the most general association between two or more things.
14
- */
15
-
16
- feature participant: Anything[2..*] nonunique ordered;
17
- }
18
-
19
- assoc all BinaryLink specializes Link {
20
- doc
21
- /*
22
- * BinaryLink is the most general binary association between exactly two things,
23
- * nominally directed from source to target.
24
- */
25
-
26
- feature participant: Anything[2] nonunique ordered redefines Link::participant;
27
-
28
- end feature source: Anything[1] subsets participant;
29
- end feature target: Anything[1] subsets participant;
30
- }
31
-
32
- assoc all SelfLink specializes BinaryLink {
33
- doc
34
- /*
35
- * SelfLink is a binary association in which the things at the two ends are asserted
36
- * to be the same.
37
- */
38
-
39
- end feature thisThing: Anything redefines source subsets sameThing crosses sameThing.self;
40
- end self2 [1] feature sameThing: Anything redefines target subsets thisThing;
41
- }
42
-
43
- abstract feature links: Link[0..*] nonunique subsets things {
44
- doc
45
- /*
46
- * links is the most general feature of links between individuals.
47
- */
48
- }
49
-
50
- abstract feature binaryLinks: BinaryLink[0..*] nonunique subsets links {
51
- doc
52
- /*
53
- * binaryLinks is a specialization of links restricted to type BinaryLink.
54
- */
55
- }
56
-
57
- abstract feature selfLinks: SelfLink[0..*] nonunique subsets binaryLinks {
58
- doc
59
- /*
60
- * selfLinks is a specialization of binaryLinks restricted to type SelfLink.
61
- */
62
-
63
- end feature thisThing: Anything redefines SelfLink::thisThing, binaryLinks::source;
64
- end feature sameThing: Anything redefines SelfLink::sameThing, binaryLinks::target;
65
- }
66
-
1
+ standard library package Links {
2
+ doc
3
+ /*
4
+ * This package defines associations and features that are related to the typing of links.
5
+ */
6
+
7
+ private import Base::Anything;
8
+ private import Base::things;
9
+
10
+ abstract assoc Link specializes Anything {
11
+ doc
12
+ /*
13
+ * Link is the most general association between two or more things.
14
+ */
15
+
16
+ feature participant: Anything[2..*] nonunique ordered;
17
+ }
18
+
19
+ assoc all BinaryLink specializes Link {
20
+ doc
21
+ /*
22
+ * BinaryLink is the most general binary association between exactly two things,
23
+ * nominally directed from source to target.
24
+ */
25
+
26
+ feature participant: Anything[2] nonunique ordered redefines Link::participant;
27
+
28
+ end feature source: Anything[1] subsets participant;
29
+ end feature target: Anything[1] subsets participant;
30
+ }
31
+
32
+ assoc all SelfLink specializes BinaryLink {
33
+ doc
34
+ /*
35
+ * SelfLink is a binary association in which the things at the two ends are asserted
36
+ * to be the same.
37
+ */
38
+
39
+ end feature thisThing: Anything redefines source subsets sameThing crosses sameThing.self;
40
+ end self2 [1] feature sameThing: Anything redefines target subsets thisThing;
41
+ }
42
+
43
+ abstract feature links: Link[0..*] nonunique subsets things {
44
+ doc
45
+ /*
46
+ * links is the most general feature of links between individuals.
47
+ */
48
+ }
49
+
50
+ abstract feature binaryLinks: BinaryLink[0..*] nonunique subsets links {
51
+ doc
52
+ /*
53
+ * binaryLinks is a specialization of links restricted to type BinaryLink.
54
+ */
55
+ }
56
+
57
+ abstract feature selfLinks: SelfLink[0..*] nonunique subsets binaryLinks {
58
+ doc
59
+ /*
60
+ * selfLinks is a specialization of binaryLinks restricted to type SelfLink.
61
+ */
62
+
63
+ end feature thisThing: Anything redefines SelfLink::thisThing, binaryLinks::source;
64
+ end feature sameThing: Anything redefines SelfLink::sameThing, binaryLinks::target;
65
+ }
66
+
67
67
  }
@@ -1,58 +1,58 @@
1
- standard library package Metaobjects {
2
- doc
3
- /*
4
- * This package defines Metaclasses and Features that are related to the typing of syntactic and semantic metadata.
5
- */
6
-
7
- private import Objects::Object;
8
- private import Objects::objects;
9
- private import KerML::Element;
10
- private import KerML::Type;
11
-
12
- abstract metaclass Metaobject specializes Object {
13
- doc
14
- /*
15
- * A Metaobject contains syntactic or semantic information about one or more annotatedElements.
16
- * It is the most general Metaclass. All other Metaclasses must subclassify it directly or indirectly.
17
- */
18
-
19
- feature redefines self : Metaobject;
20
-
21
- abstract feature annotatedElement : Element[1..*] {
22
- doc
23
- /*
24
- * The Elements annotated by this Metaobject. This is set automatically when a Metaobject is
25
- * instantiated as the value of a MetadataFeature.
26
- */
27
- }
28
- }
29
-
30
- abstract metaclass SemanticMetadata specializes Metaobject {
31
- doc
32
- /*
33
- * SemanticMetadata is a Metaobject that requires its single annotatedType to directly or indirectly specialize
34
- * a baseType that models the semantics for the annotatedType.
35
- */
36
-
37
- abstract feature redefines annotatedElement : Type[1] {
38
- doc
39
- /*
40
- * The single annotatedElement of this SemanticMetadata, which must be a Type.
41
- */
42
- }
43
-
44
- feature baseType : Type[1] {
45
- doc
46
- /*
47
- * The required base Type for the annotatedType.
48
- */
49
- }
50
- }
51
-
52
- feature metaobjects : Metaobject[0..*] :> objects {
53
- /*
54
- * metaobjects is a specialization of objects restricted to type Metadata. It is the most general
55
- * MetadataFeature. All other MetadataFeatures must subset it directly or indirectly.
56
- */
57
- }
1
+ standard library package Metaobjects {
2
+ doc
3
+ /*
4
+ * This package defines Metaclasses and Features that are related to the typing of syntactic and semantic metadata.
5
+ */
6
+
7
+ private import Objects::Object;
8
+ private import Objects::objects;
9
+ private import KerML::Element;
10
+ private import KerML::Type;
11
+
12
+ abstract metaclass Metaobject specializes Object {
13
+ doc
14
+ /*
15
+ * A Metaobject contains syntactic or semantic information about one or more annotatedElements.
16
+ * It is the most general Metaclass. All other Metaclasses must subclassify it directly or indirectly.
17
+ */
18
+
19
+ feature redefines self : Metaobject;
20
+
21
+ abstract feature annotatedElement : Element[1..*] {
22
+ doc
23
+ /*
24
+ * The Elements annotated by this Metaobject. This is set automatically when a Metaobject is
25
+ * instantiated as the value of a MetadataFeature.
26
+ */
27
+ }
28
+ }
29
+
30
+ abstract metaclass SemanticMetadata specializes Metaobject {
31
+ doc
32
+ /*
33
+ * SemanticMetadata is a Metaobject that requires its single annotatedType to directly or indirectly specialize
34
+ * a baseType that models the semantics for the annotatedType.
35
+ */
36
+
37
+ abstract feature redefines annotatedElement : Type[1] {
38
+ doc
39
+ /*
40
+ * The single annotatedElement of this SemanticMetadata, which must be a Type.
41
+ */
42
+ }
43
+
44
+ feature baseType : Type[1] {
45
+ doc
46
+ /*
47
+ * The required base Type for the annotatedType.
48
+ */
49
+ }
50
+ }
51
+
52
+ feature metaobjects : Metaobject[0..*] :> objects {
53
+ /*
54
+ * metaobjects is a specialization of objects restricted to type Metadata. It is the most general
55
+ * MetadataFeature. All other MetadataFeatures must subset it directly or indirectly.
56
+ */
57
+ }
58
58
  }
@@ -1,212 +1,212 @@
1
- standard library package Objects {
2
- doc
3
- /*
4
- * This package defines classifiers and features that are related to the typing of objects, including link objects.
5
- */
6
-
7
- private import Base::Anything;
8
- private import Base::things;
9
- private import Links::*;
10
- private import Occurrences::Occurrence;
11
- private import Occurrences::occurrences;
12
- private import Occurrences::HappensLink;
13
- private import Occurrences::SelfSameLifeLink;
14
- private import Occurrences::WithinBoth;
15
- private import Performances::Performance;
16
- private import Performances::performances;
17
- private import SequenceFunctions::isEmpty;
18
- private import SequenceFunctions::notEmpty;
19
- private import SequenceFunctions::union;
20
- private import CollectionFunctions::contains;
21
- private import ScalarValues::Integer;
22
- private import ScalarValues::Natural;
23
-
24
- abstract struct Object specializes Occurrence {
25
- doc
26
- /*
27
- * Object is the most general class of structural occurrences that may change over time.
28
- */
29
-
30
- feature self: Object redefines Occurrence::self;
31
-
32
- composite feature subobjects: Object[0..*] subsets objects, suboccurrences
33
- intersects objects, suboccurrences {
34
- doc
35
- /*
36
- * The suboccurrences of this Object that are also Objects.
37
- */
38
- }
39
-
40
- feature involvingPerformances: Performance[0..*] subsets performances {
41
- doc
42
- /*
43
- * Performances in which this object is involved.
44
- */
45
- }
46
-
47
- abstract step enactedPerformances: Performance[0..*] subsets involvingPerformances, timeEnclosedOccurrences
48
- intersects involvingPerformances, timeEnclosedOccurrences {
49
- doc
50
- /*
51
- * Performances that are enacted by this object.
52
- */
53
- }
54
-
55
- composite step ownedPerformances: Performance[0..*] subsets involvingPerformances, timeEnclosedOccurrences, suboccurrences
56
- intersects involvingPerformances, timeEnclosedOccurrences, suboccurrences {
57
- doc
58
- /*
59
- * Performances that are owned by this object.
60
- */
61
-
62
- feature redefines this default that {
63
- doc
64
- /*
65
- * The owning object is the default "this" reference for all ownedPerformances.
66
- */
67
- }
68
- }
69
-
70
- portion structuredSpaceBoundary : StructuredSpaceObject[0..1] subsets spaceBoundary {
71
- doc
72
- /*
73
- * A space boundary that is a structured space object.
74
- */
75
- }
76
- }
77
-
78
- abstract assoc struct LinkObject specializes Link, Object intersects Link, Object {
79
- doc
80
- /*
81
- * LinkObject is the most general association structure, being both a Link and an Object.
82
- */
83
- }
84
-
85
- assoc struct BinaryLinkObject specializes BinaryLink, LinkObject intersects BinaryLink, LinkObject {
86
- doc
87
- /*
88
- * BinaryLinkObject is the most general binary association structure, being both a
89
- * BinaryLink and a LinkObject.
90
- */
91
- }
92
-
93
- abstract feature objects: Object[0..*] nonunique subsets occurrences {
94
- doc
95
- /*
96
- * objects is a specialization of occurrences restricted to type Object.
97
- */
98
- }
99
-
100
- abstract feature linkObjects: LinkObject[0..*] nonunique subsets links, objects intersects links, objects {
101
- doc
102
- /*
103
- * linkObjects is a specializations of links and objects restricted to type LinkObjects.
104
- */
105
- }
106
-
107
- abstract feature binaryLinkObjects: BinaryLinkObject[0..*] nonunique subsets binaryLinks, linkObjects
108
- intersects binaryLinks, linkObjects {
109
- doc
110
- /*
111
- * binaryLinkObjects is a specialization of binaryLinks and linkObjects restricted to
112
- * type BinaryLinkObjects.
113
- */
114
- }
115
-
116
-
117
- struct all Body specializes Object {
118
- doc
119
- /*
120
- * A Body is an Object of inner space dimension 3.
121
- */
122
-
123
- feature redefines innerSpaceDimension = 3;
124
- }
125
-
126
- struct all Surface specializes Object {
127
- doc
128
- /*
129
- * A Surface is an Object of inner space dimension 2.
130
- */
131
-
132
- feature redefines innerSpaceDimension = 2;
133
- /* The number of "holes" in this Surface, assuming it isClosed. */
134
- feature genus : Natural[0..1] default 0;
135
-
136
- inv { notEmpty(genus) implies isClosed }
137
- }
138
-
139
- struct all Curve specializes Object {
140
- doc
141
- /*
142
- * A Curve is an Object of inner space dimension 1.
143
- */
144
-
145
- feature redefines innerSpaceDimension = 1;
146
- }
147
-
148
- struct all Point specializes Object {
149
- doc
150
- /*
151
- * A Point is an Object of inner space dimension 0.
152
- */
153
-
154
- feature redefines innerSpaceDimension = 0;
155
- }
156
-
157
- abstract struct StructuredSpaceObject specializes Object {
158
- doc
159
- /*
160
- * A StructuredSpaceObject is an Object that is broken up into smaller structured space objects (cells) of
161
- * the same or lower inner space dimension: faces that are surfaces, edges that are curves, and vertices
162
- * that are points, with edges and vertices on the boundary of faces, and vertices on the boundary of
163
- * edges. Cells meet when a structured space object is closed, as required to be a space boundary of
164
- * an object (faces meet at their edges and/or vertices, while edges meet at their vertices). The
165
- * inner space dimension of structured space object is the highest of their cells.
166
- */
167
-
168
- abstract portion feature structuredSpaceObjectCells : StructuredSpaceObject[1..*] subsets Occurrence::spaceSlices {
169
- feature cellOrientation : Integer [0..1];
170
- inv { notEmpty(cellOrientation) implies (cellOrientation >= -1 & cellOrientation <= 1) }
171
- }
172
-
173
- comment about StructuredSurface, StructuredCurve, StructuredPoint
174
- /*
175
- * The structures StructuredSurface, StructuredCurve and StructuredPoint provide common, necessary redefinitions of
176
- * innerSpaceDimension. They also provide single types for the StructuredSpaceObject features faces, edges and
177
- * vertices, which avoids problems when these features are related by connectors with ends that have owned
178
- * cross features.
179
- */
180
- struct StructuredSurface specializes StructuredSpaceObject, Surface {
181
- feature redefines StructuredSpaceObject::innerSpaceDimension, Surface::innerSpaceDimension;
182
- }
183
- struct StructuredCurve specializes StructuredSpaceObject, Curve {
184
- feature redefines StructuredSpaceObject::innerSpaceDimension, Curve::innerSpaceDimension;
185
- }
186
- struct StructuredPoint specializes StructuredSpaceObject, Point {
187
- feature redefines StructuredSpaceObject::innerSpaceDimension, Point::innerSpaceDimension;
188
- }
189
-
190
- portion feature faces : StructuredSurface[0..*] ordered subsets structuredSpaceObjectCells {
191
- feature redefines that : StructuredSpaceObject;
192
- feature redefines edges subsets that.edges;
193
- feature redefines vertices subsets that.vertices;
194
- derived feature redefines spaceBoundary;
195
- inv { isEmpty(spaceBoundary) == isEmpty(union(edges, vertices)) }
196
- inv { notEmpty(spaceBoundary) implies contains(spaceBoundary.unionsOf, union(edges, vertices)) }
197
- }
198
-
199
- portion feature edges : StructuredCurve[0..*] ordered subsets structuredSpaceObjectCells {
200
- feature redefines that : StructuredSpaceObject;
201
- feature redefines vertices subsets that.vertices;
202
- derived feature redefines spaceBoundary;
203
- inv { isEmpty(spaceBoundary) == isEmpty(vertices) }
204
- inv { notEmpty(spaceBoundary) implies contains(spaceBoundary.unionsOf, vertices) }
205
- }
206
-
207
- portion feature vertices : StructuredPoint[0..*] ordered subsets structuredSpaceObjectCells;
208
-
209
- derived feature redefines innerSpaceDimension =
210
- if notEmpty(faces) ? 2 else if notEmpty(edges) ? 1 else 0;
211
- }
212
- }
1
+ standard library package Objects {
2
+ doc
3
+ /*
4
+ * This package defines classifiers and features that are related to the typing of objects, including link objects.
5
+ */
6
+
7
+ private import Base::Anything;
8
+ private import Base::things;
9
+ private import Links::*;
10
+ private import Occurrences::Occurrence;
11
+ private import Occurrences::occurrences;
12
+ private import Occurrences::HappensLink;
13
+ private import Occurrences::SelfSameLifeLink;
14
+ private import Occurrences::WithinBoth;
15
+ private import Performances::Performance;
16
+ private import Performances::performances;
17
+ private import SequenceFunctions::isEmpty;
18
+ private import SequenceFunctions::notEmpty;
19
+ private import SequenceFunctions::union;
20
+ private import CollectionFunctions::contains;
21
+ private import ScalarValues::Integer;
22
+ private import ScalarValues::Natural;
23
+
24
+ abstract struct Object specializes Occurrence {
25
+ doc
26
+ /*
27
+ * Object is the most general class of structural occurrences that may change over time.
28
+ */
29
+
30
+ feature self: Object redefines Occurrence::self;
31
+
32
+ composite feature subobjects: Object[0..*] subsets objects, suboccurrences
33
+ intersects objects, suboccurrences {
34
+ doc
35
+ /*
36
+ * The suboccurrences of this Object that are also Objects.
37
+ */
38
+ }
39
+
40
+ feature involvingPerformances: Performance[0..*] subsets performances {
41
+ doc
42
+ /*
43
+ * Performances in which this object is involved.
44
+ */
45
+ }
46
+
47
+ abstract step enactedPerformances: Performance[0..*] subsets involvingPerformances, timeEnclosedOccurrences
48
+ intersects involvingPerformances, timeEnclosedOccurrences {
49
+ doc
50
+ /*
51
+ * Performances that are enacted by this object.
52
+ */
53
+ }
54
+
55
+ composite step ownedPerformances: Performance[0..*] subsets involvingPerformances, timeEnclosedOccurrences, suboccurrences
56
+ intersects involvingPerformances, timeEnclosedOccurrences, suboccurrences {
57
+ doc
58
+ /*
59
+ * Performances that are owned by this object.
60
+ */
61
+
62
+ feature redefines this default that {
63
+ doc
64
+ /*
65
+ * The owning object is the default "this" reference for all ownedPerformances.
66
+ */
67
+ }
68
+ }
69
+
70
+ portion structuredSpaceBoundary : StructuredSpaceObject[0..1] subsets spaceBoundary {
71
+ doc
72
+ /*
73
+ * A space boundary that is a structured space object.
74
+ */
75
+ }
76
+ }
77
+
78
+ abstract assoc struct LinkObject specializes Link, Object intersects Link, Object {
79
+ doc
80
+ /*
81
+ * LinkObject is the most general association structure, being both a Link and an Object.
82
+ */
83
+ }
84
+
85
+ assoc struct BinaryLinkObject specializes BinaryLink, LinkObject intersects BinaryLink, LinkObject {
86
+ doc
87
+ /*
88
+ * BinaryLinkObject is the most general binary association structure, being both a
89
+ * BinaryLink and a LinkObject.
90
+ */
91
+ }
92
+
93
+ abstract feature objects: Object[0..*] nonunique subsets occurrences {
94
+ doc
95
+ /*
96
+ * objects is a specialization of occurrences restricted to type Object.
97
+ */
98
+ }
99
+
100
+ abstract feature linkObjects: LinkObject[0..*] nonunique subsets links, objects intersects links, objects {
101
+ doc
102
+ /*
103
+ * linkObjects is a specializations of links and objects restricted to type LinkObjects.
104
+ */
105
+ }
106
+
107
+ abstract feature binaryLinkObjects: BinaryLinkObject[0..*] nonunique subsets binaryLinks, linkObjects
108
+ intersects binaryLinks, linkObjects {
109
+ doc
110
+ /*
111
+ * binaryLinkObjects is a specialization of binaryLinks and linkObjects restricted to
112
+ * type BinaryLinkObjects.
113
+ */
114
+ }
115
+
116
+
117
+ struct all Body specializes Object {
118
+ doc
119
+ /*
120
+ * A Body is an Object of inner space dimension 3.
121
+ */
122
+
123
+ feature redefines innerSpaceDimension = 3;
124
+ }
125
+
126
+ struct all Surface specializes Object {
127
+ doc
128
+ /*
129
+ * A Surface is an Object of inner space dimension 2.
130
+ */
131
+
132
+ feature redefines innerSpaceDimension = 2;
133
+ /* The number of "holes" in this Surface, assuming it isClosed. */
134
+ feature genus : Natural[0..1] default 0;
135
+
136
+ inv { notEmpty(genus) implies isClosed }
137
+ }
138
+
139
+ struct all Curve specializes Object {
140
+ doc
141
+ /*
142
+ * A Curve is an Object of inner space dimension 1.
143
+ */
144
+
145
+ feature redefines innerSpaceDimension = 1;
146
+ }
147
+
148
+ struct all Point specializes Object {
149
+ doc
150
+ /*
151
+ * A Point is an Object of inner space dimension 0.
152
+ */
153
+
154
+ feature redefines innerSpaceDimension = 0;
155
+ }
156
+
157
+ abstract struct StructuredSpaceObject specializes Object {
158
+ doc
159
+ /*
160
+ * A StructuredSpaceObject is an Object that is broken up into smaller structured space objects (cells) of
161
+ * the same or lower inner space dimension: faces that are surfaces, edges that are curves, and vertices
162
+ * that are points, with edges and vertices on the boundary of faces, and vertices on the boundary of
163
+ * edges. Cells meet when a structured space object is closed, as required to be a space boundary of
164
+ * an object (faces meet at their edges and/or vertices, while edges meet at their vertices). The
165
+ * inner space dimension of structured space object is the highest of their cells.
166
+ */
167
+
168
+ abstract portion feature structuredSpaceObjectCells : StructuredSpaceObject[1..*] subsets Occurrence::spaceSlices {
169
+ feature cellOrientation : Integer [0..1];
170
+ inv { notEmpty(cellOrientation) implies (cellOrientation >= -1 & cellOrientation <= 1) }
171
+ }
172
+
173
+ comment about StructuredSurface, StructuredCurve, StructuredPoint
174
+ /*
175
+ * The structures StructuredSurface, StructuredCurve and StructuredPoint provide common, necessary redefinitions of
176
+ * innerSpaceDimension. They also provide single types for the StructuredSpaceObject features faces, edges and
177
+ * vertices, which avoids problems when these features are related by connectors with ends that have owned
178
+ * cross features.
179
+ */
180
+ struct StructuredSurface specializes StructuredSpaceObject, Surface {
181
+ feature redefines StructuredSpaceObject::innerSpaceDimension, Surface::innerSpaceDimension;
182
+ }
183
+ struct StructuredCurve specializes StructuredSpaceObject, Curve {
184
+ feature redefines StructuredSpaceObject::innerSpaceDimension, Curve::innerSpaceDimension;
185
+ }
186
+ struct StructuredPoint specializes StructuredSpaceObject, Point {
187
+ feature redefines StructuredSpaceObject::innerSpaceDimension, Point::innerSpaceDimension;
188
+ }
189
+
190
+ portion feature faces : StructuredSurface[0..*] ordered subsets structuredSpaceObjectCells {
191
+ feature redefines that : StructuredSpaceObject;
192
+ feature redefines edges subsets that.edges;
193
+ feature redefines vertices subsets that.vertices;
194
+ derived feature redefines spaceBoundary;
195
+ inv { isEmpty(spaceBoundary) == isEmpty(union(edges, vertices)) }
196
+ inv { notEmpty(spaceBoundary) implies contains(spaceBoundary.unionsOf, union(edges, vertices)) }
197
+ }
198
+
199
+ portion feature edges : StructuredCurve[0..*] ordered subsets structuredSpaceObjectCells {
200
+ feature redefines that : StructuredSpaceObject;
201
+ feature redefines vertices subsets that.vertices;
202
+ derived feature redefines spaceBoundary;
203
+ inv { isEmpty(spaceBoundary) == isEmpty(vertices) }
204
+ inv { notEmpty(spaceBoundary) implies contains(spaceBoundary.unionsOf, vertices) }
205
+ }
206
+
207
+ portion feature vertices : StructuredPoint[0..*] ordered subsets structuredSpaceObjectCells;
208
+
209
+ derived feature redefines innerSpaceDimension =
210
+ if notEmpty(faces) ? 2 else if notEmpty(edges) ? 1 else 0;
211
+ }
212
+ }