diff --git a/changes/unreleased/declaration-head-owned-relationship-order.fixed.md b/changes/unreleased/declaration-head-owned-relationship-order.fixed.md new file mode 100644 index 0000000000..7f21035bfe --- /dev/null +++ b/changes/unreleased/declaration-head-owned-relationship-order.fixed.md @@ -0,0 +1 @@ +- The RDF and API JSON writers own a declaration head's relationships in the order the notation spells them: a usage's typings, specializations and multiplicity come first in `ownedRelationship` as written (`:>> x : T = v` owns its Redefinition, then its FeatureTyping, then its FeatureValue), ahead of the value and the body members, and a definition's Subclassification ahead of its members; `ownedSpecialization` and the other owned-relationship lists follow the same order. `Element::ownedRelationship` is ordered (KerML 8.3.2.1.2) and the textual notation adds each owned relationship as it parses the clause (KerML 8.2.1, SysML 8.2). The reader spells a head back in the order the graph owns its relationships, the multiplicity part included, instead of a fixed clause order. Where a head relates one target under two clauses that materialize as the same class (`subsets x specializes x`), the writer states each element's keyword as `sysx:headClause`, so the two come back apart and in order under either id form; a multiplicity no membership places is written once, with the first typing clause. diff --git a/docs/project/api-json-differential-baseline.json b/docs/project/api-json-differential-baseline.json index 6423b6c826..6557121308 100644 --- a/docs/project/api-json-differential-baseline.json +++ b/docs/project/api-json-differential-baseline.json @@ -14,7 +14,7 @@ { "name": "api-json-writer", "source": "internal/translate/export", - "sourceDigest": "sha256:b715d8db18f35cfd8ec15482fd3e45d533ef3d08fc1a3a6ca1d955b17c405406" + "sourceDigest": "sha256:abd846fc58b3a5a725933274a2bbe324f5577150d30886e796a6440b155f392c" } ], "inputs": [ @@ -120,8 +120,8 @@ "typeMismatch": 1729 }, "properties": { - "presentEqual": 644960, - "presentDifferent": 31668, + "presentEqual": 649821, + "presentDifferent": 26807, "oursMissing": 1079787, "pilotMissing": 66545, "absentBoth": 2406377, @@ -160,8 +160,8 @@ "typeMismatch": 10 }, "properties": { - "presentEqual": 53056, - "presentDifferent": 2136, + "presentEqual": 53381, + "presentDifferent": 1811, "oursMissing": 88043, "pilotMissing": 5126, "absentBoth": 200267, @@ -195,8 +195,8 @@ "typeMismatch": 59 }, "properties": { - "presentEqual": 191619, - "presentDifferent": 9050, + "presentEqual": 193152, + "presentDifferent": 7517, "oursMissing": 318686, "pilotMissing": 19458, "absentBoth": 714824, @@ -230,8 +230,8 @@ "typeMismatch": 15 }, "properties": { - "presentEqual": 66569, - "presentDifferent": 3631, + "presentEqual": 67082, + "presentDifferent": 3118, "oursMissing": 110547, "pilotMissing": 6811, "absentBoth": 251999, @@ -266,8 +266,8 @@ "typeMismatch": 1034 }, "properties": { - "presentEqual": 44047, - "presentDifferent": 3034, + "presentEqual": 44577, + "presentDifferent": 2504, "oursMissing": 63934, "pilotMissing": 5065, "absentBoth": 135877, @@ -301,8 +301,8 @@ "typeMismatch": 397 }, "properties": { - "presentEqual": 47050, - "presentDifferent": 1732, + "presentEqual": 47298, + "presentDifferent": 1484, "oursMissing": 75012, "pilotMissing": 5041, "absentBoth": 163772, @@ -337,8 +337,8 @@ "typeMismatch": 28 }, "properties": { - "presentEqual": 9219, - "presentDifferent": 459, + "presentEqual": 9277, + "presentDifferent": 401, "oursMissing": 15672, "pilotMissing": 997, "absentBoth": 36926, @@ -373,8 +373,8 @@ "typeMismatch": 186 }, "properties": { - "presentEqual": 184854, - "presentDifferent": 9318, + "presentEqual": 186183, + "presentDifferent": 7989, "oursMissing": 318978, "pilotMissing": 19327, "absentBoth": 717805, @@ -408,8 +408,8 @@ "typeMismatch": 0 }, "properties": { - "presentEqual": 360, - "presentDifferent": 3, + "presentEqual": 362, + "presentDifferent": 1, "oursMissing": 462, "pilotMissing": 41, "absentBoth": 1178, @@ -443,8 +443,8 @@ "typeMismatch": 0 }, "properties": { - "presentEqual": 48186, - "presentDifferent": 2305, + "presentEqual": 48509, + "presentDifferent": 1982, "oursMissing": 88453, "pilotMissing": 4679, "absentBoth": 183729, @@ -1810,8 +1810,8 @@ 0 ], "ActionDefinition.ownedRelationship": [ - 136, - 15, + 147, + 4, 0, 0, 26, @@ -2738,24 +2738,24 @@ 0 ], "ActionUsage.ownedRelationship": [ - 240, - 110, + 338, + 12, 3, 3, 161, 0 ], "ActionUsage.ownedSpecialization": [ - 166, - 3, + 169, + 0, 0, 1, 347, 0 ], "ActionUsage.ownedSubsetting": [ - 40, - 1, + 41, + 0, 0, 0, 476, @@ -3682,8 +3682,8 @@ 0 ], "AllocationDefinition.ownedRelationship": [ - 5, - 2, + 7, + 0, 0, 0, 1, @@ -4650,8 +4650,8 @@ 0 ], "AllocationUsage.ownedRelationship": [ - 3, - 7, + 10, + 0, 0, 0, 0, @@ -5362,8 +5362,8 @@ 0 ], "AnalysisCaseDefinition.ownedRelationship": [ - 20, - 7, + 26, + 1, 0, 0, 3, @@ -6338,16 +6338,16 @@ 0 ], "AnalysisCaseUsage.ownedRelationship": [ - 3, 37, + 3, 0, 0, 1, 0 ], "AnalysisCaseUsage.ownedSpecialization": [ - 25, - 12, + 37, + 0, 0, 0, 4, @@ -7450,24 +7450,24 @@ 0 ], "AssertConstraintUsage.ownedRelationship": [ - 61, - 18, + 79, + 0, 0, 0, 0, 0 ], "AssertConstraintUsage.ownedSpecialization": [ - 18, - 1, + 19, + 0, 0, 0, 60, 0 ], "AssertConstraintUsage.ownedSubsetting": [ - 8, - 1, + 9, + 0, 0, 0, 70, @@ -9906,8 +9906,8 @@ 0 ], "AttributeDefinition.ownedRelationship": [ - 48, - 61, + 109, + 0, 0, 0, 99, @@ -10810,16 +10810,16 @@ 0 ], "AttributeUsage.ownedRelationship": [ - 113, - 2332, + 1248, + 1197, 36, 0, 19, 0 ], "AttributeUsage.ownedSpecialization": [ - 2307, - 30, + 2337, + 0, 0, 0, 163, @@ -11866,8 +11866,8 @@ 0 ], "BindingConnector.ownedRelationship": [ - 7, - 1, + 8, + 0, 0, 0, 0, @@ -12746,8 +12746,8 @@ 0 ], "BindingConnectorAsUsage.ownedRelationship": [ - 2, - 1, + 3, + 0, 0, 0, 0, @@ -13386,8 +13386,8 @@ 0 ], "BooleanExpression.ownedRelationship": [ - 1, - 3, + 2, + 2, 0, 0, 0, @@ -14026,8 +14026,8 @@ 0 ], "CalculationDefinition.ownedRelationship": [ - 70, - 103, + 172, + 1, 0, 0, 0, @@ -14946,8 +14946,8 @@ 0 ], "CalculationUsage.ownedRelationship": [ - 40, - 74, + 113, + 1, 0, 0, 0, @@ -15650,8 +15650,8 @@ 0 ], "CaseDefinition.ownedRelationship": [ - 1, - 2, + 3, + 0, 0, 0, 0, @@ -16602,9 +16602,9 @@ 0 ], "CaseUsage.ownedRelationship": [ - 0, 2, 0, + 0, 3, 0, 0 @@ -17514,8 +17514,8 @@ 0 ], "Classifier.ownedRelationship": [ - 48, - 17, + 60, + 5, 10, 0, 29, @@ -19842,8 +19842,8 @@ 0 ], "ConcernUsage.ownedRelationship": [ - 15, - 3, + 18, + 0, 0, 0, 3, @@ -21634,8 +21634,8 @@ 0 ], "ConnectionDefinition.ownedRelationship": [ - 36, - 7, + 43, + 0, 0, 0, 0, @@ -22618,8 +22618,8 @@ 0 ], "ConnectionUsage.ownedRelationship": [ - 18, - 61, + 79, + 0, 0, 0, 0, @@ -23314,16 +23314,16 @@ 0 ], "Connector.ownedRelationship": [ - 6, - 30, + 35, + 1, 0, 0, 0, 0 ], "Connector.ownedSpecialization": [ - 25, - 4, + 29, + 0, 0, 0, 7, @@ -23978,8 +23978,8 @@ 0 ], "ConstraintDefinition.ownedRelationship": [ - 24, - 1, + 25, + 0, 0, 0, 1, @@ -24914,8 +24914,8 @@ 0 ], "ConstraintUsage.ownedRelationship": [ - 163, - 29, + 175, + 17, 10, 0, 2, @@ -28994,8 +28994,8 @@ 0 ], "EnumerationDefinition.ownedRelationship": [ - 16, - 8, + 24, + 0, 0, 0, 1, @@ -29858,8 +29858,8 @@ 0 ], "EnumerationUsage.ownedRelationship": [ - 25, - 2, + 27, + 0, 0, 0, 40, @@ -30698,24 +30698,24 @@ 0 ], "EventOccurrenceUsage.ownedRelationship": [ - 40, - 54, + 94, + 0, 0, 0, 85, 0 ], "EventOccurrenceUsage.ownedSpecialization": [ - 49, - 28, + 77, + 0, 0, 0, 102, 0 ], "EventOccurrenceUsage.ownedSubsetting": [ - 53, - 24, + 77, + 0, 0, 0, 102, @@ -31626,24 +31626,24 @@ 0 ], "ExhibitStateUsage.ownedRelationship": [ - 35, - 10, + 42, + 3, 0, 0, 5, 0 ], "ExhibitStateUsage.ownedSpecialization": [ - 19, - 8, + 27, + 0, 0, 0, 23, 0 ], "ExhibitStateUsage.ownedSubsetting": [ - 10, - 8, + 18, + 0, 0, 0, 32, @@ -32266,8 +32266,8 @@ 0 ], "Expression.ownedRelationship": [ - 33, - 6, + 39, + 0, 0, 0, 0, @@ -32938,24 +32938,24 @@ 0 ], "Feature.ownedRelationship": [ - 3758, - 1802, + 4159, + 1401, 137, 88, 4363, 0 ], "Feature.ownedSpecialization": [ - 764, - 130, + 874, + 20, 662, 34, 8558, 0 ], "Feature.ownedSubsetting": [ - 362, - 17, + 371, + 8, 645, 6, 9118, @@ -36482,8 +36482,8 @@ 0 ], "FlowDefinition.ownedRelationship": [ - 3, - 3, + 6, + 0, 0, 0, 1, @@ -38034,16 +38034,16 @@ 0 ], "FlowUsage.ownedRelationship": [ - 37, - 69, + 59, + 47, 0, 0, 0, 0 ], "FlowUsage.ownedSpecialization": [ - 19, - 6, + 25, + 0, 0, 0, 81, @@ -40626,8 +40626,8 @@ 0 ], "Function.ownedRelationship": [ - 10, - 1, + 11, + 0, 0, 0, 0, @@ -42378,24 +42378,24 @@ 0 ], "IncludeUseCaseUsage.ownedRelationship": [ - 7, - 12, + 19, + 0, 0, 0, 0, 0 ], "IncludeUseCaseUsage.ownedSpecialization": [ - 17, - 1, + 18, + 0, 0, 0, 1, 0 ], "IncludeUseCaseUsage.ownedSubsetting": [ - 11, - 1, + 12, + 0, 0, 0, 7, @@ -44122,8 +44122,8 @@ 0 ], "InterfaceDefinition.ownedRelationship": [ - 28, - 3, + 30, + 1, 0, 0, 0, @@ -45114,8 +45114,8 @@ 0 ], "InterfaceUsage.ownedRelationship": [ - 4, 39, + 4, 0, 0, 0, @@ -46978,8 +46978,8 @@ 0 ], "ItemDefinition.ownedRelationship": [ - 55, - 11, + 60, + 6, 0, 0, 101, @@ -47898,16 +47898,16 @@ 0 ], "ItemUsage.ownedRelationship": [ - 36, - 287, + 89, + 234, 33, 0, 10, 0 ], "ItemUsage.ownedSpecialization": [ - 291, - 18, + 307, + 2, 0, 0, 57, @@ -53378,8 +53378,8 @@ 0 ], "Metaclass.ownedRelationship": [ - 4, - 4, + 8, + 0, 0, 0, 2, @@ -54458,8 +54458,8 @@ 0 ], "MetadataDefinition.ownedRelationship": [ - 12, - 6, + 18, + 0, 0, 0, 22, @@ -55914,8 +55914,8 @@ 0 ], "MetadataUsage.ownedRelationship": [ - 268, - 117, + 275, + 110, 0, 0, 0, @@ -58898,8 +58898,8 @@ 0 ], "OccurrenceDefinition.ownedRelationship": [ - 15, - 37, + 17, + 35, 2, 0, 1, @@ -59786,24 +59786,24 @@ 0 ], "OccurrenceUsage.ownedRelationship": [ - 69, - 62, + 114, + 17, 0, 0, 13, 0 ], "OccurrenceUsage.ownedSpecialization": [ - 74, - 12, + 80, + 6, 0, 0, 58, 0 ], "OccurrenceUsage.ownedSubsetting": [ - 17, - 10, + 21, + 6, 0, 0, 117, @@ -61666,8 +61666,8 @@ 0 ], "PartDefinition.ownedRelationship": [ - 424, - 215, + 619, + 20, 1, 0, 279, @@ -62626,24 +62626,24 @@ 0 ], "PartUsage.ownedRelationship": [ - 324, - 1554, + 874, + 1004, 52, 0, 40, 0 ], "PartUsage.ownedSpecialization": [ - 1527, - 37, + 1562, + 2, 0, 0, 406, 0 ], "PartUsage.ownedSubsetting": [ - 371, - 12, + 383, + 0, 2, 0, 1585, @@ -63250,8 +63250,8 @@ 0 ], "PayloadFeature.ownedRelationship": [ - 47, - 10, + 57, + 0, 0, 0, 0, @@ -64106,24 +64106,24 @@ 0 ], "PerformActionUsage.ownedRelationship": [ - 143, - 43, + 182, + 4, 6, 0, 44, 0 ], "PerformActionUsage.ownedSpecialization": [ - 133, - 17, + 150, + 0, 2, 0, 84, 0 ], "PerformActionUsage.ownedSubsetting": [ - 121, - 17, + 138, + 0, 2, 0, 96, @@ -64970,8 +64970,8 @@ 0 ], "PortDefinition.ownedRelationship": [ - 74, - 51, + 77, + 48, 0, 0, 0, @@ -65866,16 +65866,16 @@ 0 ], "PortUsage.ownedRelationship": [ - 20, - 435, + 99, + 356, 30, 1, 2, 0 ], "PortUsage.ownedSpecialization": [ - 432, - 10, + 438, + 4, 0, 1, 45, @@ -67674,24 +67674,24 @@ 0 ], "ReferenceUsage.ownedRelationship": [ - 1354, - 852, + 2110, + 96, 3, 0, 105, 0 ], "ReferenceUsage.ownedSpecialization": [ - 1761, - 75, + 1818, + 18, 4, 0, 474, 0 ], "ReferenceUsage.ownedSubsetting": [ - 914, - 22, + 920, + 16, 6, 0, 1372, @@ -68330,10 +68330,10 @@ 0 ], "RenderingDefinition.ownedRelationship": [ - 0, 1, 0, 0, + 0, 1, 0 ], @@ -69226,8 +69226,8 @@ 0 ], "RenderingUsage.ownedRelationship": [ - 1, - 33, + 4, + 30, 1, 0, 0, @@ -70186,8 +70186,8 @@ 0 ], "RequirementDefinition.ownedRelationship": [ - 84, - 16, + 98, + 2, 0, 0, 9, @@ -71194,16 +71194,16 @@ 0 ], "RequirementUsage.ownedRelationship": [ - 113, - 139, + 243, + 9, 0, 0, 19, 0 ], "RequirementUsage.ownedSpecialization": [ - 161, - 18, + 179, + 0, 0, 0, 92, @@ -72962,16 +72962,16 @@ 0 ], "SatisfyRequirementUsage.ownedRelationship": [ - 11, - 69, + 77, + 3, 0, 0, 0, 0 ], "SatisfyRequirementUsage.ownedSpecialization": [ - 77, - 3, + 78, + 2, 0, 0, 0, @@ -75602,8 +75602,8 @@ 0 ], "StateDefinition.ownedRelationship": [ - 31, - 4, + 35, + 0, 0, 0, 11, @@ -76794,24 +76794,24 @@ 0 ], "StateUsage.ownedRelationship": [ - 80, - 17, + 89, + 8, 1, 0, 208, 0 ], "StateUsage.ownedSpecialization": [ - 18, - 1, + 19, + 0, 0, 0, 287, 0 ], "StateUsage.ownedSubsetting": [ - 9, - 1, + 10, + 0, 0, 0, 296, @@ -77426,16 +77426,16 @@ 0 ], "Step.ownedRelationship": [ - 25, - 51, + 69, + 7, 0, 0, 2, 0 ], "Step.ownedSpecialization": [ - 49, - 15, + 64, + 0, 0, 0, 14, @@ -79098,16 +79098,16 @@ 0 ], "Succession.ownedRelationship": [ - 15, - 11, + 25, + 1, 0, 0, 0, 0 ], "Succession.ownedSpecialization": [ - 1, 10, + 1, 0, 0, 15, @@ -80002,8 +80002,8 @@ 0 ], "SuccessionAsUsage.ownedRelationship": [ - 10, - 2, + 11, + 1, 0, 0, 0, @@ -85026,8 +85026,8 @@ 0 ], "Type.ownedRelationship": [ - 4, - 37, + 11, + 30, 0, 0, 0, @@ -85994,8 +85994,8 @@ 0 ], "Usage.ownedRelationship": [ - 20, - 10, + 21, + 9, 0, 0, 0, @@ -86674,8 +86674,8 @@ 0 ], "UseCaseDefinition.ownedRelationship": [ - 16, - 2, + 18, + 0, 0, 0, 1, @@ -87650,24 +87650,24 @@ 0 ], "UseCaseUsage.ownedRelationship": [ - 15, - 8, + 23, + 0, 0, 1, 3, 0 ], "UseCaseUsage.ownedSpecialization": [ - 10, - 1, + 11, + 0, 0, 1, 15, 0 ], "UseCaseUsage.ownedSubsetting": [ - 2, - 1, + 3, + 0, 0, 1, 23, @@ -89530,8 +89530,8 @@ 0 ], "VerificationCaseUsage.ownedRelationship": [ - 1, - 41, + 42, + 0, 0, 1, 1, @@ -90194,8 +90194,8 @@ 0 ], "ViewDefinition.ownedRelationship": [ - 6, - 6, + 10, + 2, 0, 1, 3, @@ -91354,8 +91354,8 @@ 0 ], "ViewUsage.ownedRelationship": [ - 34, - 65, + 92, + 7, 0, 0, 0, @@ -93058,8 +93058,8 @@ 0 ], "ViewpointUsage.ownedRelationship": [ - 7, - 2, + 9, + 0, 0, 0, 0, diff --git a/docs/project/api-json-differential.md b/docs/project/api-json-differential.md index 0c4bb997e3..144b4d2c68 100644 --- a/docs/project/api-json-differential.md +++ b/docs/project/api-json-differential.md @@ -190,21 +190,21 @@ The pinned pilot's verdict on the probe (`validate-sysml-batch`): clean. ## Results (pilot `2026-08`, 924 files) -**Scorecard:** 924 files; 91721 elements matched (18392 ours-only, 37335 pilot-only, 0 of them implied); properties: 644960 present-equal, 31668 present-different, 1079787 ours-missing, 66545 pilot-missing, 2406377 absent-both, 26031 indeterminate. +**Scorecard:** 924 files; 91721 elements matched (18392 ours-only, 37335 pilot-only, 0 of them implied); properties: 649821 present-equal, 26807 present-different, 1079787 ours-missing, 66545 pilot-missing, 2406377 absent-both, 26031 indeterminate. The pilot's export failed on 56 files (`pilotFailed`: its own export throws on an element without a resource, 52 of them specification examples and 4 test fixtures; the files are named in the run's text report), ours refused 36 (all of them specification examples the parser could not read whole), left the pilot's 56 failed files out and converted 26 documents alone for declaring an element another document of their root declares (`oursColliding`); no root fell back to per-document conversion. 11718 (metaclass, property) rows carry a comparison; 110971 references compared through the unkeyed sentinel, 157882 of our `sysx:` annotations were left out, and 285/347 elements (ours/pilot) were dropped for ambiguous keys, 16850/31316 for having none. | root | files | matched | ours-only | pilot-only | present-equal | present-different | ours-missing | pilot-missing | |---|---:|---:|---:|---:|---:|---:|---:|---:| -| `examples/sysml-v2-training` | 100 | 7391 | 1150 | 2769 | 53056 | 2136 | 88043 | 5126 | -| `examples/pilot-corpora/sysml-examples` | 99 | 26739 | 6157 | 9527 | 191619 | 9050 | 318686 | 19458 | -| `examples/pilot-corpora/sysml-validation` | 56 | 9377 | 1882 | 3210 | 66569 | 3631 | 110547 | 6811 | -| `examples/pilot-corpora/kerml-examples` | 58 | 6399 | 1166 | 1842 | 44047 | 3034 | 63934 | 5065 | -| `examples/spec-examples` | 511 | 7074 | 990 | 2634 | 47050 | 1732 | 75012 | 5041 | -| `tests/testdata` | 36 | 1414 | 171 | 495 | 9219 | 459 | 15672 | 997 | -| `examples` | 52 | 26254 | 5956 | 14776 | 184854 | 9318 | 318978 | 19327 | -| `tools/referee/diff/testdata` | 4 | 53 | 0 | 0 | 360 | 3 | 462 | 41 | -| `docs/manual/examples` | 8 | 7020 | 920 | 2082 | 48186 | 2305 | 88453 | 4679 | +| `examples/sysml-v2-training` | 100 | 7391 | 1150 | 2769 | 53381 | 1811 | 88043 | 5126 | +| `examples/pilot-corpora/sysml-examples` | 99 | 26739 | 6157 | 9527 | 193152 | 7517 | 318686 | 19458 | +| `examples/pilot-corpora/sysml-validation` | 56 | 9377 | 1882 | 3210 | 67082 | 3118 | 110547 | 6811 | +| `examples/pilot-corpora/kerml-examples` | 58 | 6399 | 1166 | 1842 | 44577 | 2504 | 63934 | 5065 | +| `examples/spec-examples` | 511 | 7074 | 990 | 2634 | 47298 | 1484 | 75012 | 5041 | +| `tests/testdata` | 36 | 1414 | 171 | 495 | 9277 | 401 | 15672 | 997 | +| `examples` | 52 | 26254 | 5956 | 14776 | 186183 | 7989 | 318978 | 19327 | +| `tools/referee/diff/testdata` | 4 | 53 | 0 | 0 | 362 | 1 | 462 | 41 | +| `docs/manual/examples` | 8 | 7020 | 920 | 2082 | 48509 | 1982 | 88453 | 4679 | The scorecard is mostly **ours-missing**: this repository's writer emits a subset of the metamodel's properties, and the referee now measures which, per metaclass. The full ranked scorecard with one concrete example per differing row is `build/pilot-apijson-diff/pilot-apijson-diff.txt` after a run; the baseline keeps every row's five counts. @@ -214,16 +214,16 @@ The largest **present-different** rows, with the reading the examples support: | metaclass | property | present-equal | present-different | |---|---|---:|---:| -| `AttributeUsage` | `ownedRelationship` | 113 | 2332 | -| `Feature` | `ownedRelationship` | 3758 | 1802 | -| `PartUsage` | `ownedRelationship` | 324 | 1554 | -| `ReferenceUsage` | `ownedRelationship` | 1354 | 852 | +| `Feature` | `ownedRelationship` | 4159 | 1401 | +| `AttributeUsage` | `ownedRelationship` | 1248 | 1197 | +| `PartUsage` | `ownedRelationship` | 874 | 1004 | | `PartUsage` | `ownedMember` | 368 | 702 | | `PartUsage` | `ownedMembership` | 722 | 634 | | `AttributeUsage` | `ownedMembership` | 1184 | 624 | | `FeatureMembership` | `memberElement` | 9381 | 570 | | `FeatureMembership` | `ownedMemberElement` | 9381 | 570 | | `FeatureMembership` | `ownedRelatedElement` | 9381 | 570 | +| `Feature` | `ownedMembership` | 4271 | 569 | ### Where the pilot states nothing and we do @@ -283,11 +283,13 @@ measured on library-backed members too. The first and the third are closed (the element by it, so the pilot's reading is the metamodel's — the writer now fixes an id for these elements too; - the order of `ownedRelationship` on a usage that both redefines and has a value: the pilot lists - the `Redefinition` before the `FeatureValue`, in the order the notation declares them; ours lists - the value first (275 `AttributeUsage`, 97 `ReferenceUsage`, 2 `RenderingUsage`). `ownedRelationship` - is ordered (KerML 8.3.2.1.2 Element, `ownedRelationship : Relationship [0..*] {ordered}`), and the - textual notation adds an element's owned relationships as it parses them, so the pilot's order is - the notation's, a shape the `AttributeUsage` `ownedRelationship` row already carried; + the `Redefinition` before the `FeatureValue`, in the order the notation declares them, where ours + listed the value first (275 `AttributeUsage`, 97 `ReferenceUsage`, 2 `RenderingUsage`). + `ownedRelationship` is ordered (KerML 8.3.2.1.2 Element, `ownedRelationship : Relationship [0..*] + {ordered}`), and the textual notation adds an element's owned relationships as it parses each + clause (KerML 8.2.1 Table 3, `ownedRelationship += …`), so the pilot's order is the notation's. The + writer now owns a head's relationships in that order (the row below records the re-measurement), + and these sites agree; - a `FeatureReferenceExpression` owns a `Membership` of its referent, which both sides now write: `referent` is derived as the `memberElement` of the first `ownedMembership` that is not a `ParameterMembership` (KerML 8.3.4.8.5, deriveFeatureReferenceExpressionReferent), and the @@ -410,7 +412,7 @@ The (metaclass, property) rows ranked by the corpus elements on which the pilot | 39 | `FeatureTyping` | `isLibraryElement` | 5982 | 0 | PR #1232 (`feature/api-json-derived-properties-layered`; writes `true` on library elements only, never `false`) | `Element::isLibraryElement = libraryNamespace() <> null` (KerML 8.3.2.1, deriveElementIsLibraryElement); the pilot writes `false` on every user element | | 40 | `FeatureTyping` | `owningType` | 5978 | 0 | PR #1232 (`feature/api-json-derived-properties-layered`) | `Feature::owningType = owningFeatureMembership.owningType` (KerML 8.3.3.3, deriveFeatureOwningType) | | 41 | `Redefinition` | `redefinedFeature` | 52 | 20 | closed for this repository's libraries (above) | `Redefinition::redefinedFeature : Feature` (KerML 8.3.3.3.8) is an element reference, and every `Element` carries an `elementId` (KerML 8.3.2.1.2) the API's JSON refers to it by; the 330 redefinitions of a feature of this repository's libraries once spelled as a name, `{"@ref": "caption"}`, now link by the element's fixed id — the same movement for `FeatureTyping::type`, `MetadataUsage::type`, `FeatureReferenceExpression::referent` and `ReferenceSubsetting::referencedFeature` into those libraries — and the 58 left are redefinitions of a feature inherited within the model itself that the writer spells as a name (`vehicle_b_1::providePower`) | -| 42 | `AttributeUsage` | `ownedRelationship` | 36 | 2332 | none found | `Element::ownedRelationship : Relationship [0..*] {ordered}` (KerML 8.3.2.1.2) in the order the notation declares them: a usage's `Redefinition` (`redefines x`) before its `FeatureValue` (`= …`); ours lists the value first | +| 42 | `AttributeUsage` | `ownedRelationship` | 36 | 1197 | none found | `Element::ownedRelationship : Relationship [0..*] {ordered}` (KerML 8.3.2.1.2), in the order the notation adds them (KerML 8.2.1 Table 3; `FeatureSpecializationPart`, then `ValuePart`, then the body): a head's typings, specializations and multiplicity as spelled, then its `FeatureValue`, then its members. The writer seated the materialized relationships last, in a fixed kind order; it now owns them as spelled, which moved 4861 properties over 101 rows (67 `ownedRelationship`, 22 `ownedSpecialization`, 12 `ownedSubsetting`) from present-different to present-equal, no other bucket touched (this row 2332 → 1197, `PartDefinition` 215 → 20, `PartUsage` 1554 → 1004, `Feature` 1802 → 1401). What remains (1197) is a different shape: on a usage that writes no multiplicity part (`attribute cargoMass : MassValue;`) the pilot owns an `OwningMembership` of a `Multiplicity`, not implied, after the `FeatureTyping`; ours states none | | 43 | `FeatureReferenceExpression` | `ownedMembership` | 0 | 7 | the writer owns the `Membership` (`export/rdf_expr.go` `featureReferent`); the 7 left are the `FunctionReferenceMember` shape, a `FeatureMembership` owning an `Expression` typed by the named function (KerML 8.2.5.8.3), which ours writes as a `Membership` of the function | `FeatureReferenceExpression::referent` is the `memberElement` of the first `ownedMembership` that is not a `ParameterMembership` (KerML 8.3.4.8.5, deriveFeatureReferenceExpressionReferent); the notation maps a feature reference to that owned `Membership` (8.2.5.8.3, `FeatureReferenceMember`) | Rows an evaluator rule in PR #1232 (`internal/semantic/metamodel/rules.go`) already names are marked; that PR adds a lazy metamodel evaluator and layers its derived values into the API-JSON writer, so its merge is expected to move those rows from ours-missing to present-equal or present-different, and this referee is how that movement is measured. diff --git a/docs/reference/rdf-mapping.md b/docs/reference/rdf-mapping.md index 9db8bd1774..85fd0d6bfc 100644 --- a/docs/reference/rdf-mapping.md +++ b/docs/reference/rdf-mapping.md @@ -614,6 +614,7 @@ The `sysx:` properties: | `sysx:projectId`, `sysx:branch`, `sysx:org` | The `@IdentityMetadata::ProjectRef` provenance of a scope root, see [Element identity](#element-identity). | | `sysx:isRedefinitionImplicit` | A metadata body's bare `name = …` owns a Redefinition of the metadata definition's feature of that name (SysML.xtext `MetadataBodyUsage`): the name is no declared name but the redefinition's target, flagged implicit so the graph writes the bare form back rather than `:>> name` or a declared name. A body name resolving to no feature of the metadata type keeps its `sysml:declaredName` and owns none. | | `sysx:isKindImplicit` | The declaration wrote no kind keyword (`in x : Real;`), which takes its kind from its owner. Without it the canonical keyword would come back written out, declaring what the author did not. A kind named in a comment in the head (`in /* attribute */ x : Real;`) is trivia, not a keyword the declaration wrote. | +| `sysx:headClause` | On a Subsetting or ReferenceSubsetting of a target the head also relates under the other clause kind that materializes as the same class (`feature f subsets x specializes x;` owns two Subsettings of `x`): the keyword this element stands for, `specializes`, `subsets` or `references`, so the reader keeps the clauses apart — and in their written order — where the collapsed properties alone cannot tell them apart. Absent elsewhere. | | the behavioral properties | `sysx:guard`, `sysx:expression`, `sysx:payload`, … — the parts of a behavioral node the vocabulary has no predicate for, listed under [Behavior](#behavior). | A `return` parameter written without a kind keyword is a `ReferenceUsage` diff --git a/internal/translate/export/end_forms.go b/internal/translate/export/end_forms.go index e34a7ed262..54cfc00149 100644 --- a/internal/translate/export/end_forms.go +++ b/internal/translate/export/end_forms.go @@ -458,6 +458,11 @@ func (d *decoder) payloadText(el *element) (string, error) { } } mult += flags + if _, leads := d.multiplicityPlacement(payload); leads { + // `of p[*] ordered : Fuel`: the multiplicity part was written ahead of the typing. + words[len(words)-1] += mult + mult = "" + } relationships, err := d.relationshipWords(payload, mult) if err != nil { return "", err diff --git a/internal/translate/export/rdf_expr.go b/internal/translate/export/rdf_expr.go index 23217b1d21..dadb7da1ca 100644 --- a/internal/translate/export/rdf_expr.go +++ b/internal/translate/export/rdf_expr.go @@ -499,7 +499,7 @@ func (e *encoder) bodyParameter(subject, base rdf.Term, owner string, index int, e.name(node, param.Name) e.flags(node, []boolProperty{{"isReference", param.IsReference}}) if param.Type != nil { - e.graph.Add(node, e.sysml(relationshipProperty[ast.RelTyping]), e.reference(param.Type)) + e.headRelationship(node, ast.RelTyping, e.reference(param.Type), param.Type) } e.relationships(node, owner, param.Relationships) e.bodyMembership(subject, node, mFeatureMembership) diff --git a/internal/translate/export/rdf_in.go b/internal/translate/export/rdf_in.go index 24cbb92437..685047d6cb 100644 --- a/internal/translate/export/rdf_in.go +++ b/internal/translate/export/rdf_in.go @@ -2644,7 +2644,17 @@ func (d *decoder) usageHead(el *element, kind ast.UsageKind) (string, error) { } typedPart := "" namedMult := false + placed, leads := d.multiplicityPlacement(el) switch { + case leads && len(identWords) > 0 && multPart != "": + identWords[len(identWords)-1] += multPart + namedMult, multPart = true, "" + case leads && referenced && multPart != "": + words[len(words)-1] += multPart + multPart = "" + case placed: + // The owned relationships place the multiplicity among the clauses. + typedPart, multPart = multPart, "" case len(typed) > 0: typedPart, multPart = multPart, "" case len(identWords) > 0 && multPart != "": @@ -4105,37 +4115,203 @@ func (d *decoder) visibility(el *element) string { } // relationshipWords renders the typing and specialization clauses of a -// declaration head, in the order the grammar expects. multPart, when given, is -// the multiplicity part the typing clause carries. +// declaration head in the order the head was spelled, which the relationship +// elements el owns state in ownedRelationship order, and in relationshipOrder +// for clauses no owned relationship places. multPart, when given, is the +// multiplicity part, written where the multiplicity's membership stands among +// those relationships, else with the typing clause. func (d *decoder) relationshipWords(el *element, multPart string, skip ...ast.RelationshipKind) ([]string, error) { - var words []string + targets := map[ast.RelationshipKind][]string{} for _, kind := range relationshipOrder { if slices.Contains(skip, kind) { continue } - targets, err := d.referenceList(el, rdf.SysML+relationshipProperty[kind]) + names, err := d.referenceList(el, rdf.SysML+relationshipProperty[kind]) if err != nil { return nil, err } - if len(targets) == 0 { - continue - } // Conjugation qualifies the type a feature is typed by, not the feature // itself: the notation is `port p : ~P` (SysML v2 ConjugatedPortTyping). if kind == ast.RelTyping && d.boolOf(el, rdf.OpenSysML+xConjugatedTyping) { - for i, target := range targets { - targets[i] = "~" + target + for i, name := range names { + names[i] = "~" + name } } - clause := strings.Join(targets, ", ") - if kind == ast.RelTyping { - clause += multPart + targets[kind] = names + } + spelled := d.spelledHead(el) + placed := slices.ContainsFunc(spelled, func(c headClause) bool { return c.multiplicity }) + written := map[headClause]bool{} + var words []string + clause := func(kind ast.RelationshipKind, names []string) { + text := strings.Join(names, ", ") + // A multiplicity no membership places follows the first typing clause. + if kind == ast.RelTyping && !placed { + text += multPart + placed = true + } + words = append(words, relationshipSyntax[kind], text) + } + for i := 0; i < len(spelled); i++ { + c := spelled[i] + if c.multiplicity { + if multPart == "" { + continue + } + if len(words) == 0 { + words = append(words, strings.TrimSpace(multPart)) + } else { + words[len(words)-1] += multPart + } + continue + } + if c.index >= len(targets[c.kind]) { + continue + } + // Consecutive clauses of one kind are one list (`:> a, b`). + var names []string + for ; i < len(spelled) && spelled[i].kind == c.kind && !spelled[i].multiplicity; i++ { + if spelled[i].index < len(targets[c.kind]) { + names = append(names, targets[c.kind][spelled[i].index]) + written[spelled[i]] = true + } + } + i-- + clause(c.kind, names) + } + for _, kind := range relationshipOrder { + var names []string + for index, name := range targets[kind] { + if !written[headClause{kind: kind, index: index}] { + names = append(names, name) + } + } + if len(names) > 0 { + clause(kind, names) } - words = append(words, relationshipSyntax[kind], clause) } return words, nil } +// multiplicityPlacement reports whether el's owned relationships place its +// multiplicity among the head's clauses, for relationshipWords to write there, +// and whether it leads them (`p[*] ordered : Fuel`), where it follows the name. +func (d *decoder) multiplicityPlacement(el *element) (placed, leads bool) { + spelled := d.spelledHead(el) + placed = slices.ContainsFunc(spelled, func(c headClause) bool { return c.multiplicity }) + return placed, placed && spelled[0].multiplicity +} + +// headClause is one clause of a declaration head as the graph places it: the +// kind and position of a collapsed property's target, or the multiplicity. +type headClause struct { + kind ast.RelationshipKind + index int + multiplicity bool +} + +// headClauseKinds are the collapsed properties a materialized relationship +// element may state, by the element's metaclass; a Subsetting is a feature's +// `subsets` or its `specializes`, a ReferenceSubsetting a `references` or an +// end form's `subsets`, which the target tells apart. +var headClauseKinds = map[string][]ast.RelationshipKind{ + mFeatureTyping: {ast.RelTyping}, + mConjugatedPortTyping: {ast.RelTyping}, + mSubclassification: {ast.RelSpecializes}, + mSpecialization: {ast.RelSpecializes}, + mSubsetting: {ast.RelSubsets, ast.RelSpecializes}, + mRedefinition: {ast.RelRedefines}, + mReferenceSubsetting: {ast.RelReferences, ast.RelSubsets}, +} + +// headClauseTargets are the properties that state a relationship element's +// target, by its metaclass, the specific end first: a graph that states no +// derived `target` or `general` still names the end its own way. +var headClauseTargets = map[string][]string{ + mFeatureTyping: {"type", pGeneral, pTarget}, + mConjugatedPortTyping: {pPortDefinition}, + mSubclassification: {"superclassifier", pGeneral, pTarget}, + mSpecialization: {pGeneral, pTarget}, + mSubsetting: {pSubsettedFeature, pGeneral, pTarget}, + mRedefinition: {"redefinedFeature", pSubsettedFeature, pGeneral, pTarget}, + mReferenceSubsetting: {pReferencedFeature, pSubsettedFeature, pGeneral, pTarget}, +} + +// spelledHead reads the order el's head was spelled from what el owns in +// ownedRelationship order: each relationship element as the clause of the +// collapsed property whose target it relates, and the multiplicity range's +// membership as the multiplicity. A graph stating the collapsed properties +// alone yields none. +func (d *decoder) spelledHead(el *element) []headClause { + subject := rdf.IRI(el.iri) + objects := map[ast.RelationshipKind][]rdf.Term{} + for _, kind := range relationshipOrder { + objects[kind] = d.graph.Objects(subject, rdf.SysML+relationshipProperty[kind]) + } + taken := map[headClause]bool{} + var clauses []headClause + for _, owned := range d.graph.Objects(subject, rdf.SysML+pOwnedRelationship) { + metaclass := d.metaclass(owned) + if metaclass == mOwningMembership { + if member, ok := d.graph.Object(owned, rdf.SysML+pMemberElement); ok && d.metaclass(member) == mMultiplicityRange { + clauses = append(clauses, headClause{multiplicity: true}) + } + continue + } + var target rdf.Term + for _, property := range headClauseTargets[metaclass] { + if end, ok := d.graph.Object(owned, rdf.SysML+property); ok { + target = end + break + } + } + if target.Value == "" { + continue + } + var candidates []headClause + for _, kind := range headClauseKinds[metaclass] { + for index, object := range objects[kind] { + clause := headClause{kind: kind, index: index} + if object == target && !taken[clause] { + candidates = append(candidates, clause) + break + } + } + } + if clause, ok := d.headClauseOf(owned, candidates); ok { + taken[clause] = true + clauses = append(clauses, clause) + } + } + return clauses +} + +// headClauseOf picks the clause a relationship element states among the candidates its +// metaclass admits: the keyword it carries decides between several, else the kinds' fixed order. +func (d *decoder) headClauseOf(owned rdf.Term, candidates []headClause) (headClause, bool) { + switch len(candidates) { + case 0: + return headClause{}, false + case 1: + return candidates[0], true + } + if keyword, ok := d.graph.Object(owned, rdf.OpenSysML+xHeadClause); ok { + for _, clause := range candidates { + if relationshipSyntax[clause.kind] == keyword.Value { + return clause, true + } + } + } + for _, kind := range relationshipOrder { + for _, clause := range candidates { + if clause.kind == kind { + return clause, true + } + } + } + return candidates[0], true +} + func (d *decoder) multiplicityText(el *element) string { lower, hasLower := d.stringOf(el, rdf.SysML+pLowerBound) upper, hasUpper := d.stringOf(el, rdf.SysML+pUpperBound) diff --git a/internal/translate/export/rdf_normative.go b/internal/translate/export/rdf_normative.go index b5e125a336..5ed8a94634 100644 --- a/internal/translate/export/rdf_normative.go +++ b/internal/translate/export/rdf_normative.go @@ -9,7 +9,9 @@ package export // choosing between them. import ( + "cmp" "fmt" + "slices" "strings" "github.com/Open-MBEE/OpenSysML/internal/semantic/identity" @@ -107,30 +109,163 @@ type normativeRelationship struct { ownedProps []string } +// declarationHead records one declaration head as the notation spelled it: +// its clauses with their source offsets, and how many owned relationships the +// element stated ahead of the head (its prefix metadata). The relationship +// elements the head's clauses materialize are owned in that order, ahead of +// the FeatureValue and the body, as ownedRelationship is ordered (KerML +// 8.3.2.1.2) and the notation adds an owned relationship as it parses each +// clause (KerML 8.2.1, SysML 8.2: `ownedRelationship += …`). +type declarationHead struct { + anchor int + items []headItem +} + +// headItem is one head clause: a specialization clause by its kind and the +// object of its collapsed property, or the multiplicity by its OwningMembership. +type headItem struct { + kind ast.RelationshipKind + element rdf.Term + offset int + multiplicity bool +} + +// materializedKinds are the collapsed head properties materializeRelationships +// emits relationship elements for, in the order a head no notation spelled +// states them. +var materializedKinds = []ast.RelationshipKind{ + ast.RelTyping, ast.RelSpecializes, ast.RelSubsets, ast.RelRedefines, ast.RelReferences, +} + // materializeRelationships emits one relationship element per target of each -// collapsed head property subject states, in the property's stated order. +// collapsed head property subject states, in the order the notation spelled +// the clauses, and seats them with the multiplicity's membership where the +// head stands in ownedRelationship. func (e *encoder) materializeRelationships(subject rdf.Term) { // A membership is no feature: its collapsed head properties stay collapsed, // as an expression node's do. if ontology.IsAncestorOrSelf(e.metaclassOf(subject), "Membership") { return } - for _, kind := range []ast.RelationshipKind{ - ast.RelTyping, ast.RelSpecializes, ast.RelSubsets, ast.RelRedefines, ast.RelReferences, - } { - targets := e.graph.Objects(subject, rdf.SysML+relationshipProperty[kind]) - for i, target := range targets { - spec, ok := e.relationshipSpec(subject, kind, len(targets), i) - if !ok { + type pending struct { + kind ast.RelationshipKind + target rdf.Term + count int + index int + } + var targets []pending + position := map[headItem]int{} + for _, kind := range materializedKinds { + objects := e.graph.Objects(subject, rdf.SysML+relationshipProperty[kind]) + for i, target := range objects { + position[headItem{kind: kind, element: target}] = len(targets) + targets = append(targets, pending{kind, target, len(objects), i}) + } + } + emitted := make([]bool, len(targets)) + var block []rdf.Term + emit := func(at int) { + if emitted[at] { + return + } + emitted[at] = true + p := targets[at] + spec, ok := e.relationshipSpec(subject, p.kind, p.count, p.index) + if !ok { + return + } + if p.kind == ast.RelTyping && e.graph.BoolValue(subject, rdf.OpenSysML+xConjugatedTyping) { + block = append(block, e.emitConjugatedPortTyping(subject, p.target, spec)) + return + } + relation := e.emitRelationship(subject, p.target, spec) + if e.headClauseAmbiguous(subject, p.kind, p.target) { + e.graph.Add(relation, e.sysx(xHeadClause), rdf.String(relationshipSyntax[p.kind])) + } + block = append(block, relation) + } + head := e.heads[subject] + if head != nil { + for _, item := range head.spelled() { + if item.multiplicity { + block = append(block, item.element) continue } - if kind == ast.RelTyping && e.graph.BoolValue(subject, rdf.OpenSysML+xConjugatedTyping) { - e.emitConjugatedPortTyping(subject, target, spec) - continue + if at, ok := position[headItem{kind: item.kind, element: item.element}]; ok { + emit(at) } - e.emitRelationship(subject, target, spec) } } + for at := range targets { + emit(at) + } + if head != nil { + e.seatHead(subject, head.anchor, block) + } +} + +// headClauseAmbiguous reports whether subject states target under another +// clause kind that materializes as the same relationship class as kind. +func (e *encoder) headClauseAmbiguous(subject rdf.Term, kind ast.RelationshipKind, target rdf.Term) bool { + for _, other := range headClauseSiblings[kind] { + if slices.Contains(e.graph.Objects(subject, rdf.SysML+relationshipProperty[other]), target) { + return true + } + } + return false +} + +// headClauseSiblings are the clause kinds a feature materializes as one +// relationship class: specializes and subsets as Subsetting, references and an +// end form's subsets as ReferenceSubsetting. +var headClauseSiblings = map[ast.RelationshipKind][]ast.RelationshipKind{ + ast.RelSpecializes: {ast.RelSubsets}, + ast.RelSubsets: {ast.RelSpecializes, ast.RelReferences}, + ast.RelReferences: {ast.RelSubsets}, +} + +// spelled is the head's clauses in the order the notation spelled them; a +// clause nothing spelled follows them in the order it was stated. +func (h *declarationHead) spelled() []headItem { + items := slices.Clone(h.items) + slices.SortStableFunc(items, func(a, b headItem) int { + switch { + case a.offset < 0 || b.offset < 0: + return cmp.Compare(b.offset, a.offset) + default: + return cmp.Compare(a.offset, b.offset) + } + }) + return items +} + +// seatHead restates subject's ownedRelationship with the head's block of +// elements at anchor: what was owned ahead of the head stays ahead, and the +// FeatureValue, the body and whatever else follows keeps its order after it. +func (e *encoder) seatHead(subject rdf.Term, anchor int, block []rdf.Term) { + objects := e.graph.Objects(subject, rdf.SysML+pOwnedRelationship) + if anchor > len(objects) { + anchor = len(objects) + } + seated := make(map[rdf.Term]bool, len(block)) + for _, element := range block { + seated[element] = true + } + order := make([]rdf.Term, 0, len(objects)) + order = append(order, objects[:anchor]...) + for _, element := range block { + if slices.Contains(objects, element) { + order = append(order, element) + } + } + for _, element := range objects[anchor:] { + if !seated[element] { + order = append(order, element) + } + } + if !slices.Equal(order, objects) { + e.graph.ReorderObjects(subject, rdf.SysML+pOwnedRelationship, order) + } } // relationshipSpec picks the materialization of one collapsed property on @@ -211,23 +346,24 @@ func (e *encoder) referenceSubsettingSpec(count, i int) normativeRelationship { // emitConjugatedPortTyping materializes `: ~P` as a ConjugatedPortTyping whose // type is P's ConjugatedPortDefinition and whose portDefinition is P itself // (SysML v2 1.0 § 8.3.12 Ports); an external P is named `~P` by the literal. -func (e *encoder) emitConjugatedPortTyping(subject, target rdf.Term, spec normativeRelationship) { +func (e *encoder) emitConjugatedPortTyping(subject, target rdf.Term, spec normativeRelationship) rdf.Term { spec.metaclass = mConjugatedPortTyping spec.targetEnds = append([]string{pConjugatedPortDefinition}, spec.targetEnds...) conjugated := rdf.String("~" + target.Value) if target.IsIRI() { conjugated = e.ids.minted(rdf.RelationshipIRI(target, "_conjugated"), target, "_conjugated") } - e.emitRelationship(subject, conjugated, spec) - relation := e.ids.minted(rdf.RelationshipIRI(subject, spec.suffix), subject, spec.suffix) + relation := e.emitRelationship(subject, conjugated, spec) e.graph.Add(relation, e.sysml(pPortDefinition), target) + return relation } // emitRelationship mints the relationship element between subject and target // and wires its ends, its identity and its owner's owned-* properties. -func (e *encoder) emitRelationship(subject, target rdf.Term, spec normativeRelationship) { - e.emitRelationshipAt(subject, target, spec, - e.ids.minted(rdf.RelationshipIRI(subject, spec.suffix), subject, spec.suffix)) +func (e *encoder) emitRelationship(subject, target rdf.Term, spec normativeRelationship) rdf.Term { + relation := e.ids.minted(rdf.RelationshipIRI(subject, spec.suffix), subject, spec.suffix) + e.emitRelationshipAt(subject, target, spec, relation) + return relation } // emitRelationshipAt is emitRelationship with the relationship element's IRI diff --git a/internal/translate/export/rdf_out.go b/internal/translate/export/rdf_out.go index 1f93bc49fd..51797aea85 100644 --- a/internal/translate/export/rdf_out.go +++ b/internal/translate/export/rdf_out.go @@ -142,6 +142,7 @@ const ( xEndElement = "endElement" xSourceMultiplicityBeforeThen = "sourceMultiplicityBeforeThen" xConjugatedTyping = "conjugatedTyping" + xHeadClause = "headClause" xEndVerb = "endVerb" xSourceMember = "sourceMember" xTargetMember = "targetMember" @@ -587,6 +588,7 @@ func newEncoderOver(file *source.SourceFile, root *ast.RootNamespace, form IDFor subjects: map[string]string{}, regions: map[rdf.Term]region{}, verifiedReferences: map[rdf.Term]bool{}, + heads: map[rdf.Term]*declarationHead{}, bodies: map[rdf.Term]region{}, offsets: map[string]int{}, } @@ -675,6 +677,9 @@ type encoder struct { // OwnedReferenceSubsetting of RequirementVerificationUsage, as against a // declaration (`verify requirement :> r;`), whose `:>` is a Subsetting. verifiedReferences map[rdf.Term]bool + // heads records each declaration head's clauses in the order the notation + // spelled them, for the order its relationship elements are owned in. + heads map[rdf.Term]*declarationHead // membershipImports are the membership imports, whose imported membership // is written once every membership is minted. membershipImports []membershipImport @@ -1661,11 +1666,11 @@ func (e *encoder) encodeMember(h memberHead, owner string) error { return err } if implicitTarget.Value != "" { - e.graph.Add(subject, e.sysml(relationshipProperty[ast.RelRedefines]), implicitTarget) + e.headRelationship(subject, ast.RelRedefines, implicitTarget, nil) e.graph.Add(subject, e.sysx(xImplicitRedefinition), rdf.Bool(true)) } if variantTarget.Value != "" { - e.graph.Add(subject, e.sysml(relationshipProperty[ast.RelReferences]), variantTarget) + e.headRelationship(subject, ast.RelReferences, variantTarget, nil) } if err := e.featureValue(subject, within, n.Value, n.ValueIsDefault, n.ValueIsInitial); err != nil { return err @@ -1905,12 +1910,12 @@ func (e *encoder) encodeMember(h memberHead, owner string) error { head(rdf.SysMLTerm(mReferenceUsage)) e.ident(subject, n.Ident) e.graph.Add(subject, e.sysml(pDirection), rdf.String("in")) - if n.TypeRef != nil { - e.graph.Add(subject, e.sysml(relationshipProperty[ast.RelTyping]), e.reference(n.TypeRef)) - } if err := e.prefixes(subject, fqn, n.Prefixes, n.Body); err != nil { return err } + if n.TypeRef != nil { + e.headRelationship(subject, ast.RelTyping, e.reference(n.TypeRef), n.TypeRef) + } e.relationships(subject, owner, n.Relationships) if err := e.multiplicity(subject, within, n.Multiplicity); err != nil { return err @@ -2938,11 +2943,12 @@ func withoutComments(text string) string { } // relationships writes a head's clauses in relationshipOrder, not the order the -// notation spelled them in, so the Turtle is the same for every spelling. +// notation spelled them in, so the collapsed Turtle is the same for every +// spelling; the order spelled is kept for the relationship elements +// materializeRelationships emits, as ownedRelationship is ordered. func (e *encoder) relationships(subject rdf.Term, owner string, rels []*ast.Relationship) { chains := chainTargets(rels) for _, kind := range relationshipOrder { - property := relationshipProperty[kind] for _, rel := range rels { if rel == nil || rel.Target == nil || rel.Kind != kind { continue @@ -2950,16 +2956,54 @@ func (e *encoder) relationships(subject rdf.Term, owner string, rels []*ast.Rela // A name is a reference; a feature chain is the chain Feature the // materialized relationship owns, other expressions written text. if k, chained := chains[rel]; chained { - e.graph.Add(subject, e.sysml(property), e.headChain(subject, rel.Target, k)) + e.headRelationship(subject, kind, e.headChain(subject, rel.Target, k), rel) continue } if name, ok := rel.Target.(*ast.QualifiedName); ok { - e.graph.Add(subject, e.sysml(property), e.reference(name)) + e.headRelationship(subject, kind, e.reference(name), rel) continue } - e.graph.Add(subject, e.sysml(property), rdf.TypedLiteral(e.text(rel.Target), rdf.OpenSysML+dtExpression)) + e.headRelationship(subject, kind, rdf.TypedLiteral(e.text(rel.Target), rdf.OpenSysML+dtExpression), rel) + } + } +} + +// headRelationship states one clause of subject's declaration head as the +// collapsed property of its kind and records where the notation spelled it; +// a clause no notation spelled (an implicit redefinition) passes a nil node. +func (e *encoder) headRelationship(subject rdf.Term, kind ast.RelationshipKind, object rdf.Term, clause ast.Node) { + e.graph.Add(subject, e.sysml(relationshipProperty[kind]), object) + e.headOf(subject).items = append(e.headOf(subject).items, headItem{kind: kind, element: object, offset: clauseOffset(clause)}) +} + +// headOf is the record of subject's declaration head, opened where its +// ownedRelationship stands when the head's first clause is stated: what is +// owned ahead of that (prefix metadata) stays ahead of the head. +func (e *encoder) headOf(subject rdf.Term) *declarationHead { + head := e.heads[subject] + if head == nil { + head = &declarationHead{anchor: len(e.graph.Objects(subject, rdf.SysML+pOwnedRelationship))} + e.heads[subject] = head + } + return head +} + +// clauseOffset is where the notation spelled a head clause, read from the +// clause's span or, for a relationship parsed without one, its target's; -1 +// for a clause nothing spelled. +func clauseOffset(clause ast.Node) int { + if clause == nil { + return -1 + } + if span := clause.Span(); span.Len > 0 { + return span.Offset + } + if rel, ok := clause.(*ast.Relationship); ok && rel.Target != nil { + if span := rel.Target.Span(); span.Len > 0 { + return span.Offset } } + return -1 } // chainTargets indexes the qualified-name relationship targets written as a @@ -3044,6 +3088,8 @@ func (e *encoder) multiplicity(subject rdf.Term, owner string, mult *ast.Multipl e.graph.Add(rangeNode, e.sysml(pElementID), rdf.String(rdf.LocalName(rangeNode.Value))) e.graph.Add(subject, e.sysml(pMultiplicity), rangeNode) e.emitMembershipCore(membership, rangeNode, subject, mOwningMembership, true) + head := e.headOf(subject) + head.items = append(head.items, headItem{element: membership, offset: clauseOffset(mult), multiplicity: true}) e.graph.Add(subject, e.sysml(pOwnedRelationship), membership) e.graph.Add(subject, e.sysml(pOwnedMembership), membership) return e.multiplicityBounds(subject, rangeNode, owner, mult) diff --git a/internal/translate/rdf/graph_fastpath_test.go b/internal/translate/rdf/graph_fastpath_test.go index d92e39e581..03add178d2 100644 --- a/internal/translate/rdf/graph_fastpath_test.go +++ b/internal/translate/rdf/graph_fastpath_test.go @@ -299,3 +299,99 @@ func TestReconcileRewritesOnlyWhatIsOutOfOrder(t *testing.T) { t.Errorf("reconciling changed its input") } } + +// ReorderObjects restates a property's objects in the order given, each +// triple keeping its place, and leaves the graph as it was for any list that +// is not a permutation of them. +func TestReorderObjectsPermutesInPlace(t *testing.T) { + p := IRI(Element + "P") + owned := SysMLTerm("ownedRelationship") + a, b, c := IRI(Element+"P_a"), IRI(Element+"P_b"), IRI(Element+"P_c") + g := NewGraph() + g.Add(p, owned, a) + g.Add(p, SysMLTerm("declaredName"), String("P")) + g.Add(p, owned, b) + g.Add(p, owned, c) + g.ReorderObjects(p, SysML+"ownedRelationship", []Term{c, a, b}) + if got := g.Objects(p, SysML+"ownedRelationship"); !slices.Equal(got, []Term{c, a, b}) { + t.Fatalf("Objects after ReorderObjects = %v", got) + } + if got := g.Triples()[1].Object; got != String("P") { + t.Errorf("the other triple moved: %v", got) + } + if !g.Has(Triple{Subject: p, Predicate: owned, Object: a}) || g.Len() != 4 { + t.Errorf("the graph lost or gained a triple: %d", g.Len()) + } + for _, bad := range [][]Term{{a, b}, {a, b, b}, {a, b, IRI(Element + "P_d")}} { + g.ReorderObjects(p, SysML+"ownedRelationship", bad) + if got := g.Objects(p, SysML+"ownedRelationship"); !slices.Equal(got, []Term{c, a, b}) { + t.Errorf("ReorderObjects(%v) changed the graph: %v", bad, got) + } + } +} + +// A reorder withdraws the settled claim, sees a statement added after an +// earlier reorder, and follows the triples through a rewrite. +func TestReorderObjectsTracksLaterStatements(t *testing.T) { + p, q := IRI(Element+"P"), IRI(Element+"Q") + owned := SysMLTerm("ownedRelationship") + a, b, c := IRI(Element+"P_a"), IRI(Element+"P_b"), IRI(Element+"P_c") + g := NewGraph() + g.Add(p, owned, a) + g.Add(q, owned, c) + g.Add(p, owned, b) + g.MarkCollectionsSettled() + g.ReorderObjects(p, SysML+"ownedRelationship", []Term{b, a}) + if g.CollectionsSettled() { + t.Error("the graph still vouches for its collections after a reorder") + } + g.Add(p, owned, c) + g.ReorderObjects(p, SysML+"ownedRelationship", []Term{c, b, a}) + if got := g.Objects(p, SysML+"ownedRelationship"); !slices.Equal(got, []Term{c, b, a}) { + t.Fatalf("Objects after adding and reordering = %v", got) + } + want := []Triple{{p, owned, c}, {q, owned, c}, {p, owned, b}, {p, owned, a}} + if got := g.Triples(); !slices.Equal(got, want) { + t.Errorf("triples = %v, want %v", got, want) + } + g.RewriteTriples(func(tr *Triple) bool { return tr.Subject != q }) + g.ReorderObjects(p, SysML+"ownedRelationship", []Term{a, c, b}) + want = []Triple{{p, owned, a}, {p, owned, c}, {p, owned, b}} + if got := g.Triples(); !slices.Equal(got, want) { + t.Errorf("triples after rewrite and reorder = %v, want %v", got, want) + } + if got := g.Objects(p, SysML+"ownedRelationship"); !slices.Equal(got, []Term{a, c, b}) { + t.Errorf("Objects after rewrite and reorder = %v", got) + } +} + +// Reordering a subject whose index an overlay graph shares with its base +// detaches that entry: the base keeps its order and its index. +func TestReorderObjectsLeavesASharedBaseAlone(t *testing.T) { + p, q := IRI(Element+"P"), IRI(Element+"Q") + owned := SysMLTerm("ownedRelationship") + a, b := IRI(Element+"P_a"), IRI(Element+"P_b") + base := NewGraph() + base.Add(p, owned, a) + base.Add(p, owned, b) + base.Add(q, owned, a) + added := []Triple{{q, SysMLTerm("declaredName"), String("Q")}} + triples := append(slices.Clone(base.Triples()), added...) + graph := NewGraphOfWithIndexOverlay(triples, base.Prefixes, base, added) + graph.ReorderObjects(p, SysML+"ownedRelationship", []Term{b, a}) + if got := graph.Objects(p, SysML+"ownedRelationship"); !slices.Equal(got, []Term{b, a}) { + t.Fatalf("overlay Objects = %v", got) + } + if got := graph.Triples()[:2]; !slices.Equal(got, []Triple{{p, owned, b}, {p, owned, a}}) { + t.Errorf("overlay triples = %v", got) + } + if got := base.Objects(p, SysML+"ownedRelationship"); !slices.Equal(got, []Term{a, b}) { + t.Errorf("base Objects changed: %v", got) + } + if got := base.Triples()[:2]; !slices.Equal(got, []Triple{{p, owned, a}, {p, owned, b}}) { + t.Errorf("base triples changed: %v", got) + } + if graph.index[p] == base.index[p] { + t.Error("the overlay still shares the reordered subject's index with its base") + } +} diff --git a/internal/translate/rdf/term.go b/internal/translate/rdf/term.go index 5d1b0d4d8d..268ca468bb 100644 --- a/internal/translate/rdf/term.go +++ b/internal/translate/rdf/term.go @@ -113,6 +113,9 @@ type Graph struct { subjectOrder []Term subjectSet map[string]struct{} subjectsReady bool + // positions locates the statements of a predicate in triples, per subject, + // for the predicates ReorderObjects has been asked about. + positions map[string]map[Term][]int // settled vouches that every collection the graph annotates is stated by // its typed triples, in the annotation's order: what ReconcileCollections @@ -321,6 +324,9 @@ func (g *Graph) AddTriple(t Triple) { seen[t] = true } g.triples = append(g.triples, t) + if bySubject := g.positions[t.Predicate.Value]; bySubject != nil { + bySubject[t.Subject] = append(bySubject[t.Subject], len(g.triples)-1) + } if g.subjectsReady { if _, exists := g.subjectSet[t.Subject.Value]; !exists { g.subjectSet[t.Subject.Value] = struct{}{} @@ -487,6 +493,7 @@ func (g *Graph) RewriteTriples(rewrite func(*Triple) bool) { } g.triples = unique g.seen = nil + g.positions = nil for _, index := range g.index { for predicate, objects := range index.objects { index.objects[predicate] = objects[:0] @@ -529,6 +536,59 @@ func (g *Graph) detachSharedIndexes() { g.sharedIndex = nil } +// ReorderObjects restates (subject, predicate)'s objects in the order given, each +// triple keeping its place; anything but a permutation leaves the graph as it was. +func (g *Graph) ReorderObjects(subject Term, predicate string, objects []Term) { + si := g.subjects()[subject] + if si == nil || len(si.objects[predicate]) != len(objects) { + return + } + found := si.objects[predicate] + current := make(map[Term]int, len(found)) + for _, object := range found { + current[object]++ + } + for _, object := range objects { + if current[object] == 0 { + return + } + current[object]-- + } + positions := g.statementPositions(predicate)[subject] + g.settled = false + if g.sharedIndex[subject] { + si = cloneSubjectIndex(si) + g.index[subject] = si + delete(g.sharedIndex, subject) + if len(g.sharedIndex) == 0 { + g.sharedIndex = nil + } + } + for i, position := range positions { + g.triples[position].Object = objects[i] + } + copy(si.objects[predicate], objects) +} + +// statementPositions locates predicate's statements in triples, per subject, in +// order; built on first use, appended to by AddTriple, reset by RewriteTriples. +func (g *Graph) statementPositions(predicate string) map[Term][]int { + if g.positions == nil { + g.positions = make(map[string]map[Term][]int) + } + bySubject := g.positions[predicate] + if bySubject == nil { + bySubject = make(map[Term][]int) + for i, t := range g.triples { + if t.Predicate.Value == predicate { + bySubject[t.Subject] = append(bySubject[t.Subject], i) + } + } + g.positions[predicate] = bySubject + } + return bySubject +} + // Len returns the number of triples. func (g *Graph) Len() int { return len(g.triples) } diff --git a/tests/export/anonymous_keywords_test.go b/tests/export/anonymous_keywords_test.go index deb7a32e71..ad899a61c9 100644 --- a/tests/export/anonymous_keywords_test.go +++ b/tests/export/anonymous_keywords_test.go @@ -94,7 +94,7 @@ func TestAnonymousKeywordsComeBackFromTheTypedFactsAlone(t *testing.T) { want: []string{"event occurrence", "event occurrence ack;", "event occurrence : Exchange;"}, }, { fixture: "anonymous_portions.sysml", - want: []string{"snapshot occurrence redefines start {", "timeslice occurrence redefines portionOfLife {", "snapshot occurrence subsets fuel redefines done {"}, + want: []string{"snapshot occurrence redefines start {", "timeslice occurrence redefines portionOfLife {", "snapshot occurrence redefines done subsets fuel {"}, }, { fixture: "anonymous_assertions.sysml", want: []string{"assert constraint references massConstraint {", "assert not constraint references massConstraint;", "assert constraint {"}, diff --git a/tests/export/export_test.go b/tests/export/export_test.go index 052a783560..7c24ffa3b8 100644 --- a/tests/export/export_test.go +++ b/tests/export/export_test.go @@ -3877,7 +3877,7 @@ func TestLinkedReferencesCarryTheRoundTripWithoutSourceText(t *testing.T) { "ref spare references spare;", "attribute s = w.size;", "part redefines G2::x;", - "part : Inner::Wheel redefines w;", + "part redefines w : Inner::Wheel;", "transition idle then Done::done;", "part unresolved : Elsewhere::Missing;", "public import Meta::*[@Safety];", diff --git a/tests/export/flow_payload_test.go b/tests/export/flow_payload_test.go index 68ee171ac2..0a84b7bbca 100644 --- a/tests/export/flow_payload_test.go +++ b/tests/export/flow_payload_test.go @@ -341,7 +341,7 @@ func TestPayloadIdentityAndMembership(t *testing.T) { // The multiplicity part of a declared payload may come before its typing, its // `ordered` included: `of p[*] ordered : Fuel` declares p, as `of p : Fuel[*] -// ordered` does, and comes back in that second spelling. +// ordered` does, and comes back in the spelling it was written in. func TestPayloadMultiplicityPartBeforeTheTyping(t *testing.T) { const model = `package Q { item def Fuel; @@ -358,7 +358,7 @@ func TestPayloadMultiplicityPartBeforeTheTyping(t *testing.T) { if !strings.Contains(string(turtle), "elmt:Q__Ctx___402__p\n a sysml:PayloadFeature ;") { t.Errorf("p is not declared as the payload:\n%s", turtle) } - if !strings.Contains(string(back), "flow of p : Fuel[*] ordered from x.i to y.j;") { + if !strings.Contains(string(back), "flow of p[*] ordered : Fuel from x.i to y.j;") { t.Errorf("the payload did not come back declared:\n%s", back) } } diff --git a/tests/export/graph_only_notation_test.go b/tests/export/graph_only_notation_test.go index 081c2c6dd6..a54bd894b5 100644 --- a/tests/export/graph_only_notation_test.go +++ b/tests/export/graph_only_notation_test.go @@ -1,10 +1,12 @@ package export_test import ( + "bytes" "strings" "testing" "github.com/Open-MBEE/OpenSysML/internal/translate/convert" + "github.com/Open-MBEE/OpenSysML/internal/translate/export" ) // notationFromTheGraphAlone converts src to Turtle, strips the source text and @@ -268,8 +270,8 @@ func TestExpressionBodiesAndChainsFromTheGraphAlone(t *testing.T) { "notEmpty(xs) implies sub.xs->size() > 0 xor false") } -// A usage redefining a namesake keeps that target through the graph alone even -// though the writer puts `redefines causes` after `subsets participant`. +// A usage redefining a namesake keeps that target through the graph alone, in +// the order the head spelled `redefines causes` and `subsets participant`. func TestSelfNamedRedefinitionTargetSurvivesTheGraphAlone(t *testing.T) { src := `package P { abstract occurrence causes[*]; @@ -282,7 +284,7 @@ func TestSelfNamedRedefinitionTargetSurvivesTheGraphAlone(t *testing.T) { } ` back := notationFromTheGraphAlone(t, "p.sysml", src) - wantFragments(t, back, "occurrence causes[1..*] subsets participant redefines causes;") + wantFragments(t, back, "occurrence causes[1..*] redefines causes subsets participant;") } // An unnamed usage takes its name from the first feature it redefines, so a @@ -311,3 +313,47 @@ func TestNameFromTheFirstOfSeveralRedefinitionsFromTheGraphAlone(t *testing.T) { "attribute redefines innerSpaceDimension, faces::innerSpaceDimension;", "attribute dim = base.innerSpaceDimension;") } + +// Two Subsettings of one target (`specializes x subsets x`) keep the order they were +// spelled in from the graph alone, under either id form, rather than the fixed kind order. +func TestSameTargetSpecializesAndSubsetsKeepTheirSpelledOrder(t *testing.T) { + for _, id := range []export.IDForm{export.IDQualifiedName, export.IDUUID} { + for _, head := range []string{"specializes x subsets x", "subsets x specializes x"} { + src := []byte("package P {\n\tfeature x;\n\tfeature f " + head + ";\n}\n") + turtle, err := convert.ConvertWith("m.kerml", src, convert.FormatSysML, convert.FormatTurtle, convert.Options{ID: id}) + if err != nil { + t.Fatalf("to turtle: %v", err) + } + back, err := convert.Convert("m.ttl", withoutLayout(t, turtle), convert.FormatTurtle, convert.FormatSysML) + if err != nil { + t.Fatalf("back to notation from the graph alone: %v", err) + } + if want := "feature f " + head + ";"; !strings.Contains(string(back), want) { + t.Errorf("id form %v: want %q in the notation from the graph alone:\n%s", id, want, back) + } + } + } +} + +// A graph that owns no membership for a head's multiplicity (an older writer's) gets +// it written once, with the first typing clause, however other clauses split the typings. +func TestUnplacedMultiplicityIsWrittenOnceAcrossSplitTypings(t *testing.T) { + src := "package P {\n\tpart def A;\n\tpart def B;\n\tpart x;\n\tpart p : A :> x : B [2];\n}\n" + turtle, err := convert.Convert("m.sysml", []byte(src), convert.FormatSysML, convert.FormatTurtle) + if err != nil { + t.Fatalf("to turtle: %v", err) + } + stripped := withoutLayout(t, turtle) + legacy := bytes.ReplaceAll(stripped, []byte("elmt:P__p_ft1, expr:P__p_pmultiplicity_om ;"), []byte("elmt:P__p_ft1 ;")) + legacy = bytes.ReplaceAll(legacy, []byte(`{\"@id\":\"P__p_ft1\"},{\"@id\":\"P__p_pmultiplicity_om\"}]`), []byte(`{\"@id\":\"P__p_ft1\"}]`)) + if bytes.Equal(legacy, stripped) { + t.Fatalf("the multiplicity's membership was not where expected in\n%s", stripped) + } + back, err := convert.Convert("m.ttl", legacy, convert.FormatTurtle, convert.FormatSysML) + if err != nil { + t.Fatalf("back to notation from the graph alone: %v", err) + } + if want := "part p : A[2] subsets x : B;"; !strings.Contains(string(back), want) { + t.Errorf("want %q in the notation from the graph alone:\n%s", want, back) + } +} diff --git a/tests/export/result_expression_test.go b/tests/export/result_expression_test.go index 6c9638dea3..cdf2f6462c 100644 --- a/tests/export/result_expression_test.go +++ b/tests/export/result_expression_test.go @@ -1040,7 +1040,7 @@ func TestExpressionBodyParameterIsDeclaredOutsideTheBody(t *testing.T) { "expr:Params__one_pvalue_pa0_pin0\n a sysml:ReferenceUsage ;", "sysml:declaredName \"Gauge\" ;\n sysml:type elmt:Params__Gauge ;\n sysml:owner expr:Params__one_pvalue_pa0_pbody ;", "expr:Params__two_pvalue_pa0_pin0\n a sysml:ReferenceUsage ;", - "sysml:declaredName \"limit\" ;\n sysml:type elmt:Params__Gauge ;\n sysml:owner expr:Params__two_pvalue_pa0_pbody ;\n sysml:owningRelationship expr:Params__two_pvalue_pa0_pin0_om ;\n sysml:owningMembership expr:Params__two_pvalue_pa0_pin0_om ;\n sysml:multiplicity expr:Params__two_pvalue_pa0_pin0_pmultiplicity ;\n sysml:ownedRelationship expr:Params__two_pvalue_pa0_pin0_pmultiplicity_om, expr:Params__two_pvalue_pa0_pin0_ft0 ;\n sysml:ownedMembership expr:Params__two_pvalue_pa0_pin0_pmultiplicity_om ;\n sysml:lowerBound expr:Params__two_pvalue_pa0_pin0_plowerBound ;\n sysml:upperBound expr:Params__two_pvalue_pa0_pin0_pupperBound ;\n sysml:value expr:Params__two_pvalue_pa0_pin0_pvalue ;\n sysml:ownedTyping expr:Params__two_pvalue_pa0_pin0_ft0 ;", + "sysml:declaredName \"limit\" ;\n sysml:type elmt:Params__Gauge ;\n sysml:owner expr:Params__two_pvalue_pa0_pbody ;\n sysml:owningRelationship expr:Params__two_pvalue_pa0_pin0_om ;\n sysml:owningMembership expr:Params__two_pvalue_pa0_pin0_om ;\n sysml:multiplicity expr:Params__two_pvalue_pa0_pin0_pmultiplicity ;\n sysml:ownedRelationship expr:Params__two_pvalue_pa0_pin0_ft0, expr:Params__two_pvalue_pa0_pin0_pmultiplicity_om ;\n sysml:ownedMembership expr:Params__two_pvalue_pa0_pin0_pmultiplicity_om ;\n sysml:lowerBound expr:Params__two_pvalue_pa0_pin0_plowerBound ;\n sysml:upperBound expr:Params__two_pvalue_pa0_pin0_pupperBound ;\n sysml:value expr:Params__two_pvalue_pa0_pin0_pvalue ;\n sysml:ownedTyping expr:Params__two_pvalue_pa0_pin0_ft0 ;", "expr:Params__two_pvalue_pa0_pin0_ft0\n a sysml:FeatureTyping ;\n sysml:elementId \"Params__two_pvalue_pa0_pin0_ft0\" ;\n sysml:typedFeature expr:Params__two_pvalue_pa0_pin0 ;", "expr:Params__two_pvalue_pa0_pin0_pupperBound\n a sysml:FeatureReferenceExpression ;\n sysx:sourceText \"upper\" ;\n sysml:elementId \"Params__two_pvalue_pa0_pin0_pupperBound\" ;\n sysml:isComposite \"false\"^^xsd:boolean ;\n sysml:ownedRelationship expr:Params__two_pvalue_pa0_pin0_pupperBound_preferent, expr:Params__two_pvalue_pa0_pin0_pupperBound_pout_om ;\n sysml:ownedMembership expr:Params__two_pvalue_pa0_pin0_pupperBound_preferent, expr:Params__two_pvalue_pa0_pin0_pupperBound_pout_om ;\n sysml:referent elmt:Params__upper ;", "expr:Params__two_pvalue_pa0_pin0_pvalue\n a sysml:FeatureReferenceExpression ;\n sysx:sourceText \"limit\" ;\n sysml:elementId \"Params__two_pvalue_pa0_pin0_pvalue\" ;\n sysml:isComposite \"false\"^^xsd:boolean ;\n sysml:ownedRelationship expr:Params__two_pvalue_pa0_pin0_pvalue_preferent, expr:Params__two_pvalue_pa0_pin0_pvalue_pout_om ;\n sysml:ownedMembership expr:Params__two_pvalue_pa0_pin0_pvalue_preferent, expr:Params__two_pvalue_pa0_pin0_pvalue_pout_om ;\n sysml:referent elmt:Params__limit ;", diff --git a/tests/export/testdata/convert/anonymous_assertions.golden.ttl b/tests/export/testdata/convert/anonymous_assertions.golden.ttl index f4118e9ece..73b0cac4c5 100644 --- a/tests/export/testdata/convert/anonymous_assertions.golden.ttl +++ b/tests/export/testdata/convert/anonymous_assertions.golden.ttl @@ -409,7 +409,7 @@ elmt:AnonymousAssertions__massConstraint sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:AnonymousAssertions__massConstraint__total, elmt:AnonymousAssertions__massConstraint__limit, elmt:AnonymousAssertions__massConstraint___402 ; sysml:ownedMembership elmt:AnonymousAssertions__massConstraint__total_om, elmt:AnonymousAssertions__massConstraint__limit_om, elmt:AnonymousAssertions__massConstraint___402_om ; - sysml:ownedRelationship elmt:AnonymousAssertions__massConstraint__total_om, elmt:AnonymousAssertions__massConstraint__limit_om, elmt:AnonymousAssertions__massConstraint___402_om, elmt:AnonymousAssertions__massConstraint_ft0 ; + sysml:ownedRelationship elmt:AnonymousAssertions__massConstraint_ft0, elmt:AnonymousAssertions__massConstraint__total_om, elmt:AnonymousAssertions__massConstraint__limit_om, elmt:AnonymousAssertions__massConstraint___402_om ; sysml:ownedFeature elmt:AnonymousAssertions__massConstraint__total, elmt:AnonymousAssertions__massConstraint__limit, elmt:AnonymousAssertions__massConstraint___402 ; sysml:ownedFeatureMembership elmt:AnonymousAssertions__massConstraint__total_om, elmt:AnonymousAssertions__massConstraint__limit_om, elmt:AnonymousAssertions__massConstraint___402_om ; sysml:ownedTyping elmt:AnonymousAssertions__massConstraint_ft0 ; @@ -418,7 +418,7 @@ elmt:AnonymousAssertions__massConstraint sysx:sourceTail "\t}\n" ; json:ownedMember "[{\"@id\":\"AnonymousAssertions__massConstraint__total\"},{\"@id\":\"AnonymousAssertions__massConstraint__limit\"},{\"@id\":\"AnonymousAssertions__massConstraint___402\"}]" ; json:ownedMembership "[{\"@id\":\"AnonymousAssertions__massConstraint__total_om\"},{\"@id\":\"AnonymousAssertions__massConstraint__limit_om\"},{\"@id\":\"AnonymousAssertions__massConstraint___402_om\"}]" ; - json:ownedRelationship "[{\"@id\":\"AnonymousAssertions__massConstraint__total_om\"},{\"@id\":\"AnonymousAssertions__massConstraint__limit_om\"},{\"@id\":\"AnonymousAssertions__massConstraint___402_om\"},{\"@id\":\"AnonymousAssertions__massConstraint_ft0\"}]" ; + json:ownedRelationship "[{\"@id\":\"AnonymousAssertions__massConstraint_ft0\"},{\"@id\":\"AnonymousAssertions__massConstraint__total_om\"},{\"@id\":\"AnonymousAssertions__massConstraint__limit_om\"},{\"@id\":\"AnonymousAssertions__massConstraint___402_om\"}]" ; json:ownedFeature "[{\"@id\":\"AnonymousAssertions__massConstraint__total\"},{\"@id\":\"AnonymousAssertions__massConstraint__limit\"},{\"@id\":\"AnonymousAssertions__massConstraint___402\"}]" ; json:ownedFeatureMembership "[{\"@id\":\"AnonymousAssertions__massConstraint__total_om\"},{\"@id\":\"AnonymousAssertions__massConstraint__limit_om\"},{\"@id\":\"AnonymousAssertions__massConstraint___402_om\"}]" . @@ -855,7 +855,7 @@ elmt:AnonymousAssertions__Vehicle___402 sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:AnonymousAssertions__Vehicle___402__total, elmt:AnonymousAssertions__Vehicle___402__limit ; sysml:ownedMembership elmt:AnonymousAssertions__Vehicle___402__total_om, elmt:AnonymousAssertions__Vehicle___402__limit_om ; - sysml:ownedRelationship elmt:AnonymousAssertions__Vehicle___402__total_om, elmt:AnonymousAssertions__Vehicle___402__limit_om, elmt:AnonymousAssertions__Vehicle___402_rs ; + sysml:ownedRelationship elmt:AnonymousAssertions__Vehicle___402_rs, elmt:AnonymousAssertions__Vehicle___402__total_om, elmt:AnonymousAssertions__Vehicle___402__limit_om ; sysml:ownedFeature elmt:AnonymousAssertions__Vehicle___402__total, elmt:AnonymousAssertions__Vehicle___402__limit ; sysml:ownedFeatureMembership elmt:AnonymousAssertions__Vehicle___402__total_om, elmt:AnonymousAssertions__Vehicle___402__limit_om ; sysml:ownedReferenceSubsetting elmt:AnonymousAssertions__Vehicle___402_rs ; @@ -865,7 +865,7 @@ elmt:AnonymousAssertions__Vehicle___402 sysx:sourceTail "\t\t}\n" ; json:ownedMember "[{\"@id\":\"AnonymousAssertions__Vehicle___402__total\"},{\"@id\":\"AnonymousAssertions__Vehicle___402__limit\"}]" ; json:ownedMembership "[{\"@id\":\"AnonymousAssertions__Vehicle___402__total_om\"},{\"@id\":\"AnonymousAssertions__Vehicle___402__limit_om\"}]" ; - json:ownedRelationship "[{\"@id\":\"AnonymousAssertions__Vehicle___402__total_om\"},{\"@id\":\"AnonymousAssertions__Vehicle___402__limit_om\"},{\"@id\":\"AnonymousAssertions__Vehicle___402_rs\"}]" ; + json:ownedRelationship "[{\"@id\":\"AnonymousAssertions__Vehicle___402_rs\"},{\"@id\":\"AnonymousAssertions__Vehicle___402__total_om\"},{\"@id\":\"AnonymousAssertions__Vehicle___402__limit_om\"}]" ; json:ownedFeature "[{\"@id\":\"AnonymousAssertions__Vehicle___402__total\"},{\"@id\":\"AnonymousAssertions__Vehicle___402__limit\"}]" ; json:ownedFeatureMembership "[{\"@id\":\"AnonymousAssertions__Vehicle___402__total_om\"},{\"@id\":\"AnonymousAssertions__Vehicle___402__limit_om\"}]" . @@ -1350,7 +1350,7 @@ elmt:AnonymousAssertions__Vehicle__tooHeavy sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:AnonymousAssertions__Vehicle__tooHeavy__total, elmt:AnonymousAssertions__Vehicle__tooHeavy__limit ; sysml:ownedMembership elmt:AnonymousAssertions__Vehicle__tooHeavy__total_om, elmt:AnonymousAssertions__Vehicle__tooHeavy__limit_om ; - sysml:ownedRelationship elmt:AnonymousAssertions__Vehicle__tooHeavy__total_om, elmt:AnonymousAssertions__Vehicle__tooHeavy__limit_om, elmt:AnonymousAssertions__Vehicle__tooHeavy_ft0 ; + sysml:ownedRelationship elmt:AnonymousAssertions__Vehicle__tooHeavy_ft0, elmt:AnonymousAssertions__Vehicle__tooHeavy__total_om, elmt:AnonymousAssertions__Vehicle__tooHeavy__limit_om ; sysml:ownedFeature elmt:AnonymousAssertions__Vehicle__tooHeavy__total, elmt:AnonymousAssertions__Vehicle__tooHeavy__limit ; sysml:ownedFeatureMembership elmt:AnonymousAssertions__Vehicle__tooHeavy__total_om, elmt:AnonymousAssertions__Vehicle__tooHeavy__limit_om ; sysml:ownedTyping elmt:AnonymousAssertions__Vehicle__tooHeavy_ft0 ; @@ -1359,7 +1359,7 @@ elmt:AnonymousAssertions__Vehicle__tooHeavy sysx:sourceTail "\t\t}\n" ; json:ownedMember "[{\"@id\":\"AnonymousAssertions__Vehicle__tooHeavy__total\"},{\"@id\":\"AnonymousAssertions__Vehicle__tooHeavy__limit\"}]" ; json:ownedMembership "[{\"@id\":\"AnonymousAssertions__Vehicle__tooHeavy__total_om\"},{\"@id\":\"AnonymousAssertions__Vehicle__tooHeavy__limit_om\"}]" ; - json:ownedRelationship "[{\"@id\":\"AnonymousAssertions__Vehicle__tooHeavy__total_om\"},{\"@id\":\"AnonymousAssertions__Vehicle__tooHeavy__limit_om\"},{\"@id\":\"AnonymousAssertions__Vehicle__tooHeavy_ft0\"}]" ; + json:ownedRelationship "[{\"@id\":\"AnonymousAssertions__Vehicle__tooHeavy_ft0\"},{\"@id\":\"AnonymousAssertions__Vehicle__tooHeavy__total_om\"},{\"@id\":\"AnonymousAssertions__Vehicle__tooHeavy__limit_om\"}]" ; json:ownedFeature "[{\"@id\":\"AnonymousAssertions__Vehicle__tooHeavy__total\"},{\"@id\":\"AnonymousAssertions__Vehicle__tooHeavy__limit\"}]" ; json:ownedFeatureMembership "[{\"@id\":\"AnonymousAssertions__Vehicle__tooHeavy__total_om\"},{\"@id\":\"AnonymousAssertions__Vehicle__tooHeavy__limit_om\"}]" . diff --git a/tests/export/testdata/convert/anonymous_features.golden.ttl b/tests/export/testdata/convert/anonymous_features.golden.ttl index 3bf17b9360..282a5e1bfb 100644 --- a/tests/export/testdata/convert/anonymous_features.golden.ttl +++ b/tests/export/testdata/convert/anonymous_features.golden.ttl @@ -210,7 +210,7 @@ elmt:AnonymousFeatures__v sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:AnonymousFeatures__v__m, elmt:AnonymousFeatures__v__accessedFeature, elmt:AnonymousFeatures__v__engine, elmt:AnonymousFeatures__v___403 ; sysml:ownedMembership elmt:AnonymousFeatures__v__m_om, elmt:AnonymousFeatures__v__accessedFeature_om, elmt:AnonymousFeatures__v__engine_om, elmt:AnonymousFeatures__v___403_om ; - sysml:ownedRelationship elmt:AnonymousFeatures__v__m_om, elmt:AnonymousFeatures__v__accessedFeature_om, elmt:AnonymousFeatures__v__engine_om, elmt:AnonymousFeatures__v___403_om, elmt:AnonymousFeatures__v_ft0 ; + sysml:ownedRelationship elmt:AnonymousFeatures__v_ft0, elmt:AnonymousFeatures__v__m_om, elmt:AnonymousFeatures__v__accessedFeature_om, elmt:AnonymousFeatures__v__engine_om, elmt:AnonymousFeatures__v___403_om ; sysml:ownedFeature elmt:AnonymousFeatures__v__m, elmt:AnonymousFeatures__v__accessedFeature, elmt:AnonymousFeatures__v__engine, elmt:AnonymousFeatures__v___403 ; sysml:ownedFeatureMembership elmt:AnonymousFeatures__v__m_om, elmt:AnonymousFeatures__v__accessedFeature_om, elmt:AnonymousFeatures__v__engine_om, elmt:AnonymousFeatures__v___403_om ; sysml:ownedTyping elmt:AnonymousFeatures__v_ft0 ; @@ -219,7 +219,7 @@ elmt:AnonymousFeatures__v sysx:sourceTail "\t}\n" ; json:ownedMember "[{\"@id\":\"AnonymousFeatures__v__m\"},{\"@id\":\"AnonymousFeatures__v__accessedFeature\"},{\"@id\":\"AnonymousFeatures__v__engine\"},{\"@id\":\"AnonymousFeatures__v___403\"}]" ; json:ownedMembership "[{\"@id\":\"AnonymousFeatures__v__m_om\"},{\"@id\":\"AnonymousFeatures__v__accessedFeature_om\"},{\"@id\":\"AnonymousFeatures__v__engine_om\"},{\"@id\":\"AnonymousFeatures__v___403_om\"}]" ; - json:ownedRelationship "[{\"@id\":\"AnonymousFeatures__v__m_om\"},{\"@id\":\"AnonymousFeatures__v__accessedFeature_om\"},{\"@id\":\"AnonymousFeatures__v__engine_om\"},{\"@id\":\"AnonymousFeatures__v___403_om\"},{\"@id\":\"AnonymousFeatures__v_ft0\"}]" ; + json:ownedRelationship "[{\"@id\":\"AnonymousFeatures__v_ft0\"},{\"@id\":\"AnonymousFeatures__v__m_om\"},{\"@id\":\"AnonymousFeatures__v__accessedFeature_om\"},{\"@id\":\"AnonymousFeatures__v__engine_om\"},{\"@id\":\"AnonymousFeatures__v___403_om\"}]" ; json:ownedFeature "[{\"@id\":\"AnonymousFeatures__v__m\"},{\"@id\":\"AnonymousFeatures__v__accessedFeature\"},{\"@id\":\"AnonymousFeatures__v__engine\"},{\"@id\":\"AnonymousFeatures__v___403\"}]" ; json:ownedFeatureMembership "[{\"@id\":\"AnonymousFeatures__v__m_om\"},{\"@id\":\"AnonymousFeatures__v__accessedFeature_om\"},{\"@id\":\"AnonymousFeatures__v__engine_om\"},{\"@id\":\"AnonymousFeatures__v___403_om\"}]" . @@ -253,7 +253,7 @@ elmt:AnonymousFeatures__v__m sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:AnonymousFeatures__v__m__g ; sysml:ownedMembership elmt:AnonymousFeatures__v__m__g_om ; - sysml:ownedRelationship elmt:AnonymousFeatures__v__m__g_om, elmt:AnonymousFeatures__v__m_rd0 ; + sysml:ownedRelationship elmt:AnonymousFeatures__v__m_rd0, elmt:AnonymousFeatures__v__m__g_om ; sysml:ownedFeature elmt:AnonymousFeatures__v__m__g ; sysml:ownedFeatureMembership elmt:AnonymousFeatures__v__m__g_om ; sysml:ownedRedefinition elmt:AnonymousFeatures__v__m_rd0 ; @@ -261,7 +261,7 @@ elmt:AnonymousFeatures__v__m sysml:ownedSpecialization elmt:AnonymousFeatures__v__m_rd0 ; sysx:sourceText "\t\tfeature redefines m {\n" ; sysx:sourceTail "\t\t}\n" ; - json:ownedRelationship "[{\"@id\":\"AnonymousFeatures__v__m__g_om\"},{\"@id\":\"AnonymousFeatures__v__m_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"AnonymousFeatures__v__m_rd0\"},{\"@id\":\"AnonymousFeatures__v__m__g_om\"}]" . elmt:AnonymousFeatures__v__m_om a sysml:FeatureMembership ; @@ -360,14 +360,14 @@ elmt:AnonymousFeatures__v__engine sysx:isKindImplicit "true"^^xsd:boolean ; sysml:redefines elmt:AnonymousFeatures__Part__engine ; sysml:value expr:AnonymousFeatures__v__engine_pvalue ; - sysml:ownedRelationship expr:AnonymousFeatures__v__engine_pvalue_om, elmt:AnonymousFeatures__v__engine_rd0 ; + sysml:ownedRelationship elmt:AnonymousFeatures__v__engine_rd0, expr:AnonymousFeatures__v__engine_pvalue_om ; sysml:ownedMembership expr:AnonymousFeatures__v__engine_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedRedefinition elmt:AnonymousFeatures__v__engine_rd0 ; sysml:ownedSubsetting elmt:AnonymousFeatures__v__engine_rd0 ; sysml:ownedSpecialization elmt:AnonymousFeatures__v__engine_rd0 ; sysx:sourceText "\t\tcomposite :>> engine = e;\n" ; - json:ownedRelationship "[{\"@id\":\"AnonymousFeatures__v__engine_pvalue_om\"},{\"@id\":\"AnonymousFeatures__v__engine_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"AnonymousFeatures__v__engine_rd0\"},{\"@id\":\"AnonymousFeatures__v__engine_pvalue_om\"}]" . elmt:AnonymousFeatures__v__engine_om a sysml:FeatureMembership ; diff --git a/tests/export/testdata/convert/anonymous_portions.canonical.golden.sysml b/tests/export/testdata/convert/anonymous_portions.canonical.golden.sysml index 22fb88f38b..bfd3cc52fd 100644 --- a/tests/export/testdata/convert/anonymous_portions.canonical.golden.sysml +++ b/tests/export/testdata/convert/anonymous_portions.canonical.golden.sysml @@ -11,7 +11,7 @@ package AnonymousPortions { timeslice redefines portionOfLife { attribute redefines fuel = 50; } - snapshot subsets fuel redefines done { + snapshot redefines done subsets fuel { attribute redefines fuel = 0; } snapshot; diff --git a/tests/export/testdata/convert/anonymous_portions.golden.ttl b/tests/export/testdata/convert/anonymous_portions.golden.ttl index 9d3ca1f1d4..8be98ddcc1 100644 --- a/tests/export/testdata/convert/anonymous_portions.golden.ttl +++ b/tests/export/testdata/convert/anonymous_portions.golden.ttl @@ -171,14 +171,14 @@ elmt:AnonymousPortions__car sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:AnonymousPortions__car__start, elmt:AnonymousPortions__car__portionOfLife, elmt:AnonymousPortions__car__done, elmt:AnonymousPortions__car___403, elmt:AnonymousPortions__car___404 ; sysml:ownedMembership elmt:AnonymousPortions__car__start_om, elmt:AnonymousPortions__car__portionOfLife_om, elmt:AnonymousPortions__car__done_om, elmt:AnonymousPortions__car___403_om, elmt:AnonymousPortions__car___404_om ; - sysml:ownedRelationship elmt:AnonymousPortions__car__start_om, elmt:AnonymousPortions__car__portionOfLife_om, elmt:AnonymousPortions__car__done_om, elmt:AnonymousPortions__car___403_om, elmt:AnonymousPortions__car___404_om, elmt:AnonymousPortions__car_ft0 ; + sysml:ownedRelationship elmt:AnonymousPortions__car_ft0, elmt:AnonymousPortions__car__start_om, elmt:AnonymousPortions__car__portionOfLife_om, elmt:AnonymousPortions__car__done_om, elmt:AnonymousPortions__car___403_om, elmt:AnonymousPortions__car___404_om ; sysml:ownedTyping elmt:AnonymousPortions__car_ft0 ; sysml:ownedSpecialization elmt:AnonymousPortions__car_ft0 ; sysx:sourceText "\tindividual car : Car {\n" ; sysx:sourceTail "\t}\n" ; json:ownedMember "[{\"@id\":\"AnonymousPortions__car__start\"},{\"@id\":\"AnonymousPortions__car__portionOfLife\"},{\"@id\":\"AnonymousPortions__car__done\"},{\"@id\":\"AnonymousPortions__car___403\"},{\"@id\":\"AnonymousPortions__car___404\"}]" ; json:ownedMembership "[{\"@id\":\"AnonymousPortions__car__start_om\"},{\"@id\":\"AnonymousPortions__car__portionOfLife_om\"},{\"@id\":\"AnonymousPortions__car__done_om\"},{\"@id\":\"AnonymousPortions__car___403_om\"},{\"@id\":\"AnonymousPortions__car___404_om\"}]" ; - json:ownedRelationship "[{\"@id\":\"AnonymousPortions__car__start_om\"},{\"@id\":\"AnonymousPortions__car__portionOfLife_om\"},{\"@id\":\"AnonymousPortions__car__done_om\"},{\"@id\":\"AnonymousPortions__car___403_om\"},{\"@id\":\"AnonymousPortions__car___404_om\"},{\"@id\":\"AnonymousPortions__car_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"AnonymousPortions__car_ft0\"},{\"@id\":\"AnonymousPortions__car__start_om\"},{\"@id\":\"AnonymousPortions__car__portionOfLife_om\"},{\"@id\":\"AnonymousPortions__car__done_om\"},{\"@id\":\"AnonymousPortions__car___403_om\"},{\"@id\":\"AnonymousPortions__car___404_om\"}]" . elmt:AnonymousPortions__car_om a sysml:OwningMembership ; @@ -212,7 +212,7 @@ elmt:AnonymousPortions__car__start sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:AnonymousPortions__car__start__fuel ; sysml:ownedMembership elmt:AnonymousPortions__car__start__fuel_om ; - sysml:ownedRelationship elmt:AnonymousPortions__car__start__fuel_om, elmt:AnonymousPortions__car__start_rd0 ; + sysml:ownedRelationship elmt:AnonymousPortions__car__start_rd0, elmt:AnonymousPortions__car__start__fuel_om ; sysml:ownedFeature elmt:AnonymousPortions__car__start__fuel ; sysml:ownedFeatureMembership elmt:AnonymousPortions__car__start__fuel_om ; sysml:ownedRedefinition elmt:AnonymousPortions__car__start_rd0 ; @@ -220,7 +220,7 @@ elmt:AnonymousPortions__car__start sysml:ownedSpecialization elmt:AnonymousPortions__car__start_rd0 ; sysx:sourceText "\t\tsnapshot :>> start {\n" ; sysx:sourceTail "\t\t}\n" ; - json:ownedRelationship "[{\"@id\":\"AnonymousPortions__car__start__fuel_om\"},{\"@id\":\"AnonymousPortions__car__start_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"AnonymousPortions__car__start_rd0\"},{\"@id\":\"AnonymousPortions__car__start__fuel_om\"}]" . elmt:AnonymousPortions__car__start_om a sysml:OwningMembership ; @@ -249,14 +249,14 @@ elmt:AnonymousPortions__car__start__fuel sysml:isComposite "false"^^xsd:boolean ; sysml:redefines elmt:AnonymousPortions__Vehicle__fuel ; sysml:value expr:AnonymousPortions__car__start__fuel_pvalue ; - sysml:ownedRelationship expr:AnonymousPortions__car__start__fuel_pvalue_om, elmt:AnonymousPortions__car__start__fuel_rd0 ; + sysml:ownedRelationship elmt:AnonymousPortions__car__start__fuel_rd0, expr:AnonymousPortions__car__start__fuel_pvalue_om ; sysml:ownedMembership expr:AnonymousPortions__car__start__fuel_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedRedefinition elmt:AnonymousPortions__car__start__fuel_rd0 ; sysml:ownedSubsetting elmt:AnonymousPortions__car__start__fuel_rd0 ; sysml:ownedSpecialization elmt:AnonymousPortions__car__start__fuel_rd0 ; sysx:sourceText "\t\t\tattribute :>> fuel = 100;\n" ; - json:ownedRelationship "[{\"@id\":\"AnonymousPortions__car__start__fuel_pvalue_om\"},{\"@id\":\"AnonymousPortions__car__start__fuel_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"AnonymousPortions__car__start__fuel_rd0\"},{\"@id\":\"AnonymousPortions__car__start__fuel_pvalue_om\"}]" . elmt:AnonymousPortions__car__start__fuel_om a sysml:FeatureMembership ; @@ -314,7 +314,7 @@ elmt:AnonymousPortions__car__portionOfLife sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:AnonymousPortions__car__portionOfLife__fuel ; sysml:ownedMembership elmt:AnonymousPortions__car__portionOfLife__fuel_om ; - sysml:ownedRelationship elmt:AnonymousPortions__car__portionOfLife__fuel_om, elmt:AnonymousPortions__car__portionOfLife_rd0 ; + sysml:ownedRelationship elmt:AnonymousPortions__car__portionOfLife_rd0, elmt:AnonymousPortions__car__portionOfLife__fuel_om ; sysml:ownedFeature elmt:AnonymousPortions__car__portionOfLife__fuel ; sysml:ownedFeatureMembership elmt:AnonymousPortions__car__portionOfLife__fuel_om ; sysml:ownedRedefinition elmt:AnonymousPortions__car__portionOfLife_rd0 ; @@ -322,7 +322,7 @@ elmt:AnonymousPortions__car__portionOfLife sysml:ownedSpecialization elmt:AnonymousPortions__car__portionOfLife_rd0 ; sysx:sourceText "\t\ttimeslice :>> portionOfLife {\n" ; sysx:sourceTail "\t\t}\n" ; - json:ownedRelationship "[{\"@id\":\"AnonymousPortions__car__portionOfLife__fuel_om\"},{\"@id\":\"AnonymousPortions__car__portionOfLife_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"AnonymousPortions__car__portionOfLife_rd0\"},{\"@id\":\"AnonymousPortions__car__portionOfLife__fuel_om\"}]" . elmt:AnonymousPortions__car__portionOfLife_om a sysml:OwningMembership ; @@ -351,14 +351,14 @@ elmt:AnonymousPortions__car__portionOfLife__fuel sysml:isComposite "false"^^xsd:boolean ; sysml:redefines elmt:AnonymousPortions__Vehicle__fuel ; sysml:value expr:AnonymousPortions__car__portionOfLife__fuel_pvalue ; - sysml:ownedRelationship expr:AnonymousPortions__car__portionOfLife__fuel_pvalue_om, elmt:AnonymousPortions__car__portionOfLife__fuel_rd0 ; + sysml:ownedRelationship elmt:AnonymousPortions__car__portionOfLife__fuel_rd0, expr:AnonymousPortions__car__portionOfLife__fuel_pvalue_om ; sysml:ownedMembership expr:AnonymousPortions__car__portionOfLife__fuel_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedRedefinition elmt:AnonymousPortions__car__portionOfLife__fuel_rd0 ; sysml:ownedSubsetting elmt:AnonymousPortions__car__portionOfLife__fuel_rd0 ; sysml:ownedSpecialization elmt:AnonymousPortions__car__portionOfLife__fuel_rd0 ; sysx:sourceText "\t\t\tattribute :>> fuel = 50;\n" ; - json:ownedRelationship "[{\"@id\":\"AnonymousPortions__car__portionOfLife__fuel_pvalue_om\"},{\"@id\":\"AnonymousPortions__car__portionOfLife__fuel_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"AnonymousPortions__car__portionOfLife__fuel_rd0\"},{\"@id\":\"AnonymousPortions__car__portionOfLife__fuel_pvalue_om\"}]" . elmt:AnonymousPortions__car__portionOfLife__fuel_om a sysml:FeatureMembership ; @@ -417,17 +417,17 @@ elmt:AnonymousPortions__car__done sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:AnonymousPortions__car__done__fuel ; sysml:ownedMembership elmt:AnonymousPortions__car__done__fuel_om ; - sysml:ownedRelationship elmt:AnonymousPortions__car__done__fuel_om, elmt:AnonymousPortions__car__done_ss0, elmt:AnonymousPortions__car__done_rd0 ; + sysml:ownedRelationship elmt:AnonymousPortions__car__done_rd0, elmt:AnonymousPortions__car__done_ss0, elmt:AnonymousPortions__car__done__fuel_om ; sysml:ownedFeature elmt:AnonymousPortions__car__done__fuel ; sysml:ownedFeatureMembership elmt:AnonymousPortions__car__done__fuel_om ; - sysml:ownedSubsetting elmt:AnonymousPortions__car__done_ss0, elmt:AnonymousPortions__car__done_rd0 ; - sysml:ownedSpecialization elmt:AnonymousPortions__car__done_ss0, elmt:AnonymousPortions__car__done_rd0 ; sysml:ownedRedefinition elmt:AnonymousPortions__car__done_rd0 ; + sysml:ownedSubsetting elmt:AnonymousPortions__car__done_rd0, elmt:AnonymousPortions__car__done_ss0 ; + sysml:ownedSpecialization elmt:AnonymousPortions__car__done_rd0, elmt:AnonymousPortions__car__done_ss0 ; sysx:sourceText "\t\tsnapshot :>> done :> fuel {\n" ; sysx:sourceTail "\t\t}\n" ; - json:ownedRelationship "[{\"@id\":\"AnonymousPortions__car__done__fuel_om\"},{\"@id\":\"AnonymousPortions__car__done_ss0\"},{\"@id\":\"AnonymousPortions__car__done_rd0\"}]" ; - json:ownedSubsetting "[{\"@id\":\"AnonymousPortions__car__done_ss0\"},{\"@id\":\"AnonymousPortions__car__done_rd0\"}]" ; - json:ownedSpecialization "[{\"@id\":\"AnonymousPortions__car__done_ss0\"},{\"@id\":\"AnonymousPortions__car__done_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"AnonymousPortions__car__done_rd0\"},{\"@id\":\"AnonymousPortions__car__done_ss0\"},{\"@id\":\"AnonymousPortions__car__done__fuel_om\"}]" ; + json:ownedSubsetting "[{\"@id\":\"AnonymousPortions__car__done_rd0\"},{\"@id\":\"AnonymousPortions__car__done_ss0\"}]" ; + json:ownedSpecialization "[{\"@id\":\"AnonymousPortions__car__done_rd0\"},{\"@id\":\"AnonymousPortions__car__done_ss0\"}]" . elmt:AnonymousPortions__car__done_om a sysml:OwningMembership ; @@ -456,14 +456,14 @@ elmt:AnonymousPortions__car__done__fuel sysml:isComposite "false"^^xsd:boolean ; sysml:redefines elmt:AnonymousPortions__Vehicle__fuel ; sysml:value expr:AnonymousPortions__car__done__fuel_pvalue ; - sysml:ownedRelationship expr:AnonymousPortions__car__done__fuel_pvalue_om, elmt:AnonymousPortions__car__done__fuel_rd0 ; + sysml:ownedRelationship elmt:AnonymousPortions__car__done__fuel_rd0, expr:AnonymousPortions__car__done__fuel_pvalue_om ; sysml:ownedMembership expr:AnonymousPortions__car__done__fuel_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedRedefinition elmt:AnonymousPortions__car__done__fuel_rd0 ; sysml:ownedSubsetting elmt:AnonymousPortions__car__done__fuel_rd0 ; sysml:ownedSpecialization elmt:AnonymousPortions__car__done__fuel_rd0 ; sysx:sourceText "\t\t\tattribute :>> fuel = 0;\n" ; - json:ownedRelationship "[{\"@id\":\"AnonymousPortions__car__done__fuel_pvalue_om\"},{\"@id\":\"AnonymousPortions__car__done__fuel_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"AnonymousPortions__car__done__fuel_rd0\"},{\"@id\":\"AnonymousPortions__car__done__fuel_pvalue_om\"}]" . elmt:AnonymousPortions__car__done__fuel_om a sysml:FeatureMembership ; @@ -674,21 +674,6 @@ elmt:AnonymousPortions__car__portionOfLife__fuel_rd0 sysml:relatedElement elmt:AnonymousPortions__car__portionOfLife__fuel, elmt:AnonymousPortions__Vehicle__fuel ; json:relatedElement "[{\"@id\":\"AnonymousPortions__car__portionOfLife__fuel\"},{\"@id\":\"AnonymousPortions__Vehicle__fuel\"}]" . -elmt:AnonymousPortions__car__done_ss0 - a sysml:Subsetting ; - sysml:elementId "AnonymousPortions__car__done_ss0" ; - sysml:subsettingFeature elmt:AnonymousPortions__car__done ; - sysml:owningFeature elmt:AnonymousPortions__car__done ; - sysml:specific elmt:AnonymousPortions__car__done ; - sysml:source elmt:AnonymousPortions__car__done ; - sysml:owningRelatedElement elmt:AnonymousPortions__car__done ; - sysml:subsettedFeature elmt:AnonymousPortions__Vehicle__fuel ; - sysml:general elmt:AnonymousPortions__Vehicle__fuel ; - sysml:target elmt:AnonymousPortions__Vehicle__fuel ; - sysml:owner elmt:AnonymousPortions__car__done ; - sysml:relatedElement elmt:AnonymousPortions__car__done, elmt:AnonymousPortions__Vehicle__fuel ; - json:relatedElement "[{\"@id\":\"AnonymousPortions__car__done\"},{\"@id\":\"AnonymousPortions__Vehicle__fuel\"}]" . - elmt:AnonymousPortions__car__done_rd0 a sysml:Redefinition ; sysml:elementId "AnonymousPortions__car__done_rd0" ; @@ -706,6 +691,21 @@ elmt:AnonymousPortions__car__done_rd0 sysml:relatedElement elmt:AnonymousPortions__car__done, elmt:dd677401-a352-5fe3-846a-dad08d3eab06 ; json:relatedElement "[{\"@id\":\"AnonymousPortions__car__done\"},{\"@id\":\"dd677401-a352-5fe3-846a-dad08d3eab06\"}]" . +elmt:AnonymousPortions__car__done_ss0 + a sysml:Subsetting ; + sysml:elementId "AnonymousPortions__car__done_ss0" ; + sysml:subsettingFeature elmt:AnonymousPortions__car__done ; + sysml:owningFeature elmt:AnonymousPortions__car__done ; + sysml:specific elmt:AnonymousPortions__car__done ; + sysml:source elmt:AnonymousPortions__car__done ; + sysml:owningRelatedElement elmt:AnonymousPortions__car__done ; + sysml:subsettedFeature elmt:AnonymousPortions__Vehicle__fuel ; + sysml:general elmt:AnonymousPortions__Vehicle__fuel ; + sysml:target elmt:AnonymousPortions__Vehicle__fuel ; + sysml:owner elmt:AnonymousPortions__car__done ; + sysml:relatedElement elmt:AnonymousPortions__car__done, elmt:AnonymousPortions__Vehicle__fuel ; + json:relatedElement "[{\"@id\":\"AnonymousPortions__car__done\"},{\"@id\":\"AnonymousPortions__Vehicle__fuel\"}]" . + elmt:AnonymousPortions__car__done__fuel_rd0 a sysml:Redefinition ; sysml:elementId "AnonymousPortions__car__done__fuel_rd0" ; diff --git a/tests/export/testdata/convert/bounds.golden.ttl b/tests/export/testdata/convert/bounds.golden.ttl index e025648f7d..bb4905f4b6 100644 --- a/tests/export/testdata/convert/bounds.golden.ttl +++ b/tests/export/testdata/convert/bounds.golden.ttl @@ -109,14 +109,14 @@ elmt:Bounds__Fleet__exact sysml:declaredName "exact" ; sysml:type elmt:Bounds__Vehicle ; sysml:multiplicity expr:Bounds__Fleet__exact_pmultiplicity ; - sysml:ownedRelationship expr:Bounds__Fleet__exact_pmultiplicity_om, elmt:Bounds__Fleet__exact_ft0 ; + sysml:ownedRelationship elmt:Bounds__Fleet__exact_ft0, expr:Bounds__Fleet__exact_pmultiplicity_om ; sysml:ownedMembership expr:Bounds__Fleet__exact_pmultiplicity_om ; sysml:upperBound expr:Bounds__Fleet__exact_pupperBound ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:Bounds__Fleet__exact_ft0 ; sysml:ownedSpecialization elmt:Bounds__Fleet__exact_ft0 ; sysx:sourceText " part exact : Vehicle[3];\n" ; - json:ownedRelationship "[{\"@id\":\"Bounds__Fleet__exact_pmultiplicity_om\"},{\"@id\":\"Bounds__Fleet__exact_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"Bounds__Fleet__exact_ft0\"},{\"@id\":\"Bounds__Fleet__exact_pmultiplicity_om\"}]" . elmt:Bounds__Fleet__exact_om a sysml:FeatureMembership ; @@ -188,7 +188,7 @@ elmt:Bounds__Fleet__range sysml:declaredName "range" ; sysml:type elmt:Bounds__Vehicle ; sysml:multiplicity expr:Bounds__Fleet__range_pmultiplicity ; - sysml:ownedRelationship expr:Bounds__Fleet__range_pmultiplicity_om, elmt:Bounds__Fleet__range_ft0 ; + sysml:ownedRelationship elmt:Bounds__Fleet__range_ft0, expr:Bounds__Fleet__range_pmultiplicity_om ; sysml:ownedMembership expr:Bounds__Fleet__range_pmultiplicity_om ; sysml:lowerBound expr:Bounds__Fleet__range_plowerBound ; sysml:upperBound expr:Bounds__Fleet__range_pupperBound ; @@ -196,7 +196,7 @@ elmt:Bounds__Fleet__range sysml:ownedTyping elmt:Bounds__Fleet__range_ft0 ; sysml:ownedSpecialization elmt:Bounds__Fleet__range_ft0 ; sysx:sourceText " part range : Vehicle[1..4];\n" ; - json:ownedRelationship "[{\"@id\":\"Bounds__Fleet__range_pmultiplicity_om\"},{\"@id\":\"Bounds__Fleet__range_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"Bounds__Fleet__range_ft0\"},{\"@id\":\"Bounds__Fleet__range_pmultiplicity_om\"}]" . elmt:Bounds__Fleet__range_om a sysml:FeatureMembership ; @@ -291,7 +291,7 @@ elmt:Bounds__Fleet__many sysml:declaredName "many" ; sysml:type elmt:Bounds__Vehicle ; sysml:multiplicity expr:Bounds__Fleet__many_pmultiplicity ; - sysml:ownedRelationship expr:Bounds__Fleet__many_pmultiplicity_om, elmt:Bounds__Fleet__many_ft0 ; + sysml:ownedRelationship elmt:Bounds__Fleet__many_ft0, expr:Bounds__Fleet__many_pmultiplicity_om ; sysml:ownedMembership expr:Bounds__Fleet__many_pmultiplicity_om ; sysml:lowerBound expr:Bounds__Fleet__many_plowerBound ; sysml:upperBound expr:Bounds__Fleet__many_pupperBound ; @@ -299,7 +299,7 @@ elmt:Bounds__Fleet__many sysml:ownedTyping elmt:Bounds__Fleet__many_ft0 ; sysml:ownedSpecialization elmt:Bounds__Fleet__many_ft0 ; sysx:sourceText " part many : Vehicle[0..*];\n" ; - json:ownedRelationship "[{\"@id\":\"Bounds__Fleet__many_pmultiplicity_om\"},{\"@id\":\"Bounds__Fleet__many_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"Bounds__Fleet__many_ft0\"},{\"@id\":\"Bounds__Fleet__many_pmultiplicity_om\"}]" . elmt:Bounds__Fleet__many_om a sysml:FeatureMembership ; @@ -395,14 +395,14 @@ elmt:Bounds__Fleet__loose sysml:isUnique "false"^^xsd:boolean ; sysml:type elmt:Bounds__Vehicle ; sysml:multiplicity expr:Bounds__Fleet__loose_pmultiplicity ; - sysml:ownedRelationship expr:Bounds__Fleet__loose_pmultiplicity_om, elmt:Bounds__Fleet__loose_ft0 ; + sysml:ownedRelationship elmt:Bounds__Fleet__loose_ft0, expr:Bounds__Fleet__loose_pmultiplicity_om ; sysml:ownedMembership expr:Bounds__Fleet__loose_pmultiplicity_om ; sysml:upperBound expr:Bounds__Fleet__loose_pupperBound ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:Bounds__Fleet__loose_ft0 ; sysml:ownedSpecialization elmt:Bounds__Fleet__loose_ft0 ; sysx:sourceText " part loose : Vehicle[*] ordered nonunique;\n" ; - json:ownedRelationship "[{\"@id\":\"Bounds__Fleet__loose_pmultiplicity_om\"},{\"@id\":\"Bounds__Fleet__loose_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"Bounds__Fleet__loose_ft0\"},{\"@id\":\"Bounds__Fleet__loose_pmultiplicity_om\"}]" . elmt:Bounds__Fleet__loose_om a sysml:FeatureMembership ; diff --git a/tests/export/testdata/convert/composite_multiplicity.golden.ttl b/tests/export/testdata/convert/composite_multiplicity.golden.ttl index fdaf1e5f30..8f4eb472da 100644 --- a/tests/export/testdata/convert/composite_multiplicity.golden.ttl +++ b/tests/export/testdata/convert/composite_multiplicity.golden.ttl @@ -132,7 +132,7 @@ elmt:CompositeMultiplicity__Vehicle__w sysx:declaredKeyword "feature" ; sysml:type elmt:CompositeMultiplicity__Wheel ; sysml:multiplicity expr:CompositeMultiplicity__Vehicle__w_pmultiplicity ; - sysml:ownedRelationship expr:CompositeMultiplicity__Vehicle__w_pmultiplicity_om, elmt:CompositeMultiplicity__Vehicle__w__lugbolt_om, elmt:CompositeMultiplicity__Vehicle__w_ft0 ; + sysml:ownedRelationship elmt:CompositeMultiplicity__Vehicle__w_ft0, expr:CompositeMultiplicity__Vehicle__w_pmultiplicity_om, elmt:CompositeMultiplicity__Vehicle__w__lugbolt_om ; sysml:ownedMembership expr:CompositeMultiplicity__Vehicle__w_pmultiplicity_om, elmt:CompositeMultiplicity__Vehicle__w__lugbolt_om ; sysml:upperBound expr:CompositeMultiplicity__Vehicle__w_pupperBound ; sysx:hasBody "true"^^xsd:boolean ; @@ -143,7 +143,7 @@ elmt:CompositeMultiplicity__Vehicle__w sysml:ownedSpecialization elmt:CompositeMultiplicity__Vehicle__w_ft0 ; sysx:sourceText " composite feature w : Wheel[4] {\n" ; sysx:sourceTail " }\n" ; - json:ownedRelationship "[{\"@id\":\"CompositeMultiplicity__Vehicle__w_pmultiplicity_om\"},{\"@id\":\"CompositeMultiplicity__Vehicle__w__lugbolt_om\"},{\"@id\":\"CompositeMultiplicity__Vehicle__w_ft0\"}]" ; + json:ownedRelationship "[{\"@id\":\"CompositeMultiplicity__Vehicle__w_ft0\"},{\"@id\":\"CompositeMultiplicity__Vehicle__w_pmultiplicity_om\"},{\"@id\":\"CompositeMultiplicity__Vehicle__w__lugbolt_om\"}]" ; json:ownedMembership "[{\"@id\":\"CompositeMultiplicity__Vehicle__w_pmultiplicity_om\"},{\"@id\":\"CompositeMultiplicity__Vehicle__w__lugbolt_om\"}]" . elmt:CompositeMultiplicity__Vehicle__w_om @@ -217,7 +217,7 @@ elmt:CompositeMultiplicity__Vehicle__w__lugbolt sysx:isKindImplicit "true"^^xsd:boolean ; sysml:type elmt:CompositeMultiplicity__Lugbolt ; sysml:multiplicity expr:CompositeMultiplicity__Vehicle__w__lugbolt_pmultiplicity ; - sysml:ownedRelationship expr:CompositeMultiplicity__Vehicle__w__lugbolt_pmultiplicity_om, elmt:CompositeMultiplicity__Vehicle__w__lugbolt_ft0 ; + sysml:ownedRelationship elmt:CompositeMultiplicity__Vehicle__w__lugbolt_ft0, expr:CompositeMultiplicity__Vehicle__w__lugbolt_pmultiplicity_om ; sysml:ownedMembership expr:CompositeMultiplicity__Vehicle__w__lugbolt_pmultiplicity_om ; sysml:lowerBound expr:CompositeMultiplicity__Vehicle__w__lugbolt_plowerBound ; sysml:upperBound expr:CompositeMultiplicity__Vehicle__w__lugbolt_pupperBound ; @@ -225,7 +225,7 @@ elmt:CompositeMultiplicity__Vehicle__w__lugbolt sysml:ownedTyping elmt:CompositeMultiplicity__Vehicle__w__lugbolt_ft0 ; sysml:ownedSpecialization elmt:CompositeMultiplicity__Vehicle__w__lugbolt_ft0 ; sysx:sourceText " composite lugbolt : Lugbolt[4..6];\n" ; - json:ownedRelationship "[{\"@id\":\"CompositeMultiplicity__Vehicle__w__lugbolt_pmultiplicity_om\"},{\"@id\":\"CompositeMultiplicity__Vehicle__w__lugbolt_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"CompositeMultiplicity__Vehicle__w__lugbolt_ft0\"},{\"@id\":\"CompositeMultiplicity__Vehicle__w__lugbolt_pmultiplicity_om\"}]" . elmt:CompositeMultiplicity__Vehicle__w__lugbolt_om a sysml:FeatureMembership ; @@ -321,7 +321,7 @@ elmt:CompositeMultiplicity__Car sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:CompositeMultiplicity__Car__frontWheel, elmt:CompositeMultiplicity__Car__rearWheel ; sysml:ownedMembership elmt:CompositeMultiplicity__Car__frontWheel_om, elmt:CompositeMultiplicity__Car__rearWheel_om ; - sysml:ownedRelationship elmt:CompositeMultiplicity__Car__frontWheel_om, elmt:CompositeMultiplicity__Car__rearWheel_om, elmt:CompositeMultiplicity__Car_sp0 ; + sysml:ownedRelationship elmt:CompositeMultiplicity__Car_sp0, elmt:CompositeMultiplicity__Car__frontWheel_om, elmt:CompositeMultiplicity__Car__rearWheel_om ; sysml:ownedFeature elmt:CompositeMultiplicity__Car__frontWheel, elmt:CompositeMultiplicity__Car__rearWheel ; sysml:ownedFeatureMembership elmt:CompositeMultiplicity__Car__frontWheel_om, elmt:CompositeMultiplicity__Car__rearWheel_om ; sysml:ownedSpecialization elmt:CompositeMultiplicity__Car_sp0 ; @@ -329,7 +329,7 @@ elmt:CompositeMultiplicity__Car sysx:sourceTail " }\n" ; json:ownedMember "[{\"@id\":\"CompositeMultiplicity__Car__frontWheel\"},{\"@id\":\"CompositeMultiplicity__Car__rearWheel\"}]" ; json:ownedMembership "[{\"@id\":\"CompositeMultiplicity__Car__frontWheel_om\"},{\"@id\":\"CompositeMultiplicity__Car__rearWheel_om\"}]" ; - json:ownedRelationship "[{\"@id\":\"CompositeMultiplicity__Car__frontWheel_om\"},{\"@id\":\"CompositeMultiplicity__Car__rearWheel_om\"},{\"@id\":\"CompositeMultiplicity__Car_sp0\"}]" ; + json:ownedRelationship "[{\"@id\":\"CompositeMultiplicity__Car_sp0\"},{\"@id\":\"CompositeMultiplicity__Car__frontWheel_om\"},{\"@id\":\"CompositeMultiplicity__Car__rearWheel_om\"}]" ; json:ownedFeature "[{\"@id\":\"CompositeMultiplicity__Car__frontWheel\"},{\"@id\":\"CompositeMultiplicity__Car__rearWheel\"}]" ; json:ownedFeatureMembership "[{\"@id\":\"CompositeMultiplicity__Car__frontWheel_om\"},{\"@id\":\"CompositeMultiplicity__Car__rearWheel_om\"}]" . @@ -361,7 +361,7 @@ elmt:CompositeMultiplicity__Car__frontWheel sysx:isKindImplicit "true"^^xsd:boolean ; sysml:redefines elmt:CompositeMultiplicity__Vehicle__w ; sysml:multiplicity expr:CompositeMultiplicity__Car__frontWheel_pmultiplicity ; - sysml:ownedRelationship expr:CompositeMultiplicity__Car__frontWheel_pmultiplicity_om, elmt:CompositeMultiplicity__Car__frontWheel__lugbolt_om, elmt:CompositeMultiplicity__Car__frontWheel_rd0 ; + sysml:ownedRelationship expr:CompositeMultiplicity__Car__frontWheel_pmultiplicity_om, elmt:CompositeMultiplicity__Car__frontWheel_rd0, elmt:CompositeMultiplicity__Car__frontWheel__lugbolt_om ; sysml:ownedMembership expr:CompositeMultiplicity__Car__frontWheel_pmultiplicity_om, elmt:CompositeMultiplicity__Car__frontWheel__lugbolt_om ; sysml:upperBound expr:CompositeMultiplicity__Car__frontWheel_pupperBound ; sysx:hasBody "true"^^xsd:boolean ; @@ -373,7 +373,7 @@ elmt:CompositeMultiplicity__Car__frontWheel sysml:ownedSpecialization elmt:CompositeMultiplicity__Car__frontWheel_rd0 ; sysx:sourceText " composite frontWheel[2] redefines w {\n" ; sysx:sourceTail " }\n" ; - json:ownedRelationship "[{\"@id\":\"CompositeMultiplicity__Car__frontWheel_pmultiplicity_om\"},{\"@id\":\"CompositeMultiplicity__Car__frontWheel__lugbolt_om\"},{\"@id\":\"CompositeMultiplicity__Car__frontWheel_rd0\"}]" ; + json:ownedRelationship "[{\"@id\":\"CompositeMultiplicity__Car__frontWheel_pmultiplicity_om\"},{\"@id\":\"CompositeMultiplicity__Car__frontWheel_rd0\"},{\"@id\":\"CompositeMultiplicity__Car__frontWheel__lugbolt_om\"}]" ; json:ownedMembership "[{\"@id\":\"CompositeMultiplicity__Car__frontWheel_pmultiplicity_om\"},{\"@id\":\"CompositeMultiplicity__Car__frontWheel__lugbolt_om\"}]" . elmt:CompositeMultiplicity__Car__frontWheel_om diff --git a/tests/export/testdata/convert/constraints.golden.ttl.sha256 b/tests/export/testdata/convert/constraints.golden.ttl.sha256 index 2ffe202c9a..d6bdc634cf 100644 --- a/tests/export/testdata/convert/constraints.golden.ttl.sha256 +++ b/tests/export/testdata/convert/constraints.golden.ttl.sha256 @@ -1,4 +1,4 @@ -sha256 8da750e1a4dfab7fa08b41bd4ffb54438b5a91130e1f2856d56fb5bf45f5f308 bytes 252840 lines 3885 +sha256 7987c6a34f7762196bfb4220a852d113cb94163c369194e8bedb0d000b459162 bytes 252840 lines 3885 @prefix elmt: . @prefix expr: . @prefix json: . diff --git a/tests/export/testdata/convert/declaration_head_order.canonical.golden.sysml b/tests/export/testdata/convert/declaration_head_order.canonical.golden.sysml new file mode 100644 index 0000000000..525ba72ffd --- /dev/null +++ b/tests/export/testdata/convert/declaration_head_order.canonical.golden.sysml @@ -0,0 +1,22 @@ +package HeadOrder { + private import ScalarValues::*; + metadata def Tag; + attribute def Mass; + part def Base { + attribute m : Mass; + attribute n : Real; + attribute p : Real; + } + part def Derived specializes Base { + attribute redefines m = 1; + attribute redefines n : Real = 2; + attribute q : Real subsets p; + attribute r : Real = 3; + attribute redefines p default = 4; + attribute s : Real[2] subsets p; + attribute t subsets p[1..3] : Real; + #Tag attribute u : Real[1] = 5 { + doc /* a body member after the head */ + } + } +} diff --git a/tests/export/testdata/convert/declaration_head_order.golden.sysml b/tests/export/testdata/convert/declaration_head_order.golden.sysml new file mode 100644 index 0000000000..2edc63be1e --- /dev/null +++ b/tests/export/testdata/convert/declaration_head_order.golden.sysml @@ -0,0 +1,22 @@ +package HeadOrder { + private import ScalarValues::*; + metadata def Tag; + attribute def Mass; + part def Base { + attribute m : Mass; + attribute n : Real; + attribute p : Real; + } + part def Derived :> Base { + attribute redefines m = 1; + attribute :>> n : Real = 2; + attribute q : Real subsets p; + attribute r : Real = 3; + attribute :>> p default = 4; + attribute s : Real [2] :> p; + attribute t :> p [1..3] : Real; + #Tag attribute u : Real [1] = 5 { + doc /* a body member after the head */ + } + } +} diff --git a/tests/export/testdata/convert/declaration_head_order.golden.ttl b/tests/export/testdata/convert/declaration_head_order.golden.ttl new file mode 100644 index 0000000000..44186ffc1c --- /dev/null +++ b/tests/export/testdata/convert/declaration_head_order.golden.ttl @@ -0,0 +1,1190 @@ +@prefix elmt: . +@prefix expr: . +@prefix json: . +@prefix rdf: . +@prefix sysml: . +@prefix sysx: . +@prefix xsd: . + +elmt:HeadOrder + a sysml:Package ; + sysml:qualifiedName "HeadOrder" ; + sysx:sourceLine "1"^^xsd:integer ; + sysx:sourceColumn "1"^^xsd:integer ; + sysx:sourceEndLine "22"^^xsd:integer ; + sysx:sourceEndColumn "2"^^xsd:integer ; + sysml:elementId "HeadOrder" ; + sysx:memberIndex "0"^^xsd:integer ; + sysx:sourceLanguage "sysml" ; + sysml:declaredName "HeadOrder" ; + sysx:hasBody "true"^^xsd:boolean ; + sysml:ownedRelationship elmt:HeadOrder___400, elmt:HeadOrder__Tag_om, elmt:HeadOrder__Mass_om, elmt:HeadOrder__Base_om, elmt:HeadOrder__Derived_om ; + sysml:ownedImport elmt:HeadOrder___400 ; + sysml:ownedMember elmt:HeadOrder__Tag, elmt:HeadOrder__Mass, elmt:HeadOrder__Base, elmt:HeadOrder__Derived ; + sysml:ownedMembership elmt:HeadOrder__Tag_om, elmt:HeadOrder__Mass_om, elmt:HeadOrder__Base_om, elmt:HeadOrder__Derived_om ; + sysx:sourceText "package HeadOrder {\n" ; + sysx:sourceTail "}\n" ; + json:ownedRelationship "[{\"@id\":\"HeadOrder___400\"},{\"@id\":\"HeadOrder__Tag_om\"},{\"@id\":\"HeadOrder__Mass_om\"},{\"@id\":\"HeadOrder__Base_om\"},{\"@id\":\"HeadOrder__Derived_om\"}]" ; + json:ownedMember "[{\"@id\":\"HeadOrder__Tag\"},{\"@id\":\"HeadOrder__Mass\"},{\"@id\":\"HeadOrder__Base\"},{\"@id\":\"HeadOrder__Derived\"}]" ; + json:ownedMembership "[{\"@id\":\"HeadOrder__Tag_om\"},{\"@id\":\"HeadOrder__Mass_om\"},{\"@id\":\"HeadOrder__Base_om\"},{\"@id\":\"HeadOrder__Derived_om\"}]" . + +elmt:HeadOrder___400 + a sysml:NamespaceImport ; + sysml:qualifiedName "HeadOrder::@0" ; + sysx:sourceLine "2"^^xsd:integer ; + sysx:sourceColumn "5"^^xsd:integer ; + sysx:sourceEndLine "2"^^xsd:integer ; + sysx:sourceEndColumn "36"^^xsd:integer ; + sysml:elementId "HeadOrder___400" ; + sysx:memberIndex "0"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder ; + sysml:owner elmt:HeadOrder ; + sysml:owningRelatedElement elmt:HeadOrder ; + sysml:importOwningNamespace elmt:HeadOrder ; + sysml:visibility "private" ; + sysml:importedNamespace ; + sysx:hasBody "false"^^xsd:boolean ; + sysx:sourceText " private import ScalarValues::*;\n" . + +elmt:HeadOrder__Tag + a sysml:MetadataDefinition ; + sysml:qualifiedName "HeadOrder::Tag" ; + sysx:sourceLine "3"^^xsd:integer ; + sysx:sourceColumn "5"^^xsd:integer ; + sysx:sourceEndLine "3"^^xsd:integer ; + sysx:sourceEndColumn "22"^^xsd:integer ; + sysml:elementId "HeadOrder__Tag" ; + sysx:memberIndex "1"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder ; + sysml:owner elmt:HeadOrder ; + sysml:owningRelationship elmt:HeadOrder__Tag_om ; + sysml:owningMembership elmt:HeadOrder__Tag_om ; + sysml:declaredName "Tag" ; + sysx:hasBody "false"^^xsd:boolean ; + sysx:sourceText " metadata def Tag;\n" . + +elmt:HeadOrder__Tag_om + a sysml:OwningMembership ; + sysml:elementId "HeadOrder__Tag_om" ; + sysml:owner elmt:HeadOrder ; + sysml:memberElement elmt:HeadOrder__Tag ; + sysml:ownedMemberElement elmt:HeadOrder__Tag ; + sysml:ownedRelatedElement elmt:HeadOrder__Tag ; + sysml:owningRelatedElement elmt:HeadOrder ; + sysml:membershipOwningNamespace elmt:HeadOrder . + +elmt:HeadOrder__Mass + a sysml:AttributeDefinition ; + sysml:qualifiedName "HeadOrder::Mass" ; + sysx:sourceLine "4"^^xsd:integer ; + sysx:sourceColumn "5"^^xsd:integer ; + sysx:sourceEndLine "4"^^xsd:integer ; + sysx:sourceEndColumn "24"^^xsd:integer ; + sysml:elementId "HeadOrder__Mass" ; + sysx:memberIndex "2"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder ; + sysml:owner elmt:HeadOrder ; + sysml:owningRelationship elmt:HeadOrder__Mass_om ; + sysml:owningMembership elmt:HeadOrder__Mass_om ; + sysml:declaredName "Mass" ; + sysx:hasBody "false"^^xsd:boolean ; + sysx:sourceText " attribute def Mass;\n" . + +elmt:HeadOrder__Mass_om + a sysml:OwningMembership ; + sysml:elementId "HeadOrder__Mass_om" ; + sysml:owner elmt:HeadOrder ; + sysml:memberElement elmt:HeadOrder__Mass ; + sysml:ownedMemberElement elmt:HeadOrder__Mass ; + sysml:ownedRelatedElement elmt:HeadOrder__Mass ; + sysml:owningRelatedElement elmt:HeadOrder ; + sysml:membershipOwningNamespace elmt:HeadOrder . + +elmt:HeadOrder__Base + a sysml:PartDefinition ; + sysml:qualifiedName "HeadOrder::Base" ; + sysx:sourceLine "5"^^xsd:integer ; + sysx:sourceColumn "5"^^xsd:integer ; + sysx:sourceEndLine "9"^^xsd:integer ; + sysx:sourceEndColumn "6"^^xsd:integer ; + sysml:elementId "HeadOrder__Base" ; + sysx:memberIndex "3"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder ; + sysml:owner elmt:HeadOrder ; + sysml:owningRelationship elmt:HeadOrder__Base_om ; + sysml:owningMembership elmt:HeadOrder__Base_om ; + sysml:declaredName "Base" ; + sysx:hasBody "true"^^xsd:boolean ; + sysml:ownedMember elmt:HeadOrder__Base__m, elmt:HeadOrder__Base__n, elmt:HeadOrder__Base__p ; + sysml:ownedMembership elmt:HeadOrder__Base__m_om, elmt:HeadOrder__Base__n_om, elmt:HeadOrder__Base__p_om ; + sysml:ownedRelationship elmt:HeadOrder__Base__m_om, elmt:HeadOrder__Base__n_om, elmt:HeadOrder__Base__p_om ; + sysml:ownedFeature elmt:HeadOrder__Base__m, elmt:HeadOrder__Base__n, elmt:HeadOrder__Base__p ; + sysml:ownedFeatureMembership elmt:HeadOrder__Base__m_om, elmt:HeadOrder__Base__n_om, elmt:HeadOrder__Base__p_om ; + sysx:sourceText " part def Base {\n" ; + sysx:sourceTail " }\n" ; + json:ownedMember "[{\"@id\":\"HeadOrder__Base__m\"},{\"@id\":\"HeadOrder__Base__n\"},{\"@id\":\"HeadOrder__Base__p\"}]" ; + json:ownedMembership "[{\"@id\":\"HeadOrder__Base__m_om\"},{\"@id\":\"HeadOrder__Base__n_om\"},{\"@id\":\"HeadOrder__Base__p_om\"}]" ; + json:ownedRelationship "[{\"@id\":\"HeadOrder__Base__m_om\"},{\"@id\":\"HeadOrder__Base__n_om\"},{\"@id\":\"HeadOrder__Base__p_om\"}]" ; + json:ownedFeature "[{\"@id\":\"HeadOrder__Base__m\"},{\"@id\":\"HeadOrder__Base__n\"},{\"@id\":\"HeadOrder__Base__p\"}]" ; + json:ownedFeatureMembership "[{\"@id\":\"HeadOrder__Base__m_om\"},{\"@id\":\"HeadOrder__Base__n_om\"},{\"@id\":\"HeadOrder__Base__p_om\"}]" . + +elmt:HeadOrder__Base_om + a sysml:OwningMembership ; + sysml:elementId "HeadOrder__Base_om" ; + sysml:owner elmt:HeadOrder ; + sysml:memberElement elmt:HeadOrder__Base ; + sysml:ownedMemberElement elmt:HeadOrder__Base ; + sysml:ownedRelatedElement elmt:HeadOrder__Base ; + sysml:owningRelatedElement elmt:HeadOrder ; + sysml:membershipOwningNamespace elmt:HeadOrder . + +elmt:HeadOrder__Base__m + a sysml:AttributeUsage ; + sysml:qualifiedName "HeadOrder::Base::m" ; + sysx:sourceLine "6"^^xsd:integer ; + sysx:sourceColumn "9"^^xsd:integer ; + sysx:sourceEndLine "6"^^xsd:integer ; + sysx:sourceEndColumn "28"^^xsd:integer ; + sysml:elementId "HeadOrder__Base__m" ; + sysx:memberIndex "0"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder__Base ; + sysml:owner elmt:HeadOrder__Base ; + sysml:owningRelationship elmt:HeadOrder__Base__m_om ; + sysml:owningMembership elmt:HeadOrder__Base__m_om ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:declaredName "m" ; + sysml:type elmt:HeadOrder__Mass ; + sysx:hasBody "false"^^xsd:boolean ; + sysml:ownedTyping elmt:HeadOrder__Base__m_ft0 ; + sysml:ownedSpecialization elmt:HeadOrder__Base__m_ft0 ; + sysml:ownedRelationship elmt:HeadOrder__Base__m_ft0 ; + sysx:sourceText " attribute m : Mass;\n" . + +elmt:HeadOrder__Base__m_om + a sysml:FeatureMembership ; + sysml:elementId "HeadOrder__Base__m_om" ; + sysml:owner elmt:HeadOrder__Base ; + sysml:memberElement elmt:HeadOrder__Base__m ; + sysml:ownedMemberElement elmt:HeadOrder__Base__m ; + sysml:ownedRelatedElement elmt:HeadOrder__Base__m ; + sysml:owningRelatedElement elmt:HeadOrder__Base ; + sysml:membershipOwningNamespace elmt:HeadOrder__Base ; + sysml:ownedMemberFeature elmt:HeadOrder__Base__m ; + sysml:owningType elmt:HeadOrder__Base . + +elmt:HeadOrder__Base__n + a sysml:AttributeUsage ; + sysml:qualifiedName "HeadOrder::Base::n" ; + sysx:sourceLine "7"^^xsd:integer ; + sysx:sourceColumn "9"^^xsd:integer ; + sysx:sourceEndLine "7"^^xsd:integer ; + sysx:sourceEndColumn "28"^^xsd:integer ; + sysml:elementId "HeadOrder__Base__n" ; + sysx:memberIndex "1"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder__Base ; + sysml:owner elmt:HeadOrder__Base ; + sysml:owningRelationship elmt:HeadOrder__Base__n_om ; + sysml:owningMembership elmt:HeadOrder__Base__n_om ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:declaredName "n" ; + sysml:type ; + sysx:hasBody "false"^^xsd:boolean ; + sysml:ownedTyping elmt:HeadOrder__Base__n_ft0 ; + sysml:ownedSpecialization elmt:HeadOrder__Base__n_ft0 ; + sysml:ownedRelationship elmt:HeadOrder__Base__n_ft0 ; + sysx:sourceText " attribute n : Real;\n" . + +elmt:HeadOrder__Base__n_om + a sysml:FeatureMembership ; + sysml:elementId "HeadOrder__Base__n_om" ; + sysml:owner elmt:HeadOrder__Base ; + sysml:memberElement elmt:HeadOrder__Base__n ; + sysml:ownedMemberElement elmt:HeadOrder__Base__n ; + sysml:ownedRelatedElement elmt:HeadOrder__Base__n ; + sysml:owningRelatedElement elmt:HeadOrder__Base ; + sysml:membershipOwningNamespace elmt:HeadOrder__Base ; + sysml:ownedMemberFeature elmt:HeadOrder__Base__n ; + sysml:owningType elmt:HeadOrder__Base . + +elmt:HeadOrder__Base__p + a sysml:AttributeUsage ; + sysml:qualifiedName "HeadOrder::Base::p" ; + sysx:sourceLine "8"^^xsd:integer ; + sysx:sourceColumn "9"^^xsd:integer ; + sysx:sourceEndLine "8"^^xsd:integer ; + sysx:sourceEndColumn "28"^^xsd:integer ; + sysml:elementId "HeadOrder__Base__p" ; + sysx:memberIndex "2"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder__Base ; + sysml:owner elmt:HeadOrder__Base ; + sysml:owningRelationship elmt:HeadOrder__Base__p_om ; + sysml:owningMembership elmt:HeadOrder__Base__p_om ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:declaredName "p" ; + sysml:type ; + sysx:hasBody "false"^^xsd:boolean ; + sysml:ownedTyping elmt:HeadOrder__Base__p_ft0 ; + sysml:ownedSpecialization elmt:HeadOrder__Base__p_ft0 ; + sysml:ownedRelationship elmt:HeadOrder__Base__p_ft0 ; + sysx:sourceText " attribute p : Real;\n" . + +elmt:HeadOrder__Base__p_om + a sysml:FeatureMembership ; + sysml:elementId "HeadOrder__Base__p_om" ; + sysml:owner elmt:HeadOrder__Base ; + sysml:memberElement elmt:HeadOrder__Base__p ; + sysml:ownedMemberElement elmt:HeadOrder__Base__p ; + sysml:ownedRelatedElement elmt:HeadOrder__Base__p ; + sysml:owningRelatedElement elmt:HeadOrder__Base ; + sysml:membershipOwningNamespace elmt:HeadOrder__Base ; + sysml:ownedMemberFeature elmt:HeadOrder__Base__p ; + sysml:owningType elmt:HeadOrder__Base . + +elmt:HeadOrder__Derived + a sysml:PartDefinition ; + sysml:qualifiedName "HeadOrder::Derived" ; + sysx:sourceLine "10"^^xsd:integer ; + sysx:sourceColumn "5"^^xsd:integer ; + sysx:sourceEndLine "21"^^xsd:integer ; + sysx:sourceEndColumn "6"^^xsd:integer ; + sysml:elementId "HeadOrder__Derived" ; + sysx:memberIndex "4"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder ; + sysml:owner elmt:HeadOrder ; + sysml:owningRelationship elmt:HeadOrder__Derived_om ; + sysml:owningMembership elmt:HeadOrder__Derived_om ; + sysml:declaredName "Derived" ; + sysml:specializes elmt:HeadOrder__Base ; + sysx:hasBody "true"^^xsd:boolean ; + sysml:ownedMember elmt:HeadOrder__Derived__m, elmt:HeadOrder__Derived__n, elmt:HeadOrder__Derived__q, elmt:HeadOrder__Derived__r, elmt:HeadOrder__Derived__p, elmt:HeadOrder__Derived__s, elmt:HeadOrder__Derived__t, elmt:HeadOrder__Derived__u ; + sysml:ownedMembership elmt:HeadOrder__Derived__m_om, elmt:HeadOrder__Derived__n_om, elmt:HeadOrder__Derived__q_om, elmt:HeadOrder__Derived__r_om, elmt:HeadOrder__Derived__p_om, elmt:HeadOrder__Derived__s_om, elmt:HeadOrder__Derived__t_om, elmt:HeadOrder__Derived__u_om ; + sysml:ownedRelationship elmt:HeadOrder__Derived_sc0, elmt:HeadOrder__Derived__m_om, elmt:HeadOrder__Derived__n_om, elmt:HeadOrder__Derived__q_om, elmt:HeadOrder__Derived__r_om, elmt:HeadOrder__Derived__p_om, elmt:HeadOrder__Derived__s_om, elmt:HeadOrder__Derived__t_om, elmt:HeadOrder__Derived__u_om ; + sysml:ownedFeature elmt:HeadOrder__Derived__m, elmt:HeadOrder__Derived__n, elmt:HeadOrder__Derived__q, elmt:HeadOrder__Derived__r, elmt:HeadOrder__Derived__p, elmt:HeadOrder__Derived__s, elmt:HeadOrder__Derived__t, elmt:HeadOrder__Derived__u ; + sysml:ownedFeatureMembership elmt:HeadOrder__Derived__m_om, elmt:HeadOrder__Derived__n_om, elmt:HeadOrder__Derived__q_om, elmt:HeadOrder__Derived__r_om, elmt:HeadOrder__Derived__p_om, elmt:HeadOrder__Derived__s_om, elmt:HeadOrder__Derived__t_om, elmt:HeadOrder__Derived__u_om ; + sysml:ownedSubclassification elmt:HeadOrder__Derived_sc0 ; + sysml:ownedSpecialization elmt:HeadOrder__Derived_sc0 ; + sysx:sourceText " part def Derived :> Base {\n" ; + sysx:sourceTail " }\n" ; + json:ownedMember "[{\"@id\":\"HeadOrder__Derived__m\"},{\"@id\":\"HeadOrder__Derived__n\"},{\"@id\":\"HeadOrder__Derived__q\"},{\"@id\":\"HeadOrder__Derived__r\"},{\"@id\":\"HeadOrder__Derived__p\"},{\"@id\":\"HeadOrder__Derived__s\"},{\"@id\":\"HeadOrder__Derived__t\"},{\"@id\":\"HeadOrder__Derived__u\"}]" ; + json:ownedMembership "[{\"@id\":\"HeadOrder__Derived__m_om\"},{\"@id\":\"HeadOrder__Derived__n_om\"},{\"@id\":\"HeadOrder__Derived__q_om\"},{\"@id\":\"HeadOrder__Derived__r_om\"},{\"@id\":\"HeadOrder__Derived__p_om\"},{\"@id\":\"HeadOrder__Derived__s_om\"},{\"@id\":\"HeadOrder__Derived__t_om\"},{\"@id\":\"HeadOrder__Derived__u_om\"}]" ; + json:ownedRelationship "[{\"@id\":\"HeadOrder__Derived_sc0\"},{\"@id\":\"HeadOrder__Derived__m_om\"},{\"@id\":\"HeadOrder__Derived__n_om\"},{\"@id\":\"HeadOrder__Derived__q_om\"},{\"@id\":\"HeadOrder__Derived__r_om\"},{\"@id\":\"HeadOrder__Derived__p_om\"},{\"@id\":\"HeadOrder__Derived__s_om\"},{\"@id\":\"HeadOrder__Derived__t_om\"},{\"@id\":\"HeadOrder__Derived__u_om\"}]" ; + json:ownedFeature "[{\"@id\":\"HeadOrder__Derived__m\"},{\"@id\":\"HeadOrder__Derived__n\"},{\"@id\":\"HeadOrder__Derived__q\"},{\"@id\":\"HeadOrder__Derived__r\"},{\"@id\":\"HeadOrder__Derived__p\"},{\"@id\":\"HeadOrder__Derived__s\"},{\"@id\":\"HeadOrder__Derived__t\"},{\"@id\":\"HeadOrder__Derived__u\"}]" ; + json:ownedFeatureMembership "[{\"@id\":\"HeadOrder__Derived__m_om\"},{\"@id\":\"HeadOrder__Derived__n_om\"},{\"@id\":\"HeadOrder__Derived__q_om\"},{\"@id\":\"HeadOrder__Derived__r_om\"},{\"@id\":\"HeadOrder__Derived__p_om\"},{\"@id\":\"HeadOrder__Derived__s_om\"},{\"@id\":\"HeadOrder__Derived__t_om\"},{\"@id\":\"HeadOrder__Derived__u_om\"}]" . + +elmt:HeadOrder__Derived_om + a sysml:OwningMembership ; + sysml:elementId "HeadOrder__Derived_om" ; + sysml:owner elmt:HeadOrder ; + sysml:memberElement elmt:HeadOrder__Derived ; + sysml:ownedMemberElement elmt:HeadOrder__Derived ; + sysml:ownedRelatedElement elmt:HeadOrder__Derived ; + sysml:owningRelatedElement elmt:HeadOrder ; + sysml:membershipOwningNamespace elmt:HeadOrder . + +elmt:HeadOrder__Derived__m + a sysml:AttributeUsage ; + sysml:name "m" ; + sysml:qualifiedName "HeadOrder::Derived::m" ; + sysx:sourceLine "11"^^xsd:integer ; + sysx:sourceColumn "9"^^xsd:integer ; + sysx:sourceEndLine "11"^^xsd:integer ; + sysx:sourceEndColumn "35"^^xsd:integer ; + sysml:elementId "HeadOrder__Derived__m" ; + sysx:memberIndex "0"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder__Derived ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:owningRelationship elmt:HeadOrder__Derived__m_om ; + sysml:owningMembership elmt:HeadOrder__Derived__m_om ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:redefines elmt:HeadOrder__Base__m ; + sysml:value expr:HeadOrder__Derived__m_pvalue ; + sysml:ownedRelationship elmt:HeadOrder__Derived__m_rd0, expr:HeadOrder__Derived__m_pvalue_om ; + sysml:ownedMembership expr:HeadOrder__Derived__m_pvalue_om ; + sysx:hasBody "false"^^xsd:boolean ; + sysml:ownedRedefinition elmt:HeadOrder__Derived__m_rd0 ; + sysml:ownedSubsetting elmt:HeadOrder__Derived__m_rd0 ; + sysml:ownedSpecialization elmt:HeadOrder__Derived__m_rd0 ; + sysx:sourceText " attribute redefines m = 1;\n" ; + json:ownedRelationship "[{\"@id\":\"HeadOrder__Derived__m_rd0\"},{\"@id\":\"HeadOrder__Derived__m_pvalue_om\"}]" . + +elmt:HeadOrder__Derived__m_om + a sysml:FeatureMembership ; + sysml:elementId "HeadOrder__Derived__m_om" ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:memberElement elmt:HeadOrder__Derived__m ; + sysml:ownedMemberElement elmt:HeadOrder__Derived__m ; + sysml:ownedRelatedElement elmt:HeadOrder__Derived__m ; + sysml:owningRelatedElement elmt:HeadOrder__Derived ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived ; + sysml:ownedMemberFeature elmt:HeadOrder__Derived__m ; + sysml:owningType elmt:HeadOrder__Derived . + +expr:HeadOrder__Derived__m_pvalue + a sysml:LiteralInteger ; + sysx:sourceText "1" ; + sysml:elementId "HeadOrder__Derived__m_pvalue" ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:value "1"^^xsd:integer ; + sysml:owner elmt:HeadOrder__Derived__m ; + sysml:owningRelationship expr:HeadOrder__Derived__m_pvalue_om ; + sysml:owningMembership expr:HeadOrder__Derived__m_pvalue_om . + +expr:HeadOrder__Derived__m_pvalue_om + a sysml:FeatureValue ; + sysml:elementId "HeadOrder__Derived__m_pvalue_om" ; + sysml:owner elmt:HeadOrder__Derived__m ; + sysml:memberElement expr:HeadOrder__Derived__m_pvalue ; + sysml:ownedMemberElement expr:HeadOrder__Derived__m_pvalue ; + sysml:ownedRelatedElement expr:HeadOrder__Derived__m_pvalue ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__m ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived__m ; + sysml:featureWithValue elmt:HeadOrder__Derived__m ; + sysml:value expr:HeadOrder__Derived__m_pvalue . + +elmt:HeadOrder__Derived__n + a sysml:AttributeUsage ; + sysml:name "n" ; + sysml:qualifiedName "HeadOrder::Derived::n" ; + sysx:sourceLine "12"^^xsd:integer ; + sysx:sourceColumn "9"^^xsd:integer ; + sysx:sourceEndLine "12"^^xsd:integer ; + sysx:sourceEndColumn "36"^^xsd:integer ; + sysml:elementId "HeadOrder__Derived__n" ; + sysx:memberIndex "1"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder__Derived ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:owningRelationship elmt:HeadOrder__Derived__n_om ; + sysml:owningMembership elmt:HeadOrder__Derived__n_om ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:type ; + sysml:redefines elmt:HeadOrder__Base__n ; + sysml:value expr:HeadOrder__Derived__n_pvalue ; + sysml:ownedRelationship elmt:HeadOrder__Derived__n_rd0, elmt:HeadOrder__Derived__n_ft0, expr:HeadOrder__Derived__n_pvalue_om ; + sysml:ownedMembership expr:HeadOrder__Derived__n_pvalue_om ; + sysx:hasBody "false"^^xsd:boolean ; + sysml:ownedRedefinition elmt:HeadOrder__Derived__n_rd0 ; + sysml:ownedSubsetting elmt:HeadOrder__Derived__n_rd0 ; + sysml:ownedSpecialization elmt:HeadOrder__Derived__n_rd0, elmt:HeadOrder__Derived__n_ft0 ; + sysml:ownedTyping elmt:HeadOrder__Derived__n_ft0 ; + sysx:sourceText " attribute :>> n : Real = 2;\n" ; + json:ownedRelationship "[{\"@id\":\"HeadOrder__Derived__n_rd0\"},{\"@id\":\"HeadOrder__Derived__n_ft0\"},{\"@id\":\"HeadOrder__Derived__n_pvalue_om\"}]" ; + json:ownedSpecialization "[{\"@id\":\"HeadOrder__Derived__n_rd0\"},{\"@id\":\"HeadOrder__Derived__n_ft0\"}]" . + +elmt:HeadOrder__Derived__n_om + a sysml:FeatureMembership ; + sysml:elementId "HeadOrder__Derived__n_om" ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:memberElement elmt:HeadOrder__Derived__n ; + sysml:ownedMemberElement elmt:HeadOrder__Derived__n ; + sysml:ownedRelatedElement elmt:HeadOrder__Derived__n ; + sysml:owningRelatedElement elmt:HeadOrder__Derived ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived ; + sysml:ownedMemberFeature elmt:HeadOrder__Derived__n ; + sysml:owningType elmt:HeadOrder__Derived . + +expr:HeadOrder__Derived__n_pvalue + a sysml:LiteralInteger ; + sysx:sourceText "2" ; + sysml:elementId "HeadOrder__Derived__n_pvalue" ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:value "2"^^xsd:integer ; + sysml:owner elmt:HeadOrder__Derived__n ; + sysml:owningRelationship expr:HeadOrder__Derived__n_pvalue_om ; + sysml:owningMembership expr:HeadOrder__Derived__n_pvalue_om . + +expr:HeadOrder__Derived__n_pvalue_om + a sysml:FeatureValue ; + sysml:elementId "HeadOrder__Derived__n_pvalue_om" ; + sysml:owner elmt:HeadOrder__Derived__n ; + sysml:memberElement expr:HeadOrder__Derived__n_pvalue ; + sysml:ownedMemberElement expr:HeadOrder__Derived__n_pvalue ; + sysml:ownedRelatedElement expr:HeadOrder__Derived__n_pvalue ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__n ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived__n ; + sysml:featureWithValue elmt:HeadOrder__Derived__n ; + sysml:value expr:HeadOrder__Derived__n_pvalue . + +elmt:HeadOrder__Derived__q + a sysml:AttributeUsage ; + sysml:qualifiedName "HeadOrder::Derived::q" ; + sysx:sourceLine "13"^^xsd:integer ; + sysx:sourceColumn "9"^^xsd:integer ; + sysx:sourceEndLine "13"^^xsd:integer ; + sysx:sourceEndColumn "38"^^xsd:integer ; + sysml:elementId "HeadOrder__Derived__q" ; + sysx:memberIndex "2"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder__Derived ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:owningRelationship elmt:HeadOrder__Derived__q_om ; + sysml:owningMembership elmt:HeadOrder__Derived__q_om ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:declaredName "q" ; + sysml:type ; + sysml:subsets elmt:HeadOrder__Derived__p ; + sysx:hasBody "false"^^xsd:boolean ; + sysml:ownedTyping elmt:HeadOrder__Derived__q_ft0 ; + sysml:ownedSpecialization elmt:HeadOrder__Derived__q_ft0, elmt:HeadOrder__Derived__q_ss0 ; + sysml:ownedRelationship elmt:HeadOrder__Derived__q_ft0, elmt:HeadOrder__Derived__q_ss0 ; + sysml:ownedSubsetting elmt:HeadOrder__Derived__q_ss0 ; + sysx:sourceText " attribute q : Real subsets p;\n" ; + json:ownedSpecialization "[{\"@id\":\"HeadOrder__Derived__q_ft0\"},{\"@id\":\"HeadOrder__Derived__q_ss0\"}]" ; + json:ownedRelationship "[{\"@id\":\"HeadOrder__Derived__q_ft0\"},{\"@id\":\"HeadOrder__Derived__q_ss0\"}]" . + +elmt:HeadOrder__Derived__q_om + a sysml:FeatureMembership ; + sysml:elementId "HeadOrder__Derived__q_om" ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:memberElement elmt:HeadOrder__Derived__q ; + sysml:ownedMemberElement elmt:HeadOrder__Derived__q ; + sysml:ownedRelatedElement elmt:HeadOrder__Derived__q ; + sysml:owningRelatedElement elmt:HeadOrder__Derived ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived ; + sysml:ownedMemberFeature elmt:HeadOrder__Derived__q ; + sysml:owningType elmt:HeadOrder__Derived . + +elmt:HeadOrder__Derived__r + a sysml:AttributeUsage ; + sysml:qualifiedName "HeadOrder::Derived::r" ; + sysx:sourceLine "14"^^xsd:integer ; + sysx:sourceColumn "9"^^xsd:integer ; + sysx:sourceEndLine "14"^^xsd:integer ; + sysx:sourceEndColumn "32"^^xsd:integer ; + sysml:elementId "HeadOrder__Derived__r" ; + sysx:memberIndex "3"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder__Derived ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:owningRelationship elmt:HeadOrder__Derived__r_om ; + sysml:owningMembership elmt:HeadOrder__Derived__r_om ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:declaredName "r" ; + sysml:type ; + sysml:value expr:HeadOrder__Derived__r_pvalue ; + sysml:ownedRelationship elmt:HeadOrder__Derived__r_ft0, expr:HeadOrder__Derived__r_pvalue_om ; + sysml:ownedMembership expr:HeadOrder__Derived__r_pvalue_om ; + sysx:hasBody "false"^^xsd:boolean ; + sysml:ownedTyping elmt:HeadOrder__Derived__r_ft0 ; + sysml:ownedSpecialization elmt:HeadOrder__Derived__r_ft0 ; + sysx:sourceText " attribute r : Real = 3;\n" ; + json:ownedRelationship "[{\"@id\":\"HeadOrder__Derived__r_ft0\"},{\"@id\":\"HeadOrder__Derived__r_pvalue_om\"}]" . + +elmt:HeadOrder__Derived__r_om + a sysml:FeatureMembership ; + sysml:elementId "HeadOrder__Derived__r_om" ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:memberElement elmt:HeadOrder__Derived__r ; + sysml:ownedMemberElement elmt:HeadOrder__Derived__r ; + sysml:ownedRelatedElement elmt:HeadOrder__Derived__r ; + sysml:owningRelatedElement elmt:HeadOrder__Derived ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived ; + sysml:ownedMemberFeature elmt:HeadOrder__Derived__r ; + sysml:owningType elmt:HeadOrder__Derived . + +expr:HeadOrder__Derived__r_pvalue + a sysml:LiteralInteger ; + sysx:sourceText "3" ; + sysml:elementId "HeadOrder__Derived__r_pvalue" ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:value "3"^^xsd:integer ; + sysml:owner elmt:HeadOrder__Derived__r ; + sysml:owningRelationship expr:HeadOrder__Derived__r_pvalue_om ; + sysml:owningMembership expr:HeadOrder__Derived__r_pvalue_om . + +expr:HeadOrder__Derived__r_pvalue_om + a sysml:FeatureValue ; + sysml:elementId "HeadOrder__Derived__r_pvalue_om" ; + sysml:owner elmt:HeadOrder__Derived__r ; + sysml:memberElement expr:HeadOrder__Derived__r_pvalue ; + sysml:ownedMemberElement expr:HeadOrder__Derived__r_pvalue ; + sysml:ownedRelatedElement expr:HeadOrder__Derived__r_pvalue ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__r ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived__r ; + sysml:featureWithValue elmt:HeadOrder__Derived__r ; + sysml:value expr:HeadOrder__Derived__r_pvalue . + +elmt:HeadOrder__Derived__p + a sysml:AttributeUsage ; + sysml:name "p" ; + sysml:qualifiedName "HeadOrder::Derived::p" ; + sysx:sourceLine "15"^^xsd:integer ; + sysx:sourceColumn "9"^^xsd:integer ; + sysx:sourceEndLine "15"^^xsd:integer ; + sysx:sourceEndColumn "37"^^xsd:integer ; + sysml:elementId "HeadOrder__Derived__p" ; + sysx:memberIndex "4"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder__Derived ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:owningRelationship elmt:HeadOrder__Derived__p_om ; + sysml:owningMembership elmt:HeadOrder__Derived__p_om ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:redefines elmt:HeadOrder__Base__p ; + sysml:isDefault "true"^^xsd:boolean ; + sysml:value expr:HeadOrder__Derived__p_pvalue ; + sysml:ownedRelationship elmt:HeadOrder__Derived__p_rd0, expr:HeadOrder__Derived__p_pvalue_om ; + sysml:ownedMembership expr:HeadOrder__Derived__p_pvalue_om ; + sysx:hasBody "false"^^xsd:boolean ; + sysml:ownedRedefinition elmt:HeadOrder__Derived__p_rd0 ; + sysml:ownedSubsetting elmt:HeadOrder__Derived__p_rd0 ; + sysml:ownedSpecialization elmt:HeadOrder__Derived__p_rd0 ; + sysx:sourceText " attribute :>> p default = 4;\n" ; + json:ownedRelationship "[{\"@id\":\"HeadOrder__Derived__p_rd0\"},{\"@id\":\"HeadOrder__Derived__p_pvalue_om\"}]" . + +elmt:HeadOrder__Derived__p_om + a sysml:FeatureMembership ; + sysml:elementId "HeadOrder__Derived__p_om" ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:memberElement elmt:HeadOrder__Derived__p ; + sysml:ownedMemberElement elmt:HeadOrder__Derived__p ; + sysml:ownedRelatedElement elmt:HeadOrder__Derived__p ; + sysml:owningRelatedElement elmt:HeadOrder__Derived ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived ; + sysml:ownedMemberFeature elmt:HeadOrder__Derived__p ; + sysml:owningType elmt:HeadOrder__Derived . + +expr:HeadOrder__Derived__p_pvalue + a sysml:LiteralInteger ; + sysx:sourceText "4" ; + sysml:elementId "HeadOrder__Derived__p_pvalue" ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:value "4"^^xsd:integer ; + sysml:owner elmt:HeadOrder__Derived__p ; + sysml:owningRelationship expr:HeadOrder__Derived__p_pvalue_om ; + sysml:owningMembership expr:HeadOrder__Derived__p_pvalue_om . + +expr:HeadOrder__Derived__p_pvalue_om + a sysml:FeatureValue ; + sysml:elementId "HeadOrder__Derived__p_pvalue_om" ; + sysml:owner elmt:HeadOrder__Derived__p ; + sysml:memberElement expr:HeadOrder__Derived__p_pvalue ; + sysml:ownedMemberElement expr:HeadOrder__Derived__p_pvalue ; + sysml:ownedRelatedElement expr:HeadOrder__Derived__p_pvalue ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__p ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived__p ; + sysml:featureWithValue elmt:HeadOrder__Derived__p ; + sysml:value expr:HeadOrder__Derived__p_pvalue ; + sysml:isDefault "true"^^xsd:boolean . + +elmt:HeadOrder__Derived__s + a sysml:AttributeUsage ; + sysml:qualifiedName "HeadOrder::Derived::s" ; + sysx:sourceLine "16"^^xsd:integer ; + sysx:sourceColumn "9"^^xsd:integer ; + sysx:sourceEndLine "16"^^xsd:integer ; + sysx:sourceEndColumn "37"^^xsd:integer ; + sysml:elementId "HeadOrder__Derived__s" ; + sysx:memberIndex "5"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder__Derived ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:owningRelationship elmt:HeadOrder__Derived__s_om ; + sysml:owningMembership elmt:HeadOrder__Derived__s_om ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:declaredName "s" ; + sysml:type ; + sysml:subsets elmt:HeadOrder__Derived__p ; + sysml:multiplicity expr:HeadOrder__Derived__s_pmultiplicity ; + sysml:ownedRelationship elmt:HeadOrder__Derived__s_ft0, expr:HeadOrder__Derived__s_pmultiplicity_om, elmt:HeadOrder__Derived__s_ss0 ; + sysml:ownedMembership expr:HeadOrder__Derived__s_pmultiplicity_om ; + sysml:upperBound expr:HeadOrder__Derived__s_pupperBound ; + sysx:hasBody "false"^^xsd:boolean ; + sysml:ownedTyping elmt:HeadOrder__Derived__s_ft0 ; + sysml:ownedSpecialization elmt:HeadOrder__Derived__s_ft0, elmt:HeadOrder__Derived__s_ss0 ; + sysml:ownedSubsetting elmt:HeadOrder__Derived__s_ss0 ; + sysx:sourceText " attribute s : Real [2] :> p;\n" ; + json:ownedRelationship "[{\"@id\":\"HeadOrder__Derived__s_ft0\"},{\"@id\":\"HeadOrder__Derived__s_pmultiplicity_om\"},{\"@id\":\"HeadOrder__Derived__s_ss0\"}]" ; + json:ownedSpecialization "[{\"@id\":\"HeadOrder__Derived__s_ft0\"},{\"@id\":\"HeadOrder__Derived__s_ss0\"}]" . + +elmt:HeadOrder__Derived__s_om + a sysml:FeatureMembership ; + sysml:elementId "HeadOrder__Derived__s_om" ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:memberElement elmt:HeadOrder__Derived__s ; + sysml:ownedMemberElement elmt:HeadOrder__Derived__s ; + sysml:ownedRelatedElement elmt:HeadOrder__Derived__s ; + sysml:owningRelatedElement elmt:HeadOrder__Derived ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived ; + sysml:ownedMemberFeature elmt:HeadOrder__Derived__s ; + sysml:owningType elmt:HeadOrder__Derived . + +expr:HeadOrder__Derived__s_pmultiplicity + a sysml:MultiplicityRange ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:elementId "HeadOrder__Derived__s_pmultiplicity" ; + sysml:owner elmt:HeadOrder__Derived__s ; + sysml:owningRelationship expr:HeadOrder__Derived__s_pmultiplicity_om ; + sysml:owningMembership expr:HeadOrder__Derived__s_pmultiplicity_om ; + sysml:upperBound expr:HeadOrder__Derived__s_pupperBound ; + sysml:ownedRelationship expr:HeadOrder__Derived__s_pupperBound_om ; + sysml:ownedMembership expr:HeadOrder__Derived__s_pupperBound_om . + +expr:HeadOrder__Derived__s_pmultiplicity_om + a sysml:OwningMembership ; + sysml:elementId "HeadOrder__Derived__s_pmultiplicity_om" ; + sysml:owner elmt:HeadOrder__Derived__s ; + sysml:memberElement expr:HeadOrder__Derived__s_pmultiplicity ; + sysml:ownedMemberElement expr:HeadOrder__Derived__s_pmultiplicity ; + sysml:ownedRelatedElement expr:HeadOrder__Derived__s_pmultiplicity ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__s ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived__s . + +expr:HeadOrder__Derived__s_pupperBound + a sysml:LiteralInteger ; + sysx:sourceText "2" ; + sysml:elementId "HeadOrder__Derived__s_pupperBound" ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:value "2"^^xsd:integer ; + sysml:owner expr:HeadOrder__Derived__s_pmultiplicity ; + sysml:owningRelationship expr:HeadOrder__Derived__s_pupperBound_om ; + sysml:owningMembership expr:HeadOrder__Derived__s_pupperBound_om . + +expr:HeadOrder__Derived__s_pupperBound_om + a sysml:OwningMembership ; + sysml:elementId "HeadOrder__Derived__s_pupperBound_om" ; + sysml:owner expr:HeadOrder__Derived__s_pmultiplicity ; + sysml:memberElement expr:HeadOrder__Derived__s_pupperBound ; + sysml:ownedMemberElement expr:HeadOrder__Derived__s_pupperBound ; + sysml:ownedRelatedElement expr:HeadOrder__Derived__s_pupperBound ; + sysml:owningRelatedElement expr:HeadOrder__Derived__s_pmultiplicity ; + sysml:membershipOwningNamespace expr:HeadOrder__Derived__s_pmultiplicity . + +elmt:HeadOrder__Derived__t + a sysml:AttributeUsage ; + sysml:qualifiedName "HeadOrder::Derived::t" ; + sysx:sourceLine "17"^^xsd:integer ; + sysx:sourceColumn "9"^^xsd:integer ; + sysx:sourceEndLine "17"^^xsd:integer ; + sysx:sourceEndColumn "40"^^xsd:integer ; + sysml:elementId "HeadOrder__Derived__t" ; + sysx:memberIndex "6"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder__Derived ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:owningRelationship elmt:HeadOrder__Derived__t_om ; + sysml:owningMembership elmt:HeadOrder__Derived__t_om ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:declaredName "t" ; + sysml:type ; + sysml:subsets elmt:HeadOrder__Derived__p ; + sysml:multiplicity expr:HeadOrder__Derived__t_pmultiplicity ; + sysml:ownedRelationship elmt:HeadOrder__Derived__t_ss0, expr:HeadOrder__Derived__t_pmultiplicity_om, elmt:HeadOrder__Derived__t_ft0 ; + sysml:ownedMembership expr:HeadOrder__Derived__t_pmultiplicity_om ; + sysml:lowerBound expr:HeadOrder__Derived__t_plowerBound ; + sysml:upperBound expr:HeadOrder__Derived__t_pupperBound ; + sysx:hasBody "false"^^xsd:boolean ; + sysml:ownedSubsetting elmt:HeadOrder__Derived__t_ss0 ; + sysml:ownedSpecialization elmt:HeadOrder__Derived__t_ss0, elmt:HeadOrder__Derived__t_ft0 ; + sysml:ownedTyping elmt:HeadOrder__Derived__t_ft0 ; + sysx:sourceText " attribute t :> p [1..3] : Real;\n" ; + json:ownedRelationship "[{\"@id\":\"HeadOrder__Derived__t_ss0\"},{\"@id\":\"HeadOrder__Derived__t_pmultiplicity_om\"},{\"@id\":\"HeadOrder__Derived__t_ft0\"}]" ; + json:ownedSpecialization "[{\"@id\":\"HeadOrder__Derived__t_ss0\"},{\"@id\":\"HeadOrder__Derived__t_ft0\"}]" . + +elmt:HeadOrder__Derived__t_om + a sysml:FeatureMembership ; + sysml:elementId "HeadOrder__Derived__t_om" ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:memberElement elmt:HeadOrder__Derived__t ; + sysml:ownedMemberElement elmt:HeadOrder__Derived__t ; + sysml:ownedRelatedElement elmt:HeadOrder__Derived__t ; + sysml:owningRelatedElement elmt:HeadOrder__Derived ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived ; + sysml:ownedMemberFeature elmt:HeadOrder__Derived__t ; + sysml:owningType elmt:HeadOrder__Derived . + +expr:HeadOrder__Derived__t_pmultiplicity + a sysml:MultiplicityRange ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:elementId "HeadOrder__Derived__t_pmultiplicity" ; + sysml:owner elmt:HeadOrder__Derived__t ; + sysml:owningRelationship expr:HeadOrder__Derived__t_pmultiplicity_om ; + sysml:owningMembership expr:HeadOrder__Derived__t_pmultiplicity_om ; + sysml:lowerBound expr:HeadOrder__Derived__t_plowerBound ; + sysml:ownedRelationship expr:HeadOrder__Derived__t_plowerBound_om, expr:HeadOrder__Derived__t_pupperBound_om ; + sysml:ownedMembership expr:HeadOrder__Derived__t_plowerBound_om, expr:HeadOrder__Derived__t_pupperBound_om ; + sysml:upperBound expr:HeadOrder__Derived__t_pupperBound ; + json:ownedRelationship "[{\"@id\":\"HeadOrder__Derived__t_plowerBound_om\"},{\"@id\":\"HeadOrder__Derived__t_pupperBound_om\"}]" ; + json:ownedMembership "[{\"@id\":\"HeadOrder__Derived__t_plowerBound_om\"},{\"@id\":\"HeadOrder__Derived__t_pupperBound_om\"}]" . + +expr:HeadOrder__Derived__t_pmultiplicity_om + a sysml:OwningMembership ; + sysml:elementId "HeadOrder__Derived__t_pmultiplicity_om" ; + sysml:owner elmt:HeadOrder__Derived__t ; + sysml:memberElement expr:HeadOrder__Derived__t_pmultiplicity ; + sysml:ownedMemberElement expr:HeadOrder__Derived__t_pmultiplicity ; + sysml:ownedRelatedElement expr:HeadOrder__Derived__t_pmultiplicity ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__t ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived__t . + +expr:HeadOrder__Derived__t_plowerBound + a sysml:LiteralInteger ; + sysx:sourceText "1" ; + sysml:elementId "HeadOrder__Derived__t_plowerBound" ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:value "1"^^xsd:integer ; + sysml:owner expr:HeadOrder__Derived__t_pmultiplicity ; + sysml:owningRelationship expr:HeadOrder__Derived__t_plowerBound_om ; + sysml:owningMembership expr:HeadOrder__Derived__t_plowerBound_om . + +expr:HeadOrder__Derived__t_plowerBound_om + a sysml:OwningMembership ; + sysml:elementId "HeadOrder__Derived__t_plowerBound_om" ; + sysml:owner expr:HeadOrder__Derived__t_pmultiplicity ; + sysml:memberElement expr:HeadOrder__Derived__t_plowerBound ; + sysml:ownedMemberElement expr:HeadOrder__Derived__t_plowerBound ; + sysml:ownedRelatedElement expr:HeadOrder__Derived__t_plowerBound ; + sysml:owningRelatedElement expr:HeadOrder__Derived__t_pmultiplicity ; + sysml:membershipOwningNamespace expr:HeadOrder__Derived__t_pmultiplicity . + +expr:HeadOrder__Derived__t_pupperBound + a sysml:LiteralInteger ; + sysx:sourceText "3" ; + sysml:elementId "HeadOrder__Derived__t_pupperBound" ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:value "3"^^xsd:integer ; + sysml:owner expr:HeadOrder__Derived__t_pmultiplicity ; + sysml:owningRelationship expr:HeadOrder__Derived__t_pupperBound_om ; + sysml:owningMembership expr:HeadOrder__Derived__t_pupperBound_om . + +expr:HeadOrder__Derived__t_pupperBound_om + a sysml:OwningMembership ; + sysml:elementId "HeadOrder__Derived__t_pupperBound_om" ; + sysml:owner expr:HeadOrder__Derived__t_pmultiplicity ; + sysml:memberElement expr:HeadOrder__Derived__t_pupperBound ; + sysml:ownedMemberElement expr:HeadOrder__Derived__t_pupperBound ; + sysml:ownedRelatedElement expr:HeadOrder__Derived__t_pupperBound ; + sysml:owningRelatedElement expr:HeadOrder__Derived__t_pmultiplicity ; + sysml:membershipOwningNamespace expr:HeadOrder__Derived__t_pmultiplicity . + +elmt:HeadOrder__Derived__u + a sysml:AttributeUsage ; + sysml:qualifiedName "HeadOrder::Derived::u" ; + sysx:sourceLine "18"^^xsd:integer ; + sysx:sourceColumn "9"^^xsd:integer ; + sysx:sourceEndLine "20"^^xsd:integer ; + sysx:sourceEndColumn "10"^^xsd:integer ; + sysml:elementId "HeadOrder__Derived__u" ; + sysx:memberIndex "7"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder__Derived ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:owningRelationship elmt:HeadOrder__Derived__u_om ; + sysml:owningMembership elmt:HeadOrder__Derived__u_om ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:declaredName "u" ; + sysml:ownedMember elmt:HeadOrder__Derived__u___401, elmt:HeadOrder__Derived__u___400 ; + sysml:ownedMembership elmt:HeadOrder__Derived__u___401_om, expr:HeadOrder__Derived__u_pmultiplicity_om, expr:HeadOrder__Derived__u_pvalue_om, elmt:HeadOrder__Derived__u___400_om ; + sysml:ownedRelationship elmt:HeadOrder__Derived__u___401_om, elmt:HeadOrder__Derived__u_ft0, expr:HeadOrder__Derived__u_pmultiplicity_om, expr:HeadOrder__Derived__u_pvalue_om, elmt:HeadOrder__Derived__u___400_om ; + sysml:type ; + sysml:multiplicity expr:HeadOrder__Derived__u_pmultiplicity ; + sysml:upperBound expr:HeadOrder__Derived__u_pupperBound ; + sysml:value expr:HeadOrder__Derived__u_pvalue ; + sysx:hasBody "true"^^xsd:boolean ; + sysml:ownedTyping elmt:HeadOrder__Derived__u_ft0 ; + sysml:ownedSpecialization elmt:HeadOrder__Derived__u_ft0 ; + sysx:sourceText " #Tag attribute u : Real [1] = 5 {\n" ; + sysx:sourceTail " }\n" ; + json:ownedMember "[{\"@id\":\"HeadOrder__Derived__u___401\"},{\"@id\":\"HeadOrder__Derived__u___400\"}]" ; + json:ownedMembership "[{\"@id\":\"HeadOrder__Derived__u___401_om\"},{\"@id\":\"HeadOrder__Derived__u_pmultiplicity_om\"},{\"@id\":\"HeadOrder__Derived__u_pvalue_om\"},{\"@id\":\"HeadOrder__Derived__u___400_om\"}]" ; + json:ownedRelationship "[{\"@id\":\"HeadOrder__Derived__u___401_om\"},{\"@id\":\"HeadOrder__Derived__u_ft0\"},{\"@id\":\"HeadOrder__Derived__u_pmultiplicity_om\"},{\"@id\":\"HeadOrder__Derived__u_pvalue_om\"},{\"@id\":\"HeadOrder__Derived__u___400_om\"}]" . + +elmt:HeadOrder__Derived__u_om + a sysml:FeatureMembership ; + sysml:elementId "HeadOrder__Derived__u_om" ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:memberElement elmt:HeadOrder__Derived__u ; + sysml:ownedMemberElement elmt:HeadOrder__Derived__u ; + sysml:ownedRelatedElement elmt:HeadOrder__Derived__u ; + sysml:owningRelatedElement elmt:HeadOrder__Derived ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived ; + sysml:ownedMemberFeature elmt:HeadOrder__Derived__u ; + sysml:owningType elmt:HeadOrder__Derived . + +elmt:HeadOrder__Derived__u___401 + a sysml:MetadataUsage ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:qualifiedName "HeadOrder::Derived::u::@1" ; + sysx:sourceLine "18"^^xsd:integer ; + sysx:sourceColumn "9"^^xsd:integer ; + sysx:sourceEndLine "18"^^xsd:integer ; + sysx:sourceEndColumn "13"^^xsd:integer ; + sysml:elementId "HeadOrder__Derived__u___401" ; + sysx:memberIndex "1"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder__Derived__u ; + sysml:owner elmt:HeadOrder__Derived__u ; + sysml:owningRelationship elmt:HeadOrder__Derived__u___401_om ; + sysml:owningMembership elmt:HeadOrder__Derived__u___401_om ; + sysx:declaredKeyword "#" ; + sysml:type elmt:HeadOrder__Tag ; + sysx:hasBody "false"^^xsd:boolean ; + sysml:ownedTyping elmt:HeadOrder__Derived__u___401_ft0 ; + sysml:ownedSpecialization elmt:HeadOrder__Derived__u___401_ft0 ; + sysml:ownedRelationship elmt:HeadOrder__Derived__u___401_ft0 . + +elmt:HeadOrder__Derived__u___401_om + a sysml:OwningMembership ; + sysml:elementId "HeadOrder__Derived__u___401_om" ; + sysml:owner elmt:HeadOrder__Derived__u ; + sysml:memberElement elmt:HeadOrder__Derived__u___401 ; + sysml:ownedMemberElement elmt:HeadOrder__Derived__u___401 ; + sysml:ownedRelatedElement elmt:HeadOrder__Derived__u___401 ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__u ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived__u . + +expr:HeadOrder__Derived__u_pmultiplicity + a sysml:MultiplicityRange ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:elementId "HeadOrder__Derived__u_pmultiplicity" ; + sysml:owner elmt:HeadOrder__Derived__u ; + sysml:owningRelationship expr:HeadOrder__Derived__u_pmultiplicity_om ; + sysml:owningMembership expr:HeadOrder__Derived__u_pmultiplicity_om ; + sysml:upperBound expr:HeadOrder__Derived__u_pupperBound ; + sysml:ownedRelationship expr:HeadOrder__Derived__u_pupperBound_om ; + sysml:ownedMembership expr:HeadOrder__Derived__u_pupperBound_om . + +expr:HeadOrder__Derived__u_pmultiplicity_om + a sysml:OwningMembership ; + sysml:elementId "HeadOrder__Derived__u_pmultiplicity_om" ; + sysml:owner elmt:HeadOrder__Derived__u ; + sysml:memberElement expr:HeadOrder__Derived__u_pmultiplicity ; + sysml:ownedMemberElement expr:HeadOrder__Derived__u_pmultiplicity ; + sysml:ownedRelatedElement expr:HeadOrder__Derived__u_pmultiplicity ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__u ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived__u . + +expr:HeadOrder__Derived__u_pupperBound + a sysml:LiteralInteger ; + sysx:sourceText "1" ; + sysml:elementId "HeadOrder__Derived__u_pupperBound" ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:value "1"^^xsd:integer ; + sysml:owner expr:HeadOrder__Derived__u_pmultiplicity ; + sysml:owningRelationship expr:HeadOrder__Derived__u_pupperBound_om ; + sysml:owningMembership expr:HeadOrder__Derived__u_pupperBound_om . + +expr:HeadOrder__Derived__u_pupperBound_om + a sysml:OwningMembership ; + sysml:elementId "HeadOrder__Derived__u_pupperBound_om" ; + sysml:owner expr:HeadOrder__Derived__u_pmultiplicity ; + sysml:memberElement expr:HeadOrder__Derived__u_pupperBound ; + sysml:ownedMemberElement expr:HeadOrder__Derived__u_pupperBound ; + sysml:ownedRelatedElement expr:HeadOrder__Derived__u_pupperBound ; + sysml:owningRelatedElement expr:HeadOrder__Derived__u_pmultiplicity ; + sysml:membershipOwningNamespace expr:HeadOrder__Derived__u_pmultiplicity . + +expr:HeadOrder__Derived__u_pvalue + a sysml:LiteralInteger ; + sysx:sourceText "5" ; + sysml:elementId "HeadOrder__Derived__u_pvalue" ; + sysml:isComposite "false"^^xsd:boolean ; + sysml:value "5"^^xsd:integer ; + sysml:owner elmt:HeadOrder__Derived__u ; + sysml:owningRelationship expr:HeadOrder__Derived__u_pvalue_om ; + sysml:owningMembership expr:HeadOrder__Derived__u_pvalue_om . + +expr:HeadOrder__Derived__u_pvalue_om + a sysml:FeatureValue ; + sysml:elementId "HeadOrder__Derived__u_pvalue_om" ; + sysml:owner elmt:HeadOrder__Derived__u ; + sysml:memberElement expr:HeadOrder__Derived__u_pvalue ; + sysml:ownedMemberElement expr:HeadOrder__Derived__u_pvalue ; + sysml:ownedRelatedElement expr:HeadOrder__Derived__u_pvalue ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__u ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived__u ; + sysml:featureWithValue elmt:HeadOrder__Derived__u ; + sysml:value expr:HeadOrder__Derived__u_pvalue . + +elmt:HeadOrder__Derived__u___400 + a sysml:Documentation ; + sysml:qualifiedName "HeadOrder::Derived::u::@0" ; + sysx:sourceLine "19"^^xsd:integer ; + sysx:sourceColumn "13"^^xsd:integer ; + sysx:sourceEndLine "19"^^xsd:integer ; + sysx:sourceEndColumn "51"^^xsd:integer ; + sysml:elementId "HeadOrder__Derived__u___400" ; + sysx:memberIndex "0"^^xsd:integer ; + sysml:owningNamespace elmt:HeadOrder__Derived__u ; + sysml:owner elmt:HeadOrder__Derived__u ; + sysml:owningRelationship elmt:HeadOrder__Derived__u___400_om ; + sysml:owningMembership elmt:HeadOrder__Derived__u___400_om ; + sysml:body "a body member after the head " ; + sysx:sourceText " doc /* a body member after the head */\n" . + +elmt:HeadOrder__Derived__u___400_om + a sysml:OwningMembership ; + sysml:elementId "HeadOrder__Derived__u___400_om" ; + sysml:owner elmt:HeadOrder__Derived__u ; + sysml:memberElement elmt:HeadOrder__Derived__u___400 ; + sysml:ownedMemberElement elmt:HeadOrder__Derived__u___400 ; + sysml:ownedRelatedElement elmt:HeadOrder__Derived__u___400 ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__u ; + sysml:membershipOwningNamespace elmt:HeadOrder__Derived__u . + +elmt:HeadOrder__Base__m_ft0 + a sysml:FeatureTyping ; + sysml:elementId "HeadOrder__Base__m_ft0" ; + sysml:typedFeature elmt:HeadOrder__Base__m ; + sysml:owningFeature elmt:HeadOrder__Base__m ; + sysml:specific elmt:HeadOrder__Base__m ; + sysml:source elmt:HeadOrder__Base__m ; + sysml:owningRelatedElement elmt:HeadOrder__Base__m ; + sysml:type elmt:HeadOrder__Mass ; + sysml:general elmt:HeadOrder__Mass ; + sysml:target elmt:HeadOrder__Mass ; + sysml:owner elmt:HeadOrder__Base__m ; + sysml:relatedElement elmt:HeadOrder__Base__m, elmt:HeadOrder__Mass ; + json:relatedElement "[{\"@id\":\"HeadOrder__Base__m\"},{\"@id\":\"HeadOrder__Mass\"}]" . + +elmt:HeadOrder__Base__n_ft0 + a sysml:FeatureTyping ; + sysml:elementId "HeadOrder__Base__n_ft0" ; + sysml:typedFeature elmt:HeadOrder__Base__n ; + sysml:owningFeature elmt:HeadOrder__Base__n ; + sysml:specific elmt:HeadOrder__Base__n ; + sysml:source elmt:HeadOrder__Base__n ; + sysml:owningRelatedElement elmt:HeadOrder__Base__n ; + sysml:type ; + sysml:general ; + sysml:target ; + sysml:owner elmt:HeadOrder__Base__n ; + sysml:relatedElement elmt:HeadOrder__Base__n, ; + json:relatedElement "[{\"@id\":\"HeadOrder__Base__n\"},{\"@id\":\"14c0aa22-5489-59b5-b438-ded26e83ba31\"}]" . + +elmt:HeadOrder__Base__p_ft0 + a sysml:FeatureTyping ; + sysml:elementId "HeadOrder__Base__p_ft0" ; + sysml:typedFeature elmt:HeadOrder__Base__p ; + sysml:owningFeature elmt:HeadOrder__Base__p ; + sysml:specific elmt:HeadOrder__Base__p ; + sysml:source elmt:HeadOrder__Base__p ; + sysml:owningRelatedElement elmt:HeadOrder__Base__p ; + sysml:type ; + sysml:general ; + sysml:target ; + sysml:owner elmt:HeadOrder__Base__p ; + sysml:relatedElement elmt:HeadOrder__Base__p, ; + json:relatedElement "[{\"@id\":\"HeadOrder__Base__p\"},{\"@id\":\"14c0aa22-5489-59b5-b438-ded26e83ba31\"}]" . + +elmt:HeadOrder__Derived_sc0 + a sysml:Subclassification ; + sysml:elementId "HeadOrder__Derived_sc0" ; + sysml:subclassifier elmt:HeadOrder__Derived ; + sysml:owningClassifier elmt:HeadOrder__Derived ; + sysml:specific elmt:HeadOrder__Derived ; + sysml:source elmt:HeadOrder__Derived ; + sysml:owningRelatedElement elmt:HeadOrder__Derived ; + sysml:superclassifier elmt:HeadOrder__Base ; + sysml:general elmt:HeadOrder__Base ; + sysml:target elmt:HeadOrder__Base ; + sysml:owner elmt:HeadOrder__Derived ; + sysml:relatedElement elmt:HeadOrder__Derived, elmt:HeadOrder__Base ; + json:relatedElement "[{\"@id\":\"HeadOrder__Derived\"},{\"@id\":\"HeadOrder__Base\"}]" . + +elmt:HeadOrder__Derived__m_rd0 + a sysml:Redefinition ; + sysml:elementId "HeadOrder__Derived__m_rd0" ; + sysml:redefiningFeature elmt:HeadOrder__Derived__m ; + sysml:subsettingFeature elmt:HeadOrder__Derived__m ; + sysml:owningFeature elmt:HeadOrder__Derived__m ; + sysml:specific elmt:HeadOrder__Derived__m ; + sysml:source elmt:HeadOrder__Derived__m ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__m ; + sysml:redefinedFeature elmt:HeadOrder__Base__m ; + sysml:subsettedFeature elmt:HeadOrder__Base__m ; + sysml:general elmt:HeadOrder__Base__m ; + sysml:target elmt:HeadOrder__Base__m ; + sysml:owner elmt:HeadOrder__Derived__m ; + sysml:relatedElement elmt:HeadOrder__Derived__m, elmt:HeadOrder__Base__m ; + json:relatedElement "[{\"@id\":\"HeadOrder__Derived__m\"},{\"@id\":\"HeadOrder__Base__m\"}]" . + +elmt:HeadOrder__Derived__n_rd0 + a sysml:Redefinition ; + sysml:elementId "HeadOrder__Derived__n_rd0" ; + sysml:redefiningFeature elmt:HeadOrder__Derived__n ; + sysml:subsettingFeature elmt:HeadOrder__Derived__n ; + sysml:owningFeature elmt:HeadOrder__Derived__n ; + sysml:specific elmt:HeadOrder__Derived__n ; + sysml:source elmt:HeadOrder__Derived__n ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__n ; + sysml:redefinedFeature elmt:HeadOrder__Base__n ; + sysml:subsettedFeature elmt:HeadOrder__Base__n ; + sysml:general elmt:HeadOrder__Base__n ; + sysml:target elmt:HeadOrder__Base__n ; + sysml:owner elmt:HeadOrder__Derived__n ; + sysml:relatedElement elmt:HeadOrder__Derived__n, elmt:HeadOrder__Base__n ; + json:relatedElement "[{\"@id\":\"HeadOrder__Derived__n\"},{\"@id\":\"HeadOrder__Base__n\"}]" . + +elmt:HeadOrder__Derived__n_ft0 + a sysml:FeatureTyping ; + sysml:elementId "HeadOrder__Derived__n_ft0" ; + sysml:typedFeature elmt:HeadOrder__Derived__n ; + sysml:owningFeature elmt:HeadOrder__Derived__n ; + sysml:specific elmt:HeadOrder__Derived__n ; + sysml:source elmt:HeadOrder__Derived__n ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__n ; + sysml:type ; + sysml:general ; + sysml:target ; + sysml:owner elmt:HeadOrder__Derived__n ; + sysml:relatedElement elmt:HeadOrder__Derived__n, ; + json:relatedElement "[{\"@id\":\"HeadOrder__Derived__n\"},{\"@id\":\"14c0aa22-5489-59b5-b438-ded26e83ba31\"}]" . + +elmt:HeadOrder__Derived__q_ft0 + a sysml:FeatureTyping ; + sysml:elementId "HeadOrder__Derived__q_ft0" ; + sysml:typedFeature elmt:HeadOrder__Derived__q ; + sysml:owningFeature elmt:HeadOrder__Derived__q ; + sysml:specific elmt:HeadOrder__Derived__q ; + sysml:source elmt:HeadOrder__Derived__q ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__q ; + sysml:type ; + sysml:general ; + sysml:target ; + sysml:owner elmt:HeadOrder__Derived__q ; + sysml:relatedElement elmt:HeadOrder__Derived__q, ; + json:relatedElement "[{\"@id\":\"HeadOrder__Derived__q\"},{\"@id\":\"14c0aa22-5489-59b5-b438-ded26e83ba31\"}]" . + +elmt:HeadOrder__Derived__q_ss0 + a sysml:Subsetting ; + sysml:elementId "HeadOrder__Derived__q_ss0" ; + sysml:subsettingFeature elmt:HeadOrder__Derived__q ; + sysml:owningFeature elmt:HeadOrder__Derived__q ; + sysml:specific elmt:HeadOrder__Derived__q ; + sysml:source elmt:HeadOrder__Derived__q ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__q ; + sysml:subsettedFeature elmt:HeadOrder__Derived__p ; + sysml:general elmt:HeadOrder__Derived__p ; + sysml:target elmt:HeadOrder__Derived__p ; + sysml:owner elmt:HeadOrder__Derived__q ; + sysml:relatedElement elmt:HeadOrder__Derived__q, elmt:HeadOrder__Derived__p ; + json:relatedElement "[{\"@id\":\"HeadOrder__Derived__q\"},{\"@id\":\"HeadOrder__Derived__p\"}]" . + +elmt:HeadOrder__Derived__r_ft0 + a sysml:FeatureTyping ; + sysml:elementId "HeadOrder__Derived__r_ft0" ; + sysml:typedFeature elmt:HeadOrder__Derived__r ; + sysml:owningFeature elmt:HeadOrder__Derived__r ; + sysml:specific elmt:HeadOrder__Derived__r ; + sysml:source elmt:HeadOrder__Derived__r ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__r ; + sysml:type ; + sysml:general ; + sysml:target ; + sysml:owner elmt:HeadOrder__Derived__r ; + sysml:relatedElement elmt:HeadOrder__Derived__r, ; + json:relatedElement "[{\"@id\":\"HeadOrder__Derived__r\"},{\"@id\":\"14c0aa22-5489-59b5-b438-ded26e83ba31\"}]" . + +elmt:HeadOrder__Derived__p_rd0 + a sysml:Redefinition ; + sysml:elementId "HeadOrder__Derived__p_rd0" ; + sysml:redefiningFeature elmt:HeadOrder__Derived__p ; + sysml:subsettingFeature elmt:HeadOrder__Derived__p ; + sysml:owningFeature elmt:HeadOrder__Derived__p ; + sysml:specific elmt:HeadOrder__Derived__p ; + sysml:source elmt:HeadOrder__Derived__p ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__p ; + sysml:redefinedFeature elmt:HeadOrder__Base__p ; + sysml:subsettedFeature elmt:HeadOrder__Base__p ; + sysml:general elmt:HeadOrder__Base__p ; + sysml:target elmt:HeadOrder__Base__p ; + sysml:owner elmt:HeadOrder__Derived__p ; + sysml:relatedElement elmt:HeadOrder__Derived__p, elmt:HeadOrder__Base__p ; + json:relatedElement "[{\"@id\":\"HeadOrder__Derived__p\"},{\"@id\":\"HeadOrder__Base__p\"}]" . + +elmt:HeadOrder__Derived__s_ft0 + a sysml:FeatureTyping ; + sysml:elementId "HeadOrder__Derived__s_ft0" ; + sysml:typedFeature elmt:HeadOrder__Derived__s ; + sysml:owningFeature elmt:HeadOrder__Derived__s ; + sysml:specific elmt:HeadOrder__Derived__s ; + sysml:source elmt:HeadOrder__Derived__s ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__s ; + sysml:type ; + sysml:general ; + sysml:target ; + sysml:owner elmt:HeadOrder__Derived__s ; + sysml:relatedElement elmt:HeadOrder__Derived__s, ; + json:relatedElement "[{\"@id\":\"HeadOrder__Derived__s\"},{\"@id\":\"14c0aa22-5489-59b5-b438-ded26e83ba31\"}]" . + +elmt:HeadOrder__Derived__s_ss0 + a sysml:Subsetting ; + sysml:elementId "HeadOrder__Derived__s_ss0" ; + sysml:subsettingFeature elmt:HeadOrder__Derived__s ; + sysml:owningFeature elmt:HeadOrder__Derived__s ; + sysml:specific elmt:HeadOrder__Derived__s ; + sysml:source elmt:HeadOrder__Derived__s ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__s ; + sysml:subsettedFeature elmt:HeadOrder__Derived__p ; + sysml:general elmt:HeadOrder__Derived__p ; + sysml:target elmt:HeadOrder__Derived__p ; + sysml:owner elmt:HeadOrder__Derived__s ; + sysml:relatedElement elmt:HeadOrder__Derived__s, elmt:HeadOrder__Derived__p ; + json:relatedElement "[{\"@id\":\"HeadOrder__Derived__s\"},{\"@id\":\"HeadOrder__Derived__p\"}]" . + +elmt:HeadOrder__Derived__t_ss0 + a sysml:Subsetting ; + sysml:elementId "HeadOrder__Derived__t_ss0" ; + sysml:subsettingFeature elmt:HeadOrder__Derived__t ; + sysml:owningFeature elmt:HeadOrder__Derived__t ; + sysml:specific elmt:HeadOrder__Derived__t ; + sysml:source elmt:HeadOrder__Derived__t ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__t ; + sysml:subsettedFeature elmt:HeadOrder__Derived__p ; + sysml:general elmt:HeadOrder__Derived__p ; + sysml:target elmt:HeadOrder__Derived__p ; + sysml:owner elmt:HeadOrder__Derived__t ; + sysml:relatedElement elmt:HeadOrder__Derived__t, elmt:HeadOrder__Derived__p ; + json:relatedElement "[{\"@id\":\"HeadOrder__Derived__t\"},{\"@id\":\"HeadOrder__Derived__p\"}]" . + +elmt:HeadOrder__Derived__t_ft0 + a sysml:FeatureTyping ; + sysml:elementId "HeadOrder__Derived__t_ft0" ; + sysml:typedFeature elmt:HeadOrder__Derived__t ; + sysml:owningFeature elmt:HeadOrder__Derived__t ; + sysml:specific elmt:HeadOrder__Derived__t ; + sysml:source elmt:HeadOrder__Derived__t ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__t ; + sysml:type ; + sysml:general ; + sysml:target ; + sysml:owner elmt:HeadOrder__Derived__t ; + sysml:relatedElement elmt:HeadOrder__Derived__t, ; + json:relatedElement "[{\"@id\":\"HeadOrder__Derived__t\"},{\"@id\":\"14c0aa22-5489-59b5-b438-ded26e83ba31\"}]" . + +elmt:HeadOrder__Derived__u_ft0 + a sysml:FeatureTyping ; + sysml:elementId "HeadOrder__Derived__u_ft0" ; + sysml:typedFeature elmt:HeadOrder__Derived__u ; + sysml:owningFeature elmt:HeadOrder__Derived__u ; + sysml:specific elmt:HeadOrder__Derived__u ; + sysml:source elmt:HeadOrder__Derived__u ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__u ; + sysml:type ; + sysml:general ; + sysml:target ; + sysml:owner elmt:HeadOrder__Derived__u ; + sysml:relatedElement elmt:HeadOrder__Derived__u, ; + json:relatedElement "[{\"@id\":\"HeadOrder__Derived__u\"},{\"@id\":\"14c0aa22-5489-59b5-b438-ded26e83ba31\"}]" . + +elmt:HeadOrder__Derived__u___401_ft0 + a sysml:FeatureTyping ; + sysml:elementId "HeadOrder__Derived__u___401_ft0" ; + sysml:typedFeature elmt:HeadOrder__Derived__u___401 ; + sysml:owningFeature elmt:HeadOrder__Derived__u___401 ; + sysml:specific elmt:HeadOrder__Derived__u___401 ; + sysml:source elmt:HeadOrder__Derived__u___401 ; + sysml:owningRelatedElement elmt:HeadOrder__Derived__u___401 ; + sysml:type elmt:HeadOrder__Tag ; + sysml:general elmt:HeadOrder__Tag ; + sysml:target elmt:HeadOrder__Tag ; + sysml:owner elmt:HeadOrder__Derived__u___401 ; + sysml:relatedElement elmt:HeadOrder__Derived__u___401, elmt:HeadOrder__Tag ; + json:relatedElement "[{\"@id\":\"HeadOrder__Derived__u___401\"},{\"@id\":\"HeadOrder__Tag\"}]" . + + + a sysml:DataType ; + sysml:elementId "14c0aa22-5489-59b5-b438-ded26e83ba31" ; + sysml:qualifiedName "ScalarValues::Real" ; + sysml:declaredName "Real" ; + sysml:isLibraryElement "true"^^xsd:boolean . + + + a sysml:LibraryPackage ; + sysml:elementId "40bb440c-5036-58e1-8675-5afccb8b8f1d" ; + sysml:qualifiedName "ScalarValues" ; + sysml:declaredName "ScalarValues" ; + sysml:isLibraryElement "true"^^xsd:boolean . diff --git a/tests/export/testdata/convert/declaration_head_order.sysml b/tests/export/testdata/convert/declaration_head_order.sysml new file mode 100644 index 0000000000..2edc63be1e --- /dev/null +++ b/tests/export/testdata/convert/declaration_head_order.sysml @@ -0,0 +1,22 @@ +package HeadOrder { + private import ScalarValues::*; + metadata def Tag; + attribute def Mass; + part def Base { + attribute m : Mass; + attribute n : Real; + attribute p : Real; + } + part def Derived :> Base { + attribute redefines m = 1; + attribute :>> n : Real = 2; + attribute q : Real subsets p; + attribute r : Real = 3; + attribute :>> p default = 4; + attribute s : Real [2] :> p; + attribute t :> p [1..3] : Real; + #Tag attribute u : Real [1] = 5 { + doc /* a body member after the head */ + } + } +} diff --git a/tests/export/testdata/convert/docs_before_members.golden.ttl b/tests/export/testdata/convert/docs_before_members.golden.ttl index ade5a22077..f8a7aeac41 100644 --- a/tests/export/testdata/convert/docs_before_members.golden.ttl +++ b/tests/export/testdata/convert/docs_before_members.golden.ttl @@ -331,7 +331,7 @@ elmt:Documented__wheel sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:Documented__wheel___400, elmt:Documented__wheel__serial ; sysml:ownedMembership elmt:Documented__wheel___400_om, elmt:Documented__wheel__serial_om ; - sysml:ownedRelationship elmt:Documented__wheel___400_om, elmt:Documented__wheel__serial_om, elmt:Documented__wheel_ft0 ; + sysml:ownedRelationship elmt:Documented__wheel_ft0, elmt:Documented__wheel___400_om, elmt:Documented__wheel__serial_om ; sysml:ownedFeature elmt:Documented__wheel__serial ; sysml:ownedFeatureMembership elmt:Documented__wheel__serial_om ; sysml:ownedTyping elmt:Documented__wheel_ft0 ; @@ -340,7 +340,7 @@ elmt:Documented__wheel sysx:sourceTail " }\n" ; json:ownedMember "[{\"@id\":\"Documented__wheel___400\"},{\"@id\":\"Documented__wheel__serial\"}]" ; json:ownedMembership "[{\"@id\":\"Documented__wheel___400_om\"},{\"@id\":\"Documented__wheel__serial_om\"}]" ; - json:ownedRelationship "[{\"@id\":\"Documented__wheel___400_om\"},{\"@id\":\"Documented__wheel__serial_om\"},{\"@id\":\"Documented__wheel_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"Documented__wheel_ft0\"},{\"@id\":\"Documented__wheel___400_om\"},{\"@id\":\"Documented__wheel__serial_om\"}]" . elmt:Documented__wheel_om a sysml:OwningMembership ; diff --git a/tests/export/testdata/convert/end_binding_bodies.golden.ttl.sha256 b/tests/export/testdata/convert/end_binding_bodies.golden.ttl.sha256 index 35bb5c0105..dc6fb52df9 100644 --- a/tests/export/testdata/convert/end_binding_bodies.golden.ttl.sha256 +++ b/tests/export/testdata/convert/end_binding_bodies.golden.ttl.sha256 @@ -1,4 +1,4 @@ -sha256 01d24ded3d659adbc9a958574843d8e304bfdfa90573085b4a9e1759de45a938 bytes 272962 lines 5008 +sha256 3a096cebb40f1b81ff477383ce9a2d69369960f6ed5d6c5af9ce512d8d74fe66 bytes 272962 lines 5008 @prefix elmt: . @prefix expr: . @prefix json: . diff --git a/tests/export/testdata/convert/end_prefix_metadata.golden.ttl b/tests/export/testdata/convert/end_prefix_metadata.golden.ttl index 8b008b41a4..a32faa2a28 100644 --- a/tests/export/testdata/convert/end_prefix_metadata.golden.ttl +++ b/tests/export/testdata/convert/end_prefix_metadata.golden.ttl @@ -435,12 +435,12 @@ elmt:EndPrefixMetadata__Derivation__cause sysml:type elmt:EndPrefixMetadata__Req1 ; sysml:ownedMember elmt:EndPrefixMetadata__Derivation__cause___400 ; sysml:ownedMembership elmt:EndPrefixMetadata__Derivation__cause___400_om ; - sysml:ownedRelationship elmt:EndPrefixMetadata__Derivation__cause___400_om, elmt:EndPrefixMetadata__Derivation__cause_ft0 ; + sysml:ownedRelationship elmt:EndPrefixMetadata__Derivation__cause_ft0, elmt:EndPrefixMetadata__Derivation__cause___400_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:EndPrefixMetadata__Derivation__cause_ft0 ; sysml:ownedSpecialization elmt:EndPrefixMetadata__Derivation__cause_ft0 ; sysx:sourceText " end [*] ref cause : Req1;\n" ; - json:ownedRelationship "[{\"@id\":\"EndPrefixMetadata__Derivation__cause___400_om\"},{\"@id\":\"EndPrefixMetadata__Derivation__cause_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"EndPrefixMetadata__Derivation__cause_ft0\"},{\"@id\":\"EndPrefixMetadata__Derivation__cause___400_om\"}]" . elmt:EndPrefixMetadata__Derivation__cause_om a sysml:FeatureMembership ; @@ -542,14 +542,14 @@ elmt:EndPrefixMetadata__Derivation__effect sysml:isEnd "true"^^xsd:boolean ; sysml:type elmt:EndPrefixMetadata__Req1_5f1 ; sysml:multiplicity expr:EndPrefixMetadata__Derivation__effect_pmultiplicity ; - sysml:ownedRelationship expr:EndPrefixMetadata__Derivation__effect_pmultiplicity_om, elmt:EndPrefixMetadata__Derivation__effect_ft0 ; + sysml:ownedRelationship elmt:EndPrefixMetadata__Derivation__effect_ft0, expr:EndPrefixMetadata__Derivation__effect_pmultiplicity_om ; sysml:ownedMembership expr:EndPrefixMetadata__Derivation__effect_pmultiplicity_om ; sysml:upperBound expr:EndPrefixMetadata__Derivation__effect_pupperBound ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:EndPrefixMetadata__Derivation__effect_ft0 ; sysml:ownedSpecialization elmt:EndPrefixMetadata__Derivation__effect_ft0 ; sysx:sourceText " end ref attribute effect : Req1_1[*];\n" ; - json:ownedRelationship "[{\"@id\":\"EndPrefixMetadata__Derivation__effect_pmultiplicity_om\"},{\"@id\":\"EndPrefixMetadata__Derivation__effect_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"EndPrefixMetadata__Derivation__effect_ft0\"},{\"@id\":\"EndPrefixMetadata__Derivation__effect_pmultiplicity_om\"}]" . elmt:EndPrefixMetadata__Derivation__effect_om a sysml:FeatureMembership ; @@ -726,7 +726,7 @@ elmt:EndPrefixMetadata__context___402 sysml:isComposite "true"^^xsd:boolean ; sysml:ownedMember elmt:EndPrefixMetadata__context___402___402, elmt:EndPrefixMetadata__context___402__r1, elmt:EndPrefixMetadata__context___402__r1_5f1 ; sysml:ownedMembership elmt:EndPrefixMetadata__context___402___402_om, elmt:EndPrefixMetadata__context___402__r1_om, elmt:EndPrefixMetadata__context___402__r1_5f1_om ; - sysml:ownedRelationship elmt:EndPrefixMetadata__context___402___402_om, elmt:EndPrefixMetadata__context___402__r1_om, elmt:EndPrefixMetadata__context___402__r1_5f1_om, elmt:EndPrefixMetadata__context___402_ft0 ; + sysml:ownedRelationship elmt:EndPrefixMetadata__context___402___402_om, elmt:EndPrefixMetadata__context___402_ft0, elmt:EndPrefixMetadata__context___402__r1_om, elmt:EndPrefixMetadata__context___402__r1_5f1_om ; sysml:type elmt:EndPrefixMetadata__Derivation ; sysx:hasBody "true"^^xsd:boolean ; sysml:ownedFeature elmt:EndPrefixMetadata__context___402__r1, elmt:EndPrefixMetadata__context___402__r1_5f1 ; @@ -737,7 +737,7 @@ elmt:EndPrefixMetadata__context___402 sysx:sourceTail " }\n" ; json:ownedMember "[{\"@id\":\"EndPrefixMetadata__context___402___402\"},{\"@id\":\"EndPrefixMetadata__context___402__r1\"},{\"@id\":\"EndPrefixMetadata__context___402__r1_5f1\"}]" ; json:ownedMembership "[{\"@id\":\"EndPrefixMetadata__context___402___402_om\"},{\"@id\":\"EndPrefixMetadata__context___402__r1_om\"},{\"@id\":\"EndPrefixMetadata__context___402__r1_5f1_om\"}]" ; - json:ownedRelationship "[{\"@id\":\"EndPrefixMetadata__context___402___402_om\"},{\"@id\":\"EndPrefixMetadata__context___402__r1_om\"},{\"@id\":\"EndPrefixMetadata__context___402__r1_5f1_om\"},{\"@id\":\"EndPrefixMetadata__context___402_ft0\"}]" ; + json:ownedRelationship "[{\"@id\":\"EndPrefixMetadata__context___402___402_om\"},{\"@id\":\"EndPrefixMetadata__context___402_ft0\"},{\"@id\":\"EndPrefixMetadata__context___402__r1_om\"},{\"@id\":\"EndPrefixMetadata__context___402__r1_5f1_om\"}]" ; json:ownedFeature "[{\"@id\":\"EndPrefixMetadata__context___402__r1\"},{\"@id\":\"EndPrefixMetadata__context___402__r1_5f1\"}]" ; json:ownedFeatureMembership "[{\"@id\":\"EndPrefixMetadata__context___402__r1_om\"},{\"@id\":\"EndPrefixMetadata__context___402__r1_5f1_om\"}]" . diff --git a/tests/export/testdata/convert/feature_chains.golden.ttl b/tests/export/testdata/convert/feature_chains.golden.ttl index f1ff6b16df..8bf166c734 100644 --- a/tests/export/testdata/convert/feature_chains.golden.ttl +++ b/tests/export/testdata/convert/feature_chains.golden.ttl @@ -675,7 +675,7 @@ elmt:Chains__ctx__ic sysml:declaredName "ic" ; sysml:type elmt:Chains__II ; sysml:connectorEnd expr:Chains__ctx__ic_pend0, expr:Chains__ctx__ic_pend1 ; - sysml:ownedRelationship expr:Chains__ctx__ic_pend0_om, expr:Chains__ctx__ic_pend1_om, elmt:Chains__ctx__ic_ft0 ; + sysml:ownedRelationship elmt:Chains__ctx__ic_ft0, expr:Chains__ctx__ic_pend0_om, expr:Chains__ctx__ic_pend1_om ; sysml:ownedMembership expr:Chains__ctx__ic_pend0_om, expr:Chains__ctx__ic_pend1_om ; sysml:ownedMember expr:Chains__ctx__ic_pend0, expr:Chains__ctx__ic_pend1 ; sysml:ownedFeatureMembership expr:Chains__ctx__ic_pend0_om, expr:Chains__ctx__ic_pend1_om ; @@ -688,7 +688,7 @@ elmt:Chains__ctx__ic sysml:ownedSpecialization elmt:Chains__ctx__ic_ft0 ; sysx:sourceText " interface ic : II connect launchVehicle.instrumentUnit.pip to supplier.pip;\n" ; json:connectorEnd "[{\"@id\":\"Chains__ctx__ic_pend0\"},{\"@id\":\"Chains__ctx__ic_pend1\"}]" ; - json:ownedRelationship "[{\"@id\":\"Chains__ctx__ic_pend0_om\"},{\"@id\":\"Chains__ctx__ic_pend1_om\"},{\"@id\":\"Chains__ctx__ic_ft0\"}]" ; + json:ownedRelationship "[{\"@id\":\"Chains__ctx__ic_ft0\"},{\"@id\":\"Chains__ctx__ic_pend0_om\"},{\"@id\":\"Chains__ctx__ic_pend1_om\"}]" ; json:ownedMembership "[{\"@id\":\"Chains__ctx__ic_pend0_om\"},{\"@id\":\"Chains__ctx__ic_pend1_om\"}]" ; json:ownedMember "[{\"@id\":\"Chains__ctx__ic_pend0\"},{\"@id\":\"Chains__ctx__ic_pend1\"}]" ; json:ownedFeatureMembership "[{\"@id\":\"Chains__ctx__ic_pend0_om\"},{\"@id\":\"Chains__ctx__ic_pend1_om\"}]" ; diff --git a/tests/export/testdata/convert/feature_chains_repeated.golden.ttl b/tests/export/testdata/convert/feature_chains_repeated.golden.ttl index 2fbdaeb677..3995ea7f13 100644 --- a/tests/export/testdata/convert/feature_chains_repeated.golden.ttl +++ b/tests/export/testdata/convert/feature_chains_repeated.golden.ttl @@ -212,14 +212,14 @@ elmt:P__h sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:P__h__r ; sysml:ownedMembership elmt:P__h__r_om ; - sysml:ownedRelationship elmt:P__h__r_om, elmt:P__h_ft0 ; + sysml:ownedRelationship elmt:P__h_ft0, elmt:P__h__r_om ; sysml:ownedFeature elmt:P__h__r ; sysml:ownedFeatureMembership elmt:P__h__r_om ; sysml:ownedTyping elmt:P__h_ft0 ; sysml:ownedSpecialization elmt:P__h_ft0 ; sysx:sourceText " part h : H {\n" ; sysx:sourceTail " }\n" ; - json:ownedRelationship "[{\"@id\":\"P__h__r_om\"},{\"@id\":\"P__h_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"P__h_ft0\"},{\"@id\":\"P__h__r_om\"}]" . elmt:P__h_om a sysml:OwningMembership ; diff --git a/tests/export/testdata/convert/feature_prefixes.golden.ttl b/tests/export/testdata/convert/feature_prefixes.golden.ttl index 0a78fafa47..42712ecf43 100644 --- a/tests/export/testdata/convert/feature_prefixes.golden.ttl +++ b/tests/export/testdata/convert/feature_prefixes.golden.ttl @@ -259,7 +259,7 @@ elmt:FeaturePrefixes__B__slices sysml:type elmt:FeaturePrefixes__A ; sysml:subsets elmt:FeaturePrefixes__B__p ; sysml:multiplicity expr:FeaturePrefixes__B__slices_pmultiplicity ; - sysml:ownedRelationship expr:FeaturePrefixes__B__slices_pmultiplicity_om, elmt:FeaturePrefixes__B__slices_ft0, elmt:FeaturePrefixes__B__slices_ss0 ; + sysml:ownedRelationship elmt:FeaturePrefixes__B__slices_ft0, expr:FeaturePrefixes__B__slices_pmultiplicity_om, elmt:FeaturePrefixes__B__slices_ss0 ; sysml:ownedMembership expr:FeaturePrefixes__B__slices_pmultiplicity_om ; sysml:lowerBound expr:FeaturePrefixes__B__slices_plowerBound ; sysml:upperBound expr:FeaturePrefixes__B__slices_pupperBound ; @@ -268,7 +268,7 @@ elmt:FeaturePrefixes__B__slices sysml:ownedSpecialization elmt:FeaturePrefixes__B__slices_ft0, elmt:FeaturePrefixes__B__slices_ss0 ; sysml:ownedSubsetting elmt:FeaturePrefixes__B__slices_ss0 ; sysx:sourceText " portion feature all slices : A[1..*] subsets p;\n" ; - json:ownedRelationship "[{\"@id\":\"FeaturePrefixes__B__slices_pmultiplicity_om\"},{\"@id\":\"FeaturePrefixes__B__slices_ft0\"},{\"@id\":\"FeaturePrefixes__B__slices_ss0\"}]" ; + json:ownedRelationship "[{\"@id\":\"FeaturePrefixes__B__slices_ft0\"},{\"@id\":\"FeaturePrefixes__B__slices_pmultiplicity_om\"},{\"@id\":\"FeaturePrefixes__B__slices_ss0\"}]" ; json:ownedSpecialization "[{\"@id\":\"FeaturePrefixes__B__slices_ft0\"},{\"@id\":\"FeaturePrefixes__B__slices_ss0\"}]" . elmt:FeaturePrefixes__B__slices_om @@ -364,7 +364,7 @@ elmt:FeaturePrefixes__C sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:FeaturePrefixes__C__p, elmt:FeaturePrefixes__C__pv, elmt:FeaturePrefixes__C__dk ; sysml:ownedMembership elmt:FeaturePrefixes__C__p_om, elmt:FeaturePrefixes__C__pv_om, elmt:FeaturePrefixes__C__dk_om ; - sysml:ownedRelationship elmt:FeaturePrefixes__C__p_om, elmt:FeaturePrefixes__C__pv_om, elmt:FeaturePrefixes__C__dk_om, elmt:FeaturePrefixes__C_sp0 ; + sysml:ownedRelationship elmt:FeaturePrefixes__C_sp0, elmt:FeaturePrefixes__C__p_om, elmt:FeaturePrefixes__C__pv_om, elmt:FeaturePrefixes__C__dk_om ; sysml:ownedFeature elmt:FeaturePrefixes__C__p, elmt:FeaturePrefixes__C__pv, elmt:FeaturePrefixes__C__dk ; sysml:ownedFeatureMembership elmt:FeaturePrefixes__C__p_om, elmt:FeaturePrefixes__C__pv_om, elmt:FeaturePrefixes__C__dk_om ; sysml:ownedSpecialization elmt:FeaturePrefixes__C_sp0 ; @@ -372,7 +372,7 @@ elmt:FeaturePrefixes__C sysx:sourceTail " }\n" ; json:ownedMember "[{\"@id\":\"FeaturePrefixes__C__p\"},{\"@id\":\"FeaturePrefixes__C__pv\"},{\"@id\":\"FeaturePrefixes__C__dk\"}]" ; json:ownedMembership "[{\"@id\":\"FeaturePrefixes__C__p_om\"},{\"@id\":\"FeaturePrefixes__C__pv_om\"},{\"@id\":\"FeaturePrefixes__C__dk_om\"}]" ; - json:ownedRelationship "[{\"@id\":\"FeaturePrefixes__C__p_om\"},{\"@id\":\"FeaturePrefixes__C__pv_om\"},{\"@id\":\"FeaturePrefixes__C__dk_om\"},{\"@id\":\"FeaturePrefixes__C_sp0\"}]" ; + json:ownedRelationship "[{\"@id\":\"FeaturePrefixes__C_sp0\"},{\"@id\":\"FeaturePrefixes__C__p_om\"},{\"@id\":\"FeaturePrefixes__C__pv_om\"},{\"@id\":\"FeaturePrefixes__C__dk_om\"}]" ; json:ownedFeature "[{\"@id\":\"FeaturePrefixes__C__p\"},{\"@id\":\"FeaturePrefixes__C__pv\"},{\"@id\":\"FeaturePrefixes__C__dk\"}]" ; json:ownedFeatureMembership "[{\"@id\":\"FeaturePrefixes__C__p_om\"},{\"@id\":\"FeaturePrefixes__C__pv_om\"},{\"@id\":\"FeaturePrefixes__C__dk_om\"}]" . @@ -405,7 +405,7 @@ elmt:FeaturePrefixes__C__p sysml:isPortion "true"^^xsd:boolean ; sysml:redefines elmt:FeaturePrefixes__B__p ; sysml:multiplicity expr:FeaturePrefixes__C__p_pmultiplicity ; - sysml:ownedRelationship expr:FeaturePrefixes__C__p_pmultiplicity_om, elmt:FeaturePrefixes__C__p_rd0 ; + sysml:ownedRelationship elmt:FeaturePrefixes__C__p_rd0, expr:FeaturePrefixes__C__p_pmultiplicity_om ; sysml:ownedMembership expr:FeaturePrefixes__C__p_pmultiplicity_om ; sysml:upperBound expr:FeaturePrefixes__C__p_pupperBound ; sysx:hasBody "false"^^xsd:boolean ; @@ -413,7 +413,7 @@ elmt:FeaturePrefixes__C__p sysml:ownedSubsetting elmt:FeaturePrefixes__C__p_rd0 ; sysml:ownedSpecialization elmt:FeaturePrefixes__C__p_rd0 ; sysx:sourceText " portion feature redefines p [1];\n" ; - json:ownedRelationship "[{\"@id\":\"FeaturePrefixes__C__p_pmultiplicity_om\"},{\"@id\":\"FeaturePrefixes__C__p_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"FeaturePrefixes__C__p_rd0\"},{\"@id\":\"FeaturePrefixes__C__p_pmultiplicity_om\"}]" . elmt:FeaturePrefixes__C__p_om a sysml:FeatureMembership ; @@ -487,14 +487,14 @@ elmt:FeaturePrefixes__C__pv sysml:isPortion "true"^^xsd:boolean ; sysml:redefines elmt:FeaturePrefixes__B__pv ; sysml:value expr:FeaturePrefixes__C__pv_pvalue ; - sysml:ownedRelationship expr:FeaturePrefixes__C__pv_pvalue_om, elmt:FeaturePrefixes__C__pv_rd0 ; + sysml:ownedRelationship elmt:FeaturePrefixes__C__pv_rd0, expr:FeaturePrefixes__C__pv_pvalue_om ; sysml:ownedMembership expr:FeaturePrefixes__C__pv_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedRedefinition elmt:FeaturePrefixes__C__pv_rd0 ; sysml:ownedSubsetting elmt:FeaturePrefixes__C__pv_rd0 ; sysml:ownedSpecialization elmt:FeaturePrefixes__C__pv_rd0 ; sysx:sourceText " portion redefines pv = p;\n" ; - json:ownedRelationship "[{\"@id\":\"FeaturePrefixes__C__pv_pvalue_om\"},{\"@id\":\"FeaturePrefixes__C__pv_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"FeaturePrefixes__C__pv_rd0\"},{\"@id\":\"FeaturePrefixes__C__pv_pvalue_om\"}]" . elmt:FeaturePrefixes__C__pv_om a sysml:FeatureMembership ; diff --git a/tests/export/testdata/convert/imported_references.canonical.golden.sysml b/tests/export/testdata/convert/imported_references.canonical.golden.sysml index c39c30b2e6..4d40af8318 100644 --- a/tests/export/testdata/convert/imported_references.canonical.golden.sysml +++ b/tests/export/testdata/convert/imported_references.canonical.golden.sysml @@ -27,7 +27,7 @@ package R90 { part unresolved : Elsewhere::Missing; } part def B specializes A { - part : Inner::Wheel redefines w; + part redefines w : Inner::Wheel; } part def G1 { part x; diff --git a/tests/export/testdata/convert/imported_references.golden.ttl b/tests/export/testdata/convert/imported_references.golden.ttl index 08b73ce6b9..8d3578ec52 100644 --- a/tests/export/testdata/convert/imported_references.golden.ttl +++ b/tests/export/testdata/convert/imported_references.golden.ttl @@ -465,13 +465,13 @@ elmt:R90__A__t sysml:declaredName "t" ; sysml:type elmt:OtherPkg__Tempo ; sysml:value expr:R90__A__t_pvalue ; - sysml:ownedRelationship expr:R90__A__t_pvalue_om, elmt:R90__A__t_ft0 ; + sysml:ownedRelationship elmt:R90__A__t_ft0, expr:R90__A__t_pvalue_om ; sysml:ownedMembership expr:R90__A__t_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:R90__A__t_ft0 ; sysml:ownedSpecialization elmt:R90__A__t_ft0 ; sysx:sourceText " attribute t : Tempo = Tempo::operative;\n" ; - json:ownedRelationship "[{\"@id\":\"R90__A__t_pvalue_om\"},{\"@id\":\"R90__A__t_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"R90__A__t_ft0\"},{\"@id\":\"R90__A__t_pvalue_om\"}]" . elmt:R90__A__t_om a sysml:FeatureMembership ; @@ -945,14 +945,14 @@ elmt:R90__B sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:R90__B__w ; sysml:ownedMembership elmt:R90__B__w_om ; - sysml:ownedRelationship elmt:R90__B__w_om, elmt:R90__B_sc0 ; + sysml:ownedRelationship elmt:R90__B_sc0, elmt:R90__B__w_om ; sysml:ownedFeature elmt:R90__B__w ; sysml:ownedFeatureMembership elmt:R90__B__w_om ; sysml:ownedSubclassification elmt:R90__B_sc0 ; sysml:ownedSpecialization elmt:R90__B_sc0 ; sysx:sourceText " part def B :> A {\n" ; sysx:sourceTail " }\n" ; - json:ownedRelationship "[{\"@id\":\"R90__B__w_om\"},{\"@id\":\"R90__B_sc0\"}]" . + json:ownedRelationship "[{\"@id\":\"R90__B_sc0\"},{\"@id\":\"R90__B__w_om\"}]" . elmt:R90__B_om a sysml:OwningMembership ; @@ -982,14 +982,14 @@ elmt:R90__B__w sysml:type elmt:OtherPkg__Inner__Wheel ; sysml:redefines elmt:R90__A__w ; sysx:hasBody "false"^^xsd:boolean ; - sysml:ownedTyping elmt:R90__B__w_ft0 ; - sysml:ownedSpecialization elmt:R90__B__w_ft0, elmt:R90__B__w_rd0 ; - sysml:ownedRelationship elmt:R90__B__w_ft0, elmt:R90__B__w_rd0 ; sysml:ownedRedefinition elmt:R90__B__w_rd0 ; sysml:ownedSubsetting elmt:R90__B__w_rd0 ; + sysml:ownedSpecialization elmt:R90__B__w_rd0, elmt:R90__B__w_ft0 ; + sysml:ownedRelationship elmt:R90__B__w_rd0, elmt:R90__B__w_ft0 ; + sysml:ownedTyping elmt:R90__B__w_ft0 ; sysx:sourceText " part :>> w : Inner::Wheel;\n" ; - json:ownedSpecialization "[{\"@id\":\"R90__B__w_ft0\"},{\"@id\":\"R90__B__w_rd0\"}]" ; - json:ownedRelationship "[{\"@id\":\"R90__B__w_ft0\"},{\"@id\":\"R90__B__w_rd0\"}]" . + json:ownedSpecialization "[{\"@id\":\"R90__B__w_rd0\"},{\"@id\":\"R90__B__w_ft0\"}]" ; + json:ownedRelationship "[{\"@id\":\"R90__B__w_rd0\"},{\"@id\":\"R90__B__w_ft0\"}]" . elmt:R90__B__w_om a sysml:FeatureMembership ; @@ -1147,7 +1147,7 @@ elmt:R90__H sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:R90__H__x ; sysml:ownedMembership elmt:R90__H__x_om ; - sysml:ownedRelationship elmt:R90__H__x_om, elmt:R90__H_sc0, elmt:R90__H_sc1 ; + sysml:ownedRelationship elmt:R90__H_sc0, elmt:R90__H_sc1, elmt:R90__H__x_om ; sysml:ownedFeature elmt:R90__H__x ; sysml:ownedFeatureMembership elmt:R90__H__x_om ; sysml:ownedSubclassification elmt:R90__H_sc0, elmt:R90__H_sc1 ; @@ -1155,7 +1155,7 @@ elmt:R90__H sysx:sourceText " part def H :> G1, G2 {\n" ; sysx:sourceTail " }\n" ; json:specializes "[{\"@id\":\"R90__G1\"},{\"@id\":\"R90__G2\"}]" ; - json:ownedRelationship "[{\"@id\":\"R90__H__x_om\"},{\"@id\":\"R90__H_sc0\"},{\"@id\":\"R90__H_sc1\"}]" ; + json:ownedRelationship "[{\"@id\":\"R90__H_sc0\"},{\"@id\":\"R90__H_sc1\"},{\"@id\":\"R90__H__x_om\"}]" ; json:ownedSubclassification "[{\"@id\":\"R90__H_sc0\"},{\"@id\":\"R90__H_sc1\"}]" ; json:ownedSpecialization "[{\"@id\":\"R90__H_sc0\"},{\"@id\":\"R90__H_sc1\"}]" . @@ -2162,21 +2162,6 @@ elmt:R90__B_sc0 sysml:relatedElement elmt:R90__B, elmt:R90__A ; json:relatedElement "[{\"@id\":\"R90__B\"},{\"@id\":\"R90__A\"}]" . -elmt:R90__B__w_ft0 - a sysml:FeatureTyping ; - sysml:elementId "R90__B__w_ft0" ; - sysml:typedFeature elmt:R90__B__w ; - sysml:owningFeature elmt:R90__B__w ; - sysml:specific elmt:R90__B__w ; - sysml:source elmt:R90__B__w ; - sysml:owningRelatedElement elmt:R90__B__w ; - sysml:type elmt:OtherPkg__Inner__Wheel ; - sysml:general elmt:OtherPkg__Inner__Wheel ; - sysml:target elmt:OtherPkg__Inner__Wheel ; - sysml:owner elmt:R90__B__w ; - sysml:relatedElement elmt:R90__B__w, elmt:OtherPkg__Inner__Wheel ; - json:relatedElement "[{\"@id\":\"R90__B__w\"},{\"@id\":\"OtherPkg__Inner__Wheel\"}]" . - elmt:R90__B__w_rd0 a sysml:Redefinition ; sysml:elementId "R90__B__w_rd0" ; @@ -2194,6 +2179,21 @@ elmt:R90__B__w_rd0 sysml:relatedElement elmt:R90__B__w, elmt:R90__A__w ; json:relatedElement "[{\"@id\":\"R90__B__w\"},{\"@id\":\"R90__A__w\"}]" . +elmt:R90__B__w_ft0 + a sysml:FeatureTyping ; + sysml:elementId "R90__B__w_ft0" ; + sysml:typedFeature elmt:R90__B__w ; + sysml:owningFeature elmt:R90__B__w ; + sysml:specific elmt:R90__B__w ; + sysml:source elmt:R90__B__w ; + sysml:owningRelatedElement elmt:R90__B__w ; + sysml:type elmt:OtherPkg__Inner__Wheel ; + sysml:general elmt:OtherPkg__Inner__Wheel ; + sysml:target elmt:OtherPkg__Inner__Wheel ; + sysml:owner elmt:R90__B__w ; + sysml:relatedElement elmt:R90__B__w, elmt:OtherPkg__Inner__Wheel ; + json:relatedElement "[{\"@id\":\"R90__B__w\"},{\"@id\":\"OtherPkg__Inner__Wheel\"}]" . + elmt:R90__H_sc0 a sysml:Subclassification ; sysml:elementId "R90__H_sc0" ; diff --git a/tests/export/testdata/convert/individual_definitions.golden.ttl b/tests/export/testdata/convert/individual_definitions.golden.ttl index d8f70d3d4a..43d1e58711 100644 --- a/tests/export/testdata/convert/individual_definitions.golden.ttl +++ b/tests/export/testdata/convert/individual_definitions.golden.ttl @@ -312,14 +312,14 @@ elmt:IndividualDefinitions__Mission__crew sysml:declaredName "crew" ; sysml:type elmt:IndividualDefinitions__Astronaut ; sysml:multiplicity expr:IndividualDefinitions__Mission__crew_pmultiplicity ; - sysml:ownedRelationship expr:IndividualDefinitions__Mission__crew_pmultiplicity_om, elmt:IndividualDefinitions__Mission__crew_ft0 ; + sysml:ownedRelationship elmt:IndividualDefinitions__Mission__crew_ft0, expr:IndividualDefinitions__Mission__crew_pmultiplicity_om ; sysml:ownedMembership expr:IndividualDefinitions__Mission__crew_pmultiplicity_om ; sysml:upperBound expr:IndividualDefinitions__Mission__crew_pupperBound ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:IndividualDefinitions__Mission__crew_ft0 ; sysml:ownedSpecialization elmt:IndividualDefinitions__Mission__crew_ft0 ; sysx:sourceText "\t\tpart crew : Astronaut[*];\n" ; - json:ownedRelationship "[{\"@id\":\"IndividualDefinitions__Mission__crew_pmultiplicity_om\"},{\"@id\":\"IndividualDefinitions__Mission__crew_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"IndividualDefinitions__Mission__crew_ft0\"},{\"@id\":\"IndividualDefinitions__Mission__crew_pmultiplicity_om\"}]" . elmt:IndividualDefinitions__Mission__crew_om a sysml:FeatureMembership ; diff --git a/tests/export/testdata/convert/irregular_layout.golden.ttl.sha256 b/tests/export/testdata/convert/irregular_layout.golden.ttl.sha256 index 4cc398fcad..e15e4805e2 100644 --- a/tests/export/testdata/convert/irregular_layout.golden.ttl.sha256 +++ b/tests/export/testdata/convert/irregular_layout.golden.ttl.sha256 @@ -1,4 +1,4 @@ -sha256 1556130ae246f8cd1a37eadbd075f0040664143bd190ffde0226a8ab2bb37741 bytes 241404 lines 3678 +sha256 f051b3133b23fca3581cdedde6875d10ce0e4f123051217418affdf699086681 bytes 241404 lines 3678 @prefix elmt: . @prefix expr: . @prefix json: . diff --git a/tests/export/testdata/convert/kind_keyword_synonyms.golden.ttl b/tests/export/testdata/convert/kind_keyword_synonyms.golden.ttl index 558d50938b..c1b44a5fd7 100644 --- a/tests/export/testdata/convert/kind_keyword_synonyms.golden.ttl +++ b/tests/export/testdata/convert/kind_keyword_synonyms.golden.ttl @@ -503,14 +503,14 @@ elmt:Synonyms__Vehicle__idling sysml:type elmt:Synonyms__Idle ; sysml:references "idling" ; sysx:hasBody "false"^^xsd:boolean ; - sysml:ownedTyping elmt:Synonyms__Vehicle__idling_ft0 ; - sysml:ownedSpecialization elmt:Synonyms__Vehicle__idling_ft0, elmt:Synonyms__Vehicle__idling_rs ; - sysml:ownedRelationship elmt:Synonyms__Vehicle__idling_ft0, elmt:Synonyms__Vehicle__idling_rs ; sysml:ownedReferenceSubsetting elmt:Synonyms__Vehicle__idling_rs ; sysml:ownedSubsetting elmt:Synonyms__Vehicle__idling_rs ; + sysml:ownedSpecialization elmt:Synonyms__Vehicle__idling_rs, elmt:Synonyms__Vehicle__idling_ft0 ; + sysml:ownedRelationship elmt:Synonyms__Vehicle__idling_rs, elmt:Synonyms__Vehicle__idling_ft0 ; + sysml:ownedTyping elmt:Synonyms__Vehicle__idling_ft0 ; sysx:sourceText " exhibit idling : Idle;\n" ; - json:ownedSpecialization "[{\"@id\":\"Synonyms__Vehicle__idling_ft0\"},{\"@id\":\"Synonyms__Vehicle__idling_rs\"}]" ; - json:ownedRelationship "[{\"@id\":\"Synonyms__Vehicle__idling_ft0\"},{\"@id\":\"Synonyms__Vehicle__idling_rs\"}]" . + json:ownedSpecialization "[{\"@id\":\"Synonyms__Vehicle__idling_rs\"},{\"@id\":\"Synonyms__Vehicle__idling_ft0\"}]" ; + json:ownedRelationship "[{\"@id\":\"Synonyms__Vehicle__idling_rs\"},{\"@id\":\"Synonyms__Vehicle__idling_ft0\"}]" . elmt:Synonyms__Vehicle__idling_om a sysml:FeatureMembership ; @@ -744,21 +744,6 @@ elmt:Synonyms__reading_ft0 sysml:relatedElement elmt:Synonyms__reading, elmt:Synonyms__Temperature ; json:relatedElement "[{\"@id\":\"Synonyms__reading\"},{\"@id\":\"Synonyms__Temperature\"}]" . -elmt:Synonyms__Vehicle__idling_ft0 - a sysml:FeatureTyping ; - sysml:elementId "Synonyms__Vehicle__idling_ft0" ; - sysml:typedFeature elmt:Synonyms__Vehicle__idling ; - sysml:owningFeature elmt:Synonyms__Vehicle__idling ; - sysml:specific elmt:Synonyms__Vehicle__idling ; - sysml:source elmt:Synonyms__Vehicle__idling ; - sysml:owningRelatedElement elmt:Synonyms__Vehicle__idling ; - sysml:type elmt:Synonyms__Idle ; - sysml:general elmt:Synonyms__Idle ; - sysml:target elmt:Synonyms__Idle ; - sysml:owner elmt:Synonyms__Vehicle__idling ; - sysml:relatedElement elmt:Synonyms__Vehicle__idling, elmt:Synonyms__Idle ; - json:relatedElement "[{\"@id\":\"Synonyms__Vehicle__idling\"},{\"@id\":\"Synonyms__Idle\"}]" . - elmt:Synonyms__Vehicle__idling_rs a sysml:ReferenceSubsetting ; sysml:elementId "Synonyms__Vehicle__idling_rs" ; @@ -776,6 +761,21 @@ elmt:Synonyms__Vehicle__idling_rs sysml:relatedElement elmt:Synonyms__Vehicle__idling, "idling" ; json:relatedElement "[{\"@id\":\"Synonyms__Vehicle__idling\"},\"idling\"]" . +elmt:Synonyms__Vehicle__idling_ft0 + a sysml:FeatureTyping ; + sysml:elementId "Synonyms__Vehicle__idling_ft0" ; + sysml:typedFeature elmt:Synonyms__Vehicle__idling ; + sysml:owningFeature elmt:Synonyms__Vehicle__idling ; + sysml:specific elmt:Synonyms__Vehicle__idling ; + sysml:source elmt:Synonyms__Vehicle__idling ; + sysml:owningRelatedElement elmt:Synonyms__Vehicle__idling ; + sysml:type elmt:Synonyms__Idle ; + sysml:general elmt:Synonyms__Idle ; + sysml:target elmt:Synonyms__Idle ; + sysml:owner elmt:Synonyms__Vehicle__idling ; + sysml:relatedElement elmt:Synonyms__Vehicle__idling, elmt:Synonyms__Idle ; + json:relatedElement "[{\"@id\":\"Synonyms__Vehicle__idling\"},{\"@id\":\"Synonyms__Idle\"}]" . + elmt:Synonyms__Vehicle__safe_ft0 a sysml:FeatureTyping ; sysml:elementId "Synonyms__Vehicle__safe_ft0" ; diff --git a/tests/export/testdata/convert/metadata_bodies.golden.ttl b/tests/export/testdata/convert/metadata_bodies.golden.ttl index fd8cbf8fab..eb40e82c75 100644 --- a/tests/export/testdata/convert/metadata_bodies.golden.ttl +++ b/tests/export/testdata/convert/metadata_bodies.golden.ttl @@ -323,7 +323,7 @@ elmt:Annotated__car sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:Annotated__car__range, elmt:Annotated__car___401, elmt:Annotated__car___402, elmt:Annotated__car__checked, elmt:Annotated__car___404 ; sysml:ownedMembership elmt:Annotated__car__range_om, elmt:Annotated__car___401_om, elmt:Annotated__car___402_om, elmt:Annotated__car__checked_om, elmt:Annotated__car___404_om ; - sysml:ownedRelationship elmt:Annotated__car__range_om, elmt:Annotated__car___401_om, elmt:Annotated__car___402_om, elmt:Annotated__car__checked_om, elmt:Annotated__car___404_om, elmt:Annotated__car_ft0 ; + sysml:ownedRelationship elmt:Annotated__car_ft0, elmt:Annotated__car__range_om, elmt:Annotated__car___401_om, elmt:Annotated__car___402_om, elmt:Annotated__car__checked_om, elmt:Annotated__car___404_om ; sysml:ownedFeature elmt:Annotated__car__range ; sysml:ownedFeatureMembership elmt:Annotated__car__range_om ; sysml:ownedTyping elmt:Annotated__car_ft0 ; @@ -332,7 +332,7 @@ elmt:Annotated__car sysx:sourceTail " }\n" ; json:ownedMember "[{\"@id\":\"Annotated__car__range\"},{\"@id\":\"Annotated__car___401\"},{\"@id\":\"Annotated__car___402\"},{\"@id\":\"Annotated__car__checked\"},{\"@id\":\"Annotated__car___404\"}]" ; json:ownedMembership "[{\"@id\":\"Annotated__car__range_om\"},{\"@id\":\"Annotated__car___401_om\"},{\"@id\":\"Annotated__car___402_om\"},{\"@id\":\"Annotated__car__checked_om\"},{\"@id\":\"Annotated__car___404_om\"}]" ; - json:ownedRelationship "[{\"@id\":\"Annotated__car__range_om\"},{\"@id\":\"Annotated__car___401_om\"},{\"@id\":\"Annotated__car___402_om\"},{\"@id\":\"Annotated__car__checked_om\"},{\"@id\":\"Annotated__car___404_om\"},{\"@id\":\"Annotated__car_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"Annotated__car_ft0\"},{\"@id\":\"Annotated__car__range_om\"},{\"@id\":\"Annotated__car___401_om\"},{\"@id\":\"Annotated__car___402_om\"},{\"@id\":\"Annotated__car__checked_om\"},{\"@id\":\"Annotated__car___404_om\"}]" . elmt:Annotated__car_om a sysml:OwningMembership ; @@ -361,13 +361,13 @@ elmt:Annotated__car__range sysml:declaredName "range" ; sysml:type "Real" ; sysml:value expr:Annotated__car__range_pvalue ; - sysml:ownedRelationship expr:Annotated__car__range_pvalue_om, elmt:Annotated__car__range_ft0 ; + sysml:ownedRelationship elmt:Annotated__car__range_ft0, expr:Annotated__car__range_pvalue_om ; sysml:ownedMembership expr:Annotated__car__range_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:Annotated__car__range_ft0 ; sysml:ownedSpecialization elmt:Annotated__car__range_ft0 ; sysx:sourceText " attribute range : Real = 500.0;\n" ; - json:ownedRelationship "[{\"@id\":\"Annotated__car__range_pvalue_om\"},{\"@id\":\"Annotated__car__range_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"Annotated__car__range_ft0\"},{\"@id\":\"Annotated__car__range_pvalue_om\"}]" . elmt:Annotated__car__range_om a sysml:FeatureMembership ; @@ -458,13 +458,13 @@ elmt:Annotated__car___401__level sysml:redefines elmt:Annotated__Safety__level ; sysx:isRedefinitionImplicit "true"^^xsd:boolean ; sysml:value expr:Annotated__car___401__level_pvalue ; - sysml:ownedRelationship expr:Annotated__car___401__level_pvalue_om, elmt:Annotated__car___401__level_rd0 ; + sysml:ownedRelationship elmt:Annotated__car___401__level_rd0, expr:Annotated__car___401__level_pvalue_om ; sysml:ownedMembership expr:Annotated__car___401__level_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedRedefinition elmt:Annotated__car___401__level_rd0 ; sysml:ownedSubsetting elmt:Annotated__car___401__level_rd0 ; sysml:ownedSpecialization elmt:Annotated__car___401__level_rd0 ; - json:ownedRelationship "[{\"@id\":\"Annotated__car___401__level_pvalue_om\"},{\"@id\":\"Annotated__car___401__level_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"Annotated__car___401__level_rd0\"},{\"@id\":\"Annotated__car___401__level_pvalue_om\"}]" . elmt:Annotated__car___401__level_om a sysml:FeatureMembership ; @@ -560,14 +560,14 @@ elmt:Annotated__car___402__level sysx:isKindImplicit "true"^^xsd:boolean ; sysml:redefines elmt:Annotated__Safety__level ; sysml:value expr:Annotated__car___402__level_pvalue ; - sysml:ownedRelationship expr:Annotated__car___402__level_pvalue_om, elmt:Annotated__car___402__level_rd0 ; + sysml:ownedRelationship elmt:Annotated__car___402__level_rd0, expr:Annotated__car___402__level_pvalue_om ; sysml:ownedMembership expr:Annotated__car___402__level_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedRedefinition elmt:Annotated__car___402__level_rd0 ; sysml:ownedSubsetting elmt:Annotated__car___402__level_rd0 ; sysml:ownedSpecialization elmt:Annotated__car___402__level_rd0 ; sysx:sourceText " :>> level = 3;\n" ; - json:ownedRelationship "[{\"@id\":\"Annotated__car___402__level_pvalue_om\"},{\"@id\":\"Annotated__car___402__level_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"Annotated__car___402__level_rd0\"},{\"@id\":\"Annotated__car___402__level_pvalue_om\"}]" . elmt:Annotated__car___402__level_om a sysml:FeatureMembership ; @@ -621,14 +621,14 @@ elmt:Annotated__car___402__reviewer sysml:redefines elmt:Annotated__Safety__reviewer ; sysx:isRedefinitionImplicit "true"^^xsd:boolean ; sysml:value expr:Annotated__car___402__reviewer_pvalue ; - sysml:ownedRelationship expr:Annotated__car___402__reviewer_pvalue_om, elmt:Annotated__car___402__reviewer_rd0 ; + sysml:ownedRelationship elmt:Annotated__car___402__reviewer_rd0, expr:Annotated__car___402__reviewer_pvalue_om ; sysml:ownedMembership expr:Annotated__car___402__reviewer_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedRedefinition elmt:Annotated__car___402__reviewer_rd0 ; sysml:ownedSubsetting elmt:Annotated__car___402__reviewer_rd0 ; sysml:ownedSpecialization elmt:Annotated__car___402__reviewer_rd0 ; sysx:sourceText " reviewer = \"ops\";\n" ; - json:ownedRelationship "[{\"@id\":\"Annotated__car___402__reviewer_pvalue_om\"},{\"@id\":\"Annotated__car___402__reviewer_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"Annotated__car___402__reviewer_rd0\"},{\"@id\":\"Annotated__car___402__reviewer_pvalue_om\"}]" . elmt:Annotated__car___402__reviewer_om a sysml:FeatureMembership ; @@ -682,14 +682,14 @@ elmt:Annotated__car___402__isSet sysml:redefines elmt:Annotated__Safety__isSet ; sysx:isRedefinitionImplicit "true"^^xsd:boolean ; sysml:value expr:Annotated__car___402__isSet_pvalue ; - sysml:ownedRelationship expr:Annotated__car___402__isSet_pvalue_om, elmt:Annotated__car___402__isSet_rd0 ; + sysml:ownedRelationship elmt:Annotated__car___402__isSet_rd0, expr:Annotated__car___402__isSet_pvalue_om ; sysml:ownedMembership expr:Annotated__car___402__isSet_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedRedefinition elmt:Annotated__car___402__isSet_rd0 ; sysml:ownedSubsetting elmt:Annotated__car___402__isSet_rd0 ; sysml:ownedSpecialization elmt:Annotated__car___402__isSet_rd0 ; sysx:sourceText " isSet = true;\n" ; - json:ownedRelationship "[{\"@id\":\"Annotated__car___402__isSet_pvalue_om\"},{\"@id\":\"Annotated__car___402__isSet_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"Annotated__car___402__isSet_rd0\"},{\"@id\":\"Annotated__car___402__isSet_pvalue_om\"}]" . elmt:Annotated__car___402__isSet_om a sysml:FeatureMembership ; @@ -745,14 +745,14 @@ elmt:Annotated__car___402__audit sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:Annotated__car___402__audit__year ; sysml:ownedMembership elmt:Annotated__car___402__audit__year_om ; - sysml:ownedRelationship elmt:Annotated__car___402__audit__year_om, elmt:Annotated__car___402__audit_rd0 ; + sysml:ownedRelationship elmt:Annotated__car___402__audit_rd0, elmt:Annotated__car___402__audit__year_om ; sysml:ownedFeature elmt:Annotated__car___402__audit__year ; sysml:ownedFeatureMembership elmt:Annotated__car___402__audit__year_om ; sysml:ownedRedefinition elmt:Annotated__car___402__audit_rd0 ; sysml:ownedSubsetting elmt:Annotated__car___402__audit_rd0 ; sysml:ownedSpecialization elmt:Annotated__car___402__audit_rd0 ; sysx:sourceText " audit { year = 2026; }\n" ; - json:ownedRelationship "[{\"@id\":\"Annotated__car___402__audit__year_om\"},{\"@id\":\"Annotated__car___402__audit_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"Annotated__car___402__audit_rd0\"},{\"@id\":\"Annotated__car___402__audit__year_om\"}]" . elmt:Annotated__car___402__audit_om a sysml:FeatureMembership ; @@ -784,13 +784,13 @@ elmt:Annotated__car___402__audit__year sysml:redefines elmt:Annotated__Safety__audit__year ; sysx:isRedefinitionImplicit "true"^^xsd:boolean ; sysml:value expr:Annotated__car___402__audit__year_pvalue ; - sysml:ownedRelationship expr:Annotated__car___402__audit__year_pvalue_om, elmt:Annotated__car___402__audit__year_rd0 ; + sysml:ownedRelationship elmt:Annotated__car___402__audit__year_rd0, expr:Annotated__car___402__audit__year_pvalue_om ; sysml:ownedMembership expr:Annotated__car___402__audit__year_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedRedefinition elmt:Annotated__car___402__audit__year_rd0 ; sysml:ownedSubsetting elmt:Annotated__car___402__audit__year_rd0 ; sysml:ownedSpecialization elmt:Annotated__car___402__audit__year_rd0 ; - json:ownedRelationship "[{\"@id\":\"Annotated__car___402__audit__year_pvalue_om\"},{\"@id\":\"Annotated__car___402__audit__year_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"Annotated__car___402__audit__year_rd0\"},{\"@id\":\"Annotated__car___402__audit__year_pvalue_om\"}]" . elmt:Annotated__car___402__audit__year_om a sysml:FeatureMembership ; @@ -953,14 +953,14 @@ elmt:Annotated___403__level sysml:redefines elmt:Annotated__Safety__level ; sysx:isRedefinitionImplicit "true"^^xsd:boolean ; sysml:value expr:Annotated___403__level_pvalue ; - sysml:ownedRelationship expr:Annotated___403__level_pvalue_om, elmt:Annotated___403__level_rd0 ; + sysml:ownedRelationship elmt:Annotated___403__level_rd0, expr:Annotated___403__level_pvalue_om ; sysml:ownedMembership expr:Annotated___403__level_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedRedefinition elmt:Annotated___403__level_rd0 ; sysml:ownedSubsetting elmt:Annotated___403__level_rd0 ; sysml:ownedSpecialization elmt:Annotated___403__level_rd0 ; sysx:sourceText " level = car.range;\n" ; - json:ownedRelationship "[{\"@id\":\"Annotated___403__level_pvalue_om\"},{\"@id\":\"Annotated___403__level_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"Annotated___403__level_rd0\"},{\"@id\":\"Annotated___403__level_pvalue_om\"}]" . elmt:Annotated___403__level_om a sysml:FeatureMembership ; @@ -1136,14 +1136,14 @@ elmt:Annotated___403__reviewer sysml:redefines elmt:Annotated__Safety__reviewer ; sysx:isRedefinitionImplicit "true"^^xsd:boolean ; sysml:value expr:Annotated___403__reviewer_pvalue ; - sysml:ownedRelationship expr:Annotated___403__reviewer_pvalue_om, elmt:Annotated___403__reviewer_rd0 ; + sysml:ownedRelationship elmt:Annotated___403__reviewer_rd0, expr:Annotated___403__reviewer_pvalue_om ; sysml:ownedMembership expr:Annotated___403__reviewer_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedRedefinition elmt:Annotated___403__reviewer_rd0 ; sysml:ownedSubsetting elmt:Annotated___403__reviewer_rd0 ; sysml:ownedSpecialization elmt:Annotated___403__reviewer_rd0 ; sysx:sourceText " reviewer = Car::mass;\n" ; - json:ownedRelationship "[{\"@id\":\"Annotated___403__reviewer_pvalue_om\"},{\"@id\":\"Annotated___403__reviewer_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"Annotated___403__reviewer_rd0\"},{\"@id\":\"Annotated___403__reviewer_pvalue_om\"}]" . elmt:Annotated___403__reviewer_om a sysml:FeatureMembership ; @@ -1299,14 +1299,14 @@ elmt:Annotated___406 sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:Annotated___406__level ; sysml:ownedMembership elmt:Annotated___406__level_om ; - sysml:ownedRelationship elmt:Annotated___406__level_om, elmt:Annotated___406_ft0 ; + sysml:ownedRelationship elmt:Annotated___406_ft0, elmt:Annotated___406__level_om ; sysml:ownedFeature elmt:Annotated___406__level ; sysml:ownedFeatureMembership elmt:Annotated___406__level_om ; sysml:ownedTyping elmt:Annotated___406_ft0 ; sysml:ownedSpecialization elmt:Annotated___406_ft0 ; sysx:sourceText " metadata $::Annotated::Safety about Car {\n" ; sysx:sourceTail " }\n" ; - json:ownedRelationship "[{\"@id\":\"Annotated___406__level_om\"},{\"@id\":\"Annotated___406_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"Annotated___406_ft0\"},{\"@id\":\"Annotated___406__level_om\"}]" . elmt:Annotated___406_om a sysml:OwningMembership ; @@ -1336,14 +1336,14 @@ elmt:Annotated___406__level sysml:redefines elmt:Annotated__Safety__level ; sysx:isRedefinitionImplicit "true"^^xsd:boolean ; sysml:value expr:Annotated___406__level_pvalue ; - sysml:ownedRelationship expr:Annotated___406__level_pvalue_om, elmt:Annotated___406__level_rd0 ; + sysml:ownedRelationship elmt:Annotated___406__level_rd0, expr:Annotated___406__level_pvalue_om ; sysml:ownedMembership expr:Annotated___406__level_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedRedefinition elmt:Annotated___406__level_rd0 ; sysml:ownedSubsetting elmt:Annotated___406__level_rd0 ; sysml:ownedSpecialization elmt:Annotated___406__level_rd0 ; sysx:sourceText " level = 4;\n" ; - json:ownedRelationship "[{\"@id\":\"Annotated___406__level_pvalue_om\"},{\"@id\":\"Annotated___406__level_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"Annotated___406__level_rd0\"},{\"@id\":\"Annotated___406__level_pvalue_om\"}]" . elmt:Annotated___406__level_om a sysml:FeatureMembership ; diff --git a/tests/export/testdata/convert/metadata_prefixes.golden.ttl b/tests/export/testdata/convert/metadata_prefixes.golden.ttl index c66d23dec6..89c9b432ff 100644 --- a/tests/export/testdata/convert/metadata_prefixes.golden.ttl +++ b/tests/export/testdata/convert/metadata_prefixes.golden.ttl @@ -700,7 +700,7 @@ elmt:Prefixed__context sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:Prefixed__context__stopped, elmt:Prefixed__context__moving, elmt:Prefixed__context__go ; sysml:ownedMembership elmt:Prefixed__context__stopped_om, elmt:Prefixed__context__moving_om, elmt:Prefixed__context__go_om ; - sysml:ownedRelationship elmt:Prefixed__context__stopped_om, elmt:Prefixed__context__moving_om, elmt:Prefixed__context__go_om, elmt:Prefixed__context_ft0 ; + sysml:ownedRelationship elmt:Prefixed__context_ft0, elmt:Prefixed__context__stopped_om, elmt:Prefixed__context__moving_om, elmt:Prefixed__context__go_om ; sysml:ownedFeature elmt:Prefixed__context__stopped, elmt:Prefixed__context__moving, elmt:Prefixed__context__go ; sysml:ownedFeatureMembership elmt:Prefixed__context__stopped_om, elmt:Prefixed__context__moving_om, elmt:Prefixed__context__go_om ; sysml:ownedTyping elmt:Prefixed__context_ft0 ; @@ -709,7 +709,7 @@ elmt:Prefixed__context sysx:sourceTail " }\n" ; json:ownedMember "[{\"@id\":\"Prefixed__context__stopped\"},{\"@id\":\"Prefixed__context__moving\"},{\"@id\":\"Prefixed__context__go\"}]" ; json:ownedMembership "[{\"@id\":\"Prefixed__context__stopped_om\"},{\"@id\":\"Prefixed__context__moving_om\"},{\"@id\":\"Prefixed__context__go_om\"}]" ; - json:ownedRelationship "[{\"@id\":\"Prefixed__context__stopped_om\"},{\"@id\":\"Prefixed__context__moving_om\"},{\"@id\":\"Prefixed__context__go_om\"},{\"@id\":\"Prefixed__context_ft0\"}]" ; + json:ownedRelationship "[{\"@id\":\"Prefixed__context_ft0\"},{\"@id\":\"Prefixed__context__stopped_om\"},{\"@id\":\"Prefixed__context__moving_om\"},{\"@id\":\"Prefixed__context__go_om\"}]" ; json:ownedFeature "[{\"@id\":\"Prefixed__context__stopped\"},{\"@id\":\"Prefixed__context__moving\"},{\"@id\":\"Prefixed__context__go\"}]" ; json:ownedFeatureMembership "[{\"@id\":\"Prefixed__context__stopped_om\"},{\"@id\":\"Prefixed__context__moving_om\"},{\"@id\":\"Prefixed__context__go_om\"}]" . @@ -983,10 +983,10 @@ elmt:Prefixed__Braking__brakes sysml:owningMembership elmt:Prefixed__Braking__brakes_om ; sysml:declaredName "brakes" ; sysml:direction "in" ; - sysml:type elmt:Prefixed__Car ; sysml:ownedMember elmt:Prefixed__Braking__brakes___400 ; sysml:ownedMembership elmt:Prefixed__Braking__brakes___400_om ; sysml:ownedRelationship elmt:Prefixed__Braking__brakes___400_om, elmt:Prefixed__Braking__brakes_ft0 ; + sysml:type elmt:Prefixed__Car ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:Prefixed__Braking__brakes_ft0 ; sysml:ownedSpecialization elmt:Prefixed__Braking__brakes_ft0 ; diff --git a/tests/export/testdata/convert/parts.golden.ttl b/tests/export/testdata/convert/parts.golden.ttl index f5c9b230b7..a525a3ad8a 100644 --- a/tests/export/testdata/convert/parts.golden.ttl +++ b/tests/export/testdata/convert/parts.golden.ttl @@ -116,14 +116,14 @@ elmt:Vehicles__Vehicle__engine sysml:declaredName "engine" ; sysml:type elmt:Vehicles__Engine ; sysml:multiplicity expr:Vehicles__Vehicle__engine_pmultiplicity ; - sysml:ownedRelationship expr:Vehicles__Vehicle__engine_pmultiplicity_om, elmt:Vehicles__Vehicle__engine_ft0 ; + sysml:ownedRelationship elmt:Vehicles__Vehicle__engine_ft0, expr:Vehicles__Vehicle__engine_pmultiplicity_om ; sysml:ownedMembership expr:Vehicles__Vehicle__engine_pmultiplicity_om ; sysml:upperBound expr:Vehicles__Vehicle__engine_pupperBound ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:Vehicles__Vehicle__engine_ft0 ; sysml:ownedSpecialization elmt:Vehicles__Vehicle__engine_ft0 ; sysx:sourceText " part engine : Engine[1];\n" ; - json:ownedRelationship "[{\"@id\":\"Vehicles__Vehicle__engine_pmultiplicity_om\"},{\"@id\":\"Vehicles__Vehicle__engine_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"Vehicles__Vehicle__engine_ft0\"},{\"@id\":\"Vehicles__Vehicle__engine_pmultiplicity_om\"}]" . elmt:Vehicles__Vehicle__engine_om a sysml:FeatureMembership ; diff --git a/tests/export/testdata/convert/payload_declaration_bodies.golden.ttl b/tests/export/testdata/convert/payload_declaration_bodies.golden.ttl index c33667870a..aec8644ef3 100644 --- a/tests/export/testdata/convert/payload_declaration_bodies.golden.ttl +++ b/tests/export/testdata/convert/payload_declaration_bodies.golden.ttl @@ -1016,12 +1016,12 @@ elmt:Payloads__Ctx___404__cmd sysml:declaredName "cmd" ; sysml:type elmt:Payloads__Prio ; sysml:value expr:Payloads__Ctx___404__cmd_pvalue ; - sysml:ownedRelationship expr:Payloads__Ctx___404__cmd_pvalue_om, elmt:Payloads__Ctx___404__cmd_ft0 ; + sysml:ownedRelationship elmt:Payloads__Ctx___404__cmd_ft0, expr:Payloads__Ctx___404__cmd_pvalue_om ; sysml:ownedMembership expr:Payloads__Ctx___404__cmd_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:Payloads__Ctx___404__cmd_ft0 ; sysml:ownedSpecialization elmt:Payloads__Ctx___404__cmd_ft0 ; - json:ownedRelationship "[{\"@id\":\"Payloads__Ctx___404__cmd_pvalue_om\"},{\"@id\":\"Payloads__Ctx___404__cmd_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"Payloads__Ctx___404__cmd_ft0\"},{\"@id\":\"Payloads__Ctx___404__cmd_pvalue_om\"}]" . elmt:Payloads__Ctx___404__cmd_om a sysml:FeatureMembership ; diff --git a/tests/export/testdata/convert/qualified_usages.golden.ttl b/tests/export/testdata/convert/qualified_usages.golden.ttl index cda9aa172b..0ab9b02be7 100644 --- a/tests/export/testdata/convert/qualified_usages.golden.ttl +++ b/tests/export/testdata/convert/qualified_usages.golden.ttl @@ -562,7 +562,7 @@ elmt:Q__ctx sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:Q__ctx__sub, elmt:Q__ctx__pa, elmt:Q__ctx__a1, elmt:Q__ctx__sa, elmt:Q__ctx__es, elmt:Q__ctx__s1, elmt:Q__ctx__ss, elmt:Q__ctx__iu, elmt:Q__ctx__u1, elmt:Q__ctx__sr, elmt:Q__ctx___4010, elmt:Q__ctx__ac, elmt:Q__ctx___4012 ; sysml:ownedMembership elmt:Q__ctx__sub_om, elmt:Q__ctx__pa_om, elmt:Q__ctx__a1_om, elmt:Q__ctx__sa_om, elmt:Q__ctx__es_om, elmt:Q__ctx__s1_om, elmt:Q__ctx__ss_om, elmt:Q__ctx__iu_om, elmt:Q__ctx__u1_om, elmt:Q__ctx__sr_om, elmt:Q__ctx___4010_om, elmt:Q__ctx__ac_om, elmt:Q__ctx___4012_om ; - sysml:ownedRelationship elmt:Q__ctx__sub_om, elmt:Q__ctx__pa_om, elmt:Q__ctx__a1_om, elmt:Q__ctx__sa_om, elmt:Q__ctx__es_om, elmt:Q__ctx__s1_om, elmt:Q__ctx__ss_om, elmt:Q__ctx__iu_om, elmt:Q__ctx__u1_om, elmt:Q__ctx__sr_om, elmt:Q__ctx___4010_om, elmt:Q__ctx__ac_om, elmt:Q__ctx___4012_om, elmt:Q__ctx_ft0 ; + sysml:ownedRelationship elmt:Q__ctx_ft0, elmt:Q__ctx__sub_om, elmt:Q__ctx__pa_om, elmt:Q__ctx__a1_om, elmt:Q__ctx__sa_om, elmt:Q__ctx__es_om, elmt:Q__ctx__s1_om, elmt:Q__ctx__ss_om, elmt:Q__ctx__iu_om, elmt:Q__ctx__u1_om, elmt:Q__ctx__sr_om, elmt:Q__ctx___4010_om, elmt:Q__ctx__ac_om, elmt:Q__ctx___4012_om ; sysml:ownedFeature elmt:Q__ctx__sub, elmt:Q__ctx__pa, elmt:Q__ctx__a1, elmt:Q__ctx__sa, elmt:Q__ctx__es, elmt:Q__ctx__s1, elmt:Q__ctx__ss, elmt:Q__ctx__iu, elmt:Q__ctx__u1, elmt:Q__ctx__sr, elmt:Q__ctx___4010, elmt:Q__ctx__ac, elmt:Q__ctx___4012 ; sysml:ownedFeatureMembership elmt:Q__ctx__sub_om, elmt:Q__ctx__pa_om, elmt:Q__ctx__a1_om, elmt:Q__ctx__sa_om, elmt:Q__ctx__es_om, elmt:Q__ctx__s1_om, elmt:Q__ctx__ss_om, elmt:Q__ctx__iu_om, elmt:Q__ctx__u1_om, elmt:Q__ctx__sr_om, elmt:Q__ctx___4010_om, elmt:Q__ctx__ac_om, elmt:Q__ctx___4012_om ; sysml:ownedTyping elmt:Q__ctx_ft0 ; @@ -571,7 +571,7 @@ elmt:Q__ctx sysx:sourceTail " }\n" ; json:ownedMember "[{\"@id\":\"Q__ctx__sub\"},{\"@id\":\"Q__ctx__pa\"},{\"@id\":\"Q__ctx__a1\"},{\"@id\":\"Q__ctx__sa\"},{\"@id\":\"Q__ctx__es\"},{\"@id\":\"Q__ctx__s1\"},{\"@id\":\"Q__ctx__ss\"},{\"@id\":\"Q__ctx__iu\"},{\"@id\":\"Q__ctx__u1\"},{\"@id\":\"Q__ctx__sr\"},{\"@id\":\"Q__ctx___4010\"},{\"@id\":\"Q__ctx__ac\"},{\"@id\":\"Q__ctx___4012\"}]" ; json:ownedMembership "[{\"@id\":\"Q__ctx__sub_om\"},{\"@id\":\"Q__ctx__pa_om\"},{\"@id\":\"Q__ctx__a1_om\"},{\"@id\":\"Q__ctx__sa_om\"},{\"@id\":\"Q__ctx__es_om\"},{\"@id\":\"Q__ctx__s1_om\"},{\"@id\":\"Q__ctx__ss_om\"},{\"@id\":\"Q__ctx__iu_om\"},{\"@id\":\"Q__ctx__u1_om\"},{\"@id\":\"Q__ctx__sr_om\"},{\"@id\":\"Q__ctx___4010_om\"},{\"@id\":\"Q__ctx__ac_om\"},{\"@id\":\"Q__ctx___4012_om\"}]" ; - json:ownedRelationship "[{\"@id\":\"Q__ctx__sub_om\"},{\"@id\":\"Q__ctx__pa_om\"},{\"@id\":\"Q__ctx__a1_om\"},{\"@id\":\"Q__ctx__sa_om\"},{\"@id\":\"Q__ctx__es_om\"},{\"@id\":\"Q__ctx__s1_om\"},{\"@id\":\"Q__ctx__ss_om\"},{\"@id\":\"Q__ctx__iu_om\"},{\"@id\":\"Q__ctx__u1_om\"},{\"@id\":\"Q__ctx__sr_om\"},{\"@id\":\"Q__ctx___4010_om\"},{\"@id\":\"Q__ctx__ac_om\"},{\"@id\":\"Q__ctx___4012_om\"},{\"@id\":\"Q__ctx_ft0\"}]" ; + json:ownedRelationship "[{\"@id\":\"Q__ctx_ft0\"},{\"@id\":\"Q__ctx__sub_om\"},{\"@id\":\"Q__ctx__pa_om\"},{\"@id\":\"Q__ctx__a1_om\"},{\"@id\":\"Q__ctx__sa_om\"},{\"@id\":\"Q__ctx__es_om\"},{\"@id\":\"Q__ctx__s1_om\"},{\"@id\":\"Q__ctx__ss_om\"},{\"@id\":\"Q__ctx__iu_om\"},{\"@id\":\"Q__ctx__u1_om\"},{\"@id\":\"Q__ctx__sr_om\"},{\"@id\":\"Q__ctx___4010_om\"},{\"@id\":\"Q__ctx__ac_om\"},{\"@id\":\"Q__ctx___4012_om\"}]" ; json:ownedFeature "[{\"@id\":\"Q__ctx__sub\"},{\"@id\":\"Q__ctx__pa\"},{\"@id\":\"Q__ctx__a1\"},{\"@id\":\"Q__ctx__sa\"},{\"@id\":\"Q__ctx__es\"},{\"@id\":\"Q__ctx__s1\"},{\"@id\":\"Q__ctx__ss\"},{\"@id\":\"Q__ctx__iu\"},{\"@id\":\"Q__ctx__u1\"},{\"@id\":\"Q__ctx__sr\"},{\"@id\":\"Q__ctx___4010\"},{\"@id\":\"Q__ctx__ac\"},{\"@id\":\"Q__ctx___4012\"}]" ; json:ownedFeatureMembership "[{\"@id\":\"Q__ctx__sub_om\"},{\"@id\":\"Q__ctx__pa_om\"},{\"@id\":\"Q__ctx__a1_om\"},{\"@id\":\"Q__ctx__sa_om\"},{\"@id\":\"Q__ctx__es_om\"},{\"@id\":\"Q__ctx__s1_om\"},{\"@id\":\"Q__ctx__ss_om\"},{\"@id\":\"Q__ctx__iu_om\"},{\"@id\":\"Q__ctx__u1_om\"},{\"@id\":\"Q__ctx__sr_om\"},{\"@id\":\"Q__ctx___4010_om\"},{\"@id\":\"Q__ctx__ac_om\"},{\"@id\":\"Q__ctx___4012_om\"}]" . @@ -709,15 +709,15 @@ elmt:Q__ctx__sa sysml:redefines elmt:Q__Ctx__a2 ; sysml:references ; sysx:hasBody "false"^^xsd:boolean ; - sysml:ownedRedefinition elmt:Q__ctx__sa_rd0 ; - sysml:ownedSubsetting elmt:Q__ctx__sa_rd0, elmt:Q__ctx__sa_rs ; - sysml:ownedSpecialization elmt:Q__ctx__sa_rd0, elmt:Q__ctx__sa_rs ; - sysml:ownedRelationship elmt:Q__ctx__sa_rd0, elmt:Q__ctx__sa_rs ; sysml:ownedReferenceSubsetting elmt:Q__ctx__sa_rs ; + sysml:ownedSubsetting elmt:Q__ctx__sa_rs, elmt:Q__ctx__sa_rd0 ; + sysml:ownedSpecialization elmt:Q__ctx__sa_rs, elmt:Q__ctx__sa_rd0 ; + sysml:ownedRelationship elmt:Q__ctx__sa_rs, elmt:Q__ctx__sa_rd0 ; + sysml:ownedRedefinition elmt:Q__ctx__sa_rd0 ; sysx:sourceText " perform sub.sa :>> a2;\n" ; - json:ownedSubsetting "[{\"@id\":\"Q__ctx__sa_rd0\"},{\"@id\":\"Q__ctx__sa_rs\"}]" ; - json:ownedSpecialization "[{\"@id\":\"Q__ctx__sa_rd0\"},{\"@id\":\"Q__ctx__sa_rs\"}]" ; - json:ownedRelationship "[{\"@id\":\"Q__ctx__sa_rd0\"},{\"@id\":\"Q__ctx__sa_rs\"}]" . + json:ownedSubsetting "[{\"@id\":\"Q__ctx__sa_rs\"},{\"@id\":\"Q__ctx__sa_rd0\"}]" ; + json:ownedSpecialization "[{\"@id\":\"Q__ctx__sa_rs\"},{\"@id\":\"Q__ctx__sa_rd0\"}]" ; + json:ownedRelationship "[{\"@id\":\"Q__ctx__sa_rs\"},{\"@id\":\"Q__ctx__sa_rd0\"}]" . elmt:Q__ctx__sa_om a sysml:FeatureMembership ; @@ -858,15 +858,15 @@ elmt:Q__ctx__ss sysml:redefines elmt:Q__Ctx__s2 ; sysml:references ; sysx:hasBody "false"^^xsd:boolean ; - sysml:ownedRedefinition elmt:Q__ctx__ss_rd0 ; - sysml:ownedSubsetting elmt:Q__ctx__ss_rd0, elmt:Q__ctx__ss_rs ; - sysml:ownedSpecialization elmt:Q__ctx__ss_rd0, elmt:Q__ctx__ss_rs ; - sysml:ownedRelationship elmt:Q__ctx__ss_rd0, elmt:Q__ctx__ss_rs ; sysml:ownedReferenceSubsetting elmt:Q__ctx__ss_rs ; + sysml:ownedSubsetting elmt:Q__ctx__ss_rs, elmt:Q__ctx__ss_rd0 ; + sysml:ownedSpecialization elmt:Q__ctx__ss_rs, elmt:Q__ctx__ss_rd0 ; + sysml:ownedRelationship elmt:Q__ctx__ss_rs, elmt:Q__ctx__ss_rd0 ; + sysml:ownedRedefinition elmt:Q__ctx__ss_rd0 ; sysx:sourceText " exhibit sub.ss :>> s2;\n" ; - json:ownedSubsetting "[{\"@id\":\"Q__ctx__ss_rd0\"},{\"@id\":\"Q__ctx__ss_rs\"}]" ; - json:ownedSpecialization "[{\"@id\":\"Q__ctx__ss_rd0\"},{\"@id\":\"Q__ctx__ss_rs\"}]" ; - json:ownedRelationship "[{\"@id\":\"Q__ctx__ss_rd0\"},{\"@id\":\"Q__ctx__ss_rs\"}]" . + json:ownedSubsetting "[{\"@id\":\"Q__ctx__ss_rs\"},{\"@id\":\"Q__ctx__ss_rd0\"}]" ; + json:ownedSpecialization "[{\"@id\":\"Q__ctx__ss_rs\"},{\"@id\":\"Q__ctx__ss_rd0\"}]" ; + json:ownedRelationship "[{\"@id\":\"Q__ctx__ss_rs\"},{\"@id\":\"Q__ctx__ss_rd0\"}]" . elmt:Q__ctx__ss_om a sysml:FeatureMembership ; @@ -1322,23 +1322,6 @@ elmt:Q__ctx__a1_rs sysml:relatedElement elmt:Q__ctx__a1, elmt:Q__Ctx__a1 ; json:relatedElement "[{\"@id\":\"Q__ctx__a1\"},{\"@id\":\"Q__Ctx__a1\"}]" . -elmt:Q__ctx__sa_rd0 - a sysml:Redefinition ; - sysml:elementId "Q__ctx__sa_rd0" ; - sysml:redefiningFeature elmt:Q__ctx__sa ; - sysml:subsettingFeature elmt:Q__ctx__sa ; - sysml:owningFeature elmt:Q__ctx__sa ; - sysml:specific elmt:Q__ctx__sa ; - sysml:source elmt:Q__ctx__sa ; - sysml:owningRelatedElement elmt:Q__ctx__sa ; - sysml:redefinedFeature elmt:Q__Ctx__a2 ; - sysml:subsettedFeature elmt:Q__Ctx__a2 ; - sysml:general elmt:Q__Ctx__a2 ; - sysml:target elmt:Q__Ctx__a2 ; - sysml:owner elmt:Q__ctx__sa ; - sysml:relatedElement elmt:Q__ctx__sa, elmt:Q__Ctx__a2 ; - json:relatedElement "[{\"@id\":\"Q__ctx__sa\"},{\"@id\":\"Q__Ctx__a2\"}]" . - elmt:Q__ctx__sa_rs a sysml:ReferenceSubsetting ; sysml:elementId "Q__ctx__sa_rs" ; @@ -1357,6 +1340,23 @@ elmt:Q__ctx__sa_rs sysml:ownedRelatedElement ; json:relatedElement "[{\"@id\":\"Q__ctx__sa\"},{\"@id\":\"Q__ctx__sa_pchain0\"}]" . +elmt:Q__ctx__sa_rd0 + a sysml:Redefinition ; + sysml:elementId "Q__ctx__sa_rd0" ; + sysml:redefiningFeature elmt:Q__ctx__sa ; + sysml:subsettingFeature elmt:Q__ctx__sa ; + sysml:owningFeature elmt:Q__ctx__sa ; + sysml:specific elmt:Q__ctx__sa ; + sysml:source elmt:Q__ctx__sa ; + sysml:owningRelatedElement elmt:Q__ctx__sa ; + sysml:redefinedFeature elmt:Q__Ctx__a2 ; + sysml:subsettedFeature elmt:Q__Ctx__a2 ; + sysml:general elmt:Q__Ctx__a2 ; + sysml:target elmt:Q__Ctx__a2 ; + sysml:owner elmt:Q__ctx__sa ; + sysml:relatedElement elmt:Q__ctx__sa, elmt:Q__Ctx__a2 ; + json:relatedElement "[{\"@id\":\"Q__ctx__sa\"},{\"@id\":\"Q__Ctx__a2\"}]" . + elmt:Q__ctx__es_ft0 a sysml:FeatureTyping ; sysml:elementId "Q__ctx__es_ft0" ; @@ -1389,23 +1389,6 @@ elmt:Q__ctx__s1_rs sysml:relatedElement elmt:Q__ctx__s1, elmt:Q__Ctx__s1 ; json:relatedElement "[{\"@id\":\"Q__ctx__s1\"},{\"@id\":\"Q__Ctx__s1\"}]" . -elmt:Q__ctx__ss_rd0 - a sysml:Redefinition ; - sysml:elementId "Q__ctx__ss_rd0" ; - sysml:redefiningFeature elmt:Q__ctx__ss ; - sysml:subsettingFeature elmt:Q__ctx__ss ; - sysml:owningFeature elmt:Q__ctx__ss ; - sysml:specific elmt:Q__ctx__ss ; - sysml:source elmt:Q__ctx__ss ; - sysml:owningRelatedElement elmt:Q__ctx__ss ; - sysml:redefinedFeature elmt:Q__Ctx__s2 ; - sysml:subsettedFeature elmt:Q__Ctx__s2 ; - sysml:general elmt:Q__Ctx__s2 ; - sysml:target elmt:Q__Ctx__s2 ; - sysml:owner elmt:Q__ctx__ss ; - sysml:relatedElement elmt:Q__ctx__ss, elmt:Q__Ctx__s2 ; - json:relatedElement "[{\"@id\":\"Q__ctx__ss\"},{\"@id\":\"Q__Ctx__s2\"}]" . - elmt:Q__ctx__ss_rs a sysml:ReferenceSubsetting ; sysml:elementId "Q__ctx__ss_rs" ; @@ -1424,6 +1407,23 @@ elmt:Q__ctx__ss_rs sysml:ownedRelatedElement ; json:relatedElement "[{\"@id\":\"Q__ctx__ss\"},{\"@id\":\"Q__ctx__ss_pchain0\"}]" . +elmt:Q__ctx__ss_rd0 + a sysml:Redefinition ; + sysml:elementId "Q__ctx__ss_rd0" ; + sysml:redefiningFeature elmt:Q__ctx__ss ; + sysml:subsettingFeature elmt:Q__ctx__ss ; + sysml:owningFeature elmt:Q__ctx__ss ; + sysml:specific elmt:Q__ctx__ss ; + sysml:source elmt:Q__ctx__ss ; + sysml:owningRelatedElement elmt:Q__ctx__ss ; + sysml:redefinedFeature elmt:Q__Ctx__s2 ; + sysml:subsettedFeature elmt:Q__Ctx__s2 ; + sysml:general elmt:Q__Ctx__s2 ; + sysml:target elmt:Q__Ctx__s2 ; + sysml:owner elmt:Q__ctx__ss ; + sysml:relatedElement elmt:Q__ctx__ss, elmt:Q__Ctx__s2 ; + json:relatedElement "[{\"@id\":\"Q__ctx__ss\"},{\"@id\":\"Q__Ctx__s2\"}]" . + elmt:Q__ctx__iu_ft0 a sysml:FeatureTyping ; sysml:elementId "Q__ctx__iu_ft0" ; diff --git a/tests/export/testdata/convert/ref_subsets.canonical.golden.sysml b/tests/export/testdata/convert/ref_subsets.canonical.golden.sysml index c76cd36840..78eb1ae4a2 100644 --- a/tests/export/testdata/convert/ref_subsets.canonical.golden.sysml +++ b/tests/export/testdata/convert/ref_subsets.canonical.golden.sysml @@ -7,6 +7,6 @@ package ReferenceSubsets { ref spare subsets vehicle_c1; ref 'spare wheel' subsets vehicle_c1; ref fleet[0..*] subsets vehicle_c1; - ref presidentOfCountry : Person[0..1] subsets vehicle_c1; + ref presidentOfCountry[0..1] : Person subsets vehicle_c1; } } diff --git a/tests/export/testdata/convert/relations.golden.ttl b/tests/export/testdata/convert/relations.golden.ttl index 4f8fbc927b..060f0b5c38 100644 --- a/tests/export/testdata/convert/relations.golden.ttl +++ b/tests/export/testdata/convert/relations.golden.ttl @@ -71,14 +71,14 @@ elmt:Relations__Sub sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:Relations__Sub__b ; sysml:ownedMembership elmt:Relations__Sub__b_om ; - sysml:ownedRelationship elmt:Relations__Sub__b_om, elmt:Relations__Sub_sc0 ; + sysml:ownedRelationship elmt:Relations__Sub_sc0, elmt:Relations__Sub__b_om ; sysml:ownedFeature elmt:Relations__Sub__b ; sysml:ownedFeatureMembership elmt:Relations__Sub__b_om ; sysml:ownedSubclassification elmt:Relations__Sub_sc0 ; sysml:ownedSpecialization elmt:Relations__Sub_sc0 ; sysx:sourceText " part def Sub specializes Base {\n" ; sysx:sourceTail " }\n" ; - json:ownedRelationship "[{\"@id\":\"Relations__Sub__b_om\"},{\"@id\":\"Relations__Sub_sc0\"}]" . + json:ownedRelationship "[{\"@id\":\"Relations__Sub_sc0\"},{\"@id\":\"Relations__Sub__b_om\"}]" . elmt:Relations__Sub_om a sysml:OwningMembership ; @@ -142,7 +142,7 @@ elmt:Relations__Other sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:Relations__Other__r, elmt:Relations__Other__s ; sysml:ownedMembership elmt:Relations__Other__r_om, elmt:Relations__Other__s_om ; - sysml:ownedRelationship elmt:Relations__Other__r_om, elmt:Relations__Other__s_om, elmt:Relations__Other_sc0 ; + sysml:ownedRelationship elmt:Relations__Other_sc0, elmt:Relations__Other__r_om, elmt:Relations__Other__s_om ; sysml:ownedFeature elmt:Relations__Other__r, elmt:Relations__Other__s ; sysml:ownedFeatureMembership elmt:Relations__Other__r_om, elmt:Relations__Other__s_om ; sysml:ownedSubclassification elmt:Relations__Other_sc0 ; @@ -151,7 +151,7 @@ elmt:Relations__Other sysx:sourceTail " }\n" ; json:ownedMember "[{\"@id\":\"Relations__Other__r\"},{\"@id\":\"Relations__Other__s\"}]" ; json:ownedMembership "[{\"@id\":\"Relations__Other__r_om\"},{\"@id\":\"Relations__Other__s_om\"}]" ; - json:ownedRelationship "[{\"@id\":\"Relations__Other__r_om\"},{\"@id\":\"Relations__Other__s_om\"},{\"@id\":\"Relations__Other_sc0\"}]" ; + json:ownedRelationship "[{\"@id\":\"Relations__Other_sc0\"},{\"@id\":\"Relations__Other__r_om\"},{\"@id\":\"Relations__Other__s_om\"}]" ; json:ownedFeature "[{\"@id\":\"Relations__Other__r\"},{\"@id\":\"Relations__Other__s\"}]" ; json:ownedFeatureMembership "[{\"@id\":\"Relations__Other__r_om\"},{\"@id\":\"Relations__Other__s_om\"}]" . diff --git a/tests/export/testdata/convert/relationship_clause_order.canonical.golden.sysml b/tests/export/testdata/convert/relationship_clause_order.canonical.golden.sysml index 92d3ba5d4c..e9bea364ff 100644 --- a/tests/export/testdata/convert/relationship_clause_order.canonical.golden.sysml +++ b/tests/export/testdata/convert/relationship_clause_order.canonical.golden.sysml @@ -4,12 +4,12 @@ package ClauseOrder { attribute num : Real; } part def Ratio specializes Quantity { - attribute : Real redefines num; + attribute redefines num : Real; } part def Ctx; part def Mission { part context : Ctx; - snapshot groundSystemAtIngress : Ctx subsets context { + snapshot groundSystemAtIngress subsets context : Ctx { } } } diff --git a/tests/export/testdata/convert/relationship_clause_order.golden.ttl b/tests/export/testdata/convert/relationship_clause_order.golden.ttl index a0b40c23f6..0d930daac2 100644 --- a/tests/export/testdata/convert/relationship_clause_order.golden.ttl +++ b/tests/export/testdata/convert/relationship_clause_order.golden.ttl @@ -128,13 +128,13 @@ elmt:ClauseOrder__Ratio sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:ClauseOrder__Ratio__num ; sysml:ownedMembership elmt:ClauseOrder__Ratio__num_om ; - sysml:ownedRelationship elmt:ClauseOrder__Ratio__num_om, elmt:ClauseOrder__Ratio_sc0 ; + sysml:ownedRelationship elmt:ClauseOrder__Ratio_sc0, elmt:ClauseOrder__Ratio__num_om ; sysml:ownedFeature elmt:ClauseOrder__Ratio__num ; sysml:ownedFeatureMembership elmt:ClauseOrder__Ratio__num_om ; sysml:ownedSubclassification elmt:ClauseOrder__Ratio_sc0 ; sysml:ownedSpecialization elmt:ClauseOrder__Ratio_sc0 ; sysx:sourceText " part def Ratio :> Quantity { attribute :>> num : ScalarValues::Real; }\n" ; - json:ownedRelationship "[{\"@id\":\"ClauseOrder__Ratio__num_om\"},{\"@id\":\"ClauseOrder__Ratio_sc0\"}]" . + json:ownedRelationship "[{\"@id\":\"ClauseOrder__Ratio_sc0\"},{\"@id\":\"ClauseOrder__Ratio__num_om\"}]" . elmt:ClauseOrder__Ratio_om a sysml:OwningMembership ; @@ -164,13 +164,13 @@ elmt:ClauseOrder__Ratio__num sysml:type ; sysml:redefines elmt:ClauseOrder__Quantity__num ; sysx:hasBody "false"^^xsd:boolean ; - sysml:ownedTyping elmt:ClauseOrder__Ratio__num_ft0 ; - sysml:ownedSpecialization elmt:ClauseOrder__Ratio__num_ft0, elmt:ClauseOrder__Ratio__num_rd0 ; - sysml:ownedRelationship elmt:ClauseOrder__Ratio__num_ft0, elmt:ClauseOrder__Ratio__num_rd0 ; sysml:ownedRedefinition elmt:ClauseOrder__Ratio__num_rd0 ; sysml:ownedSubsetting elmt:ClauseOrder__Ratio__num_rd0 ; - json:ownedSpecialization "[{\"@id\":\"ClauseOrder__Ratio__num_ft0\"},{\"@id\":\"ClauseOrder__Ratio__num_rd0\"}]" ; - json:ownedRelationship "[{\"@id\":\"ClauseOrder__Ratio__num_ft0\"},{\"@id\":\"ClauseOrder__Ratio__num_rd0\"}]" . + sysml:ownedSpecialization elmt:ClauseOrder__Ratio__num_rd0, elmt:ClauseOrder__Ratio__num_ft0 ; + sysml:ownedRelationship elmt:ClauseOrder__Ratio__num_rd0, elmt:ClauseOrder__Ratio__num_ft0 ; + sysml:ownedTyping elmt:ClauseOrder__Ratio__num_ft0 ; + json:ownedSpecialization "[{\"@id\":\"ClauseOrder__Ratio__num_rd0\"},{\"@id\":\"ClauseOrder__Ratio__num_ft0\"}]" ; + json:ownedRelationship "[{\"@id\":\"ClauseOrder__Ratio__num_rd0\"},{\"@id\":\"ClauseOrder__Ratio__num_ft0\"}]" . elmt:ClauseOrder__Ratio__num_om a sysml:FeatureMembership ; @@ -304,13 +304,13 @@ elmt:ClauseOrder__Mission__groundSystemAtIngress sysml:type elmt:ClauseOrder__Ctx ; sysml:subsets elmt:ClauseOrder__Mission__context ; sysx:hasBody "true"^^xsd:boolean ; - sysml:ownedTyping elmt:ClauseOrder__Mission__groundSystemAtIngress_ft0 ; - sysml:ownedSpecialization elmt:ClauseOrder__Mission__groundSystemAtIngress_ft0, elmt:ClauseOrder__Mission__groundSystemAtIngress_ss0 ; - sysml:ownedRelationship elmt:ClauseOrder__Mission__groundSystemAtIngress_ft0, elmt:ClauseOrder__Mission__groundSystemAtIngress_ss0 ; sysml:ownedSubsetting elmt:ClauseOrder__Mission__groundSystemAtIngress_ss0 ; + sysml:ownedSpecialization elmt:ClauseOrder__Mission__groundSystemAtIngress_ss0, elmt:ClauseOrder__Mission__groundSystemAtIngress_ft0 ; + sysml:ownedRelationship elmt:ClauseOrder__Mission__groundSystemAtIngress_ss0, elmt:ClauseOrder__Mission__groundSystemAtIngress_ft0 ; + sysml:ownedTyping elmt:ClauseOrder__Mission__groundSystemAtIngress_ft0 ; sysx:sourceText " snapshot groundSystemAtIngress :> context : Ctx { }\n" ; - json:ownedSpecialization "[{\"@id\":\"ClauseOrder__Mission__groundSystemAtIngress_ft0\"},{\"@id\":\"ClauseOrder__Mission__groundSystemAtIngress_ss0\"}]" ; - json:ownedRelationship "[{\"@id\":\"ClauseOrder__Mission__groundSystemAtIngress_ft0\"},{\"@id\":\"ClauseOrder__Mission__groundSystemAtIngress_ss0\"}]" . + json:ownedSpecialization "[{\"@id\":\"ClauseOrder__Mission__groundSystemAtIngress_ss0\"},{\"@id\":\"ClauseOrder__Mission__groundSystemAtIngress_ft0\"}]" ; + json:ownedRelationship "[{\"@id\":\"ClauseOrder__Mission__groundSystemAtIngress_ss0\"},{\"@id\":\"ClauseOrder__Mission__groundSystemAtIngress_ft0\"}]" . elmt:ClauseOrder__Mission__groundSystemAtIngress_om a sysml:FeatureMembership ; @@ -354,21 +354,6 @@ elmt:ClauseOrder__Ratio_sc0 sysml:relatedElement elmt:ClauseOrder__Ratio, elmt:ClauseOrder__Quantity ; json:relatedElement "[{\"@id\":\"ClauseOrder__Ratio\"},{\"@id\":\"ClauseOrder__Quantity\"}]" . -elmt:ClauseOrder__Ratio__num_ft0 - a sysml:FeatureTyping ; - sysml:elementId "ClauseOrder__Ratio__num_ft0" ; - sysml:typedFeature elmt:ClauseOrder__Ratio__num ; - sysml:owningFeature elmt:ClauseOrder__Ratio__num ; - sysml:specific elmt:ClauseOrder__Ratio__num ; - sysml:source elmt:ClauseOrder__Ratio__num ; - sysml:owningRelatedElement elmt:ClauseOrder__Ratio__num ; - sysml:type ; - sysml:general ; - sysml:target ; - sysml:owner elmt:ClauseOrder__Ratio__num ; - sysml:relatedElement elmt:ClauseOrder__Ratio__num, ; - json:relatedElement "[{\"@id\":\"ClauseOrder__Ratio__num\"},{\"@id\":\"14c0aa22-5489-59b5-b438-ded26e83ba31\"}]" . - elmt:ClauseOrder__Ratio__num_rd0 a sysml:Redefinition ; sysml:elementId "ClauseOrder__Ratio__num_rd0" ; @@ -386,6 +371,21 @@ elmt:ClauseOrder__Ratio__num_rd0 sysml:relatedElement elmt:ClauseOrder__Ratio__num, elmt:ClauseOrder__Quantity__num ; json:relatedElement "[{\"@id\":\"ClauseOrder__Ratio__num\"},{\"@id\":\"ClauseOrder__Quantity__num\"}]" . +elmt:ClauseOrder__Ratio__num_ft0 + a sysml:FeatureTyping ; + sysml:elementId "ClauseOrder__Ratio__num_ft0" ; + sysml:typedFeature elmt:ClauseOrder__Ratio__num ; + sysml:owningFeature elmt:ClauseOrder__Ratio__num ; + sysml:specific elmt:ClauseOrder__Ratio__num ; + sysml:source elmt:ClauseOrder__Ratio__num ; + sysml:owningRelatedElement elmt:ClauseOrder__Ratio__num ; + sysml:type ; + sysml:general ; + sysml:target ; + sysml:owner elmt:ClauseOrder__Ratio__num ; + sysml:relatedElement elmt:ClauseOrder__Ratio__num, ; + json:relatedElement "[{\"@id\":\"ClauseOrder__Ratio__num\"},{\"@id\":\"14c0aa22-5489-59b5-b438-ded26e83ba31\"}]" . + elmt:ClauseOrder__Mission__context_ft0 a sysml:FeatureTyping ; sysml:elementId "ClauseOrder__Mission__context_ft0" ; @@ -401,21 +401,6 @@ elmt:ClauseOrder__Mission__context_ft0 sysml:relatedElement elmt:ClauseOrder__Mission__context, elmt:ClauseOrder__Ctx ; json:relatedElement "[{\"@id\":\"ClauseOrder__Mission__context\"},{\"@id\":\"ClauseOrder__Ctx\"}]" . -elmt:ClauseOrder__Mission__groundSystemAtIngress_ft0 - a sysml:FeatureTyping ; - sysml:elementId "ClauseOrder__Mission__groundSystemAtIngress_ft0" ; - sysml:typedFeature elmt:ClauseOrder__Mission__groundSystemAtIngress ; - sysml:owningFeature elmt:ClauseOrder__Mission__groundSystemAtIngress ; - sysml:specific elmt:ClauseOrder__Mission__groundSystemAtIngress ; - sysml:source elmt:ClauseOrder__Mission__groundSystemAtIngress ; - sysml:owningRelatedElement elmt:ClauseOrder__Mission__groundSystemAtIngress ; - sysml:type elmt:ClauseOrder__Ctx ; - sysml:general elmt:ClauseOrder__Ctx ; - sysml:target elmt:ClauseOrder__Ctx ; - sysml:owner elmt:ClauseOrder__Mission__groundSystemAtIngress ; - sysml:relatedElement elmt:ClauseOrder__Mission__groundSystemAtIngress, elmt:ClauseOrder__Ctx ; - json:relatedElement "[{\"@id\":\"ClauseOrder__Mission__groundSystemAtIngress\"},{\"@id\":\"ClauseOrder__Ctx\"}]" . - elmt:ClauseOrder__Mission__groundSystemAtIngress_ss0 a sysml:Subsetting ; sysml:elementId "ClauseOrder__Mission__groundSystemAtIngress_ss0" ; @@ -431,6 +416,21 @@ elmt:ClauseOrder__Mission__groundSystemAtIngress_ss0 sysml:relatedElement elmt:ClauseOrder__Mission__groundSystemAtIngress, elmt:ClauseOrder__Mission__context ; json:relatedElement "[{\"@id\":\"ClauseOrder__Mission__groundSystemAtIngress\"},{\"@id\":\"ClauseOrder__Mission__context\"}]" . +elmt:ClauseOrder__Mission__groundSystemAtIngress_ft0 + a sysml:FeatureTyping ; + sysml:elementId "ClauseOrder__Mission__groundSystemAtIngress_ft0" ; + sysml:typedFeature elmt:ClauseOrder__Mission__groundSystemAtIngress ; + sysml:owningFeature elmt:ClauseOrder__Mission__groundSystemAtIngress ; + sysml:specific elmt:ClauseOrder__Mission__groundSystemAtIngress ; + sysml:source elmt:ClauseOrder__Mission__groundSystemAtIngress ; + sysml:owningRelatedElement elmt:ClauseOrder__Mission__groundSystemAtIngress ; + sysml:type elmt:ClauseOrder__Ctx ; + sysml:general elmt:ClauseOrder__Ctx ; + sysml:target elmt:ClauseOrder__Ctx ; + sysml:owner elmt:ClauseOrder__Mission__groundSystemAtIngress ; + sysml:relatedElement elmt:ClauseOrder__Mission__groundSystemAtIngress, elmt:ClauseOrder__Ctx ; + json:relatedElement "[{\"@id\":\"ClauseOrder__Mission__groundSystemAtIngress\"},{\"@id\":\"ClauseOrder__Ctx\"}]" . + a sysml:DataType ; sysml:elementId "14c0aa22-5489-59b5-b438-ded26e83ba31" ; diff --git a/tests/export/testdata/convert/result_expressions.golden.ttl.sha256 b/tests/export/testdata/convert/result_expressions.golden.ttl.sha256 index a495e46fe0..faaa47d9e0 100644 --- a/tests/export/testdata/convert/result_expressions.golden.ttl.sha256 +++ b/tests/export/testdata/convert/result_expressions.golden.ttl.sha256 @@ -1,4 +1,4 @@ -sha256 ceb9535ccd24eb6df32e7da7f996eee26a955848b07a79eb3341b5091d9051fc bytes 417354 lines 7447 +sha256 eb4560391dbb51f9c4e25422045f0abd164be4094d10bc57173429e22febb599 bytes 417354 lines 7447 @prefix elmt: . @prefix expr: . @prefix json: . diff --git a/tests/export/testdata/convert/shadowed_references.canonical.golden.sysml b/tests/export/testdata/convert/shadowed_references.canonical.golden.sysml index 4a2089c5c2..6486aee5d0 100644 --- a/tests/export/testdata/convert/shadowed_references.canonical.golden.sysml +++ b/tests/export/testdata/convert/shadowed_references.canonical.golden.sysml @@ -31,7 +31,7 @@ package Shadowing { subject vehicle : Bus; } analysis study : Study { - subject subsets bus redefines vehicle; + subject redefines vehicle subsets bus; } analysis deeper subsets study { attribute load = vehicle.cargo; diff --git a/tests/export/testdata/convert/shadowed_references.golden.ttl b/tests/export/testdata/convert/shadowed_references.golden.ttl index 2fb638934a..e92fff63a5 100644 --- a/tests/export/testdata/convert/shadowed_references.golden.ttl +++ b/tests/export/testdata/convert/shadowed_references.golden.ttl @@ -206,7 +206,7 @@ elmt:Shadowing__Thermal_20Packet sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:Shadowing__Thermal_20Packet__packet_20data_20field, elmt:Shadowing__Thermal_20Packet__data_20field ; sysml:ownedMembership elmt:Shadowing__Thermal_20Packet__packet_20data_20field_om, elmt:Shadowing__Thermal_20Packet__data_20field_om ; - sysml:ownedRelationship elmt:Shadowing__Thermal_20Packet__packet_20data_20field_om, elmt:Shadowing__Thermal_20Packet__data_20field_om, elmt:Shadowing__Thermal_20Packet_sc0 ; + sysml:ownedRelationship elmt:Shadowing__Thermal_20Packet_sc0, elmt:Shadowing__Thermal_20Packet__packet_20data_20field_om, elmt:Shadowing__Thermal_20Packet__data_20field_om ; sysml:ownedFeature elmt:Shadowing__Thermal_20Packet__packet_20data_20field, elmt:Shadowing__Thermal_20Packet__data_20field ; sysml:ownedFeatureMembership elmt:Shadowing__Thermal_20Packet__packet_20data_20field_om, elmt:Shadowing__Thermal_20Packet__data_20field_om ; sysml:ownedSubclassification elmt:Shadowing__Thermal_20Packet_sc0 ; @@ -215,7 +215,7 @@ elmt:Shadowing__Thermal_20Packet sysx:sourceTail " }\n" ; json:ownedMember "[{\"@id\":\"Shadowing__Thermal_20Packet__packet_20data_20field\"},{\"@id\":\"Shadowing__Thermal_20Packet__data_20field\"}]" ; json:ownedMembership "[{\"@id\":\"Shadowing__Thermal_20Packet__packet_20data_20field_om\"},{\"@id\":\"Shadowing__Thermal_20Packet__data_20field_om\"}]" ; - json:ownedRelationship "[{\"@id\":\"Shadowing__Thermal_20Packet__packet_20data_20field_om\"},{\"@id\":\"Shadowing__Thermal_20Packet__data_20field_om\"},{\"@id\":\"Shadowing__Thermal_20Packet_sc0\"}]" ; + json:ownedRelationship "[{\"@id\":\"Shadowing__Thermal_20Packet_sc0\"},{\"@id\":\"Shadowing__Thermal_20Packet__packet_20data_20field_om\"},{\"@id\":\"Shadowing__Thermal_20Packet__data_20field_om\"}]" ; json:ownedFeature "[{\"@id\":\"Shadowing__Thermal_20Packet__packet_20data_20field\"},{\"@id\":\"Shadowing__Thermal_20Packet__data_20field\"}]" ; json:ownedFeatureMembership "[{\"@id\":\"Shadowing__Thermal_20Packet__packet_20data_20field_om\"},{\"@id\":\"Shadowing__Thermal_20Packet__data_20field_om\"}]" . @@ -283,7 +283,7 @@ elmt:Shadowing__Thermal_20Packet__data_20field sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:Shadowing__Thermal_20Packet__data_20field__data_20field ; sysml:ownedMembership elmt:Shadowing__Thermal_20Packet__data_20field__data_20field_om ; - sysml:ownedRelationship elmt:Shadowing__Thermal_20Packet__data_20field__data_20field_om, elmt:Shadowing__Thermal_20Packet__data_20field_rd0 ; + sysml:ownedRelationship elmt:Shadowing__Thermal_20Packet__data_20field_rd0, elmt:Shadowing__Thermal_20Packet__data_20field__data_20field_om ; sysml:ownedFeature elmt:Shadowing__Thermal_20Packet__data_20field__data_20field ; sysml:ownedFeatureMembership elmt:Shadowing__Thermal_20Packet__data_20field__data_20field_om ; sysml:ownedRedefinition elmt:Shadowing__Thermal_20Packet__data_20field_rd0 ; @@ -291,7 +291,7 @@ elmt:Shadowing__Thermal_20Packet__data_20field sysml:ownedSpecialization elmt:Shadowing__Thermal_20Packet__data_20field_rd0 ; sysx:sourceText " attribute 'data field' :>> Packet::'data field' {\n" ; sysx:sourceTail " }\n" ; - json:ownedRelationship "[{\"@id\":\"Shadowing__Thermal_20Packet__data_20field__data_20field_om\"},{\"@id\":\"Shadowing__Thermal_20Packet__data_20field_rd0\"}]" . + json:ownedRelationship "[{\"@id\":\"Shadowing__Thermal_20Packet__data_20field_rd0\"},{\"@id\":\"Shadowing__Thermal_20Packet__data_20field__data_20field_om\"}]" . elmt:Shadowing__Thermal_20Packet__data_20field_om a sysml:FeatureMembership ; @@ -819,14 +819,14 @@ elmt:Shadowing__Bus__budgeted sysx:declaredPrefix "assert" ; sysml:type elmt:Shadowing__Budget ; sysml:subject elmt:Shadowing__Bus__payload ; - sysml:ownedRelationship elmt:Shadowing__Bus__budgeted_subject_om, elmt:Shadowing__Bus__budgeted_ft0 ; + sysml:ownedRelationship elmt:Shadowing__Bus__budgeted_ft0, elmt:Shadowing__Bus__budgeted_subject_om ; sysml:ownedMember elmt:Shadowing__Bus__budgeted_subject ; sysml:ownedMembership elmt:Shadowing__Bus__budgeted_subject_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:Shadowing__Bus__budgeted_ft0 ; sysml:ownedSpecialization elmt:Shadowing__Bus__budgeted_ft0 ; sysx:sourceText " assert satisfy requirement budgeted : Shadowing::Budget by payload;\n" ; - json:ownedRelationship "[{\"@id\":\"Shadowing__Bus__budgeted_subject_om\"},{\"@id\":\"Shadowing__Bus__budgeted_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"Shadowing__Bus__budgeted_ft0\"},{\"@id\":\"Shadowing__Bus__budgeted_subject_om\"}]" . elmt:Shadowing__Bus__budgeted_om a sysml:FeatureMembership ; @@ -999,7 +999,7 @@ elmt:Shadowing___408 sysml:isComposite "false"^^xsd:boolean ; sysml:subsets elmt:Shadowing__budget ; sysml:subject elmt:Shadowing__payload ; - sysml:ownedRelationship elmt:Shadowing___408_subject_om, elmt:Shadowing___408_rs ; + sysml:ownedRelationship elmt:Shadowing___408_rs, elmt:Shadowing___408_subject_om ; sysml:ownedMember elmt:Shadowing___408_subject ; sysml:ownedMembership elmt:Shadowing___408_subject_om ; sysx:endForm "satisfy" ; @@ -1008,7 +1008,7 @@ elmt:Shadowing___408 sysml:ownedSubsetting elmt:Shadowing___408_rs ; sysml:ownedSpecialization elmt:Shadowing___408_rs ; sysx:sourceText " satisfy budget by payload;\n" ; - json:ownedRelationship "[{\"@id\":\"Shadowing___408_subject_om\"},{\"@id\":\"Shadowing___408_rs\"}]" . + json:ownedRelationship "[{\"@id\":\"Shadowing___408_rs\"},{\"@id\":\"Shadowing___408_subject_om\"}]" . elmt:Shadowing___408_om a sysml:OwningMembership ; @@ -1223,14 +1223,14 @@ elmt:Shadowing__study sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:Shadowing__study__vehicle ; sysml:ownedMembership elmt:Shadowing__study__vehicle_om ; - sysml:ownedRelationship elmt:Shadowing__study__vehicle_om, elmt:Shadowing__study_ft0 ; + sysml:ownedRelationship elmt:Shadowing__study_ft0, elmt:Shadowing__study__vehicle_om ; sysml:ownedFeature elmt:Shadowing__study__vehicle ; sysml:ownedFeatureMembership elmt:Shadowing__study__vehicle_om ; sysml:ownedTyping elmt:Shadowing__study_ft0 ; sysml:ownedSpecialization elmt:Shadowing__study_ft0 ; sysx:sourceText " analysis study : Study {\n" ; sysx:sourceTail " }\n" ; - json:ownedRelationship "[{\"@id\":\"Shadowing__study__vehicle_om\"},{\"@id\":\"Shadowing__study_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"Shadowing__study_ft0\"},{\"@id\":\"Shadowing__study__vehicle_om\"}]" . elmt:Shadowing__study_om a sysml:OwningMembership ; @@ -1261,14 +1261,14 @@ elmt:Shadowing__study__vehicle sysml:subsets elmt:Shadowing__bus ; sysml:redefines elmt:Shadowing__Study__vehicle ; sysx:hasBody "false"^^xsd:boolean ; - sysml:ownedSubsetting elmt:Shadowing__study__vehicle_ss0, elmt:Shadowing__study__vehicle_rd0 ; - sysml:ownedSpecialization elmt:Shadowing__study__vehicle_ss0, elmt:Shadowing__study__vehicle_rd0 ; - sysml:ownedRelationship elmt:Shadowing__study__vehicle_ss0, elmt:Shadowing__study__vehicle_rd0 ; sysml:ownedRedefinition elmt:Shadowing__study__vehicle_rd0 ; + sysml:ownedSubsetting elmt:Shadowing__study__vehicle_rd0, elmt:Shadowing__study__vehicle_ss0 ; + sysml:ownedSpecialization elmt:Shadowing__study__vehicle_rd0, elmt:Shadowing__study__vehicle_ss0 ; + sysml:ownedRelationship elmt:Shadowing__study__vehicle_rd0, elmt:Shadowing__study__vehicle_ss0 ; sysx:sourceText " subject :>> vehicle :> bus;\n" ; - json:ownedSubsetting "[{\"@id\":\"Shadowing__study__vehicle_ss0\"},{\"@id\":\"Shadowing__study__vehicle_rd0\"}]" ; - json:ownedSpecialization "[{\"@id\":\"Shadowing__study__vehicle_ss0\"},{\"@id\":\"Shadowing__study__vehicle_rd0\"}]" ; - json:ownedRelationship "[{\"@id\":\"Shadowing__study__vehicle_ss0\"},{\"@id\":\"Shadowing__study__vehicle_rd0\"}]" . + json:ownedSubsetting "[{\"@id\":\"Shadowing__study__vehicle_rd0\"},{\"@id\":\"Shadowing__study__vehicle_ss0\"}]" ; + json:ownedSpecialization "[{\"@id\":\"Shadowing__study__vehicle_rd0\"},{\"@id\":\"Shadowing__study__vehicle_ss0\"}]" ; + json:ownedRelationship "[{\"@id\":\"Shadowing__study__vehicle_rd0\"},{\"@id\":\"Shadowing__study__vehicle_ss0\"}]" . elmt:Shadowing__study__vehicle_om a sysml:SubjectMembership ; @@ -1303,14 +1303,14 @@ elmt:Shadowing__deeper sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:Shadowing__deeper__load ; sysml:ownedMembership elmt:Shadowing__deeper__load_om ; - sysml:ownedRelationship elmt:Shadowing__deeper__load_om, elmt:Shadowing__deeper_ss0 ; + sysml:ownedRelationship elmt:Shadowing__deeper_ss0, elmt:Shadowing__deeper__load_om ; sysml:ownedFeature elmt:Shadowing__deeper__load ; sysml:ownedFeatureMembership elmt:Shadowing__deeper__load_om ; sysml:ownedSubsetting elmt:Shadowing__deeper_ss0 ; sysml:ownedSpecialization elmt:Shadowing__deeper_ss0 ; sysx:sourceText " analysis deeper :> study {\n" ; sysx:sourceTail " }\n" ; - json:ownedRelationship "[{\"@id\":\"Shadowing__deeper__load_om\"},{\"@id\":\"Shadowing__deeper_ss0\"}]" . + json:ownedRelationship "[{\"@id\":\"Shadowing__deeper_ss0\"},{\"@id\":\"Shadowing__deeper__load_om\"}]" . elmt:Shadowing__deeper_om a sysml:OwningMembership ; @@ -2269,21 +2269,6 @@ elmt:Shadowing__study_ft0 sysml:relatedElement elmt:Shadowing__study, elmt:Shadowing__Study ; json:relatedElement "[{\"@id\":\"Shadowing__study\"},{\"@id\":\"Shadowing__Study\"}]" . -elmt:Shadowing__study__vehicle_ss0 - a sysml:Subsetting ; - sysml:elementId "Shadowing__study__vehicle_ss0" ; - sysml:subsettingFeature elmt:Shadowing__study__vehicle ; - sysml:owningFeature elmt:Shadowing__study__vehicle ; - sysml:specific elmt:Shadowing__study__vehicle ; - sysml:source elmt:Shadowing__study__vehicle ; - sysml:owningRelatedElement elmt:Shadowing__study__vehicle ; - sysml:subsettedFeature elmt:Shadowing__bus ; - sysml:general elmt:Shadowing__bus ; - sysml:target elmt:Shadowing__bus ; - sysml:owner elmt:Shadowing__study__vehicle ; - sysml:relatedElement elmt:Shadowing__study__vehicle, elmt:Shadowing__bus ; - json:relatedElement "[{\"@id\":\"Shadowing__study__vehicle\"},{\"@id\":\"Shadowing__bus\"}]" . - elmt:Shadowing__study__vehicle_rd0 a sysml:Redefinition ; sysml:elementId "Shadowing__study__vehicle_rd0" ; @@ -2301,6 +2286,21 @@ elmt:Shadowing__study__vehicle_rd0 sysml:relatedElement elmt:Shadowing__study__vehicle, elmt:Shadowing__Study__vehicle ; json:relatedElement "[{\"@id\":\"Shadowing__study__vehicle\"},{\"@id\":\"Shadowing__Study__vehicle\"}]" . +elmt:Shadowing__study__vehicle_ss0 + a sysml:Subsetting ; + sysml:elementId "Shadowing__study__vehicle_ss0" ; + sysml:subsettingFeature elmt:Shadowing__study__vehicle ; + sysml:owningFeature elmt:Shadowing__study__vehicle ; + sysml:specific elmt:Shadowing__study__vehicle ; + sysml:source elmt:Shadowing__study__vehicle ; + sysml:owningRelatedElement elmt:Shadowing__study__vehicle ; + sysml:subsettedFeature elmt:Shadowing__bus ; + sysml:general elmt:Shadowing__bus ; + sysml:target elmt:Shadowing__bus ; + sysml:owner elmt:Shadowing__study__vehicle ; + sysml:relatedElement elmt:Shadowing__study__vehicle, elmt:Shadowing__bus ; + json:relatedElement "[{\"@id\":\"Shadowing__study__vehicle\"},{\"@id\":\"Shadowing__bus\"}]" . + elmt:Shadowing__deeper_ss0 a sysml:Subsetting ; sysml:elementId "Shadowing__deeper_ss0" ; diff --git a/tests/export/testdata/convert/shadowing_body.golden.ttl b/tests/export/testdata/convert/shadowing_body.golden.ttl index ae5847906a..ef67be1bf5 100644 --- a/tests/export/testdata/convert/shadowing_body.golden.ttl +++ b/tests/export/testdata/convert/shadowing_body.golden.ttl @@ -162,14 +162,14 @@ elmt:ShadowBody__Sensor__readings sysml:declaredName "readings" ; sysml:type elmt:ShadowBody__Speed ; sysml:multiplicity expr:ShadowBody__Sensor__readings_pmultiplicity ; - sysml:ownedRelationship expr:ShadowBody__Sensor__readings_pmultiplicity_om, elmt:ShadowBody__Sensor__readings_ft0 ; + sysml:ownedRelationship elmt:ShadowBody__Sensor__readings_ft0, expr:ShadowBody__Sensor__readings_pmultiplicity_om ; sysml:ownedMembership expr:ShadowBody__Sensor__readings_pmultiplicity_om ; sysml:upperBound expr:ShadowBody__Sensor__readings_pupperBound ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:ShadowBody__Sensor__readings_ft0 ; sysml:ownedSpecialization elmt:ShadowBody__Sensor__readings_ft0 ; sysx:sourceText " attribute readings : Speed[*];\n" ; - json:ownedRelationship "[{\"@id\":\"ShadowBody__Sensor__readings_pmultiplicity_om\"},{\"@id\":\"ShadowBody__Sensor__readings_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"ShadowBody__Sensor__readings_ft0\"},{\"@id\":\"ShadowBody__Sensor__readings_pmultiplicity_om\"}]" . elmt:ShadowBody__Sensor__readings_om a sysml:FeatureMembership ; diff --git a/tests/export/testdata/convert/shadowing_parameters.golden.ttl b/tests/export/testdata/convert/shadowing_parameters.golden.ttl index 590e76cb4e..b74205b6fa 100644 --- a/tests/export/testdata/convert/shadowing_parameters.golden.ttl +++ b/tests/export/testdata/convert/shadowing_parameters.golden.ttl @@ -111,14 +111,14 @@ elmt:Shadows__Sweep__items sysml:direction "in" ; sysml:type elmt:Shadows__Speed ; sysml:multiplicity expr:Shadows__Sweep__items_pmultiplicity ; - sysml:ownedRelationship expr:Shadows__Sweep__items_pmultiplicity_om, elmt:Shadows__Sweep__items_ft0 ; + sysml:ownedRelationship elmt:Shadows__Sweep__items_ft0, expr:Shadows__Sweep__items_pmultiplicity_om ; sysml:ownedMembership expr:Shadows__Sweep__items_pmultiplicity_om ; sysml:upperBound expr:Shadows__Sweep__items_pupperBound ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:Shadows__Sweep__items_ft0 ; sysml:ownedSpecialization elmt:Shadows__Sweep__items_ft0 ; sysx:sourceText " in items : Speed[*];\n" ; - json:ownedRelationship "[{\"@id\":\"Shadows__Sweep__items_pmultiplicity_om\"},{\"@id\":\"Shadows__Sweep__items_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"Shadows__Sweep__items_ft0\"},{\"@id\":\"Shadows__Sweep__items_pmultiplicity_om\"}]" . elmt:Shadows__Sweep__items_om a sysml:FeatureMembership ; diff --git a/tests/export/testdata/convert/values.golden.ttl b/tests/export/testdata/convert/values.golden.ttl index 82491ab9b2..a67f7c988a 100644 --- a/tests/export/testdata/convert/values.golden.ttl +++ b/tests/export/testdata/convert/values.golden.ttl @@ -230,13 +230,13 @@ elmt:Values__Sized__size sysml:declaredName "size" ; sysml:type "Real" ; sysml:value expr:Values__Sized__size_pvalue ; - sysml:ownedRelationship expr:Values__Sized__size_pvalue_om, elmt:Values__Sized__size_ft0 ; + sysml:ownedRelationship elmt:Values__Sized__size_ft0, expr:Values__Sized__size_pvalue_om ; sysml:ownedMembership expr:Values__Sized__size_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:Values__Sized__size_ft0 ; sysml:ownedSpecialization elmt:Values__Sized__size_ft0 ; sysx:sourceText " attribute size : Real = 4.5;\n" ; - json:ownedRelationship "[{\"@id\":\"Values__Sized__size_pvalue_om\"},{\"@id\":\"Values__Sized__size_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"Values__Sized__size_ft0\"},{\"@id\":\"Values__Sized__size_pvalue_om\"}]" . elmt:Values__Sized__size_om a sysml:FeatureMembership ; @@ -289,13 +289,13 @@ elmt:Values__Sized__label sysml:declaredName "label" ; sysml:type "String" ; sysml:value expr:Values__Sized__label_pvalue ; - sysml:ownedRelationship expr:Values__Sized__label_pvalue_om, elmt:Values__Sized__label_ft0 ; + sysml:ownedRelationship elmt:Values__Sized__label_ft0, expr:Values__Sized__label_pvalue_om ; sysml:ownedMembership expr:Values__Sized__label_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:Values__Sized__label_ft0 ; sysml:ownedSpecialization elmt:Values__Sized__label_ft0 ; sysx:sourceText " attribute label : String = \"front\";\n" ; - json:ownedRelationship "[{\"@id\":\"Values__Sized__label_pvalue_om\"},{\"@id\":\"Values__Sized__label_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"Values__Sized__label_ft0\"},{\"@id\":\"Values__Sized__label_pvalue_om\"}]" . elmt:Values__Sized__label_om a sysml:FeatureMembership ; @@ -348,13 +348,13 @@ elmt:Values__Sized__total sysml:declaredName "total" ; sysml:type "Real" ; sysml:value expr:Values__Sized__total_pvalue ; - sysml:ownedRelationship expr:Values__Sized__total_pvalue_om, elmt:Values__Sized__total_ft0 ; + sysml:ownedRelationship elmt:Values__Sized__total_ft0, expr:Values__Sized__total_pvalue_om ; sysml:ownedMembership expr:Values__Sized__total_pvalue_om ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:Values__Sized__total_ft0 ; sysml:ownedSpecialization elmt:Values__Sized__total_ft0 ; sysx:sourceText " attribute total : Real = 1.0 + 2.0;\n" ; - json:ownedRelationship "[{\"@id\":\"Values__Sized__total_pvalue_om\"},{\"@id\":\"Values__Sized__total_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"Values__Sized__total_ft0\"},{\"@id\":\"Values__Sized__total_pvalue_om\"}]" . elmt:Values__Sized__total_om a sysml:FeatureMembership ; diff --git a/tests/export/testdata/convert/view_rendering.golden.ttl b/tests/export/testdata/convert/view_rendering.golden.ttl index a71a9bbb40..54db5cbb24 100644 --- a/tests/export/testdata/convert/view_rendering.golden.ttl +++ b/tests/export/testdata/convert/view_rendering.golden.ttl @@ -274,13 +274,13 @@ elmt:Views__WithBody__tree sysx:hasBody "true"^^xsd:boolean ; sysml:ownedMember elmt:Views__WithBody__tree___400 ; sysml:ownedMembership elmt:Views__WithBody__tree___400_om ; - sysml:ownedRelationship elmt:Views__WithBody__tree___400_om, elmt:Views__WithBody__tree_rs ; + sysml:ownedRelationship elmt:Views__WithBody__tree_rs, elmt:Views__WithBody__tree___400_om ; sysml:ownedReferenceSubsetting elmt:Views__WithBody__tree_rs ; sysml:ownedSubsetting elmt:Views__WithBody__tree_rs ; sysml:ownedSpecialization elmt:Views__WithBody__tree_rs ; sysx:sourceText " render tree {\n" ; sysx:sourceTail " }\n" ; - json:ownedRelationship "[{\"@id\":\"Views__WithBody__tree___400_om\"},{\"@id\":\"Views__WithBody__tree_rs\"}]" . + json:ownedRelationship "[{\"@id\":\"Views__WithBody__tree_rs\"},{\"@id\":\"Views__WithBody__tree___400_om\"}]" . elmt:Views__WithBody__tree_om a sysml:ViewRenderingMembership ; diff --git a/tests/export/testdata/convert/views_flows_parameters.golden.ttl b/tests/export/testdata/convert/views_flows_parameters.golden.ttl index 396e46ee3c..215ca86b8b 100644 --- a/tests/export/testdata/convert/views_flows_parameters.golden.ttl +++ b/tests/export/testdata/convert/views_flows_parameters.golden.ttl @@ -491,14 +491,14 @@ elmt:FlowsAndViews__tanks sysml:isUnique "false"^^xsd:boolean ; sysml:type elmt:FlowsAndViews__Tank ; sysml:multiplicity expr:FlowsAndViews__tanks_pmultiplicity ; - sysml:ownedRelationship expr:FlowsAndViews__tanks_pmultiplicity_om, elmt:FlowsAndViews__tanks_ft0 ; + sysml:ownedRelationship elmt:FlowsAndViews__tanks_ft0, expr:FlowsAndViews__tanks_pmultiplicity_om ; sysml:ownedMembership expr:FlowsAndViews__tanks_pmultiplicity_om ; sysml:upperBound expr:FlowsAndViews__tanks_pupperBound ; sysx:hasBody "false"^^xsd:boolean ; sysml:ownedTyping elmt:FlowsAndViews__tanks_ft0 ; sysml:ownedSpecialization elmt:FlowsAndViews__tanks_ft0 ; sysx:sourceText " part tanks : Tank[*] nonunique;\n" ; - json:ownedRelationship "[{\"@id\":\"FlowsAndViews__tanks_pmultiplicity_om\"},{\"@id\":\"FlowsAndViews__tanks_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"FlowsAndViews__tanks_ft0\"},{\"@id\":\"FlowsAndViews__tanks_pmultiplicity_om\"}]" . elmt:FlowsAndViews__tanks_om a sysml:OwningMembership ; @@ -642,7 +642,7 @@ elmt:FlowsAndViews__vehicle__spares sysml:type elmt:FlowsAndViews__Tank ; sysml:subsets elmt:FlowsAndViews__tanks ; sysml:multiplicity expr:FlowsAndViews__vehicle__spares_pmultiplicity ; - sysml:ownedRelationship expr:FlowsAndViews__vehicle__spares_pmultiplicity_om, elmt:FlowsAndViews__vehicle__spares_ft0, elmt:FlowsAndViews__vehicle__spares_ss0 ; + sysml:ownedRelationship elmt:FlowsAndViews__vehicle__spares_ft0, expr:FlowsAndViews__vehicle__spares_pmultiplicity_om, elmt:FlowsAndViews__vehicle__spares_ss0 ; sysml:ownedMembership expr:FlowsAndViews__vehicle__spares_pmultiplicity_om ; sysml:lowerBound expr:FlowsAndViews__vehicle__spares_plowerBound ; sysml:upperBound expr:FlowsAndViews__vehicle__spares_pupperBound ; @@ -651,7 +651,7 @@ elmt:FlowsAndViews__vehicle__spares sysml:ownedSpecialization elmt:FlowsAndViews__vehicle__spares_ft0, elmt:FlowsAndViews__vehicle__spares_ss0 ; sysml:ownedSubsetting elmt:FlowsAndViews__vehicle__spares_ss0 ; sysx:sourceText " part spares : Tank[0..2] nonunique :> tanks;\n" ; - json:ownedRelationship "[{\"@id\":\"FlowsAndViews__vehicle__spares_pmultiplicity_om\"},{\"@id\":\"FlowsAndViews__vehicle__spares_ft0\"},{\"@id\":\"FlowsAndViews__vehicle__spares_ss0\"}]" ; + json:ownedRelationship "[{\"@id\":\"FlowsAndViews__vehicle__spares_ft0\"},{\"@id\":\"FlowsAndViews__vehicle__spares_pmultiplicity_om\"},{\"@id\":\"FlowsAndViews__vehicle__spares_ss0\"}]" ; json:ownedSpecialization "[{\"@id\":\"FlowsAndViews__vehicle__spares_ft0\"},{\"@id\":\"FlowsAndViews__vehicle__spares_ss0\"}]" . elmt:FlowsAndViews__vehicle__spares_om @@ -1189,12 +1189,12 @@ elmt:FlowsAndViews__vehicleView sysml:declaredName "vehicleView" ; sysml:type elmt:FlowsAndViews__StructureView ; sysx:hasBody "true"^^xsd:boolean ; - sysml:ownedRelationship elmt:FlowsAndViews__vehicleView___400, elmt:FlowsAndViews__vehicleView_ft0 ; + sysml:ownedRelationship elmt:FlowsAndViews__vehicleView_ft0, elmt:FlowsAndViews__vehicleView___400 ; sysml:ownedImport elmt:FlowsAndViews__vehicleView___400 ; sysml:ownedTyping elmt:FlowsAndViews__vehicleView_ft0 ; sysml:ownedSpecialization elmt:FlowsAndViews__vehicleView_ft0 ; sysx:sourceText " view vehicleView : StructureView {\n expose vehicle::**;\n }\n" ; - json:ownedRelationship "[{\"@id\":\"FlowsAndViews__vehicleView___400\"},{\"@id\":\"FlowsAndViews__vehicleView_ft0\"}]" . + json:ownedRelationship "[{\"@id\":\"FlowsAndViews__vehicleView_ft0\"},{\"@id\":\"FlowsAndViews__vehicleView___400\"}]" . elmt:FlowsAndViews__vehicleView_om a sysml:OwningMembership ; diff --git a/tests/export/testdata/ontology-known-violations.txt b/tests/export/testdata/ontology-known-violations.txt index 33b1444bb8..97476a36e6 100644 --- a/tests/export/testdata/ontology-known-violations.txt +++ b/tests/export/testdata/ontology-known-violations.txt @@ -14,6 +14,7 @@ # longer collapse (D3.3 materializes the membership); the rest still do. The # property name is right; the subject should have been the intervening element. domain-mismatch AttributeUsage value # FeatureValue_value: the feature value is written on the usage instead of a FeatureValue membership +domain-mismatch AttributeUsage isDefault # FeatureValue_isDefault: the `default` of a feature value is written on the usage beside the value, the same collapse domain-mismatch ReferenceUsage value # FeatureValue_value: same collapse on a kindless usage's value domain-mismatch AssignmentActionUsage value # FeatureValue_value: same collapse on an assignment's target value domain-mismatch PayloadFeature value # FeatureValue_value: same collapse on a flow payload's value (`message of cmd : P = m.cmd`)