@memoarchitect/ontology 0.13.2 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/README.md +5 -3
  2. package/examples/connected-patient-monitor/memo.identity.yaml +34 -0
  3. package/examples/connected-patient-monitor/memo.package.yaml +3 -1
  4. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +17 -12
  5. package/examples/connected-patient-monitor/model/{catalog → methodology}/project.sysml +4 -5
  6. package/examples/embedded-infusion-pump/memo.package.yaml +3 -1
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +6 -6
  8. package/examples/embedded-infusion-pump/model/{catalog → methodology}/project.sysml +4 -5
  9. package/examples/functional-logical-physical/memo.identity.yaml +28 -0
  10. package/examples/functional-logical-physical/memo.package.yaml +3 -1
  11. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  12. package/examples/functional-logical-physical/model/{catalog → methodology}/project.sysml +4 -5
  13. package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +40 -139
  14. package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +38 -290
  15. package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +47 -217
  16. package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +50 -191
  17. package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +42 -181
  18. package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +40 -164
  19. package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +51 -172
  20. package/examples/gpca-pump/analysis/Samples/README.md +15 -9
  21. package/examples/gpca-pump/analysis/memo_model.py +243 -0
  22. package/examples/gpca-pump/memo.identity.yaml +521 -26
  23. package/examples/gpca-pump/memo.package.yaml +3 -1
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +56 -47
  25. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +51 -78
  26. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +359 -357
  27. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +9 -9
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +56 -69
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +44 -59
  30. package/examples/gpca-pump/model/catalog/gpca_context.sysml +23 -35
  31. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +33 -40
  32. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +62 -63
  33. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +362 -483
  34. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +45 -70
  35. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -12
  36. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +173 -169
  37. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +139 -225
  38. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +43 -47
  39. package/examples/gpca-pump/model/catalog/gpca_system.sysml +68 -65
  40. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +147 -116
  41. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +65 -90
  42. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +4 -6
  43. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +4 -6
  44. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +4 -6
  45. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +4 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +2 -4
  47. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +7 -6
  48. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +4 -6
  49. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -6
  50. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
  51. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +4 -6
  52. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +4 -6
  53. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +3 -5
  54. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +3 -5
  55. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +4 -6
  56. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +2 -4
  57. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -5
  58. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +2 -4
  59. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +4 -6
  60. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -6
  61. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
  62. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +4 -6
  63. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +4 -6
  64. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
  65. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -6
  66. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +3 -5
  67. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
  68. package/examples/gpca-pump/model/{catalog → methodology}/project.sysml +8 -6
  69. package/examples/ivd-laboratory-system/memo.package.yaml +3 -1
  70. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +12 -9
  71. package/examples/ivd-laboratory-system/model/{catalog → methodology}/project.sysml +4 -5
  72. package/examples/manual-surgical-instrument/memo.package.yaml +3 -1
  73. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +2 -6
  74. package/examples/manual-surgical-instrument/model/{catalog → methodology}/project.sysml +4 -5
  75. package/examples/multidimensional-layers/memo.package.yaml +3 -1
  76. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +2 -4
  77. package/examples/multidimensional-layers/model/{catalog → methodology}/project.sysml +4 -5
  78. package/examples/nested-architecture-dsm/memo.identity.yaml +93 -0
  79. package/examples/nested-architecture-dsm/memo.package.yaml +3 -1
  80. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +30 -30
  81. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +28 -28
  82. package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +2 -4
  83. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +4 -4
  84. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +7 -7
  85. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +8 -8
  86. package/examples/nested-architecture-dsm/model/{catalog → methodology}/project.sysml +4 -5
  87. package/examples/reusable-instrument/memo.package.yaml +3 -1
  88. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -7
  89. package/examples/reusable-instrument/model/{catalog → methodology}/project.sysml +4 -5
  90. package/examples/robot-cell-family/README.md +34 -0
  91. package/examples/robot-cell-family/memo.identity.yaml +142 -0
  92. package/examples/robot-cell-family/memo.package.yaml +7 -0
  93. package/examples/robot-cell-family/model/methodology/project.sysml +30 -0
  94. package/examples/robot-cell-family/model/shared/shared.sysml +53 -0
  95. package/examples/robot-cell-family/model/sos/chains.sysml +36 -0
  96. package/examples/robot-cell-family/model/sos/icds.sysml +29 -0
  97. package/examples/robot-cell-family/model/sos/sos.sysml +31 -0
  98. package/examples/robot-cell-family/model/sos/use_cases.sysml +25 -0
  99. package/examples/robot-cell-family/model/systems/manipulation/manipulation_system.sysml +35 -0
  100. package/examples/robot-cell-family/model/systems/navigation/navigation_system.sysml +46 -0
  101. package/examples/robot-cell-family/model/systems/perception/perception_system.sysml +37 -0
  102. package/examples/robot-platform/memo.package.yaml +3 -0
  103. package/examples/robot-platform/model/platform.sysml +15 -0
  104. package/examples/ros-mobile-robot/README.md +5 -4
  105. package/examples/ros-mobile-robot/memo.identity.yaml +94 -0
  106. package/examples/ros-mobile-robot/memo.package.yaml +3 -1
  107. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +26 -29
  108. package/examples/ros-mobile-robot/model/{catalog → methodology}/project.sysml +8 -14
  109. package/examples/software-only-medical-device/memo.package.yaml +3 -1
  110. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +9 -10
  111. package/examples/software-only-medical-device/model/{catalog → methodology}/project.sysml +8 -9
  112. package/examples/surgical-closure-workflow/memo.package.yaml +3 -1
  113. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -26
  114. package/examples/surgical-closure-workflow/model/{catalog → methodology}/project.sysml +7 -5
  115. package/examples/surgical-robot/memo.package.yaml +3 -1
  116. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +14 -12
  117. package/examples/surgical-robot/model/{catalog → methodology}/project.sysml +4 -5
  118. package/examples/sysml-diagram-samples/README.md +1 -0
  119. package/examples/sysml-diagram-samples/memo.identity.yaml +459 -0
  120. package/examples/sysml-diagram-samples/memo.package.yaml +3 -1
  121. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +10 -20
  122. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +5 -5
  123. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +10 -13
  124. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +11 -7
  125. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +63 -8
  126. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/drill_down_view.sysml +88 -0
  127. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +25 -25
  128. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +6 -6
  129. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +15 -17
  130. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +21 -21
  131. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +7 -7
  132. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +5 -5
  133. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +14 -14
  134. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +16 -17
  135. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +9 -9
  136. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +7 -14
  137. package/examples/sysml-diagram-samples/model/{catalog → methodology}/project.sysml +5 -5
  138. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +1 -1
  139. package/examples/temperature-alarm/memo.identity.yaml +6 -0
  140. package/examples/temperature-alarm/memo.package.yaml +3 -1
  141. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +43 -21
  142. package/examples/temperature-alarm/model/{catalog → methodology}/project.sysml +4 -5
  143. package/examples/ui-screen-regions/memo.identity.yaml +33 -0
  144. package/examples/ui-screen-regions/memo.package.yaml +3 -1
  145. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +12 -12
  146. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +18 -18
  147. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +6 -6
  148. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +3 -3
  149. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +1 -1
  150. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +1 -1
  151. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +10 -10
  152. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +1 -1
  153. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
  154. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +15 -15
  155. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +6 -6
  156. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
  157. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
  158. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
  159. package/examples/ui-screen-regions/model/{catalog → methodology}/project.sysml +4 -5
  160. package/extensions/README.md +65 -16
  161. package/extensions/aadl/memo.package.yaml +1 -1
  162. package/extensions/aadl/src/aadl_extension.sysml +5 -2
  163. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +29 -50
  164. package/extensions/clinical/memo.package.yaml +1 -1
  165. package/extensions/clinical/src/clinical_extension.sysml +2 -0
  166. package/extensions/cloud/memo.package.yaml +1 -1
  167. package/extensions/container/memo.package.yaml +1 -1
  168. package/extensions/messaging/memo.package.yaml +1 -1
  169. package/extensions/messaging/src/messaging_extension.sysml +2 -2
  170. package/extensions/ros/memo.package.yaml +1 -1
  171. package/extensions/ros/src/ros_extension.sysml +25 -24
  172. package/extensions/template/memo.package.yaml +1 -1
  173. package/extensions/template/model/extension.sysml +25 -0
  174. package/memo.manifest.yaml +1 -7
  175. package/methodologies/default/memo.package.yaml +1 -1
  176. package/methodologies/gpca/memo.package.yaml +1 -1
  177. package/ontology/memo.package.yaml +1 -1
  178. package/package.json +6 -4
  179. package/profile/memo.package.yaml +1 -1
  180. package/src/architecture/decisions/memo_decisions.sysml +9 -2
  181. package/src/architecture/functional/behavior/memo_behavior.sysml +27 -7
  182. package/src/architecture/functional/functions/memo_functions.sysml +45 -31
  183. package/src/architecture/functional/memo_architecture_functional.sysml +14 -0
  184. package/src/architecture/implementation/memo_architecture_implementation.sysml +21 -0
  185. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +7 -0
  186. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +58 -17
  187. package/src/architecture/implementation/ui/memo_ui.sysml +1 -1
  188. package/src/architecture/logical/interfaces/memo_interfaces.sysml +67 -58
  189. package/src/architecture/logical/memo_architecture_logical.sysml +13 -0
  190. package/src/architecture/logical/structure/memo_logical_structure.sysml +27 -8
  191. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +4 -1
  192. package/src/architecture/operational/memo_architecture_operational.sysml +19 -0
  193. package/src/architecture/operational/scenarios/memo_scenarios.sysml +9 -8
  194. package/src/architecture/operational/structure/memo_operational.sysml +5 -2
  195. package/src/architecture/operational/use_cases/memo_use_cases.sysml +16 -8
  196. package/src/architecture/realization/deployment/memo_deployment.sysml +30 -10
  197. package/src/architecture/realization/memo_architecture_realization.sysml +13 -0
  198. package/src/architecture/realization/physical/memo_physical_architecture.sysml +61 -0
  199. package/src/architecture/variability/memo_variability.sysml +87 -0
  200. package/src/artifacts/configuration_management/memo_configuration_management.sysml +95 -3
  201. package/src/artifacts/core/memo_controlled_artifacts.sysml +4 -2
  202. package/src/artifacts/standards/cfr_21_820.sysml +12 -24
  203. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +13 -20
  204. package/src/artifacts/standards/iec_60601_1.sysml +16 -32
  205. package/src/artifacts/standards/iec_60601_1_2.sysml +5 -10
  206. package/src/artifacts/standards/iec_60812.sysml +4 -8
  207. package/src/artifacts/standards/iec_62304.sysml +607 -47
  208. package/src/artifacts/standards/iec_62366_1.sysml +12 -24
  209. package/src/artifacts/standards/iec_81001_5_1.sysml +8 -16
  210. package/src/artifacts/standards/iso_13485.sysml +12 -24
  211. package/src/artifacts/standards/iso_14971.sysml +118 -20
  212. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +3 -6
  213. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +14 -4
  214. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +1 -2
  215. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +1 -2
  216. package/src/artifacts/templates/dhf/iec-62304/sad.md +1 -2
  217. package/src/artifacts/templates/dhf/iec-62304/sbom.md +1 -2
  218. package/src/artifacts/templates/dhf/iec-62304/sdp.md +1 -2
  219. package/src/artifacts/templates/dhf/iec-62304/soup.md +3 -5
  220. package/src/artifacts/templates/dhf/system/sad.md +1 -1
  221. package/src/artifacts/templates/dhf/system/standards-checklist.md +2 -2
  222. package/src/artifacts/templates/dhf/system/standards-traceability.md +1 -1
  223. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +339 -13
  224. package/src/assurance/human_factors/memo_human_factors.sysml +6 -2
  225. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +7 -3
  226. package/src/assurance/safety_risk/memo_risk.sysml +39 -1
  227. package/src/core/common/memo_common.sysml +61 -68
  228. package/src/core/enumerations/memo_enumerations.sysml +93 -9
  229. package/src/core/relationships/memo_relationships.sysml +17 -11
  230. package/src/core/relationships/memo_workspace_membership.sysml +284 -0
  231. package/src/core/semantics/semantics.sysml +58 -0
  232. package/src/core/terminology/terminology.sysml +7 -0
  233. package/src/memo_namespaces.sysml +6 -0
  234. package/src/methodology/archetypes/memo_archetypes.sysml +8 -16
  235. package/src/methodology/core/memo_core.sysml +85 -29
  236. package/src/methodology/profiles/memo_profiles.sysml +217 -61
  237. package/src/methodology/workflow/memo_workflow.sysml +28 -0
  238. package/src/rules/closure/closure_rules.sysml +250 -4
  239. package/src/rules/crosslayer/cross_layer_rules.sysml +11 -0
  240. package/src/rules/ontology/ontology_invariants.sysml +288 -48
  241. package/src/rules/quantitative/quantitative_rules.sysml +4 -0
  242. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +28 -28
  243. package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
  244. package/src/viewpoints/context/context_viewpoint.sysml +2 -3
  245. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
  246. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -3
  247. package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
  248. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +0 -4
  249. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  250. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -4
  251. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -4
  252. package/src/viewpoints/logical/logical_viewpoint.sysml +2 -3
  253. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
  254. package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
  255. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
  256. package/src/viewpoints/physical/physical_viewpoint.sysml +2 -3
  257. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +2 -4
  258. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +2 -4
  259. package/src/viewpoints/rendering/memo_rendering.sysml +50 -98
  260. package/src/viewpoints/requirements/requirements_viewpoint.sysml +2 -3
  261. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
  262. package/src/viewpoints/risk/risk_viewpoint.sysml +2 -3
  263. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
  264. package/src/viewpoints/software/software_viewpoint.sysml +2 -3
  265. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
  266. package/src/viewpoints/stakeholders_concerns/memo_stakeholders_concerns.sysml +11 -29
  267. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
  268. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
  269. package/src/viewpoints/usability/usability_viewpoint.sysml +2 -3
  270. package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
  271. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -4
  272. package/stage1/syside-67f92dc96ba75cd05b5c8d13.ids.gz +0 -0
  273. package/stage1/syside-67f92dc96ba75cd05b5c8d13.json.gz +0 -0
  274. package/templates/default/memo.package.yaml +6 -1
  275. package/templates/default/model/catalog/architecture/system.sysml +7 -3
  276. package/templates/default/model/{catalog → methodology}/project.sysml +3 -4
  277. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +0 -47
  278. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +0 -94
  279. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +0 -13
  280. package/examples/ui-screen-regions/model/catalog/relationships.sysml +0 -8
  281. package/extensions/aadl/src/methodology/aadl_methodology.sysml +0 -19
  282. package/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -24
  283. package/extensions/cloud/src/methodology/cloud_methodology.sysml +0 -19
  284. package/extensions/container/src/methodology/container_methodology.sysml +0 -19
  285. package/extensions/messaging/src/methodology/messaging_methodology.sysml +0 -19
  286. package/extensions/ros/src/methodology/ros_methodology.sysml +0 -27
  287. package/extensions/template/src/extension.sysml +0 -39
  288. package/templates/connected-device/memo.package.yaml +0 -13
  289. package/templates/connected-device/model/catalog/architecture/system.sysml +0 -5
  290. package/templates/connected-device/model/catalog/artifacts/catalog.sysml +0 -5
  291. package/templates/connected-device/model/catalog/assurance/requirements.sysml +0 -7
  292. package/templates/connected-device/model/catalog/project.sysml +0 -30
  293. package/templates/connected-device/package.json +0 -8
  294. package/templates/connected-device/syside.toml +0 -13
  295. package/templates/infusion-pump/memo.package.yaml +0 -13
  296. package/templates/infusion-pump/model/catalog/architecture/system.sysml +0 -5
  297. package/templates/infusion-pump/model/catalog/artifacts/catalog.sysml +0 -5
  298. package/templates/infusion-pump/model/catalog/assurance/requirements.sysml +0 -7
  299. package/templates/infusion-pump/model/catalog/project.sysml +0 -30
  300. package/templates/infusion-pump/package.json +0 -8
  301. package/templates/infusion-pump/syside.toml +0 -13
  302. package/templates/monitoring-device/memo.package.yaml +0 -13
  303. package/templates/monitoring-device/model/catalog/architecture/system.sysml +0 -5
  304. package/templates/monitoring-device/model/catalog/artifacts/catalog.sysml +0 -5
  305. package/templates/monitoring-device/model/catalog/assurance/requirements.sysml +0 -7
  306. package/templates/monitoring-device/model/catalog/project.sysml +0 -30
  307. package/templates/monitoring-device/package.json +0 -8
  308. package/templates/monitoring-device/syside.toml +0 -13
  309. package/templates/samd/memo.package.yaml +0 -13
  310. package/templates/samd/model/catalog/architecture/system.sysml +0 -5
  311. package/templates/samd/model/catalog/artifacts/catalog.sysml +0 -5
  312. package/templates/samd/model/catalog/assurance/requirements.sysml +0 -7
  313. package/templates/samd/model/catalog/project.sysml +0 -30
  314. package/templates/samd/package.json +0 -8
  315. package/templates/samd/syside.toml +0 -13
