Skip to content

Commit 01f4a99

Browse files
committed
Bug fixes in relations modeling.
1 parent ad88ba6 commit 01f4a99

23 files changed

+749
-793
lines changed

core/src/change_impact.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -854,7 +854,6 @@ mod tests {
854854
&RelationTypeInfo {
855855
name: "derive",
856856
direction: RelationDirection::Forward,
857-
ontological_direction: RelationDirection::Forward,
858857
opposite: Some("derivedFrom"),
859858
description: "Element B derives from A",
860859
arrow: "-->",
@@ -900,7 +899,6 @@ mod tests {
900899
&RelationTypeInfo {
901900
name: "contain",
902901
direction: RelationDirection::Forward,
903-
ontological_direction: RelationDirection::Forward,
904902
opposite: Some("containedBy"),
905903
description: "Element A contains B",
906904
arrow: "-->",
@@ -914,7 +912,6 @@ mod tests {
914912
&RelationTypeInfo {
915913
name: "derive",
916914
direction: RelationDirection::Forward,
917-
ontological_direction: RelationDirection::Forward,
918915
opposite: Some("derivedFrom"),
919916
description: "Element B derives from A",
920917
arrow: "-->",

core/src/element_registry.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,6 @@ mod tests {
263263
relation_type: &RelationTypeInfo {
264264
name: "derive",
265265
direction: RelationDirection::Forward,
266-
ontological_direction: RelationDirection::Forward,
267266
opposite: Some("derivedFrom"),
268267
description: "Element B derives from A",
269268
arrow: "-->",
@@ -299,7 +298,6 @@ mod tests {
299298
relation_type: &RelationTypeInfo {
300299
name: "contain",
301300
direction: RelationDirection::Forward,
302-
ontological_direction: RelationDirection::Forward,
303301
opposite: Some("containedBy"),
304302
description: "Element B contains A",
305303
arrow: "-->",
@@ -317,7 +315,6 @@ mod tests {
317315
relation_type: &RelationTypeInfo {
318316
name: "derive",
319317
direction: RelationDirection::Forward,
320-
ontological_direction: RelationDirection::Forward,
321318
opposite: Some("derivedFrom"),
322319
description: "Element C derives from B",
323320
arrow: "-->",

core/src/model.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use crate::element::Element;
77
use crate::element_registry::ElementRegistry;
88
use crate::error::ReqvireError;
99
use crate::relation;
10-
use crate::relation::{get_ontological_parent_relation_types};
10+
use crate::relation::{get_parent_relation_types};
1111
use crate::element::ElementType;
1212
use crate::element::RequirementType;
1313
use crate::filesystem;
@@ -245,7 +245,7 @@ impl ModelManager {
245245
}
246246

247247
// Check for missing parent relations
248-
let valid_parent_relations = get_ontological_parent_relation_types();
248+
let valid_parent_relations = get_parent_relation_types();
249249
for element in self.element_registry.get_all_elements() {
250250

251251
let element_file= &element.file_path;

core/src/relation.rs

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ pub enum RelationDirection {
1818
pub struct RelationTypeInfo {
1919
pub name: &'static str,
2020
pub direction: RelationDirection,
21-
pub ontological_direction: RelationDirection,
2221
pub opposite: Option<&'static str>,
2322
pub description: &'static str,
2423
pub arrow: &'static str,
@@ -33,7 +32,6 @@ lazy_static! {
3332
m.insert("containedBy", RelationTypeInfo {
3433
name: "containedBy",
3534
direction: RelationDirection::Backward,
36-
ontological_direction: RelationDirection::Backward,
3735
opposite: Some("contain"),
3836
description: "Element is contained by another element",
3937
arrow: "--o",
@@ -43,7 +41,6 @@ lazy_static! {
4341
m.insert("contain", RelationTypeInfo {
4442
name: "contain",
4543
direction: RelationDirection::Forward,
46-
ontological_direction: RelationDirection::Forward,
4744
opposite: Some("containedBy"),
4845
description: "Element contains another element",
4946
arrow: "--o",
@@ -53,8 +50,7 @@ lazy_static! {
5350
// Derive relations
5451
m.insert("derivedFrom", RelationTypeInfo {
5552
name: "derivedFrom",
56-
direction: RelationDirection::Backward,
57-
ontological_direction: RelationDirection::Backward,
53+
direction: RelationDirection::Backward,
5854
opposite: Some("derive"),
5955
description: "Element is derived from another element",
6056
arrow: "-.->",
@@ -63,7 +59,6 @@ lazy_static! {
6359
m.insert("derive", RelationTypeInfo {
6460
name: "derive",
6561
direction: RelationDirection::Forward,
66-
ontological_direction: RelationDirection::Forward,
6762
opposite: Some("derivedFrom"),
6863
description: "Element is source for a derived element",
6964
arrow: "-.->",
@@ -73,8 +68,7 @@ lazy_static! {
7368
// Refine relation
7469
m.insert("refine", RelationTypeInfo {
7570
name: "refine",
76-
direction: RelationDirection::Forward,
77-
ontological_direction: RelationDirection::Backward,
71+
direction: RelationDirection::Backward,
7872
opposite: Some("refinedBy"),
7973
description: "Element refines a higher-level element",
8074
arrow: "-->",
@@ -84,8 +78,7 @@ lazy_static! {
8478
// Refine relation
8579
m.insert("refinedBy", RelationTypeInfo {
8680
name: "refinedBy",
87-
direction: RelationDirection::Backward,
88-
ontological_direction: RelationDirection::Forward,
81+
direction: RelationDirection::Forward,
8982
opposite: Some("refine"),
9083
description: "A souce element being refined by other element.",
9184
arrow: "-->",
@@ -96,7 +89,6 @@ lazy_static! {
9689
m.insert("satisfiedBy", RelationTypeInfo {
9790
name: "satisfiedBy",
9891
direction: RelationDirection::Forward,
99-
ontological_direction: RelationDirection::Backward,
10092
opposite: Some("satisfy"),
10193
description: "A souce element being satisfied by other element.",
10294
arrow: "-->",
@@ -105,7 +97,6 @@ lazy_static! {
10597
m.insert("satisfy", RelationTypeInfo {
10698
name: "satisfy",
10799
direction: RelationDirection::Backward,
108-
ontological_direction: RelationDirection::Forward,
109100
opposite: Some("satisfiedBy"),
110101
description: "Element satisfies another element",
111102
arrow: "-->",
@@ -116,7 +107,6 @@ lazy_static! {
116107
m.insert("verifiedBy", RelationTypeInfo {
117108
name: "verifiedBy",
118109
direction: RelationDirection::Forward,
119-
ontological_direction: RelationDirection::Backward,
120110
opposite: Some("verify"),
121111
description: "A souce element being verified by other element.",
122112
arrow: "-.->",
@@ -125,7 +115,6 @@ lazy_static! {
125115
m.insert("verify", RelationTypeInfo {
126116
name: "verify",
127117
direction: RelationDirection::Backward,
128-
ontological_direction: RelationDirection::Forward,
129118
opposite: Some("verifiedBy"),
130119
description: "Element verifies another element",
131120
arrow: "-.->",
@@ -136,7 +125,6 @@ lazy_static! {
136125
m.insert("trace", RelationTypeInfo {
137126
name: "trace",
138127
direction: RelationDirection::Neutral,
139-
ontological_direction: RelationDirection::Neutral,
140128
opposite: None,
141129
description: "Element is related to another element in a non-directional way",
142130
arrow: "-.->",
@@ -352,14 +340,6 @@ pub fn get_parent_relation_types() -> Vec<&'static str> {
352340
.collect()
353341
}
354342

355-
/// Get the list of valid parent relation types (ontological hierarchical relationships).
356-
pub fn get_ontological_parent_relation_types() -> Vec<&'static str> {
357-
RELATION_TYPES
358-
.iter()
359-
.filter(|(_, info)| info.ontological_direction == RelationDirection::Backward)
360-
.map(|(name, _)| *name)
361-
.collect()
362-
}
363343

364344
/// Returns whether the relation is a verification-related type
365345
pub fn is_verification_relation(rtype: &RelationTypeInfo) -> bool {

specifications/CodeTraecabilityRequirements.md

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,45 +9,45 @@ graph LR;
99
classDef externalLink fill:#d0e0ff,stroke:#3080ff,stroke-width:1px;
1010
classDef default fill:#f5f5f5,stroke:#333333,stroke-width:1px;
1111
12-
d6b76d3e1a3056ce["BAT style comment"];
13-
click d6b76d3e1a3056ce "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/CodeTraecabilityRequirements.md#bat-style-comment";
14-
class d6b76d3e1a3056ce requirement;
12+
e7305180ad512acd["Dash style comment"];
13+
click e7305180ad512acd "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/CodeTraecabilityRequirements.md#dash-style-comment";
14+
class e7305180ad512acd requirement;
1515
c332a9a7fee51b73["Comment Style by File Extension"];
1616
class c332a9a7fee51b73 requirement;
17-
click c332a9a7fee51b73 "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/CodeTraecabilityRequirements.md#comment-style-by-file-extension";
18-
d6b76d3e1a3056ce --o|contains| c332a9a7fee51b73;
17+
click c332a9a7fee51b73 "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/CodeTraecabilityRequirements.md#comment-style-by-file-extension";
18+
e7305180ad512acd --o|contains| c332a9a7fee51b73;
1919
e7b2735ad78db7f7["Slash style comment"];
20-
click e7b2735ad78db7f7 "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/CodeTraecabilityRequirements.md#slash-style-comment";
20+
click e7b2735ad78db7f7 "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/CodeTraecabilityRequirements.md#slash-style-comment";
2121
class e7b2735ad78db7f7 requirement;
2222
e7b2735ad78db7f7 --o|contains| c332a9a7fee51b73;
2323
8086d70961a4c09["Traceability Format"];
24-
click 8086d70961a4c09 "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/CodeTraecabilityRequirements.md#traceability-format";
2524
class 8086d70961a4c09 requirement;
26-
8c02a4fb740392b["../specifications/UserRequirements#Code Traceability"];
27-
class 8c02a4fb740392b requirement;
28-
click 8c02a4fb740392b "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/UserRequirements.md#code-traceability";
29-
8c02a4fb740392b -->|refines| 8086d70961a4c09;
25+
click 8086d70961a4c09 "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/CodeTraecabilityRequirements.md#traceability-format";
26+
c332a9a7fee51b73 -->|refines| 8086d70961a4c09;
27+
240322b67055a395["CSS style comment"];
28+
click 240322b67055a395 "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/CodeTraecabilityRequirements.md#css-style-comment";
29+
class 240322b67055a395 requirement;
30+
240322b67055a395 --o|contains| c332a9a7fee51b73;
3031
cb7a50ba5073bd8f["SQL style comment"];
31-
click cb7a50ba5073bd8f "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/CodeTraecabilityRequirements.md#sql-style-comment";
32+
click cb7a50ba5073bd8f "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/CodeTraecabilityRequirements.md#sql-style-comment";
3233
class cb7a50ba5073bd8f requirement;
3334
cb7a50ba5073bd8f --o|contains| c332a9a7fee51b73;
3435
f02fa9023214d641["XML style comment"];
35-
click f02fa9023214d641 "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/CodeTraecabilityRequirements.md#xml-style-comment";
36+
click f02fa9023214d641 "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/CodeTraecabilityRequirements.md#xml-style-comment";
3637
class f02fa9023214d641 requirement;
3738
f02fa9023214d641 --o|contains| c332a9a7fee51b73;
38-
e7305180ad512acd["Dash style comment"];
39-
click e7305180ad512acd "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/CodeTraecabilityRequirements.md#dash-style-comment";
40-
class e7305180ad512acd requirement;
41-
e7305180ad512acd --o|contains| c332a9a7fee51b73;
42-
8086d70961a4c09 -->|refines| c332a9a7fee51b73;
39+
8c02a4fb740392b["../specifications/UserRequirements#Code Traceability"];
40+
class 8c02a4fb740392b requirement;
41+
click 8c02a4fb740392b "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/UserRequirements.md#code-traceability";
42+
8086d70961a4c09 -->|refines| 8c02a4fb740392b;
43+
d6b76d3e1a3056ce["BAT style comment"];
44+
click d6b76d3e1a3056ce "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/CodeTraecabilityRequirements.md#bat-style-comment";
45+
class d6b76d3e1a3056ce requirement;
46+
d6b76d3e1a3056ce --o|contains| c332a9a7fee51b73;
4347
1e4723b5a9d499c3["Validating Traceability Format"];
44-
click 1e4723b5a9d499c3 "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/CodeTraecabilityRequirements.md#validating-traceability-format";
48+
click 1e4723b5a9d499c3 "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/CodeTraecabilityRequirements.md#validating-traceability-format";
4549
class 1e4723b5a9d499c3 requirement;
46-
8086d70961a4c09 -->|refines| 1e4723b5a9d499c3;
47-
240322b67055a395["CSS style comment"];
48-
click 240322b67055a395 "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/CodeTraecabilityRequirements.md#css-style-comment";
49-
class 240322b67055a395 requirement;
50-
240322b67055a395 --o|contains| c332a9a7fee51b73;
50+
1e4723b5a9d499c3 -->|refines| 8086d70961a4c09;
5151
```
5252
TODO:
5353
* this comes with config param to define code folder locations (special case as external foders but for the code)

specifications/MOEs.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ graph LR;
1010
classDef default fill:#f5f5f5,stroke:#333333,stroke-width:1px;
1111
1212
6c33f565725d5e41["MOE_UA"];
13-
click 6c33f565725d5e41 "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/MOEs.md#moe_ua";
13+
click 6c33f565725d5e41 "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/MOEs.md#moe_ua";
1414
class 6c33f565725d5e41 requirement;
1515
ac59f565725d5e41["MOE_CE"];
16-
click ac59f565725d5e41 "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/MOEs.md#moe_ce";
16+
click ac59f565725d5e41 "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/MOEs.md#moe_ce";
1717
class ac59f565725d5e41 requirement;
1818
```
1919

specifications/ManagingMbseModelsRequirements.md

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,37 +9,37 @@ graph LR;
99
classDef externalLink fill:#d0e0ff,stroke:#3080ff,stroke-width:1px;
1010
classDef default fill:#f5f5f5,stroke:#333333,stroke-width:1px;
1111
12-
87e38ccb52188638["Configurable Specifications Folder"];
13-
click 87e38ccb52188638 "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/ManagingMbseModelsRequirements.md#configurable-specifications-folder";
14-
class 87e38ccb52188638 requirement;
1512
b3ef0fb91572bcf0["Project Configuration with YAML"];
13+
click b3ef0fb91572bcf0 "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/ManagingMbseModelsRequirements.md#project-configuration-with-yaml";
1614
class b3ef0fb91572bcf0 requirement;
17-
click b3ef0fb91572bcf0 "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/ManagingMbseModelsRequirements.md#project-configuration-with-yaml";
18-
87e38ccb52188638 -.->|deriveReqT| b3ef0fb91572bcf0;
15+
c75ac8fa29479ca5["UserStories.md/Managing MBSE Models"];
16+
class c75ac8fa29479ca5 requirement;
17+
click c75ac8fa29479ca5 "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/UserStories.md#managing-mbse-models";
18+
b3ef0fb91572bcf0 -->|refines| c75ac8fa29479ca5;
19+
fa4727bd969c48f8["Bootstrap Model Structure"];
20+
click fa4727bd969c48f8 "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/ManagingMbseModelsRequirements.md#bootstrap-model-structure";
21+
class fa4727bd969c48f8 requirement;
22+
fa4727bd969c48f8 -->|refines| c75ac8fa29479ca5;
1923
c4d5865187c53ce6["Support for Distributed Requirements"];
20-
click c4d5865187c53ce6 "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/ManagingMbseModelsRequirements.md#support-for-distributed-requirements";
24+
click c4d5865187c53ce6 "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/ManagingMbseModelsRequirements.md#support-for-distributed-requirements";
2125
class c4d5865187c53ce6 requirement;
2226
c4d5865187c53ce6 -.->|deriveReqT| b3ef0fb91572bcf0;
2327
da5831ca85881025["Coexistence of Structured and Unstructured Documents"];
24-
click da5831ca85881025 "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/ManagingMbseModelsRequirements.md#coexistence-of-structured-and-unstructured-documents";
28+
click da5831ca85881025 "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/ManagingMbseModelsRequirements.md#coexistence-of-structured-and-unstructured-documents";
2529
class da5831ca85881025 requirement;
26-
c75ac8fa29479ca5["UserStories.md/Managing MBSE Models"];
27-
class c75ac8fa29479ca5 requirement;
28-
click c75ac8fa29479ca5 "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/UserStories.md#managing-mbse-models";
29-
c75ac8fa29479ca5 -->|refines| da5831ca85881025;
30-
b9c9d1bf19e76fc["Configurable External Folders"];
31-
click b9c9d1bf19e76fc "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/ManagingMbseModelsRequirements.md#configurable-external-folders";
32-
class b9c9d1bf19e76fc requirement;
33-
c4d5865187c53ce6 -->|refines| b9c9d1bf19e76fc;
34-
fa4727bd969c48f8["Bootstrap Model Structure"];
35-
click fa4727bd969c48f8 "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/ManagingMbseModelsRequirements.md#bootstrap-model-structure";
36-
class fa4727bd969c48f8 requirement;
37-
c75ac8fa29479ca5 -->|refines| fa4727bd969c48f8;
38-
c75ac8fa29479ca5 -->|refines| b3ef0fb91572bcf0;
30+
da5831ca85881025 -->|refines| c75ac8fa29479ca5;
31+
87e38ccb52188638["Configurable Specifications Folder"];
32+
click 87e38ccb52188638 "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/ManagingMbseModelsRequirements.md#configurable-specifications-folder";
33+
class 87e38ccb52188638 requirement;
34+
87e38ccb52188638 -.->|deriveReqT| b3ef0fb91572bcf0;
3935
386d7b145d008870["Efficient Processing"];
40-
click 386d7b145d008870 "https://github.com/Reqvire/reqvire/blob/667635d4628fed400323f7df3689af2dbc2ad666/specifications/ManagingMbseModelsRequirements.md#efficient-processing";
36+
click 386d7b145d008870 "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/ManagingMbseModelsRequirements.md#efficient-processing";
4137
class 386d7b145d008870 requirement;
42-
c75ac8fa29479ca5 -->|refines| 386d7b145d008870;
38+
386d7b145d008870 -->|refines| c75ac8fa29479ca5;
39+
b9c9d1bf19e76fc["Configurable External Folders"];
40+
click b9c9d1bf19e76fc "https://github.com/Reqvire/reqvire/blob/ad88ba6b828e94c93382866fefd058c011c1ac60/specifications/ManagingMbseModelsRequirements.md#configurable-external-folders";
41+
class b9c9d1bf19e76fc requirement;
42+
b9c9d1bf19e76fc -->|refines| c4d5865187c53ce6;
4343
```
4444

4545
---

0 commit comments

Comments
 (0)