@memoarchitect/ontology 0.6.4 → 0.7.0

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 (327) hide show
  1. package/README.md +1 -1
  2. package/examples/connected-patient-monitor/model/catalog/project.sysml +24 -0
  3. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  4. package/examples/connected-patient-monitor/model/{viewpoints → catalog/viewpoints/unassigned/views}/connected_patient_monitor_overview.sysml +1 -1
  5. package/examples/embedded-infusion-pump/model/catalog/project.sysml +24 -0
  6. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  7. package/examples/embedded-infusion-pump/model/{viewpoints → catalog/viewpoints/unassigned/views}/embedded_infusion_pump_overview.sysml +1 -1
  8. package/examples/extensions/clinical/memo.package.yaml +18 -9
  9. package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +10 -2
  10. package/examples/extensions/template/memo.package.yaml +17 -9
  11. package/examples/functional-logical-physical/model/catalog/project.sysml +24 -0
  12. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  13. package/examples/functional-logical-physical/model/{viewpoints → catalog/viewpoints/unassigned/views}/functional_logical_physical_overview.sysml +1 -1
  14. package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +148 -0
  15. package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +301 -0
  16. package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +229 -0
  17. package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +200 -0
  18. package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +188 -0
  19. package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +173 -0
  20. package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +180 -0
  21. package/examples/gpca-pump/analysis/Samples/README.md +37 -0
  22. package/examples/gpca-pump/gpca-pump.kpar +0 -0
  23. package/examples/gpca-pump/methodology/gpca_methodology.sysml +7 -8
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +89 -11
  25. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +1 -1
  26. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +22 -12
  27. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +2 -2
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +8 -2
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +5 -5
  30. package/examples/gpca-pump/model/catalog/gpca_context.sysml +3 -8
  31. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
  32. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +1 -15
  33. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +41 -11
  34. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +19 -8
  35. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +2 -2
  36. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +1 -1
  37. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +10 -1
  38. package/examples/gpca-pump/model/catalog/gpca_system.sysml +34 -30
  39. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +59 -31
  40. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +1 -1
  41. package/examples/gpca-pump/model/catalog/project.sysml +21 -0
  42. package/examples/gpca-pump/model/catalog/viewpoints/context/viewpoint.sysml +8 -0
  43. package/examples/gpca-pump/model/{views → catalog/viewpoints/context/views}/context_system_context_view.sysml +3 -3
  44. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/viewpoint.sysml +8 -0
  45. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/cybersecurity_cybersecurity_view.sysml +3 -3
  46. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_cyber_assessment_view.sysml +4 -4
  47. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_threat_model_view.sysml +4 -4
  48. package/examples/gpca-pump/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
  49. package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_allocation_view.sysml +2 -2
  50. package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_browser_view.sysml +3 -3
  51. package/examples/gpca-pump/model/catalog/viewpoints/logical/viewpoint.sysml +8 -0
  52. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/behavior_action_flow_view.sysml +3 -3
  53. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/document_architecture_description_view.sysml +7 -7
  54. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_device_interconnect_view.sysml +5 -5
  55. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_logical_architecture_view.sysml +3 -3
  56. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_mode_state_view.sysml +3 -3
  57. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_system_decomposition_view.sysml +3 -3
  58. package/examples/gpca-pump/model/catalog/viewpoints/operational/viewpoint.sysml +8 -0
  59. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_scenario_sequence_view.sysml +2 -2
  60. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_use_case_view.sysml +3 -3
  61. package/examples/gpca-pump/model/catalog/viewpoints/physical/viewpoint.sysml +8 -0
  62. package/examples/gpca-pump/model/{views → catalog/viewpoints/physical/views}/physical_physical_bom_view.sysml +2 -2
  63. package/examples/gpca-pump/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
  64. package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/document_dhf_index_view.sysml +6 -6
  65. package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/requirements_requirements_trace_view.sysml +2 -2
  66. package/examples/gpca-pump/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
  67. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_hazard_analysis_view.sysml +3 -3
  68. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_rmf_view.sysml +3 -3
  69. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_fmea_view.sysml +2 -2
  70. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_risk_chain_view.sysml +3 -3
  71. package/examples/gpca-pump/model/catalog/viewpoints/software/viewpoint.sysml +8 -0
  72. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/document_sdd_view.sysml +3 -3
  73. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/software_software_architecture_view.sysml +3 -3
  74. package/examples/gpca-pump/model/catalog/viewpoints/usability/viewpoint.sysml +8 -0
  75. package/examples/gpca-pump/model/{views → catalog/viewpoints/usability/views}/document_usability_view.sysml +4 -4
  76. package/examples/gpca-pump/model/catalog/viewpoints/verification/viewpoint.sysml +8 -0
  77. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/document_vv_view.sysml +3 -3
  78. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/verification_verification_coverage_view.sysml +2 -2
  79. package/examples/ivd-laboratory-system/model/catalog/project.sysml +24 -0
  80. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  81. package/examples/ivd-laboratory-system/model/{viewpoints → catalog/viewpoints/unassigned/views}/ivd_laboratory_system_overview.sysml +1 -1
  82. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +1 -0
  83. package/examples/manual-surgical-instrument/model/catalog/project.sysml +24 -0
  84. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  85. package/examples/manual-surgical-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/manual_surgical_instrument_overview.sysml +1 -1
  86. package/examples/multidimensional-layers/model/catalog/project.sysml +24 -0
  87. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  88. package/examples/multidimensional-layers/model/{viewpoints → catalog/viewpoints/unassigned/views}/multidimensional_layers_overview.sysml +1 -1
  89. package/examples/nested-architecture-dsm/README.md +49 -0
  90. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +174 -0
  91. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +183 -0
  92. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +53 -0
  93. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +89 -0
  94. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +90 -0
  95. package/examples/nested-architecture-dsm/model/catalog/project.sysml +28 -0
  96. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +49 -0
  97. package/examples/reusable-instrument/model/catalog/project.sysml +24 -0
  98. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -6
  99. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  100. package/examples/reusable-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/reusable_instrument_overview.sysml +1 -1
  101. package/examples/software-only-medical-device/model/catalog/project.sysml +24 -0
  102. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  103. package/examples/software-only-medical-device/model/{viewpoints → catalog/viewpoints/unassigned/views}/software_only_medical_device_overview.sysml +1 -1
  104. package/examples/surgical-closure-workflow/model/catalog/project.sysml +24 -0
  105. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -19
  106. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  107. package/examples/surgical-closure-workflow/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_closure_workflow_overview.sysml +1 -1
  108. package/examples/surgical-robot/model/catalog/project.sysml +24 -0
  109. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +5 -3
  110. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  111. package/examples/surgical-robot/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_robot_overview.sysml +1 -1
  112. package/examples/sysml-diagram-samples/README.md +7 -0
  113. package/examples/sysml-diagram-samples/dhf/documents/DOC-HAR-001.md +11 -0
  114. package/examples/sysml-diagram-samples/memo.package.yaml +11 -5
  115. package/examples/sysml-diagram-samples/model/catalog/project.sysml +33 -0
  116. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  117. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/action_flow_view.sysml +18 -10
  118. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/context_view.sysml +4 -2
  119. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +47 -0
  120. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/functional_flow_view.sysml +23 -20
  121. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/interconnection_view.sysml +17 -14
  122. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +94 -0
  123. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/operational_behaviour_view.sysml +23 -20
  124. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +13 -0
  125. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/requirements_view.sysml +3 -1
  126. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +51 -0
  127. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/state_transition_view.sysml +3 -1
  128. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/tree_view.sysml +3 -1
  129. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/use_case_view.sysml +3 -1
  130. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +93 -0
  131. package/examples/temperature-alarm/model/catalog/project.sysml +24 -0
  132. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +2 -1
  133. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  134. package/examples/temperature-alarm/model/{viewpoints → catalog/viewpoints/unassigned/views}/temperature_alarm_overview.sysml +1 -1
  135. package/examples/ui-screen-regions/README.md +117 -0
  136. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +60 -0
  137. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +189 -0
  138. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +61 -0
  139. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/drugSelectorRegion/drug-selector-expanded-2.4.1.png +0 -0
  140. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/mainScreenLayout/main-screen-2.4.1.png +0 -0
  141. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/settingsScreenLayout/settings-screen-2.4.1.png +0 -0
  142. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +51 -0
  143. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +27 -0
  144. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +27 -0
  145. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +59 -0
  146. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +25 -0
  147. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +178 -0
  148. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +93 -0
  149. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +60 -0
  150. package/examples/ui-screen-regions/model/catalog/project.sysml +45 -0
  151. package/examples/ui-screen-regions/model/catalog/traces.sysml +276 -0
  152. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
  153. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +62 -0
  154. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
  155. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +62 -0
  156. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
  157. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +62 -0
  158. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/viewpoint.sysml +8 -0
  159. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +57 -0
  160. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +52 -0
  161. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +54 -0
  162. package/memo.manifest.yaml +2 -0
  163. package/methodologies/default/memo.package.yaml +19 -9
  164. package/methodologies/gpca/memo.package.yaml +18 -9
  165. package/ontology/memo.package.yaml +23 -8
  166. package/package.json +1 -3
  167. package/profile/memo.package.yaml +18 -9
  168. package/src/architecture/decisions/memo_decisions.sysml +7 -0
  169. package/src/architecture/functional/behavior/memo_behavior.sysml +1 -1
  170. package/src/architecture/functional/functions/memo_functions.sysml +5 -12
  171. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +1 -3
  172. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +18 -5
  173. package/src/architecture/implementation/ui/memo_ui.sysml +210 -27
  174. package/src/architecture/logical/interfaces/memo_interfaces.sysml +1 -2
  175. package/src/architecture/logical/structure/memo_logical_structure.sysml +71 -15
  176. package/src/architecture/operational/activities/memo_activities.sysml +0 -1
  177. package/src/architecture/operational/scenarios/memo_scenarios.sysml +2 -2
  178. package/src/architecture/operational/workflows/memo_workflows.sysml +0 -6
  179. package/src/{compliance/change/memo_change.sysml → artifacts/configuration_management/memo_configuration_management.sysml} +5 -3
  180. package/src/artifacts/core/memo_controlled_artifacts.sysml +33 -0
  181. package/src/artifacts/documents/risk_management/memo_risk_management.sysml +12 -0
  182. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +1 -1
  183. package/src/assurance/human_factors/memo_human_factors.sysml +1 -1
  184. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +11 -0
  185. package/src/assurance/verification_validation/clinical_evaluation/memo_clinical_evaluation.sysml +11 -0
  186. package/src/assurance/verification_validation/memo_assurance.sysml +1 -1
  187. package/src/core/annotations/memo_annotations.sysml +77 -0
  188. package/src/core/common/memo_common.sysml +20 -3
  189. package/src/core/consistency_rules/consistency_rules.sysml +7 -0
  190. package/src/core/dimensions/dimensions.sysml +5 -1
  191. package/src/core/enumerations/memo_enumerations.sysml +41 -6
  192. package/src/core/methodology_scope/methodology_scope.sysml +7 -15
  193. package/src/core/relationships/memo_relationships.sysml +4 -2
  194. package/src/memo_namespaces.sysml +97 -67
  195. package/src/methodology/core/memo_core.sysml +45 -2
  196. package/src/methodology/profiles/memo_profiles.sysml +30 -40
  197. package/src/methodology/workflow/memo_workflow.sysml +7 -2
  198. package/src/rules/closure/closure_rules.sysml +104 -31
  199. package/src/rules/coverage/coverage_rules.sysml +4 -256
  200. package/src/rules/crosslayer/cross_layer_rules.sysml +6 -15
  201. package/src/rules/lifecycle/lifecycle_rules.sysml +4 -39
  202. package/src/rules/ontology/ontology_invariants.sysml +38 -68
  203. package/src/rules/quantitative/quantitative_rules.sysml +8 -8
  204. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +7 -0
  205. package/src/viewpoints/clinical/clinical_viewpoint.sysml +3 -1
  206. package/src/viewpoints/clinical/{clinical_evidence_view → views/clinical_evidence_view}/clinical_evidence_view.sysml +2 -2
  207. package/src/viewpoints/context/context_viewpoint.sysml +3 -1
  208. package/src/viewpoints/context/{system_context_view → views/system_context_view}/system_context_view.sysml +2 -2
  209. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +3 -1
  210. package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view → views/cybersecurity_assessment_view}/cybersecurity_assessment_view.sysml +2 -2
  211. package/src/viewpoints/cybersecurity/{threat_model_view → views/threat_model_view}/threat_model_view.sysml +2 -2
  212. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +6 -0
  213. package/src/viewpoints/functional/functional_viewpoint.sysml +3 -1
  214. package/src/viewpoints/functional/{function_allocation_view → views/function_allocation_view}/function_allocation_view.sysml +2 -2
  215. package/src/viewpoints/functional/{system_functional_tree_view → views/system_functional_tree_view}/system_functional_tree_view.sysml +2 -2
  216. package/src/viewpoints/logical/logical_viewpoint.sysml +3 -1
  217. package/src/viewpoints/logical/{logical_architecture_view → views/logical_architecture_view}/logical_architecture_view.sysml +2 -2
  218. package/src/viewpoints/operational/operational_viewpoint.sysml +3 -1
  219. package/src/viewpoints/operational/{use_case_view → views/use_case_view}/use_case_view.sysml +2 -2
  220. package/src/viewpoints/physical/physical_viewpoint.sysml +3 -1
  221. package/src/viewpoints/physical/{network_topology_view → views/network_topology_view}/network_topology_view.sysml +2 -2
  222. package/src/viewpoints/physical/{physical_bom_view → views/physical_bom_view}/physical_bom_view.sysml +2 -2
  223. package/src/viewpoints/rendering/memo_rendering.sysml +354 -0
  224. package/src/viewpoints/requirements/requirements_viewpoint.sysml +3 -1
  225. package/src/viewpoints/requirements/{requirements_traceability_view → views/requirements_traceability_view}/requirements_traceability_view.sysml +2 -2
  226. package/src/viewpoints/risk/risk_viewpoint.sysml +3 -1
  227. package/src/viewpoints/risk/{risk_chain_view → views/risk_chain_view}/risk_chain_view.sysml +2 -2
  228. package/src/viewpoints/software/software_viewpoint.sysml +3 -1
  229. package/src/viewpoints/software/{software_architecture_view → views/software_architecture_view}/software_architecture_view.sysml +2 -2
  230. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +28 -0
  231. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +23 -0
  232. package/src/viewpoints/usability/usability_viewpoint.sysml +3 -1
  233. package/src/viewpoints/usability/{usability_engineering_view → views/usability_engineering_view}/usability_engineering_view.sysml +2 -2
  234. package/src/viewpoints/verification/verification_viewpoint.sysml +3 -1
  235. package/src/viewpoints/verification/{verification_coverage_view → views/verification_coverage_view}/verification_coverage_view.sysml +2 -2
  236. package/templates/connected-device/memo.package.yaml +11 -5
  237. package/templates/connected-device/model/catalog/project.sysml +28 -0
  238. package/templates/connected-device/syside.toml +1 -1
  239. package/templates/default/memo.package.yaml +11 -5
  240. package/templates/default/model/catalog/project.sysml +28 -0
  241. package/templates/default/syside.toml +1 -1
  242. package/templates/infusion-pump/memo.package.yaml +11 -5
  243. package/templates/infusion-pump/model/catalog/project.sysml +28 -0
  244. package/templates/infusion-pump/syside.toml +1 -1
  245. package/templates/monitoring-device/memo.package.yaml +11 -5
  246. package/templates/monitoring-device/model/catalog/project.sysml +28 -0
  247. package/templates/monitoring-device/syside.toml +1 -1
  248. package/templates/samd/memo.package.yaml +11 -5
  249. package/templates/samd/model/catalog/project.sysml +28 -0
  250. package/templates/samd/syside.toml +1 -1
  251. package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +0 -3
  252. package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +0 -3
  253. package/examples/functional-logical-physical/model/functional_logical_physical.sysml +0 -3
  254. package/examples/gpca-pump/memo.config.yaml +0 -9
  255. package/examples/gpca-pump/methodology/gpca_scope.sysml +0 -25
  256. package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +0 -3
  257. package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +0 -3
  258. package/examples/multidimensional-layers/model/multidimensional_layers.sysml +0 -4
  259. package/examples/reusable-instrument/model/reusable_instrument.sysml +0 -4
  260. package/examples/software-only-medical-device/model/software_only_medical_device.sysml +0 -4
  261. package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +0 -4
  262. package/examples/surgical-robot/model/surgical_robot.sysml +0 -4
  263. package/examples/temperature-alarm/model/temperature_alarm.sysml +0 -4
  264. package/ontology/memo.rendering.yaml +0 -84
  265. package/src/compliance/artifacts/memo_artifacts.sysml +0 -12
  266. package/src/compliance/document_views/memo_document_views.sysml +0 -7
  267. package/src/compliance/iso14971/risk_management_file.sysml +0 -16
  268. package/src/compliance/postmarket/memo_postmarket.sysml +0 -16
  269. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/change-record.md +0 -0
  270. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-input.md +0 -0
  271. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-output.md +0 -0
  272. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-review.md +0 -0
  273. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-validation.md +0 -0
  274. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-verification.md +0 -0
  275. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/dhf-index.md +0 -0
  276. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/transfer-plan.md +0 -0
  277. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/user-needs.md +0 -0
  278. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-plan.md +0 -0
  279. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-report.md +0 -0
  280. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/incident-response.md +0 -0
  281. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/postmarket-surveillance.md +0 -0
  282. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/security-arch.md +0 -0
  283. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/threat-model.md +0 -0
  284. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/vuln-assessment.md +0 -0
  285. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/change-control.md +0 -0
  286. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/detailed-design.md +0 -0
  287. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/integration-test.md +0 -0
  288. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sad.md +0 -0
  289. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sbom.md +0 -0
  290. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sdp.md +0 -0
  291. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/soup.md +0 -0
  292. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/srs.md +0 -0
  293. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sw-traceability.md +0 -0
  294. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/system-test.md +0 -0
  295. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/formative-eval.md +0 -0
  296. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/summative-eval.md +0 -0
  297. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/task-analysis.md +0 -0
  298. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ue-plan.md +0 -0
  299. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ui-spec.md +0 -0
  300. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/urra.md +0 -0
  301. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/use-spec.md +0 -0
  302. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fmea.md +0 -0
  303. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fta.md +0 -0
  304. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/har.md +0 -0
  305. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-benefit.md +0 -0
  306. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-matrix.md +0 -0
  307. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmp.md +0 -0
  308. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmr.md +0 -0
  309. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/approval-block.md +0 -0
  310. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/document-control-header.md +0 -0
  311. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/references-section.md +0 -0
  312. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/revision-history-table.md +0 -0
  313. /package/templates/connected-device/{src → model/catalog}/architecture/system.sysml +0 -0
  314. /package/templates/connected-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  315. /package/templates/connected-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  316. /package/templates/default/{src → model/catalog}/architecture/system.sysml +0 -0
  317. /package/templates/default/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  318. /package/templates/default/{src → model/catalog}/assurance/requirements.sysml +0 -0
  319. /package/templates/infusion-pump/{src → model/catalog}/architecture/system.sysml +0 -0
  320. /package/templates/infusion-pump/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  321. /package/templates/infusion-pump/{src → model/catalog}/assurance/requirements.sysml +0 -0
  322. /package/templates/monitoring-device/{src → model/catalog}/architecture/system.sysml +0 -0
  323. /package/templates/monitoring-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  324. /package/templates/monitoring-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  325. /package/templates/samd/{src → model/catalog}/architecture/system.sysml +0 -0
  326. /package/templates/samd/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  327. /package/templates/samd/{src → model/catalog}/assurance/requirements.sysml +0 -0
