@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
@@ -1,200 +1,59 @@
1
1
  {
2
- "cells": [
3
- {
4
- "cell_type": "markdown",
5
- "id": "memo-1",
6
- "metadata": {},
7
- "source": [
8
- "# Change-impact explorer\n",
9
- "\n",
10
- "Search any element and inspect its owner, children, and directly related elements.\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:52.751165Z",
22
- "iopub.status.busy": "2026-07-29T22:31:52.750921Z",
23
- "iopub.status.idle": "2026-07-29T22:31:53.037061Z",
24
- "shell.execute_reply": "2026-07-29T22:31:53.036612Z"
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:53.038369Z",
63
- "iopub.status.busy": "2026-07-29T22:31:53.038278Z",
64
- "iopub.status.idle": "2026-07-29T22:31:53.044194Z",
65
- "shell.execute_reply": "2026-07-29T22:31:53.043828Z"
66
- }
67
- },
68
- "outputs": [
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "# Change-impact explorer\n\nSearch any element and inspect its owner, children, and directly related elements.\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
- "name": "stdout",
71
- "output_type": "stream",
72
- "text": [
73
- "Set QUERY to a name fragment. Suggestions:\n",
74
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::fmeaDelivery\n",
75
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::fmMotorRunaway\n",
76
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::fmAirSensorSilent\n",
77
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::fmOcclusionDrift\n",
78
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::fmStuckBolusButton\n",
79
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::fmBatteryEarlyDepletion\n",
80
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::feOverdose\n",
81
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::feAirDelivered\n",
82
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::feTherapyInterrupted\n",
83
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::fcMotorDriverFault\n",
84
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::fcTransducerAging\n",
85
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::fcPendantAbuse\n",
86
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::dmFlowCrossCheck\n",
87
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::dmPostSensorCheck\n",
88
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::dmStuckInputMonitor\n",
89
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::fmeaActionAirSensor\n",
90
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::ftaOverdose\n",
91
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::fteOverdoseTop\n",
92
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::fteMotorRunaway\n",
93
- " - memo_examples_gpca_pump_model_catalog_gpca_analysis::fteCrossCheckFails\n"
94
- ]
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 \"\"}')"
16
+ ],
17
+ "execution_count": null,
18
+ "outputs": [],
19
+ "id": "memo-2"
95
20
  },
96
21
  {
97
- "data": {
98
- "text/plain": [
99
- "[]"
100
- ]
101
- },
102
- "execution_count": 2,
103
- "metadata": {},
104
- "output_type": "execute_result"
105
- }
106
- ],
107
- "source": [
108
- "QUERY = '' # Example: 'pump', 'controller', 'safety', or a requirement name\n",
109
- "\n",
110
- "semantic_elements = (\n",
111
- " list(model.elements(syside.Usage, include_subtypes=True))\n",
112
- " + list(model.elements(syside.Definition, include_subtypes=True))\n",
113
- ")\n",
114
- "\n",
115
- "def label(element):\n",
116
- " value = element.qualified_name or element.name or element.declared_name\n",
117
- " return str(value) if value else '<unnamed>'\n",
118
- "\n",
119
- "if not QUERY:\n",
120
- " print('Set QUERY to a name fragment. Suggestions:')\n",
121
- " for suggestion in [label(item) for item in semantic_elements if item.name][:20]:\n",
122
- " print(' -', suggestion)\n",
123
- " matches = []\n",
124
- "else:\n",
125
- " matches = [item for item in semantic_elements if QUERY.casefold() in label(item).casefold()]\n",
126
- " print(f'{len(matches)} match(es) for {QUERY!r}')\n",
127
- "\n",
128
- "[(type(item).__name__, label(item)) for item in matches[:100]]"
129
- ]
130
- },
131
- {
132
- "cell_type": "code",
133
- "execution_count": 3,
134
- "id": "memo-4",
135
- "metadata": {
136
- "execution": {
137
- "iopub.execute_input": "2026-07-29T22:31:53.045051Z",
138
- "iopub.status.busy": "2026-07-29T22:31:53.045000Z",
139
- "iopub.status.idle": "2026-07-29T22:31:53.047642Z",
140
- "shell.execute_reply": "2026-07-29T22:31:53.047288Z"
141
- }
142
- },
143
- "outputs": [
22
+ "cell_type": "code",
23
+ "metadata": {},
24
+ "source": [
25
+ "QUERY = '' # Example: 'pump', 'controller', 'safety', or a requirement name\n\nsemantic_elements = (\n model.elements('Usage', include_subtypes=True)\n + model.elements('Definition', include_subtypes=True)\n)\n\ndef label(element):\n value = element.qualified_name or element.name or element.declared_name\n return str(value) if value else '<unnamed>'\n\nif not QUERY:\n print('Set QUERY to a name fragment. Suggestions:')\n for suggestion in [label(item) for item in semantic_elements if item.name][:20]:\n print(' -', suggestion)\n matches = []\nelse:\n matches = [item for item in semantic_elements if QUERY.casefold() in label(item).casefold()]\n print(f'{len(matches)} match(es) for {QUERY!r}')\n\n[(item.type, label(item)) for item in matches[:100]]"
26
+ ],
27
+ "execution_count": null,
28
+ "outputs": [],
29
+ "id": "memo-3"
30
+ },
144
31
  {
145
- "data": {
146
- "text/plain": [
147
- "[]"
148
- ]
149
- },
150
- "execution_count": 3,
151
- "metadata": {},
152
- "output_type": "execute_result"
32
+ "cell_type": "code",
33
+ "metadata": {},
34
+ "source": [
35
+ "def neighborhood(element):\n owner = getattr(element, 'owner', None)\n children = [child for child in element.owned_elements if child.is_a('Usage', 'Definition')]\n related = []\n for relationship in element.owned_relationships:\n for candidate in relationship.related_elements:\n if candidate is not element:\n related.append(candidate)\n return {\n 'selected': (element.type, label(element)),\n 'owner': None if owner is None else (owner.type, label(owner)),\n 'children': [(child.type, label(child)) for child in children[:50]],\n 'directly related': [(item.type, label(item)) for item in related[:50]],\n }\n\n[neighborhood(item) for item in matches[:10]]"
36
+ ],
37
+ "execution_count": null,
38
+ "outputs": [],
39
+ "id": "memo-4"
40
+ }
41
+ ],
42
+ "metadata": {
43
+ "kernelspec": {
44
+ "display_name": "Python 3 (ipykernel)",
45
+ "language": "python",
46
+ "name": "python3"
47
+ },
48
+ "language_info": {
49
+ "name": "python",
50
+ "version": "3"
51
+ },
52
+ "memo": {
53
+ "starter": true,
54
+ "description": "Search any element and inspect its owner, children, and directly related elements."
153
55
  }
154
- ],
155
- "source": [
156
- "def neighborhood(element):\n",
157
- " owner = getattr(element, 'owner', None)\n",
158
- " children = [child for child in element.owned_elements if isinstance(child, (syside.Usage, syside.Definition))]\n",
159
- " related = []\n",
160
- " for relationship in element.owned_relationships:\n",
161
- " for candidate in relationship.related_elements:\n",
162
- " if candidate is not element:\n",
163
- " related.append(candidate)\n",
164
- " return {\n",
165
- " 'selected': (type(element).__name__, label(element)),\n",
166
- " 'owner': None if owner is None else (type(owner).__name__, label(owner)),\n",
167
- " 'children': [(type(child).__name__, label(child)) for child in children[:50]],\n",
168
- " 'directly related': [(type(item).__name__, label(item)) for item in related[:50]],\n",
169
- " }\n",
170
- "\n",
171
- "[neighborhood(item) for item in matches[:10]]"
172
- ]
173
- }
174
- ],
175
- "metadata": {
176
- "kernelspec": {
177
- "display_name": "Python 3 (ipykernel)",
178
- "language": "python",
179
- "name": "python3"
180
- },
181
- "language_info": {
182
- "codemirror_mode": {
183
- "name": "ipython",
184
- "version": 3
185
- },
186
- "file_extension": ".py",
187
- "mimetype": "text/x-python",
188
- "name": "python",
189
- "nbconvert_exporter": "python",
190
- "pygments_lexer": "ipython3",
191
- "version": "3.12.13"
192
56
  },
193
- "memo": {
194
- "description": "Search any element and inspect its owner, children, and directly related elements.",
195
- "starter": true
196
- }
197
- },
198
- "nbformat": 4,
199
- "nbformat_minor": 5
57
+ "nbformat": 4,
58
+ "nbformat_minor": 5
200
59
  }