package/README.md CHANGED
@@ -5,6 +5,8 @@
5
5
  [GitHub repository](https://github.com/memoarchitect/memo) ·
6
6
  [npm package](https://www.npmjs.com/package/@memoarchitect/ontology)
7
7
 
8
+ > **0.15.0 is an experimental release.** It adds support for the OpenSysML compiler alongside SysIDE; the OpenSysML path is new and has had less use. The next version will be more stable. Pin an exact version.
9
+
8
10
  **MEMO — Medical Engineering Modelling Ontology** — the pure SysML v2 content layer.
9
11
 
10
12
  A standalone, tool-portable SysML v2 / KerML ontology for medical-device architecture
@@ -23,7 +25,7 @@ pin an exact release; the package has no repository or runtime dependency on Mem
23
25
  Tools or Memo Architect.
24
26
 
25
27
  ```bash
26
- pnpm add @memoarchitect/ontology@0.13.2
28
+ pnpm add @memoarchitect/ontology@0.15.1
27
29
  ```
28
30
 
29
31
  > **Pre-1.0 notice:** ontology names, relationships, and package layout may
@@ -69,10 +71,10 @@ ontology/ @memoarchitect/ontology descriptor
69
71
  profile/ @memoarchitect/medical-modeling-profile
70
72
  methodologies/default/ @memoarchitect/methodology-default descriptor
71
73
  methodologies/gpca/ @memoarchitect/methodology-gpca descriptor
72
- templates/ complete starter projects selectable by memo init --template
74
+ templates/ the empty project skeleton memo-architect init copies
73
75
  examples/gpca-pump/ reference model (not a scaffold template)
74
76
  src/ all reusable .sysml content (namespace = directory)
75
- memo_namespaces.sysml public memo import and nested namespace map
77
+ memo_namespaces.sysml public memo-architect import and nested namespace map
76
78
  core/ common/ enumerations/ relationships/
77
79
  dimensions/ semantics/ + stdlib/* (KerML wrapper)
78
80
  architecture/ operational/ functional/ logical/ implementation/ realization/
@@ -0,0 +1,34 @@
1
+ # memo.identity.yaml — element identity registry (auto-generated)
2
+ # Assigned once and never reassigned. COMMIT THIS FILE: deleting it does
3
+ # not regenerate the same identities, it mints new ones, and every
4
+ # external reference to a shortId or uuid then points at nothing.
5
+ # Entries for deleted elements are retained so their numbers stay retired.
6
+
7
+ elements:
8
+ "memo_examples_connected_patient_monitor::exSpo2ToGateway":
9
+ shortId: "LGC-1"
10
+ uuid: "d640886f-c38e-588a-9351-f30046fb2fa5"
11
+ "memo_examples_connected_patient_monitor::ifHl7Feed":
12
+ shortId: "INT-1"
13
+ uuid: "fc514375-d90f-5686-9028-eaf00b0e154b"
14
+ "memo_examples_connected_patient_monitor::lcCdrService":
15
+ shortId: "LGC-2"
16
+ uuid: "bdbdcd43-b6a0-5fe0-a67a-c362d022c39e"
17
+ "memo_examples_connected_patient_monitor::lcGateway":
18
+ shortId: "LGC-3"
19
+ uuid: "7aca5877-f870-57ad-9f13-bdc80cb0b774"
20
+ "memo_examples_connected_patient_monitor::lcMonitor":
21
+ shortId: "LGC-4"
22
+ uuid: "be6b2ac0-fdd2-5380-83cd-af21d7a8e582"
23
+ "memo_examples_connected_patient_monitor::spo2Item":
24
+ shortId: "LGC-5"
25
+ uuid: "694709f8-5e40-51ef-b404-ef5fd980f23f"
26
+ "memo_examples_connected_patient_monitor::tbHospitalEdge":
27
+ shortId: "TRS-1"
28
+ uuid: "42751b71-3e43-5907-9845-00beae9fc4da"
29
+ "memo_examples_connected_patient_monitor_project::projectBinding":
30
+ shortId: "PRJ-1"
31
+ uuid: "d9a99a82-9a49-5a1f-8788-2969b6663a5b"
32
+ "memo_examples_connected_patient_monitor_viewpoints_unassigned_views_connected_patient_monitor_overview::connectedPatientMonitorOverview":
33
+ shortId: "MMX-1"
34
+ uuid: "846e63d1-e5e6-5f90-bfe6-143b5ce83b23"
@@ -1,3 +1,5 @@
1
1
  name: connected-patient-monitor
2
- entrypoint: model/catalog/project.sysml
2
+ entrypoint: model/methodology/project.sysml
3
3
  include: [model]
4
+ toolchain:
5
+ packager: internal
@@ -14,21 +14,25 @@ package memo_examples_connected_patient_monitor {
14
14
  private import memo_core_common::*;
15
15
  private import memo_core_common::MemoIdentity;
16
16
  part lcMonitor : LogicalComponent {
17
- @MemoIdentity { :>> providedId = "CPM-LC-001"; } attribute :>> name = "BedsideMonitor";
17
+ @MemoIdentity { :>> providedId = "CPM-LC-001"; :>> label = "BedsideMonitor"; }
18
18
  attribute :>> responsibility = "Acquire and display vitals; publish measurements.";
19
+ out port pSpo2Out : LogicalPort { out item spo2 :> spo2Item; }
19
20
  }
20
21
  part lcGateway : LogicalComponent {
21
- @MemoIdentity { :>> providedId = "CPM-LC-002"; } attribute :>> name = "WardGateway";
22
+ @MemoIdentity { :>> providedId = "CPM-LC-002"; :>> label = "WardGateway"; }
22
23
  attribute :>> responsibility = "Aggregate device data; bridge device LAN to hospital network.";
24
+ in port pSpo2In : LogicalPort { in item spo2 :> spo2Item; }
25
+ out port pHl7Out : LogicalPort;
23
26
  }
24
27
  part lcCdrService : LogicalComponent {
25
- @MemoIdentity { :>> providedId = "CPM-LC-003"; } attribute :>> name = "ClinicalDataRepository";
28
+ @MemoIdentity { :>> providedId = "CPM-LC-003"; :>> label = "ClinicalDataRepository"; }
26
29
  attribute :>> externalOwner = "hospital IT";
30
+ in port pHl7In : LogicalPort;
27
31
  }
28
32
 
29
33
  // Typed measurement item, coded against ISO/IEEE 11073-10101.
30
34
  item spo2Item : LogicalExchangeItem {
31
- @MemoIdentity { :>> providedId = "CPM-IT-001"; } attribute :>> name = "SpO2Measurement";
35
+ @MemoIdentity { :>> providedId = "CPM-IT-001"; :>> label = "SpO2Measurement"; }
32
36
  attribute :>> contentKind = FlowContentKind::measurement;
33
37
  attribute :>> unit = "%";
34
38
  attribute :>> timestampRequired = true;
@@ -40,11 +44,11 @@ package memo_examples_connected_patient_monitor {
40
44
  attribute :>> display = "MDC_PULS_OXIM_SAT_O2";
41
45
  }
42
46
 
43
- part exSpo2ToGateway : LogicalExchange {
44
- @MemoIdentity { :>> providedId = "CPM-EX-001"; } attribute :>> name = "SpO2ToGateway";
47
+ // The measurement crosses from the monitor's out port to the gateway's in
48
+ // port; the item feature on each port is what it carries.
49
+ flow exSpo2ToGateway : LogicalExchange from lcMonitor.pSpo2Out.spo2 to lcGateway.pSpo2In.spo2 {
50
+ @MemoIdentity { :>> providedId = "CPM-EX-001"; :>> label = "SpO2ToGateway"; }
45
51
  attribute :>> contentKind = FlowContentKind::measurement;
46
- attribute :>> direction = DirectionKind::output;
47
- ref :>> exchangedItem = spo2Item;
48
52
  }
49
53
  connection : LogicalConnector connect sourceComponent ::> lcMonitor to targetComponent ::> lcGateway {
50
54
  attribute :>> contentKind = FlowContentKind::measurement;
@@ -55,16 +59,17 @@ package memo_examples_connected_patient_monitor {
55
59
  attribute :>> direction = DirectionKind::output;
56
60
  }
57
61
 
58
- // Network interface with cybersecurity properties; trust boundary at the
62
+ // Network interface with cybersecurity properties: it connects the
63
+ // gateway's HL7 port to the repository's across the trust boundary at the
59
64
  // hospital network edge.
60
- interface ifHl7Feed : Interface {
61
- @MemoIdentity { :>> providedId = "CPM-IF-001"; } attribute :>> name = "GatewayToCdrFeed";
65
+ interface ifHl7Feed : SoftwareInterface connect lcGateway.pHl7Out to lcCdrService.pHl7In {
66
+ @MemoIdentity { :>> providedId = "CPM-IF-001"; :>> label = "GatewayToCdrFeed"; }
62
67
  attribute :>> protocol = "HL7 FHIR REST over TLS 1.3";
63
68
  attribute :>> securityCriticality = CriticalityKind::high;
64
69
  attribute :>> patientContactInterface = false;
65
70
  }
66
71
  part tbHospitalEdge : TrustBoundary {
67
- @MemoIdentity { :>> providedId = "CPM-TB-001"; } attribute :>> name = "DeviceLanToHospitalNetwork";
72
+ @MemoIdentity { :>> providedId = "CPM-TB-001"; :>> label = "DeviceLanToHospitalNetwork"; }
68
73
  }
69
74
  connection : CrossesTrustBoundary connect boundary ::> tbHospitalEdge to crossingItem ::> ifHl7Feed {
70
75
  attribute :>> crossingKind = InterfaceKind::network;
@@ -1,4 +1,4 @@
1
- // Connected Patient Monitor — project identity and method binding.
1
+ // Connected Patient Monitor — model identity and method binding.
2
2
  //
3
3
  // The native entrypoint. The imports name what this project contains and the
4
4
  // binding names the methodology it is governed by. No YAML file participates.
@@ -16,10 +16,9 @@ package memo_examples_connected_patient_monitor_project {
16
16
 
17
17
  private import memo_core_common::*;
18
18
  private import memo_core_common::MemoIdentity;
19
- part projectBinding : ProjectMethodBinding {
20
- @MemoIdentity { :>> providedId = "PMB-PATIENT-MONITOR-001"; }
21
- attribute :>> name = "ConnectedPatientMonitorProjectMethodBinding";
22
- attribute :>> projectName = "Connected Patient Monitor";
19
+ part projectBinding : ModelMethodBinding {
20
+ @MemoIdentity { :>> providedId = "PMB-PATIENT-MONITOR-001"; :>> label = "ConnectedPatientMonitorModelMethodBinding"; }
21
+ attribute :>> modelName = "Connected Patient Monitor";
23
22
  ref :>> selectedMethodology = mdDefaultDefinition;
24
23
  attribute :>> scopeMode = ScopeModeKind::explicit;
25
24
  }
@@ -1,3 +1,5 @@
1
1
  name: embedded-infusion-pump
2
- entrypoint: model/catalog/project.sysml
2
+ entrypoint: model/methodology/project.sysml
3
3
  include: [model]
4
+ toolchain:
5
+ packager: internal
@@ -18,13 +18,13 @@ package memo_examples_embedded_infusion_pump {
18
18
  // Module view (IEC 62304).
19
19
  part swInfusionControl : SoftwareModule {
20
20
  attribute :>> moduleKind = ModuleKind::'item';
21
- @MemoIdentity { :>> providedId = "EIP-SW-001"; } attribute :>> name = "InfusionControlItem";
21
+ @MemoIdentity { :>> providedId = "EIP-SW-001"; :>> label = "InfusionControlItem"; }
22
22
  attribute :>> iec62304Role = "software item, class C";
23
23
  attribute :>> safetyClass = SafetyClassKind::C;
24
24
  }
25
25
  part swMotorDriver : SoftwareModule {
26
26
  attribute :>> moduleKind = ModuleKind::unit;
27
- @MemoIdentity { :>> providedId = "EIP-SW-002"; } attribute :>> name = "MotorDriverUnit";
27
+ @MemoIdentity { :>> providedId = "EIP-SW-002"; :>> label = "MotorDriverUnit"; }
28
28
  attribute :>> implementationLanguage = "C";
29
29
  attribute :>> safetyClass = SafetyClassKind::C;
30
30
  }
@@ -33,7 +33,7 @@ package memo_examples_embedded_infusion_pump {
33
33
  // Runtime view.
34
34
  part rtControlLoop : SoftwareComponent {
35
35
  attribute :>> runtimeKind = RuntimeKind::task;
36
- @MemoIdentity { :>> providedId = "EIP-RT-001"; } attribute :>> name = "ControlLoopTask";
36
+ @MemoIdentity { :>> providedId = "EIP-RT-001"; :>> label = "ControlLoopTask"; }
37
37
  attribute :>> periodMs = 10.0;
38
38
  attribute :>> deadlineMs = 10.0;
39
39
  attribute :>> wcetMs = 2.5;
@@ -46,19 +46,19 @@ package memo_examples_embedded_infusion_pump {
46
46
 
47
47
  // Deployment view.
48
48
  part duControlImage : SoftwareDeploymentUnit {
49
- @MemoIdentity { :>> providedId = "EIP-DU-001"; } attribute :>> name = "ControlFirmwareImage";
49
+ @MemoIdentity { :>> providedId = "EIP-DU-001"; :>> label = "ControlFirmwareImage"; }
50
50
  attribute :>> unitKind = "signed firmware image";
51
51
  attribute :>> version = "3.1.0";
52
52
  attribute :>> integrityProtection = "signature verified by boot loader";
53
53
  }
54
54
  part mcuSafety : ProcessingNode {
55
- @MemoIdentity { :>> providedId = "EIP-HW-001"; } attribute :>> name = "SafetyMCU";
55
+ @MemoIdentity { :>> providedId = "EIP-HW-001"; :>> label = "SafetyMCU"; }
56
56
  attribute :>> nodeKind = ProcessingNodeKind::microcontroller;
57
57
  attribute :>> realTimeCapable = true;
58
58
  attribute :>> supportsContainerization = false;
59
59
  }
60
60
  part rteBareMetal : RuntimeEnvironment {
61
- @MemoIdentity { :>> providedId = "EIP-RTE-001"; } attribute :>> name = "StaticRTOS";
61
+ @MemoIdentity { :>> providedId = "EIP-RTE-001"; :>> label = "StaticRTOS"; }
62
62
  attribute :>> osOrRtos = "static-priority RTOS, no dynamic allocation";
63
63
  }
64
64
  allocation swInfusionControlBuild : BuildsInto allocate swInfusionControl to duControlImage;
@@ -1,4 +1,4 @@
1
- // Embedded Infusion Pump — project identity and method binding.
1
+ // Embedded Infusion Pump — model identity and method binding.
2
2
  //
3
3
  // The native entrypoint. The imports name what this project contains and the
4
4
  // binding names the methodology it is governed by. No YAML file participates.
@@ -16,10 +16,9 @@ package memo_examples_embedded_infusion_pump_project {
16
16
 
17
17
  private import memo_core_common::*;
18
18
  private import memo_core_common::MemoIdentity;
19
- part projectBinding : ProjectMethodBinding {
20
- @MemoIdentity { :>> providedId = "PMB-INFUSION-PUMP-001"; }
21
- attribute :>> name = "EmbeddedInfusionPumpProjectMethodBinding";
22
- attribute :>> projectName = "Embedded Infusion Pump";
19
+ part projectBinding : ModelMethodBinding {
20
+ @MemoIdentity { :>> providedId = "PMB-INFUSION-PUMP-001"; :>> label = "EmbeddedInfusionPumpModelMethodBinding"; }
21
+ attribute :>> modelName = "Embedded Infusion Pump";
23
22
  ref :>> selectedMethodology = mdDefaultDefinition;
24
23
  attribute :>> scopeMode = ScopeModeKind::explicit;
25
24
  }
@@ -0,0 +1,28 @@
1
+ # memo.identity.yaml — element identity registry (auto-generated)
2
+ # Assigned once and never reassigned. COMMIT THIS FILE: deleting it does
3
+ # not regenerate the same identities, it mints new ones, and every
4
+ # external reference to a shortId or uuid then points at nothing.
5
+ # Entries for deleted elements are retained so their numbers stay retired.
6
+
7
+ elements:
8
+ "memo_examples_functional_logical_physical::actOcclusionResponse":
9
+ shortId: "OPR-1"
10
+ uuid: "b125f1ef-a553-5e75-9aa3-f2b07ad587e6"
11
+ "memo_examples_functional_logical_physical::fnLimitLinePressure":
12
+ shortId: "SYS-1"
13
+ uuid: "1d2de2e8-5dd5-5e86-bbd1-b6d34a7ee95f"
14
+ "memo_examples_functional_logical_physical::lcPressureProtection":
15
+ shortId: "LGC-1"
16
+ uuid: "adea4909-d1f7-5c5d-afa8-a70ac45909cb"
17
+ "memo_examples_functional_logical_physical::mechReliefValve":
18
+ shortId: "MCH-1"
19
+ uuid: "f202f294-558d-5bd9-9e98-3cce9261d8f0"
20
+ "memo_examples_functional_logical_physical::swPressureSupervisor":
21
+ shortId: "SFT-1"
22
+ uuid: "3ffb775c-86e8-5e69-a029-38a317528393"
23
+ "memo_examples_functional_logical_physical_project::projectBinding":
24
+ shortId: "PRJ-1"
25
+ uuid: "a0e9e185-58c8-51db-a3b9-c66d362e4558"
26
+ "memo_examples_functional_logical_physical_viewpoints_unassigned_views_functional_logical_physical_overview::functionalLogicalPhysicalOverview":
27
+ shortId: "MMX-1"
28
+ uuid: "810a4521-b81d-5d2e-9399-df8d15295fd0"
@@ -1,3 +1,5 @@
1
1
  name: functional-logical-physical
2
- entrypoint: model/catalog/project.sysml
2
+ entrypoint: model/methodology/project.sysml
3
3
  include: [model]
4
+ toolchain:
5
+ packager: internal
@@ -18,32 +18,32 @@ package memo_examples_functional_logical_physical {
18
18
  private import memo_core_common::MemoIdentity;
19
19
  // Operational world: what the clinician does.
20
20
  action actOcclusionResponse : OperativeAction {
21
- @MemoIdentity { :>> providedId = "FLP-ACT-001"; } attribute :>> name = "RespondToLineOcclusion";
21
+ @MemoIdentity { :>> providedId = "FLP-ACT-001"; :>> label = "RespondToLineOcclusion"; }
22
22
  attribute :>> criticality = CriticalityKind::high;
23
23
  }
24
24
 
25
25
  // Functional: technology-independent responsibility.
26
26
  action fnLimitLinePressure : SystemFunction {
27
- @MemoIdentity { :>> providedId = "FLP-FN-001"; } attribute :>> name = "LimitLinePressure";
27
+ @MemoIdentity { :>> providedId = "FLP-FN-001"; :>> label = "LimitLinePressure"; }
28
28
  attribute :>> criticality = CriticalityKind::high;
29
29
  }
30
30
  dependency from fnLimitLinePressure to actOcclusionResponse;
31
31
 
32
32
  // Logical: solution structure, still technology-independent.
33
33
  part lcPressureProtection : LogicalComponent {
34
- @MemoIdentity { :>> providedId = "FLP-LC-001"; } attribute :>> name = "PressureProtectionElement";
34
+ @MemoIdentity { :>> providedId = "FLP-LC-001"; :>> label = "PressureProtectionElement"; }
35
35
  attribute :>> controlledVariable = "line pressure";
36
36
  }
37
37
  allocate fnLimitLinePressure to lcPressureProtection;
38
38
  // Implementation: the SAME logical element is realized by software
39
39
  // (pressure-limit supervision) AND mechanics (mechanical relief valve).
40
40
  part swPressureSupervisor : SoftwareModule {
41
- @MemoIdentity { :>> providedId = "FLP-SW-001"; } attribute :>> name = "PressureSupervisor";
41
+ @MemoIdentity { :>> providedId = "FLP-SW-001"; :>> label = "PressureSupervisor"; }
42
42
  attribute :>> responsibility = "Pause pumping when measured pressure exceeds threshold.";
43
43
  attribute :>> safetyClass = SafetyClassKind::C;
44
44
  }
45
45
  part mechReliefValve : MechanicalPart {
46
- @MemoIdentity { :>> providedId = "FLP-HW-001"; } attribute :>> name = "MechanicalReliefValve";
46
+ @MemoIdentity { :>> providedId = "FLP-HW-001"; :>> label = "MechanicalReliefValve"; }
47
47
  attribute :>> mechanicalFunction = "vents line pressure above mechanical set point, independent of software";
48
48
  attribute :>> patientContact = false;
49
49
  }
@@ -1,4 +1,4 @@
1
- // Functional Logical Physical — project identity and method binding.
1
+ // Functional Logical Physical — model identity and method binding.
2
2
  //
3
3
  // The native entrypoint. The imports name what this project contains and the
4
4
  // binding names the methodology it is governed by. No YAML file participates.
@@ -16,10 +16,9 @@ package memo_examples_functional_logical_physical_project {
16
16
 
17
17
  private import memo_core_common::*;
18
18
  private import memo_core_common::MemoIdentity;
19
- part projectBinding : ProjectMethodBinding {
20
- @MemoIdentity { :>> providedId = "PMB-LOGICAL-PHYSICAL-001"; }
21
- attribute :>> name = "FunctionalLogicalPhysicalProjectMethodBinding";
22
- attribute :>> projectName = "Functional Logical Physical";
19
+ part projectBinding : ModelMethodBinding {
20
+ @MemoIdentity { :>> providedId = "PMB-LOGICAL-PHYSICAL-001"; :>> label = "FunctionalLogicalPhysicalModelMethodBinding"; }
21
+ attribute :>> modelName = "Functional Logical Physical";
23
22
  ref :>> selectedMethodology = mdDefaultDefinition;
24
23
  attribute :>> scopeMode = ScopeModeKind::explicit;
25
24
  }
@@ -1,148 +1,49 @@
1
1
  {
2
- "cells": [
3
- {
4
- "cell_type": "markdown",
5
- "id": "memo-1",
6
- "metadata": {},
7
- "source": [
8
- "# Model overview\n",
9
- "\n",
10
- "Visual summary of model size, semantic content, and diagnostics.\n",
11
- "\n",
12
- "This sample uses only standard SysML v2 concepts and automatically discovers the project's `model/` or `src/` directory."
13
- ]
14
- },
15
- {
16
- "cell_type": "code",
17
- "execution_count": 1,
18
- "id": "memo-2",
19
- "metadata": {
20
- "execution": {
21
- "iopub.execute_input": "2026-07-29T22:31:46.345732Z",
22
- "iopub.status.busy": "2026-07-29T22:31:46.345598Z",
23
- "iopub.status.idle": "2026-07-29T22:31:46.699014Z",
24
- "shell.execute_reply": "2026-07-29T22:31:46.698564Z"
25
- }
26
- },
27
- "outputs": [
2
+ "cells": [
28
3
  {
29
- "name": "stdout",
30
- "output_type": "stream",
31
- "text": [
32
- "Loaded 42 SysML files from /Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model\n"
33
- ]
34
- }
35
- ],
36
- "source": [
37
- "from pathlib import Path\n",
38
- "from collections import Counter, defaultdict\n",
39
- "import syside\n",
40
- "\n",
41
- "def find_sysml_root(start=Path.cwd()):\n",
42
- " \"\"\"Find the nearest model/ or src/ folder containing textual SysML.\"\"\"\n",
43
- " for directory in (start, *start.parents):\n",
44
- " for folder_name in ('model', 'src'):\n",
45
- " candidate = directory / folder_name\n",
46
- " if candidate.is_dir() and next(candidate.rglob('*.sysml'), None):\n",
47
- " return candidate\n",
48
- " raise FileNotFoundError('No model/ or src/ directory containing .sysml files was found')\n",
49
- "\n",
50
- "SYSML_ROOT = find_sysml_root()\n",
51
- "SYSML_FILES = sorted(SYSML_ROOT.rglob('*.sysml'))\n",
52
- "model, diagnostics = syside.try_load_model([str(path) for path in SYSML_FILES])\n",
53
- "print(f'Loaded {len(SYSML_FILES)} SysML files from {SYSML_ROOT}')"
54
- ]
55
- },
56
- {
57
- "cell_type": "code",
58
- "execution_count": 2,
59
- "id": "memo-3",
60
- "metadata": {
61
- "execution": {
62
- "iopub.execute_input": "2026-07-29T22:31:46.700004Z",
63
- "iopub.status.busy": "2026-07-29T22:31:46.699937Z",
64
- "iopub.status.idle": "2026-07-29T22:31:46.707568Z",
65
- "shell.execute_reply": "2026-07-29T22:31:46.707310Z"
66
- }
67
- },
68
- "outputs": [
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "# Model overview\n\nVisual summary of model size, semantic content, and diagnostics.\n\nThis sample uses only standard SysML v2 concepts and reads the model through `memo_model.py`, compiled by the project's selected compiler."
8
+ ],
9
+ "id": "memo-1"
10
+ },
69
11
  {
70
- "data": {
71
- "text/html": [
72
- "<h3>Semantic inventory</h3><table><tr><th>Element type</th><th>Count</th><th>Relative size</th></tr><tr><td>AttributeUsage</td><td>5,056</td><td><div style=\"background:#2d8d70;height:12px;width:320px\"></div></td></tr><tr><td>ConnectionUsage</td><td>691</td><td><div style=\"background:#2d8d70;height:12px;width:44px\"></div></td></tr><tr><td>PartUsage</td><td>425</td><td><div style=\"background:#2d8d70;height:12px;width:27px\"></div></td></tr><tr><td>RequirementUsage</td><td>105</td><td><div style=\"background:#2d8d70;height:12px;width:7px\"></div></td></tr><tr><td>ActionUsage</td><td>44</td><td><div style=\"background:#2d8d70;height:12px;width:3px\"></div></td></tr><tr><td>Package</td><td>42</td><td><div style=\"background:#2d8d70;height:12px;width:3px\"></div></td></tr><tr><td>StateUsage</td><td>10</td><td><div style=\"background:#2d8d70;height:12px;width:2px\"></div></td></tr><tr><td>ActionDefinition</td><td>6</td><td><div style=\"background:#2d8d70;height:12px;width:2px\"></div></td></tr><tr><td>PortDefinition</td><td>1</td><td><div style=\"background:#2d8d70;height:12px;width:2px\"></div></td></tr><tr><td>PartDefinition</td><td>0</td><td><div style=\"background:#2d8d70;height:12px;width:2px\"></div></td></tr><tr><td>RequirementDefinition</td><td>0</td><td><div style=\"background:#2d8d70;height:12px;width:2px\"></div></td></tr><tr><td>PortUsage</td><td>0</td><td><div style=\"background:#2d8d70;height:12px;width:2px\"></div></td></tr><tr><td>ConnectionDefinition</td><td>0</td><td><div style=\"background:#2d8d70;height:12px;width:2px\"></div></td></tr><tr><td>StateDefinition</td><td>0</td><td><div style=\"background:#2d8d70;height:12px;width:2px\"></div></td></tr><tr><td>AttributeDefinition</td><td>0</td><td><div style=\"background:#2d8d70;height:12px;width:2px\"></div></td></tr></table>"
12
+ "cell_type": "code",
13
+ "metadata": {},
14
+ "source": [
15
+ "import sys\nfrom pathlib import Path\nfrom collections import Counter, defaultdict\n\n# memo_model.py sits in the project's analysis/ folder, above this notebook.\nsys.path.insert(0, str(next(d for d in (Path.cwd(), *Path.cwd().parents) if (d / 'memo_model.py').is_file())))\nimport memo_model\n\n# Compiled by the project's selected compiler (toolchain.compiler), as every\n# MEMO command is: change the setting and this notebook follows.\nmodel = memo_model.load()\ndiagnostics = model.diagnostics\nSYSML_FILES = model.documents\nprint(f'Loaded {len(SYSML_FILES)} SysML files, compiled by {model.compiler} {model.compiler_version or \"\"}')"
73
16
  ],
74
- "text/plain": [
75
- "<IPython.core.display.HTML object>"
76
- ]
77
- },
78
- "metadata": {},
79
- "output_type": "display_data"
17
+ "execution_count": null,
18
+ "outputs": [],
19
+ "id": "memo-2"
80
20
  },
81
21
  {
82
- "data": {
83
- "text/plain": [
84
- "{'SysML files': 42, 'Errors': 8009, 'Warnings': 0, 'Information': 0}"
85
- ]
86
- },
87
- "execution_count": 2,
88
- "metadata": {},
89
- "output_type": "execute_result"
22
+ "cell_type": "code",
23
+ "metadata": {},
24
+ "source": [
25
+ "from IPython.display import HTML, display\n\nsemantic_types = [\n 'Package', 'PartDefinition', 'PartUsage', 'RequirementDefinition',\n 'RequirementUsage', 'ActionDefinition', 'ActionUsage', 'PortDefinition',\n 'PortUsage', 'ConnectionDefinition', 'ConnectionUsage', 'StateDefinition',\n 'StateUsage', 'AttributeDefinition', 'AttributeUsage'\n]\ncounts = {}\nfor type_name in semantic_types:\n counts[type_name] = len(model.elements(type_name))\n\nlargest = max(counts.values(), default=1)\nrows = ''.join(\n f'<tr><td>{name}</td><td>{count:,}</td><td><div style=\"background:#2d8d70;height:12px;width:{max(2, count * 320 / largest):.0f}px\"></div></td></tr>'\n for name, count in sorted(counts.items(), key=lambda item: item[1], reverse=True)\n)\ndisplay(HTML(f'<h3>Semantic inventory</h3><table><tr><th>Element type</th><th>Count</th><th>Relative size</th></tr>{rows}</table>'))\n\n{\n 'SysML files': len(SYSML_FILES),\n 'Errors': len(diagnostics.errors),\n 'Warnings': len(diagnostics.warnings),\n 'Information': len(diagnostics.infos),\n}"
26
+ ],
27
+ "execution_count": null,
28
+ "outputs": [],
29
+ "id": "memo-3"
30
+ }
31
+ ],
32
+ "metadata": {
33
+ "kernelspec": {
34
+ "display_name": "Python 3 (ipykernel)",
35
+ "language": "python",
36
+ "name": "python3"
37
+ },
38
+ "language_info": {
39
+ "name": "python",
40
+ "version": "3"
41
+ },
42
+ "memo": {
43
+ "starter": true,
44
+ "description": "Visual summary of model size, semantic content, and diagnostics."
90
45
  }
91
- ],
92
- "source": [
93
- "from IPython.display import HTML, display\n",
94
- "\n",
95
- "semantic_types = [\n",
96
- " 'Package', 'PartDefinition', 'PartUsage', 'RequirementDefinition',\n",
97
- " 'RequirementUsage', 'ActionDefinition', 'ActionUsage', 'PortDefinition',\n",
98
- " 'PortUsage', 'ConnectionDefinition', 'ConnectionUsage', 'StateDefinition',\n",
99
- " 'StateUsage', 'AttributeDefinition', 'AttributeUsage'\n",
100
- "]\n",
101
- "counts = {}\n",
102
- "for type_name in semantic_types:\n",
103
- " node_type = getattr(syside, type_name, None)\n",
104
- " if node_type is not None:\n",
105
- " counts[type_name] = len(list(model.elements(node_type)))\n",
106
- "\n",
107
- "largest = max(counts.values(), default=1)\n",
108
- "rows = ''.join(\n",
109
- " f'<tr><td>{name}</td><td>{count:,}</td><td><div style=\"background:#2d8d70;height:12px;width:{max(2, count * 320 / largest):.0f}px\"></div></td></tr>'\n",
110
- " for name, count in sorted(counts.items(), key=lambda item: item[1], reverse=True)\n",
111
- ")\n",
112
- "display(HTML(f'<h3>Semantic inventory</h3><table><tr><th>Element type</th><th>Count</th><th>Relative size</th></tr>{rows}</table>'))\n",
113
- "\n",
114
- "{\n",
115
- " 'SysML files': len(SYSML_FILES),\n",
116
- " 'Errors': len(list(diagnostics.errors)),\n",
117
- " 'Warnings': len(list(diagnostics.warnings)),\n",
118
- " 'Information': len(list(diagnostics.infos)),\n",
119
- "}"
120
- ]
121
- }
122
- ],
123
- "metadata": {
124
- "kernelspec": {
125
- "display_name": "Python 3 (ipykernel)",
126
- "language": "python",
127
- "name": "python3"
128
- },
129
- "language_info": {
130
- "codemirror_mode": {
131
- "name": "ipython",
132
- "version": 3
133
- },
134
- "file_extension": ".py",
135
- "mimetype": "text/x-python",
136
- "name": "python",
137
- "nbconvert_exporter": "python",
138
- "pygments_lexer": "ipython3",
139
- "version": "3.12.13"
140
46
  },
141
- "memo": {
142
- "description": "Visual summary of model size, semantic content, and diagnostics.",
143
- "starter": true
144
- }
145
- },
146
- "nbformat": 4,
147
- "nbformat_minor": 5
47
+ "nbformat": 4,
48
+ "nbformat_minor": 5
148
49
  }