@@ -0,0 +1,301 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "memo-1",
6
+ "metadata": {},
7
+ "source": [
8
+ "# Architecture hotspots\n",
9
+ "\n",
10
+ "Find busy containers, deep ownership paths, and dominant semantic types.\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:48.480637Z",
22
+ "iopub.status.busy": "2026-07-29T22:31:48.480406Z",
23
+ "iopub.status.idle": "2026-07-29T22:31:48.765461Z",
24
+ "shell.execute_reply": "2026-07-29T22:31:48.765134Z"
25
+ }
26
+ },
27
+ "outputs": [
28
+ {
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:48.768663Z",
63
+ "iopub.status.busy": "2026-07-29T22:31:48.768585Z",
64
+ "iopub.status.idle": "2026-07-29T22:31:48.814237Z",
65
+ "shell.execute_reply": "2026-07-29T22:31:48.813848Z"
66
+ }
67
+ },
68
+ "outputs": [
69
+ {
70
+ "name": "stdout",
71
+ "output_type": "stream",
72
+ "text": [
73
+ "Top containers by directly owned semantic elements\n"
74
+ ]
75
+ },
76
+ {
77
+ "data": {
78
+ "text/plain": [
79
+ "[(19,\n",
80
+ " 'RequirementUsage',\n",
81
+ " 'memo_examples_gpca_pump_model_catalog_gpca_requirements::reqWatchdogSafeState'),\n",
82
+ " (19,\n",
83
+ " 'RequirementUsage',\n",
84
+ " 'memo_examples_gpca_pump_model_catalog_gpca_requirements::reqDoorOpen'),\n",
85
+ " (18,\n",
86
+ " 'RequirementUsage',\n",
87
+ " 'memo_examples_gpca_pump_model_catalog_gpca_requirements::reqPowerLossRetention'),\n",
88
+ " (18,\n",
89
+ " 'RequirementUsage',\n",
90
+ " 'memo_examples_gpca_pump_model_catalog_gpca_requirements::reqPost'),\n",
91
+ " (18,\n",
92
+ " 'RequirementUsage',\n",
93
+ " 'memo_examples_gpca_pump_model_catalog_gpca_requirements::reqDrugLibraryLimits'),\n",
94
+ " (18,\n",
95
+ " 'ActionUsage',\n",
96
+ " 'memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::infusionDeliveryFlow'),\n",
97
+ " (17,\n",
98
+ " 'ViewUsage',\n",
99
+ " 'memo_examples_gpca_pump_model_views_logical_system_decomposition_view::gpcaSystemDecompositionView'),\n",
100
+ " (16,\n",
101
+ " 'ViewUsage',\n",
102
+ " 'memo_examples_gpca_pump_model_views_software_software_architecture_view::gpcaSoftwareArchitectureView'),\n",
103
+ " (16,\n",
104
+ " 'ViewUsage',\n",
105
+ " 'memo_examples_gpca_pump_model_views_risk_risk_chain_view::gpcaRiskChainView'),\n",
106
+ " (16,\n",
107
+ " 'ViewUsage',\n",
108
+ " 'memo_examples_gpca_pump_model_views_operational_use_case_view::gpcaUseCaseView'),\n",
109
+ " (16,\n",
110
+ " 'ViewUsage',\n",
111
+ " 'memo_examples_gpca_pump_model_views_logical_mode_state_view::gpcaModeStateView'),\n",
112
+ " (16,\n",
113
+ " 'ViewUsage',\n",
114
+ " 'memo_examples_gpca_pump_model_views_logical_logical_architecture_view::gpcaLogicalArchitectureView'),\n",
115
+ " (16,\n",
116
+ " 'ViewUsage',\n",
117
+ " 'memo_examples_gpca_pump_model_views_logical_device_interconnect_view::gpcaDeviceInterconnectView'),\n",
118
+ " (16,\n",
119
+ " 'ViewUsage',\n",
120
+ " 'memo_examples_gpca_pump_model_views_document_dhf_index_view::dhfIndexView'),\n",
121
+ " (16,\n",
122
+ " 'ViewUsage',\n",
123
+ " 'memo_examples_gpca_pump_model_views_document_architecture_description_view::architectureDescriptionView'),\n",
124
+ " (16,\n",
125
+ " 'ViewUsage',\n",
126
+ " 'memo_examples_gpca_pump_model_views_cybersecurity_cybersecurity_view::gpcaCybersecurityView'),\n",
127
+ " (16,\n",
128
+ " 'ViewUsage',\n",
129
+ " 'memo_examples_gpca_pump_model_views_context_system_context_view::gpcaSystemContextView'),\n",
130
+ " (16,\n",
131
+ " 'ViewUsage',\n",
132
+ " 'memo_examples_gpca_pump_model_views_behavior_action_flow_view::gpcaActionFlowView'),\n",
133
+ " (15,\n",
134
+ " 'ViewUsage',\n",
135
+ " 'memo_examples_gpca_pump_model_views_verification_verification_coverage_view::gpcaVerificationCoverageView'),\n",
136
+ " (15,\n",
137
+ " 'ViewUsage',\n",
138
+ " 'memo_examples_gpca_pump_model_views_risk_fmea_view::gpcaFmeaView'),\n",
139
+ " (15,\n",
140
+ " 'ViewUsage',\n",
141
+ " 'memo_examples_gpca_pump_model_views_requirements_requirements_trace_view::gpcaRequirementsTraceView'),\n",
142
+ " (15,\n",
143
+ " 'ViewUsage',\n",
144
+ " 'memo_examples_gpca_pump_model_views_physical_physical_bom_view::gpcaPhysicalBomView'),\n",
145
+ " (15,\n",
146
+ " 'ViewUsage',\n",
147
+ " 'memo_examples_gpca_pump_model_views_operational_scenario_sequence_view::gpcaScenarioSequenceView'),\n",
148
+ " (15,\n",
149
+ " 'ViewUsage',\n",
150
+ " 'memo_examples_gpca_pump_model_views_functional_function_browser_view::gpcaFunctionBrowserView'),\n",
151
+ " (15,\n",
152
+ " 'ViewUsage',\n",
153
+ " 'memo_examples_gpca_pump_model_views_functional_function_allocation_view::gpcaFunctionAllocationView')]"
154
+ ]
155
+ },
156
+ "metadata": {},
157
+ "output_type": "display_data"
158
+ },
159
+ {
160
+ "name": "stdout",
161
+ "output_type": "stream",
162
+ "text": [
163
+ "Deepest ownership paths\n"
164
+ ]
165
+ },
166
+ {
167
+ "data": {
168
+ "text/plain": [
169
+ "[(5, 'ReferenceUsage', 'sensorStatus'),\n",
170
+ " (5, 'ReferenceUsage', 'sensorStatus'),\n",
171
+ " (5, 'ReferenceUsage', 'flowCommand'),\n",
172
+ " (5, 'ReferenceUsage', 'flowCommand'),\n",
173
+ " (5, 'ReferenceUsage', 'authorizedBolus'),\n",
174
+ " (5, 'ReferenceUsage', 'authorizedBolus'),\n",
175
+ " (5, 'ReferenceUsage', 'alarmSignal'),\n",
176
+ " (5, 'ReferenceUsage', 'alarmSignal'),\n",
177
+ " (5, 'ReferenceUsage', 'actuation'),\n",
178
+ " (5, 'ReferenceUsage', 'actuation'),\n",
179
+ " (4, 'AttributeUsage', '<unnamed>'),\n",
180
+ " (4, 'AttributeUsage', '<unnamed>'),\n",
181
+ " (4, 'AttributeUsage', '<unnamed>'),\n",
182
+ " (4, 'AttributeUsage', '<unnamed>'),\n",
183
+ " (4, 'AttributeUsage', '<unnamed>'),\n",
184
+ " (4, 'AttributeUsage', '<unnamed>'),\n",
185
+ " (4, 'AttributeUsage', '<unnamed>'),\n",
186
+ " (4, 'AttributeUsage', '<unnamed>'),\n",
187
+ " (4, 'AttributeUsage', '<unnamed>'),\n",
188
+ " (4, 'AttributeUsage', '<unnamed>'),\n",
189
+ " (4, 'AttributeUsage', '<unnamed>'),\n",
190
+ " (4, 'AttributeUsage', '<unnamed>'),\n",
191
+ " (4, 'AttributeUsage', '<unnamed>'),\n",
192
+ " (4, 'AttributeUsage', '<unnamed>'),\n",
193
+ " (4, 'AttributeUsage', '<unnamed>')]"
194
+ ]
195
+ },
196
+ "metadata": {},
197
+ "output_type": "display_data"
198
+ },
199
+ {
200
+ "name": "stdout",
201
+ "output_type": "stream",
202
+ "text": [
203
+ "Most common semantic types\n"
204
+ ]
205
+ },
206
+ {
207
+ "data": {
208
+ "text/plain": [
209
+ "[('AttributeUsage', 5056),\n",
210
+ " ('ConnectionUsage', 691),\n",
211
+ " ('PartUsage', 425),\n",
212
+ " ('ReferenceUsage', 174),\n",
213
+ " ('RequirementUsage', 105),\n",
214
+ " ('ItemUsage', 49),\n",
215
+ " ('ActionUsage', 44),\n",
216
+ " ('SuccessionAsUsage', 29),\n",
217
+ " ('VerificationCaseUsage', 27),\n",
218
+ " ('ViewUsage', 26),\n",
219
+ " ('InterfaceUsage', 14),\n",
220
+ " ('StateUsage', 10),\n",
221
+ " ('AllocationUsage', 6),\n",
222
+ " ('ActionDefinition', 6),\n",
223
+ " ('FlowUsage', 5),\n",
224
+ " ('ItemDefinition', 5),\n",
225
+ " ('UseCaseUsage', 1),\n",
226
+ " ('PortDefinition', 1),\n",
227
+ " ('ConjugatedPortDefinition', 1),\n",
228
+ " ('InterfaceDefinition', 1)]"
229
+ ]
230
+ },
231
+ "execution_count": 2,
232
+ "metadata": {},
233
+ "output_type": "execute_result"
234
+ }
235
+ ],
236
+ "source": [
237
+ "from IPython.display import display\n",
238
+ "\n",
239
+ "semantic_elements = (\n",
240
+ " list(model.elements(syside.Usage, include_subtypes=True))\n",
241
+ " + list(model.elements(syside.Definition, include_subtypes=True))\n",
242
+ ")\n",
243
+ "\n",
244
+ "def safe_name(element):\n",
245
+ " value = element.qualified_name or element.name or element.declared_name\n",
246
+ " return str(value) if value else '<unnamed>'\n",
247
+ "\n",
248
+ "def ownership_depth(element):\n",
249
+ " depth, current, seen = 0, element.owner, set()\n",
250
+ " while current is not None and id(current) not in seen:\n",
251
+ " seen.add(id(current))\n",
252
+ " depth += 1\n",
253
+ " current = getattr(current, 'owner', None)\n",
254
+ " return depth\n",
255
+ "\n",
256
+ "containers = []\n",
257
+ "for element in semantic_elements:\n",
258
+ " children = [child for child in element.owned_elements if isinstance(child, (syside.Usage, syside.Definition))]\n",
259
+ " if children:\n",
260
+ " containers.append((len(children), type(element).__name__, safe_name(element)))\n",
261
+ "\n",
262
+ "print('Top containers by directly owned semantic elements')\n",
263
+ "display(sorted(containers, reverse=True)[:25])\n",
264
+ "\n",
265
+ "print('Deepest ownership paths')\n",
266
+ "display(sorted(\n",
267
+ " ((ownership_depth(item), type(item).__name__, safe_name(item)) for item in semantic_elements),\n",
268
+ " reverse=True,\n",
269
+ ")[:25])\n",
270
+ "\n",
271
+ "print('Most common semantic types')\n",
272
+ "Counter(type(item).__name__ for item in semantic_elements).most_common(30)"
273
+ ]
274
+ }
275
+ ],
276
+ "metadata": {
277
+ "kernelspec": {
278
+ "display_name": "Python 3 (ipykernel)",
279
+ "language": "python",
280
+ "name": "python3"
281
+ },
282
+ "language_info": {
283
+ "codemirror_mode": {
284
+ "name": "ipython",
285
+ "version": 3
286
+ },
287
+ "file_extension": ".py",
288
+ "mimetype": "text/x-python",
289
+ "name": "python",
290
+ "nbconvert_exporter": "python",
291
+ "pygments_lexer": "ipython3",
292
+ "version": "3.12.13"
293
+ },
294
+ "memo": {
295
+ "description": "Find busy containers, deep ownership paths, and dominant semantic types.",
296
+ "starter": true
297
+ }
298
+ },
299
+ "nbformat": 4,
300
+ "nbformat_minor": 5
301
+ }
@@ -0,0 +1,229 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "memo-1",
6
+ "metadata": {},
7
+ "source": [
8
+ "# Model quality review\n",
9
+ "\n",
10
+ "Review diagnostics, unnamed elements, repeated names, and empty definitions.\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:50.589541Z",
22
+ "iopub.status.busy": "2026-07-29T22:31:50.589403Z",
23
+ "iopub.status.idle": "2026-07-29T22:31:50.863275Z",
24
+ "shell.execute_reply": "2026-07-29T22:31:50.862876Z"
25
+ }
26
+ },
27
+ "outputs": [
28
+ {
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:50.864878Z",
63
+ "iopub.status.busy": "2026-07-29T22:31:50.864782Z",
64
+ "iopub.status.idle": "2026-07-29T22:31:50.874497Z",
65
+ "shell.execute_reply": "2026-07-29T22:31:50.874144Z"
66
+ }
67
+ },
68
+ "outputs": [
69
+ {
70
+ "data": {
71
+ "text/plain": [
72
+ "{'parser/semantic errors': 8009,\n",
73
+ " 'warnings': 0,\n",
74
+ " 'unnamed usages or definitions': 5978,\n",
75
+ " 'repeated qualified names': 5,\n",
76
+ " 'definitions with no owned usages/definitions': 1}"
77
+ ]
78
+ },
79
+ "metadata": {},
80
+ "output_type": "display_data"
81
+ },
82
+ {
83
+ "name": "stdout",
84
+ "output_type": "stream",
85
+ "text": [
86
+ "Repeated qualified names (first 30)\n"
87
+ ]
88
+ },
89
+ {
90
+ "data": {
91
+ "text/plain": [
92
+ "[('sensorStatus', 2, ['ReferenceUsage']),\n",
93
+ " ('alarmSignal', 2, ['ReferenceUsage']),\n",
94
+ " ('authorizedBolus', 2, ['ReferenceUsage']),\n",
95
+ " ('flowCommand', 2, ['ReferenceUsage']),\n",
96
+ " ('actuation', 2, ['ReferenceUsage'])]"
97
+ ]
98
+ },
99
+ "metadata": {},
100
+ "output_type": "display_data"
101
+ },
102
+ {
103
+ "name": "stdout",
104
+ "output_type": "stream",
105
+ "text": [
106
+ "Empty definition candidates (first 30)\n"
107
+ ]
108
+ },
109
+ {
110
+ "data": {
111
+ "text/plain": [
112
+ "[('ConjugatedPortDefinition',\n",
113
+ " _syside.core.QualifiedName(['memo_examples_gpca_pump_model_catalog_gpca_interfaces', 'SensorInputPort', '~SensorInputPort']))]"
114
+ ]
115
+ },
116
+ "execution_count": 2,
117
+ "metadata": {},
118
+ "output_type": "execute_result"
119
+ }
120
+ ],
121
+ "source": [
122
+ "from IPython.display import display\n",
123
+ "\n",
124
+ "usages = list(model.elements(syside.Usage, include_subtypes=True))\n",
125
+ "definitions = list(model.elements(syside.Definition, include_subtypes=True))\n",
126
+ "semantic_elements = usages + definitions\n",
127
+ "\n",
128
+ "unnamed = [item for item in semantic_elements if not (item.name or item.declared_name)]\n",
129
+ "by_name = defaultdict(list)\n",
130
+ "for item in semantic_elements:\n",
131
+ " value = item.qualified_name or item.name or item.declared_name\n",
132
+ " name = str(value) if value else None\n",
133
+ " if name:\n",
134
+ " by_name[name].append(item)\n",
135
+ "duplicates = [(name, len(items), sorted({type(item).__name__ for item in items})) for name, items in by_name.items() if len(items) > 1]\n",
136
+ "empty_definitions = [\n",
137
+ " item for item in definitions\n",
138
+ " if not any(isinstance(child, (syside.Usage, syside.Definition)) for child in item.owned_elements)\n",
139
+ "]\n",
140
+ "\n",
141
+ "display({\n",
142
+ " 'parser/semantic errors': len(list(diagnostics.errors)),\n",
143
+ " 'warnings': len(list(diagnostics.warnings)),\n",
144
+ " 'unnamed usages or definitions': len(unnamed),\n",
145
+ " 'repeated qualified names': len(duplicates),\n",
146
+ " 'definitions with no owned usages/definitions': len(empty_definitions),\n",
147
+ "})\n",
148
+ "\n",
149
+ "print('Repeated qualified names (first 30)')\n",
150
+ "display(sorted(duplicates, key=lambda item: item[1], reverse=True)[:30])\n",
151
+ "\n",
152
+ "print('Empty definition candidates (first 30)')\n",
153
+ "[(type(item).__name__, item.qualified_name or item.name) for item in empty_definitions[:30]]"
154
+ ]
155
+ },
156
+ {
157
+ "cell_type": "code",
158
+ "execution_count": 3,
159
+ "id": "memo-4",
160
+ "metadata": {
161
+ "execution": {
162
+ "iopub.execute_input": "2026-07-29T22:31:50.875513Z",
163
+ "iopub.status.busy": "2026-07-29T22:31:50.875441Z",
164
+ "iopub.status.idle": "2026-07-29T22:31:50.877529Z",
165
+ "shell.execute_reply": "2026-07-29T22:31:50.877175Z"
166
+ }
167
+ },
168
+ "outputs": [
169
+ {
170
+ "name": "stdout",
171
+ "output_type": "stream",
172
+ "text": [
173
+ "First diagnostics to investigate\n",
174
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml:159:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
175
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_interfaces.sysml:19:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
176
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_interfaces.sysml:27:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
177
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_interfaces.sysml:35:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
178
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_interfaces.sysml:43:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
179
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_interfaces.sysml:51:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
180
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_interfaces.sysml:63:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
181
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_interfaces.sysml:75:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
182
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_interfaces.sysml:86:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
183
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_interfaces.sysml:96:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
184
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_interfaces.sysml:108:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
185
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_interfaces.sysml:118:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
186
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_interfaces.sysml:128:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
187
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_interfaces.sysml:138:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
188
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_interfaces.sysml:148:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
189
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_operational.sysml:180:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
190
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_operational.sysml:181:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
191
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_operational.sysml:182:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
192
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_trace.sysml:54:5: error (connector-related-features): A concrete connector must have at least two related elements\n",
193
+ "/Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model/catalog/gpca_trace.sysml:77:5: error (connector-related-features): A concrete connector must have at least two related elements\n"
194
+ ]
195
+ }
196
+ ],
197
+ "source": [
198
+ "print('First diagnostics to investigate')\n",
199
+ "for diagnostic in list(diagnostics.errors)[:20] + list(diagnostics.warnings)[:20]:\n",
200
+ " print(diagnostic)"
201
+ ]
202
+ }
203
+ ],
204
+ "metadata": {
205
+ "kernelspec": {
206
+ "display_name": "Python 3 (ipykernel)",
207
+ "language": "python",
208
+ "name": "python3"
209
+ },
210
+ "language_info": {
211
+ "codemirror_mode": {
212
+ "name": "ipython",
213
+ "version": 3
214
+ },
215
+ "file_extension": ".py",
216
+ "mimetype": "text/x-python",
217
+ "name": "python",
218
+ "nbconvert_exporter": "python",
219
+ "pygments_lexer": "ipython3",
220
+ "version": "3.12.13"
221
+ },
222
+ "memo": {
223
+ "description": "Review diagnostics, unnamed elements, repeated names, and empty definitions.",
224
+ "starter": true
225
+ }
226
+ },
227
+ "nbformat": 4,
228
+ "nbformat_minor": 5
229
+ }