@@ -1,188 +1,49 @@
1
1
  {
2
- "cells": [
3
- {
4
- "cell_type": "markdown",
5
- "id": "memo-1",
6
- "metadata": {},
7
- "source": [
8
- "# Model charts\n",
9
- "\n",
10
- "Render semantic composition and diagnostic charts without external plotting packages.\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:35:00.883178Z",
22
- "iopub.status.busy": "2026-07-29T22:35:00.882949Z",
23
- "iopub.status.idle": "2026-07-29T22:35:01.265420Z",
24
- "shell.execute_reply": "2026-07-29T22:35:01.265083Z"
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:35:01.266692Z",
63
- "iopub.status.busy": "2026-07-29T22:35:01.266622Z",
64
- "iopub.status.idle": "2026-07-29T22:35:01.282674Z",
65
- "shell.execute_reply": "2026-07-29T22:35:01.282322Z"
66
- }
67
- },
68
- "outputs": [
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "# Model charts\n\nRender semantic composition and diagnostic charts without external plotting packages.\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
+ },
11
+ {
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 \"\"}')"
16
+ ],
17
+ "execution_count": null,
18
+ "outputs": [],
19
+ "id": "memo-2"
20
+ },
69
21
  {
70
- "data": {
71
- "text/html": [
72
- "<div style=\"font-family:system-ui;max-width:900px\">\n",
73
- " <h2>Semantic composition</h2><div style=\"display:grid;grid-template-columns:180px 1fr 70px;gap:12px;align-items:center;margin:7px 0\">\n",
74
- " <div>AttributeUsage</div><div style=\"background:#edf2f4;border-radius:6px;overflow:hidden\"><div style=\"width:100.0%;height:20px;background:#2d8d70\"></div></div><strong>5,056</strong>\n",
75
- " </div><div style=\"display:grid;grid-template-columns:180px 1fr 70px;gap:12px;align-items:center;margin:7px 0\">\n",
76
- " <div>ConnectionUsage</div><div style=\"background:#edf2f4;border-radius:6px;overflow:hidden\"><div style=\"width:13.7%;height:20px;background:#3887c7\"></div></div><strong>691</strong>\n",
77
- " </div><div style=\"display:grid;grid-template-columns:180px 1fr 70px;gap:12px;align-items:center;margin:7px 0\">\n",
78
- " <div>PartUsage</div><div style=\"background:#edf2f4;border-radius:6px;overflow:hidden\"><div style=\"width:8.4%;height:20px;background:#e58a2b\"></div></div><strong>425</strong>\n",
79
- " </div><div style=\"display:grid;grid-template-columns:180px 1fr 70px;gap:12px;align-items:center;margin:7px 0\">\n",
80
- " <div>RequirementUsage</div><div style=\"background:#edf2f4;border-radius:6px;overflow:hidden\"><div style=\"width:2.1%;height:20px;background:#8357b6\"></div></div><strong>105</strong>\n",
81
- " </div><div style=\"display:grid;grid-template-columns:180px 1fr 70px;gap:12px;align-items:center;margin:7px 0\">\n",
82
- " <div>ItemUsage</div><div style=\"background:#edf2f4;border-radius:6px;overflow:hidden\"><div style=\"width:1.0%;height:20px;background:#cf5c62\"></div></div><strong>49</strong>\n",
83
- " </div><div style=\"display:grid;grid-template-columns:180px 1fr 70px;gap:12px;align-items:center;margin:7px 0\">\n",
84
- " <div>ActionUsage</div><div style=\"background:#edf2f4;border-radius:6px;overflow:hidden\"><div style=\"width:1.0%;height:20px;background:#4f9d9d\"></div></div><strong>44</strong>\n",
85
- " </div><div style=\"display:grid;grid-template-columns:180px 1fr 70px;gap:12px;align-items:center;margin:7px 0\">\n",
86
- " <div>StateUsage</div><div style=\"background:#edf2f4;border-radius:6px;overflow:hidden\"><div style=\"width:1.0%;height:20px;background:#2d8d70\"></div></div><strong>10</strong>\n",
87
- " </div><div style=\"display:grid;grid-template-columns:180px 1fr 70px;gap:12px;align-items:center;margin:7px 0\">\n",
88
- " <div>ActionDefinition</div><div style=\"background:#edf2f4;border-radius:6px;overflow:hidden\"><div style=\"width:1.0%;height:20px;background:#3887c7\"></div></div><strong>6</strong>\n",
89
- " </div><div style=\"display:grid;grid-template-columns:180px 1fr 70px;gap:12px;align-items:center;margin:7px 0\">\n",
90
- " <div>PortDefinition</div><div style=\"background:#edf2f4;border-radius:6px;overflow:hidden\"><div style=\"width:1.0%;height:20px;background:#e58a2b\"></div></div><strong>1</strong>\n",
91
- " </div><div style=\"display:grid;grid-template-columns:180px 1fr 70px;gap:12px;align-items:center;margin:7px 0\">\n",
92
- " <div>PortUsage</div><div style=\"background:#edf2f4;border-radius:6px;overflow:hidden\"><div style=\"width:1.0%;height:20px;background:#8357b6\"></div></div><strong>0</strong>\n",
93
- " </div><div style=\"display:grid;grid-template-columns:180px 1fr 70px;gap:12px;align-items:center;margin:7px 0\">\n",
94
- " <div>PartDefinition</div><div style=\"background:#edf2f4;border-radius:6px;overflow:hidden\"><div style=\"width:1.0%;height:20px;background:#cf5c62\"></div></div><strong>0</strong>\n",
95
- " </div><div style=\"display:grid;grid-template-columns:180px 1fr 70px;gap:12px;align-items:center;margin:7px 0\">\n",
96
- " <div>RequirementDefinition</div><div style=\"background:#edf2f4;border-radius:6px;overflow:hidden\"><div style=\"width:1.0%;height:20px;background:#4f9d9d\"></div></div><strong>0</strong>\n",
97
- " </div>\n",
98
- " <h2 style=\"margin-top:28px\">Diagnostics</h2>\n",
99
- " <div style=\"display:flex;align-items:center;gap:24px\">\n",
100
- " <div style=\"width:150px;height:150px;border-radius:50%;background:conic-gradient(#cf5c62 0 100.0%, #e5a52b 100.0% 100.0%, #3887c7 100.0% 100%);position:relative\">\n",
101
- " <div style=\"position:absolute;inset:28px;background:white;border-radius:50%;display:grid;place-items:center;font-size:24px;font-weight:700\">8009</div>\n",
102
- " </div>\n",
103
- " <table><tr><th>Severity</th><th>Count</th></tr><tr><td>Errors</td><td>8009</td></tr><tr><td>Warnings</td><td>0</td></tr><tr><td>Information</td><td>0</td></tr></table>\n",
104
- " </div>\n",
105
- "</div>"
22
+ "cell_type": "code",
23
+ "metadata": {},
24
+ "source": [
25
+ "from html import escape\nfrom IPython.display import HTML, display\n\ntype_names = [\n 'PartUsage', 'RequirementUsage', 'ActionUsage', 'PortUsage',\n 'ConnectionUsage', 'StateUsage', 'AttributeUsage', 'ItemUsage',\n 'PartDefinition', 'RequirementDefinition', 'ActionDefinition', 'PortDefinition'\n]\ncounts = {}\nfor type_name in type_names:\n counts[type_name] = len(model.elements(type_name))\n\npalette = ['#2d8d70', '#3887c7', '#e58a2b', '#8357b6', '#cf5c62', '#4f9d9d']\nlargest = max(counts.values(), default=1)\nbars = []\nfor index, (name, count) in enumerate(sorted(counts.items(), key=lambda item: item[1], reverse=True)):\n width = max(1, count * 100 / largest)\n color = palette[index % len(palette)]\n bars.append(f'''<div style=\"display:grid;grid-template-columns:180px 1fr 70px;gap:12px;align-items:center;margin:7px 0\">\n <div>{escape(name)}</div><div style=\"background:#edf2f4;border-radius:6px;overflow:hidden\"><div style=\"width:{width:.1f}%;height:20px;background:{color}\"></div></div><strong>{count:,}</strong>\n </div>''')\n\nerror_count = len(diagnostics.errors)\nwarning_count = len(diagnostics.warnings)\ninfo_count = len(diagnostics.infos)\ntotal_diagnostics = max(1, error_count + warning_count + info_count)\ndiagnostic_gradient = (\n f'#cf5c62 0 {error_count / total_diagnostics * 100:.1f}%, '\n f'#e5a52b {error_count / total_diagnostics * 100:.1f}% {(error_count + warning_count) / total_diagnostics * 100:.1f}%, '\n f'#3887c7 {(error_count + warning_count) / total_diagnostics * 100:.1f}% 100%'\n)\n\ndisplay(HTML(f'''<div style=\"font-family:system-ui;max-width:900px\">\n <h2>Semantic composition</h2>{''.join(bars)}\n <h2 style=\"margin-top:28px\">Diagnostics</h2>\n <div style=\"display:flex;align-items:center;gap:24px\">\n <div style=\"width:150px;height:150px;border-radius:50%;background:conic-gradient({diagnostic_gradient});position:relative\">\n <div style=\"position:absolute;inset:28px;background:white;border-radius:50%;display:grid;place-items:center;font-size:24px;font-weight:700\">{error_count + warning_count + info_count}</div>\n </div>\n <table><tr><th>Severity</th><th>Count</th></tr><tr><td>Errors</td><td>{error_count}</td></tr><tr><td>Warnings</td><td>{warning_count}</td></tr><tr><td>Information</td><td>{info_count}</td></tr></table>\n </div>\n</div>'''))"
106
26
  ],
107
- "text/plain": [
108
- "<IPython.core.display.HTML object>"
109
- ]
110
- },
111
- "metadata": {},
112
- "output_type": "display_data"
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": "Render semantic composition and diagnostic charts without external plotting packages."
113
45
  }
114
- ],
115
- "source": [
116
- "from html import escape\n",
117
- "from IPython.display import HTML, display\n",
118
- "\n",
119
- "type_names = [\n",
120
- " 'PartUsage', 'RequirementUsage', 'ActionUsage', 'PortUsage',\n",
121
- " 'ConnectionUsage', 'StateUsage', 'AttributeUsage', 'ItemUsage',\n",
122
- " 'PartDefinition', 'RequirementDefinition', 'ActionDefinition', 'PortDefinition'\n",
123
- "]\n",
124
- "counts = {}\n",
125
- "for type_name in type_names:\n",
126
- " node_type = getattr(syside, type_name, None)\n",
127
- " if node_type is not None:\n",
128
- " counts[type_name] = len(list(model.elements(node_type)))\n",
129
- "\n",
130
- "palette = ['#2d8d70', '#3887c7', '#e58a2b', '#8357b6', '#cf5c62', '#4f9d9d']\n",
131
- "largest = max(counts.values(), default=1)\n",
132
- "bars = []\n",
133
- "for index, (name, count) in enumerate(sorted(counts.items(), key=lambda item: item[1], reverse=True)):\n",
134
- " width = max(1, count * 100 / largest)\n",
135
- " color = palette[index % len(palette)]\n",
136
- " bars.append(f'''<div style=\"display:grid;grid-template-columns:180px 1fr 70px;gap:12px;align-items:center;margin:7px 0\">\n",
137
- " <div>{escape(name)}</div><div style=\"background:#edf2f4;border-radius:6px;overflow:hidden\"><div style=\"width:{width:.1f}%;height:20px;background:{color}\"></div></div><strong>{count:,}</strong>\n",
138
- " </div>''')\n",
139
- "\n",
140
- "error_count = len(list(diagnostics.errors))\n",
141
- "warning_count = len(list(diagnostics.warnings))\n",
142
- "info_count = len(list(diagnostics.infos))\n",
143
- "total_diagnostics = max(1, error_count + warning_count + info_count)\n",
144
- "diagnostic_gradient = (\n",
145
- " f'#cf5c62 0 {error_count / total_diagnostics * 100:.1f}%, '\n",
146
- " f'#e5a52b {error_count / total_diagnostics * 100:.1f}% {(error_count + warning_count) / total_diagnostics * 100:.1f}%, '\n",
147
- " f'#3887c7 {(error_count + warning_count) / total_diagnostics * 100:.1f}% 100%'\n",
148
- ")\n",
149
- "\n",
150
- "display(HTML(f'''<div style=\"font-family:system-ui;max-width:900px\">\n",
151
- " <h2>Semantic composition</h2>{''.join(bars)}\n",
152
- " <h2 style=\"margin-top:28px\">Diagnostics</h2>\n",
153
- " <div style=\"display:flex;align-items:center;gap:24px\">\n",
154
- " <div style=\"width:150px;height:150px;border-radius:50%;background:conic-gradient({diagnostic_gradient});position:relative\">\n",
155
- " <div style=\"position:absolute;inset:28px;background:white;border-radius:50%;display:grid;place-items:center;font-size:24px;font-weight:700\">{error_count + warning_count + info_count}</div>\n",
156
- " </div>\n",
157
- " <table><tr><th>Severity</th><th>Count</th></tr><tr><td>Errors</td><td>{error_count}</td></tr><tr><td>Warnings</td><td>{warning_count}</td></tr><tr><td>Information</td><td>{info_count}</td></tr></table>\n",
158
- " </div>\n",
159
- "</div>'''))"
160
- ]
161
- }
162
- ],
163
- "metadata": {
164
- "kernelspec": {
165
- "display_name": "Python 3 (ipykernel)",
166
- "language": "python",
167
- "name": "python3"
168
- },
169
- "language_info": {
170
- "codemirror_mode": {
171
- "name": "ipython",
172
- "version": 3
173
- },
174
- "file_extension": ".py",
175
- "mimetype": "text/x-python",
176
- "name": "python",
177
- "nbconvert_exporter": "python",
178
- "pygments_lexer": "ipython3",
179
- "version": "3.12.13"
180
46
  },
181
- "memo": {
182
- "description": "Render semantic composition and diagnostic charts without external plotting packages.",
183
- "starter": true
184
- }
185
- },
186
- "nbformat": 4,
187
- "nbformat_minor": 5
47
+ "nbformat": 4,
48
+ "nbformat_minor": 5
188
49
  }