lutaml 0.10.19 → 0.11.2

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 (662) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yml +8 -1
  3. data/CLAUDE.md +26 -19
  4. data/Gemfile +14 -10
  5. data/Rakefile +6 -4
  6. data/lib/lutaml/version.rb +1 -1
  7. data/lib/lutaml.rb +3 -9
  8. data/lutaml.gemspec +2 -18
  9. metadata +5 -892
  10. data/Makefile +0 -2
  11. data/config/diagram_styles.yml +0 -200
  12. data/config/model_transformations.yml +0 -266
  13. data/config/package_metadata.example.yml +0 -58
  14. data/config/qea_schema.yml +0 -1024
  15. data/config/static_site.yml +0 -166
  16. data/examples/UML_EA.DTD +0 -6856
  17. data/examples/lur/20251010_current_plateau_v5.1.lur +0 -0
  18. data/examples/lur/basic.lur +0 -0
  19. data/examples/lur/test-output.lur +0 -0
  20. data/examples/lur/test.lur +0 -0
  21. data/examples/lur_basic_usage.rb +0 -220
  22. data/examples/lur_cli_workflow.rb +0 -262
  23. data/examples/lur_statistics.rb +0 -325
  24. data/examples/qea/20251010_current_plateau_v5.1.qea +0 -0
  25. data/examples/qea/ArcGISWorkspace_template.qea +0 -0
  26. data/examples/qea/README_qea_parser.adoc +0 -230
  27. data/examples/qea/UmlModel_template.qea +0 -0
  28. data/examples/qea/basic.qea +0 -0
  29. data/examples/qea/simple.qea +0 -0
  30. data/examples/qea/simple_example.qea +0 -0
  31. data/examples/qea/test.qea +0 -0
  32. data/examples/xmi/20251010_current_plateau_v5.1.xmi +0 -118121
  33. data/examples/xmi/ArcGISWorkspace_template.xmi +0 -1467
  34. data/examples/xmi/Images/EAID_0016F797_D055_4717_AF1A_606413D0A166.svg +0 -158
  35. data/examples/xmi/Images/EAID_00C5C772_5A03_434f_BF30_AC37542A1AAC.svg +0 -659
  36. data/examples/xmi/Images/EAID_0114FD24_9E58_4664_98CD_71305B59AD11.svg +0 -411
  37. data/examples/xmi/Images/EAID_01661E1B_31B6_4167_BCCF_A00678FB4EA2.svg +0 -102
  38. data/examples/xmi/Images/EAID_039FE004_5408_4fc0_89AA_EB319E4F61C7.svg +0 -169
  39. data/examples/xmi/Images/EAID_04EE9625_17A0_4721_BC71_21756DB21D06.svg +0 -403
  40. data/examples/xmi/Images/EAID_05FF9417_1619_4170_B0C9_55AA6B988EF1.svg +0 -175
  41. data/examples/xmi/Images/EAID_09853FB2_AF8A_432f_94C5_6C47461BD937.svg +0 -360
  42. data/examples/xmi/Images/EAID_09927B7F_A657_4819_99E5_AC9DC99227D9.svg +0 -195
  43. data/examples/xmi/Images/EAID_09AF6B8A_557C_43bc_BBB0_47C1E9401EF3.svg +0 -218
  44. data/examples/xmi/Images/EAID_0BE81AC5_031B_4973_A9A0_223CCD92BAA1.svg +0 -471
  45. data/examples/xmi/Images/EAID_0EDEA6EF_4DC8_4979_BB80_28B1B9EBD1D4.svg +0 -56
  46. data/examples/xmi/Images/EAID_0F413534_6AD2_48bc_B4AF_8699D530D91D.svg +0 -262
  47. data/examples/xmi/Images/EAID_1321F39B_AD67_47b5_B5C3_3A42BBFCBDF9.svg +0 -286
  48. data/examples/xmi/Images/EAID_13E09C71_99E7_40b4_B72D_48AF6379BC2E.svg +0 -164
  49. data/examples/xmi/Images/EAID_144955D8_CB4E_4b59_BB0C_E549F7F84943.svg +0 -66
  50. data/examples/xmi/Images/EAID_14E9F5FD_F6CD_4f48_B1CD_F5A40C6D8E83.svg +0 -95
  51. data/examples/xmi/Images/EAID_157826AA_96A7_4278_89A6_94BD0F31409A.svg +0 -63
  52. data/examples/xmi/Images/EAID_159E9DA0_7A54_4817_B72A_401C750F675D.svg +0 -306
  53. data/examples/xmi/Images/EAID_17BC8309_8051_492b_BE87_61CCFE83DB16.svg +0 -45
  54. data/examples/xmi/Images/EAID_1A10EB6D_E2E5_42a6_A31E_B293D93FD07E.svg +0 -193
  55. data/examples/xmi/Images/EAID_1A290AFD_CE96_46a2_8351_A986D77CC727.svg +0 -444
  56. data/examples/xmi/Images/EAID_1B2D9309_C66B_492a_995C_95B2B02E0D7C.svg +0 -168
  57. data/examples/xmi/Images/EAID_1DE6B973_CE8A_416f_909B_54CEA1E5944E.svg +0 -10
  58. data/examples/xmi/Images/EAID_204F4ACC_2230_4c8d_9861_EF5A6844B712.svg +0 -60
  59. data/examples/xmi/Images/EAID_227300E2_4F4B_4955_83B9_FA626CE8680B.svg +0 -188
  60. data/examples/xmi/Images/EAID_22C24D4C_4894_480a_B113_0CB034CB59E9.svg +0 -426
  61. data/examples/xmi/Images/EAID_234BC4F5_8100_4969_BDCB_A24E0E641F23.svg +0 -169
  62. data/examples/xmi/Images/EAID_24446BFC_9FEB_4935_8970_65A4C562A93F.svg +0 -277
  63. data/examples/xmi/Images/EAID_24E8A45C_C99F_49b7_860A_9CF65FF76C76.svg +0 -575
  64. data/examples/xmi/Images/EAID_272F3181_4300_48b7_98A0_A8CFD12B1A72.svg +0 -255
  65. data/examples/xmi/Images/EAID_292E0D94_392C_4da6_A0B5_841501FAE50A.svg +0 -183
  66. data/examples/xmi/Images/EAID_29DD0967_ADAB_4abb_99C5_544821F5E7DA.svg +0 -10
  67. data/examples/xmi/Images/EAID_2A339928_E5EF_4ed2_9E5D_CC2CA5CF248B.svg +0 -310
  68. data/examples/xmi/Images/EAID_2A5E0832_06BE_4381_85D4_9B00E4F95575.svg +0 -155
  69. data/examples/xmi/Images/EAID_2AAB709F_EFCE_496f_8AFE_92809D66A0A9.svg +0 -81
  70. data/examples/xmi/Images/EAID_2C8DD882_8DEA_4065_89F8_DDA796AA0C85.svg +0 -520
  71. data/examples/xmi/Images/EAID_2E98EA19_37D8_4b70_BDCE_CFEE4FA800B0.svg +0 -173
  72. data/examples/xmi/Images/EAID_30D62231_110F_44e8_9C06_6FCDCBA53A09.svg +0 -722
  73. data/examples/xmi/Images/EAID_3206D3FD_1FC4_41c7_8D00_36DB908E9319.svg +0 -181
  74. data/examples/xmi/Images/EAID_3452CC53_9ACB_44eb_9C9D_B90CF862F284.svg +0 -92
  75. data/examples/xmi/Images/EAID_348EE46E_ABD9_40b0_82A1_0285E75BDC52.svg +0 -187
  76. data/examples/xmi/Images/EAID_34FF671B_CFDC_47ad_91DF_ECA6D8358180.svg +0 -217
  77. data/examples/xmi/Images/EAID_359DD694_0100_4bdf_AD5F_712D97E9C69B.svg +0 -157
  78. data/examples/xmi/Images/EAID_35DE714C_49A8_490e_913A_56F39EF317F9.svg +0 -180
  79. data/examples/xmi/Images/EAID_360C79F1_8EDF_41db_A069_DECDC55625BC.svg +0 -31
  80. data/examples/xmi/Images/EAID_36913C58_FF35_4ba2_A04B_9A4824E24609.svg +0 -166
  81. data/examples/xmi/Images/EAID_372F7F7B_57ED_469a_A640_70DB578B3C56.svg +0 -361
  82. data/examples/xmi/Images/EAID_37AC19B9_8433_4fee_A326_763170D54D06.svg +0 -32
  83. data/examples/xmi/Images/EAID_38170608_32B5_4a6f_A68D_A0D7C0C9D019.svg +0 -234
  84. data/examples/xmi/Images/EAID_3A77A5D0_4E1B_4116_8AAD_407FC422B47F.svg +0 -183
  85. data/examples/xmi/Images/EAID_3B8BD087_1683_46b1_8D0D_6F839C46C578.svg +0 -42
  86. data/examples/xmi/Images/EAID_3DC20801_AE8B_4e76_B08C_F574E8A90E13.svg +0 -192
  87. data/examples/xmi/Images/EAID_3DE28C70_C6D4_406c_B49F_EEF52148C8C1.svg +0 -124
  88. data/examples/xmi/Images/EAID_458E093C_BA2B_4292_BEC4_37511C163DDC.svg +0 -140
  89. data/examples/xmi/Images/EAID_45F9B1F7_E568_47c9_B229_953BC2E707E4.svg +0 -266
  90. data/examples/xmi/Images/EAID_46B3041A_8C23_46e6_8E14_ADE7012274C5.svg +0 -80
  91. data/examples/xmi/Images/EAID_47E4600F_CEC9_4245_9BF5_EE38007A9DDB.svg +0 -584
  92. data/examples/xmi/Images/EAID_4881CEEE_792C_4cb0_BEA7_54333B643D0A.svg +0 -155
  93. data/examples/xmi/Images/EAID_48D364F0_DCA4_41e8_B4D4_509B3023B969.svg +0 -17
  94. data/examples/xmi/Images/EAID_4DBDAB9E_4C1C_4cb1_A767_06BD743A50A7.svg +0 -78
  95. data/examples/xmi/Images/EAID_4EB75007_B31D_4f2c_8855_7E9D3A3B17F4.svg +0 -454
  96. data/examples/xmi/Images/EAID_4F421236_FCF3_4aae_B22A_C7E6A5EFBAC7.svg +0 -81
  97. data/examples/xmi/Images/EAID_4FC1D352_2102_4b73_BCB0_1410B29C6BD7.svg +0 -379
  98. data/examples/xmi/Images/EAID_4FE346EA_01E1_4b30_8BE6_BB32EA191E47.svg +0 -126
  99. data/examples/xmi/Images/EAID_5038EEE3_7DD0_4cca_9829_364E044D37E8.svg +0 -199
  100. data/examples/xmi/Images/EAID_508A37DC_9378_4f5a_BD96_48F4D24E03A5.svg +0 -162
  101. data/examples/xmi/Images/EAID_516DA1A2_F0EC_415c_9664_E4CA54E7F05C.svg +0 -136
  102. data/examples/xmi/Images/EAID_52A1DBD3_D3DA_4b6d_8F96_FC6F39F64242.svg +0 -161
  103. data/examples/xmi/Images/EAID_575E87BA_32E9_4a84_AA4E_0EFDFC5D4C07.svg +0 -71
  104. data/examples/xmi/Images/EAID_57E0F1A0_6C72_47ef_B922_B806F9A875E8.svg +0 -209
  105. data/examples/xmi/Images/EAID_5957C373_3FC1_482f_8F35_D809153A17F5.svg +0 -123
  106. data/examples/xmi/Images/EAID_59A66AE2_412C_48a6_BFC7_EA56CF11D269.svg +0 -218
  107. data/examples/xmi/Images/EAID_5A43833E_680B_4a90_8931_0C902304E029.svg +0 -236
  108. data/examples/xmi/Images/EAID_5D6DB5A0_5047_4bac_9E60_69904A60B56D.svg +0 -353
  109. data/examples/xmi/Images/EAID_5DA1E7A7_8E59_4803_A831_E9F3EC27328F.svg +0 -242
  110. data/examples/xmi/Images/EAID_5E2C1E2A_82A8_47f4_B2ED_1398D72BFCFD.svg +0 -246
  111. data/examples/xmi/Images/EAID_6052620C_4BD5_49f6_A21C_AD7E6DCA2795.svg +0 -290
  112. data/examples/xmi/Images/EAID_6481E2CC_35A6_43b0_88D4_10A667A2BC2D.svg +0 -60
  113. data/examples/xmi/Images/EAID_660C7D03_A26C_4977_A7BA_9D0A773DA811.svg +0 -318
  114. data/examples/xmi/Images/EAID_671F3C3D_35B6_4514_B5B6_DD7E84925493.svg +0 -24
  115. data/examples/xmi/Images/EAID_676B9C9A_D85F_4d2f_A46B_73F02090DC87.svg +0 -127
  116. data/examples/xmi/Images/EAID_6797FEFA_5801_48e4_8B9C_3C824C0E165D.svg +0 -412
  117. data/examples/xmi/Images/EAID_6807F4EE_18EF_4e7e_ACCF_D5BD323AFDE9.svg +0 -130
  118. data/examples/xmi/Images/EAID_69E81E34_CF28_4c7f_A48F_5941BA85CEE3.svg +0 -96
  119. data/examples/xmi/Images/EAID_6A3C55E8_3C3C_4f3a_8AAC_0299C5B23070.svg +0 -10
  120. data/examples/xmi/Images/EAID_6BAC333E_E2C2_42c7_8DDF_6B4FA0FFC03B.svg +0 -143
  121. data/examples/xmi/Images/EAID_6D0349D5_3F1B_4b28_82D2_910743DEB5E5.svg +0 -114
  122. data/examples/xmi/Images/EAID_6E95B74E_8A09_4698_9E9E_23BCFD2CE194.svg +0 -37
  123. data/examples/xmi/Images/EAID_70C77F92_5614_4b22_8C8E_67859F59D8FD.svg +0 -254
  124. data/examples/xmi/Images/EAID_71F9216B_E7A7_4083_B08E_6C71B57F3A1F.svg +0 -187
  125. data/examples/xmi/Images/EAID_73025C5A_08FC_47ff_AB2F_C7F79CF54B41.svg +0 -145
  126. data/examples/xmi/Images/EAID_74C974B6_6D07_425d_B7AC_C8899E3B4967.svg +0 -76
  127. data/examples/xmi/Images/EAID_7504FCD2_524C_4e7d_BAE4_4E58A8A8A12C.svg +0 -196
  128. data/examples/xmi/Images/EAID_78030266_3603_4747_9D75_03D16614BE7D.svg +0 -35
  129. data/examples/xmi/Images/EAID_785226C1_12B1_4104_A4C1_F19B70B9FB71.svg +0 -348
  130. data/examples/xmi/Images/EAID_7854470F_26B8_4d3c_AFDF_C05BCE6ED0CD.svg +0 -72
  131. data/examples/xmi/Images/EAID_794F4A8F_18CA_4e9f_8477_A6F0E5ED22D4.svg +0 -187
  132. data/examples/xmi/Images/EAID_7A24839E_C8AE_424d_B7D2_6DA16DC813E7.svg +0 -114
  133. data/examples/xmi/Images/EAID_7A3649FD_E960_4ae6_B9B1_A9001C066AE7.svg +0 -181
  134. data/examples/xmi/Images/EAID_7B2C6765_AB68_439a_87F3_DAC323CB2AF5.svg +0 -196
  135. data/examples/xmi/Images/EAID_7C44AC09_27C1_47b3_9A85_88EC71C081FF.svg +0 -55
  136. data/examples/xmi/Images/EAID_7CE102CA_97C1_4cac_BD3B_0500D3712D2A.svg +0 -195
  137. data/examples/xmi/Images/EAID_7D960BD8_65D8_4934_9C11_4EF860DD8FBA.svg +0 -90
  138. data/examples/xmi/Images/EAID_80939C98_A456_48c3_BCEA_4B72851F2DF6.svg +0 -174
  139. data/examples/xmi/Images/EAID_812FE862_76ED_44f0_B678_7A4601B395CF.svg +0 -142
  140. data/examples/xmi/Images/EAID_81B76F5B_9D64_4bbf_8AC8_34234FB87533.svg +0 -740
  141. data/examples/xmi/Images/EAID_84352F1A_195B_411b_9552_5BFC40BF90B5.svg +0 -105
  142. data/examples/xmi/Images/EAID_846DD800_139C_4d47_A1DF_3FB1AC5D130F.svg +0 -554
  143. data/examples/xmi/Images/EAID_84A9C65B_FD6D_4bb5_818F_E8C35FF5BCD1.svg +0 -228
  144. data/examples/xmi/Images/EAID_853674F5_7DC9_4aae_809B_5728098B5D5B.svg +0 -154
  145. data/examples/xmi/Images/EAID_860CBBFB_2F27_408f_9144_751F9D1F487F.svg +0 -273
  146. data/examples/xmi/Images/EAID_87476527_7B9B_4b92_967E_3D38365470CA.svg +0 -239
  147. data/examples/xmi/Images/EAID_87DAE930_5069_4c58_AC65_4B0B2C0F32C8.svg +0 -10
  148. data/examples/xmi/Images/EAID_88AF6BD7_BC34_406f_BB59_47CFAB4A7D5D.svg +0 -116
  149. data/examples/xmi/Images/EAID_88D0CB44_20D0_44fc_A6E3_B663332EF401.svg +0 -200
  150. data/examples/xmi/Images/EAID_8BB1CA0C_C003_4678_973B_A1C3308E021D.svg +0 -136
  151. data/examples/xmi/Images/EAID_8DAB169F_D189_4320_A0F5_4443E3297F0E.svg +0 -181
  152. data/examples/xmi/Images/EAID_8FD488EF_BAAB_40ec_A7ED_F7CC831D546E.svg +0 -324
  153. data/examples/xmi/Images/EAID_90BCA409_BB45_42c5_AFA5_45FE3D995904.svg +0 -342
  154. data/examples/xmi/Images/EAID_926AFE38_01FA_469e_B6AA_ED5F4D62B66F.svg +0 -105
  155. data/examples/xmi/Images/EAID_92AB0FD0_B0FB_4ceb_8EAE_66B6600D31D7.svg +0 -681
  156. data/examples/xmi/Images/EAID_92C43670_3057_47f1_A576_C60843FF3D26.svg +0 -136
  157. data/examples/xmi/Images/EAID_93F63576_BE01_4cd8_8A91_C674FF77FC3D.svg +0 -718
  158. data/examples/xmi/Images/EAID_9400D9BC_05A5_41fc_83F7_02E5C67F9718.svg +0 -487
  159. data/examples/xmi/Images/EAID_95246DCF_1C09_4a16_9512_98000F56B3D8.svg +0 -292
  160. data/examples/xmi/Images/EAID_9994BF62_51E2_42cd_BB35_16C537B6718A.svg +0 -715
  161. data/examples/xmi/Images/EAID_9AAD6C21_B1E7_4472_B64A_FB5E3569D970.svg +0 -116
  162. data/examples/xmi/Images/EAID_9BD7189A_877B_4ca9_B42C_817DEF144FB2.svg +0 -284
  163. data/examples/xmi/Images/EAID_9DA6C553_94FC_4204_83AD_ECC4B45A53EF.svg +0 -159
  164. data/examples/xmi/Images/EAID_9EE6A41B_5FAA_4c89_B98F_732059778630.svg +0 -10
  165. data/examples/xmi/Images/EAID_9F1A4B54_46F6_435c_9529_E43E54CF6050.svg +0 -172
  166. data/examples/xmi/Images/EAID_9FE1EA7B_4CEF_4976_A281_93A94315BD84.svg +0 -153
  167. data/examples/xmi/Images/EAID_A0695647_6172_4262_8C30_67441399609C.svg +0 -290
  168. data/examples/xmi/Images/EAID_A081C63E_D6F2_41a7_A99C_307836754AFA.svg +0 -149
  169. data/examples/xmi/Images/EAID_A24E2778_5AD9_44f2_AB8F_5CD3913477D6.svg +0 -194
  170. data/examples/xmi/Images/EAID_A264F089_F9B3_406c_A3A8_FF34903797D3.svg +0 -143
  171. data/examples/xmi/Images/EAID_A282E5D1_2A13_4e7f_BC76_5D086DD4A577.svg +0 -357
  172. data/examples/xmi/Images/EAID_A3BCE1D6_9DB5_4272_A020_4C0E194B99CC.svg +0 -171
  173. data/examples/xmi/Images/EAID_A56E3818_D1B8_4b63_B69E_FBAC4A8AF482.svg +0 -218
  174. data/examples/xmi/Images/EAID_A57215D5_75C5_4532_BCF4_264A77CD62F1.svg +0 -204
  175. data/examples/xmi/Images/EAID_A59065AF_9669_486c_9582_9693177CFC7F.svg +0 -263
  176. data/examples/xmi/Images/EAID_A759374D_589A_488c_99EF_537ACB9B1FF9.svg +0 -398
  177. data/examples/xmi/Images/EAID_A7B25F46_F18A_4373_B16D_8C6AC0B868B0.svg +0 -174
  178. data/examples/xmi/Images/EAID_A9FE9E6F_A5F4_47e5_A6BA_26E22C7346B6.svg +0 -310
  179. data/examples/xmi/Images/EAID_AA62CDEB_55EC_498d_B326_4AA2C9AF6A05.svg +0 -144
  180. data/examples/xmi/Images/EAID_AAF52AF6_F7F9_4005_AE46_8920847BEA03.svg +0 -144
  181. data/examples/xmi/Images/EAID_AB281AC1_7CB8_404a_8124_34343DDD84E2.svg +0 -198
  182. data/examples/xmi/Images/EAID_AB7F1FDF_A66B_42a1_B8A3_7F594BAAD508.svg +0 -143
  183. data/examples/xmi/Images/EAID_AC2191E3_76E3_40b2_9E21_0E0B9B5277D2.svg +0 -114
  184. data/examples/xmi/Images/EAID_AD451676_A7C8_4c6a_A925_A9B9CA344142.svg +0 -339
  185. data/examples/xmi/Images/EAID_ADBA40A1_9375_4c1b_9938_0990612EB615.svg +0 -429
  186. data/examples/xmi/Images/EAID_ADC8773C_1B27_48ac_BAC1_14C1C919FAF6.svg +0 -245
  187. data/examples/xmi/Images/EAID_AE0718DF_AF69_4ea1_A099_E20028FE40A1.svg +0 -173
  188. data/examples/xmi/Images/EAID_B0DDB85D_A00C_4a7f_8C06_CCA15E5E4FE5.svg +0 -31
  189. data/examples/xmi/Images/EAID_B27ED282_D5E5_4f33_8AC1_62802F9E0B35.svg +0 -256
  190. data/examples/xmi/Images/EAID_B3AFECCB_17DD_44d6_8A44_2C38D9A64C0B.svg +0 -95
  191. data/examples/xmi/Images/EAID_B3B6C5B1_278E_4714_8244_B6C28B66AB50.svg +0 -176
  192. data/examples/xmi/Images/EAID_B53E76CD_A0F2_4e2f_B3AB_796D85964EF2.svg +0 -179
  193. data/examples/xmi/Images/EAID_B55D6E67_0BDD_4163_B359_11A6FBA89C74.svg +0 -207
  194. data/examples/xmi/Images/EAID_B58D1A53_E860_41a3_8352_11C274093E83.svg +0 -189
  195. data/examples/xmi/Images/EAID_B62C02B3_69DB_49e9_8089_4EE398BDE666.svg +0 -165
  196. data/examples/xmi/Images/EAID_BC008774_B539_4150_8174_B675989053D0.svg +0 -22
  197. data/examples/xmi/Images/EAID_BC1F7E00_082D_4a26_922B_3967A8D66859.svg +0 -266
  198. data/examples/xmi/Images/EAID_BDA613D8_402A_475a_AA15_683D88FD3D23.svg +0 -183
  199. data/examples/xmi/Images/EAID_C028B286_4C85_47d8_B6D5_80B28F556E82.svg +0 -303
  200. data/examples/xmi/Images/EAID_C173A6F4_1D1B_400e_AD8C_64FFF7CD5BE5.svg +0 -178
  201. data/examples/xmi/Images/EAID_C1834072_CADC_4ce4_B0FC_8284AE5CF4A4.svg +0 -158
  202. data/examples/xmi/Images/EAID_C1EC985B_5CBD_4e91_8661_EB4EF23781D9.svg +0 -286
  203. data/examples/xmi/Images/EAID_C31C1314_B679_4413_B8FE_A2CD584FC128.svg +0 -305
  204. data/examples/xmi/Images/EAID_C37CFBD6_69BA_42fb_9AC7_2D329D931BCF.svg +0 -171
  205. data/examples/xmi/Images/EAID_C857C934_306F_463a_87D5_257CB225ECFE.svg +0 -174
  206. data/examples/xmi/Images/EAID_C96797DE_2238_42d3_896A_9F92500270ED.svg +0 -180
  207. data/examples/xmi/Images/EAID_C96CBC24_B20E_459a_8F9D_75B61CDCB89F.svg +0 -656
  208. data/examples/xmi/Images/EAID_CACB523D_56A5_4f05_B3C2_51BB18F380FD.svg +0 -158
  209. data/examples/xmi/Images/EAID_CB34B578_101B_48b4_9271_214FFEA6A83A.svg +0 -409
  210. data/examples/xmi/Images/EAID_CBBD6CF4_0A1E_4406_9930_89DE43527910.svg +0 -361
  211. data/examples/xmi/Images/EAID_CC06A828_3750_472f_8DB2_C2E0863FCE17.svg +0 -96
  212. data/examples/xmi/Images/EAID_CD5CF053_1772_4a0f_962D_B17054D8EEAA.svg +0 -173
  213. data/examples/xmi/Images/EAID_CE440B5A_9534_4c75_9BA5_50862BB396C2.svg +0 -97
  214. data/examples/xmi/Images/EAID_CE4734FC_7986_4b3a_807F_A5B2C7EDE9E4.svg +0 -193
  215. data/examples/xmi/Images/EAID_D14AA320_9D41_4366_8739_9C2C21F96AE1.svg +0 -32
  216. data/examples/xmi/Images/EAID_D2FA55D3_C733_4a4d_92D0_0BC7AC0BB5BC.svg +0 -108
  217. data/examples/xmi/Images/EAID_D351FC34_FB03_488d_ADA4_BDB93DA9CB02.svg +0 -49
  218. data/examples/xmi/Images/EAID_D368FDF3_BDC5_4718_A701_351C8587A376.svg +0 -592
  219. data/examples/xmi/Images/EAID_D4DA8C48_3998_450d_87C4_9D65C9FECDB4.svg +0 -42
  220. data/examples/xmi/Images/EAID_D5464ECF_290E_4b2b_A6C4_25BE80F886CB.svg +0 -76
  221. data/examples/xmi/Images/EAID_D55235B0_61E9_461a_8379_2B8BF2403BE2.svg +0 -147
  222. data/examples/xmi/Images/EAID_D555ED73_F010_45d7_8A53_45A33C64C249.svg +0 -318
  223. data/examples/xmi/Images/EAID_D7AAC526_267E_45a0_A853_3207F02363F8.svg +0 -45
  224. data/examples/xmi/Images/EAID_D998B20D_A875_4ef8_A9CE_996BE56602BD.svg +0 -158
  225. data/examples/xmi/Images/EAID_DBFA8B39_F5B7_4c0e_9552_19AEAE5BA64E.svg +0 -200
  226. data/examples/xmi/Images/EAID_DE47A47D_E7BE_4e6f_BA81_F789EE8CFE72.svg +0 -61
  227. data/examples/xmi/Images/EAID_DFBB1072_8EC5_4384_8241_7EDF4B6B888B.svg +0 -78
  228. data/examples/xmi/Images/EAID_E325B9D8_E955_4aed_8125_63167BD40320.svg +0 -67
  229. data/examples/xmi/Images/EAID_E32D9D02_CAE9_4a47_92A8_3290EDCD6E6D.svg +0 -79
  230. data/examples/xmi/Images/EAID_E3B28611_7857_458a_B0BC_736E777B88EC.svg +0 -194
  231. data/examples/xmi/Images/EAID_E43C37EC_1176_4d2e_8B98_B6F3DFF6A092.svg +0 -96
  232. data/examples/xmi/Images/EAID_E591C1CF_7F35_4160_8A72_DFA097AD5811.svg +0 -271
  233. data/examples/xmi/Images/EAID_E77C66A2_2E94_4196_BFC6_662FE5AEEB6F.svg +0 -332
  234. data/examples/xmi/Images/EAID_E7AABA98_2450_4986_9736_DCCAF0108C50.svg +0 -639
  235. data/examples/xmi/Images/EAID_E7D9A2C4_72D6_40b9_8EB8_6B35476246B3.svg +0 -134
  236. data/examples/xmi/Images/EAID_E9CDAD85_ECF1_43de_819F_30A0D01785E6.svg +0 -193
  237. data/examples/xmi/Images/EAID_EC8AF507_F441_4e8a_B8A7_C1690F3C7D0B.svg +0 -58
  238. data/examples/xmi/Images/EAID_ED501058_D540_47ac_8EBC_5921E8C0BF57.svg +0 -384
  239. data/examples/xmi/Images/EAID_EFBF5F0F_DF74_4944_8791_114F5637C335.svg +0 -590
  240. data/examples/xmi/Images/EAID_EFFFA027_2A1F_425c_8437_BF89AADC8893.svg +0 -365
  241. data/examples/xmi/Images/EAID_F07E7718_B2C2_4a65_B5DD_477CB73E971E.svg +0 -165
  242. data/examples/xmi/Images/EAID_F0F20BDF_C729_47f7_B6FC_25ED2C4609CA.svg +0 -61
  243. data/examples/xmi/Images/EAID_F32E5AFE_8605_4c77_AE69_D0D0A6E380AC.svg +0 -76
  244. data/examples/xmi/Images/EAID_F3F00F45_CD37_46fd_B521_D1040EB2FB16.svg +0 -123
  245. data/examples/xmi/Images/EAID_F46E8F19_D8F1_4a3d_B87B_B0BAB4F50F50.svg +0 -202
  246. data/examples/xmi/Images/EAID_F48E5F6E_2411_4635_9315_3EAA4CFA29F7.svg +0 -351
  247. data/examples/xmi/Images/EAID_F4C23F9E_DD74_4fed_B75D_AD3C6448BA24.svg +0 -189
  248. data/examples/xmi/Images/EAID_F853B3C4_B145_4ef0_B261_C3CC0475B6D2.svg +0 -215
  249. data/examples/xmi/Images/EAID_F8BE68CA_1F8F_47e5_9454_01A2EB7D388A.svg +0 -124
  250. data/examples/xmi/Images/EAID_F92A6A28_612E_468e_9E39_D7AE7D24E24D.svg +0 -208
  251. data/examples/xmi/Images/EAID_F995FA49_B86E_4c94_BE5E_C928FB6B87D0.svg +0 -302
  252. data/examples/xmi/Images/EAID_FEAE013A_A4E4_4283_A491_1FEB8D0EBA28.svg +0 -524
  253. data/examples/xmi/Images/EAID_FEBE5726_3751_470b_9023_8C569202E97E.svg +0 -730
  254. data/examples/xmi/UML_EA.DTD +0 -6856
  255. data/examples/xmi/UmlModel_template.xmi +0 -23
  256. data/examples/xmi/basic.xmi +0 -9086
  257. data/examples/xmi/simple.xmi +0 -655
  258. data/examples/xmi/simple_example.xmi +0 -23
  259. data/examples/xmi/test.xmi +0 -1703
  260. data/exe/lutaml +0 -11
  261. data/exe/lutaml-sysml +0 -22
  262. data/exe/lutaml-wsd2uml +0 -63
  263. data/exe/lutaml-yaml2uml +0 -146
  264. data/frontend/dist/app.iife.js +0 -24
  265. data/frontend/dist/style.css +0 -1
  266. data/frontend/index.html +0 -26
  267. data/frontend/package-lock.json +0 -2805
  268. data/frontend/package.json +0 -26
  269. data/frontend/src/App.vue +0 -59
  270. data/frontend/src/app.ts +0 -8
  271. data/frontend/src/components/AppHeader.vue +0 -127
  272. data/frontend/src/components/AppSidebar.vue +0 -119
  273. data/frontend/src/components/ClassDetails.vue +0 -247
  274. data/frontend/src/components/DiagramView.vue +0 -79
  275. data/frontend/src/components/PackageDetails.vue +0 -92
  276. data/frontend/src/components/PackageTreeNode.vue +0 -64
  277. data/frontend/src/components/SearchResults.vue +0 -48
  278. data/frontend/src/components/WelcomeView.vue +0 -66
  279. data/frontend/src/shims-vue.d.ts +0 -5
  280. data/frontend/src/stores/dataStore.ts +0 -79
  281. data/frontend/src/stores/uiStore.ts +0 -167
  282. data/frontend/src/styles/main.css +0 -1566
  283. data/frontend/src/types.ts +0 -221
  284. data/frontend/tests/e2e/__screenshots__/new-dark-mode.png +0 -0
  285. data/frontend/tests/e2e/__screenshots__/new-package-details.png +0 -0
  286. data/frontend/tests/e2e/__screenshots__/new-search-modal.png +0 -0
  287. data/frontend/tests/e2e/__screenshots__/new-sidebar-collapsed.png +0 -0
  288. data/frontend/tests/e2e/__screenshots__/new-welcome.png +0 -0
  289. data/frontend/tests/e2e/render.spec.ts +0 -188
  290. data/frontend/tsconfig.json +0 -20
  291. data/frontend/vite.config.ts +0 -26
  292. data/frontend/vitest.config.ts +0 -8
  293. data/lib/lutaml/cli/element_identifier.rb +0 -160
  294. data/lib/lutaml/cli/enhanced_formatter.rb +0 -494
  295. data/lib/lutaml/cli/interactive_shell/bookmark_commands.rb +0 -85
  296. data/lib/lutaml/cli/interactive_shell/command_base.rb +0 -32
  297. data/lib/lutaml/cli/interactive_shell/export_handler.rb +0 -73
  298. data/lib/lutaml/cli/interactive_shell/help_display.rb +0 -107
  299. data/lib/lutaml/cli/interactive_shell/navigation_commands.rb +0 -151
  300. data/lib/lutaml/cli/interactive_shell/query_commands.rb +0 -208
  301. data/lib/lutaml/cli/interactive_shell.rb +0 -254
  302. data/lib/lutaml/cli/lml_commands.rb +0 -205
  303. data/lib/lutaml/cli/output_formatter.rb +0 -348
  304. data/lib/lutaml/cli/resource_registry.rb +0 -127
  305. data/lib/lutaml/cli/tree_view_formatter.rb +0 -312
  306. data/lib/lutaml/cli/uml/build_command.rb +0 -487
  307. data/lib/lutaml/cli/uml/diagram_command.rb +0 -415
  308. data/lib/lutaml/cli/uml/export_command.rb +0 -77
  309. data/lib/lutaml/cli/uml/find_command.rb +0 -119
  310. data/lib/lutaml/cli/uml/info_command.rb +0 -103
  311. data/lib/lutaml/cli/uml/inspect_command.rb +0 -85
  312. data/lib/lutaml/cli/uml/ls_command.rb +0 -102
  313. data/lib/lutaml/cli/uml/repl_command.rb +0 -49
  314. data/lib/lutaml/cli/uml/search_command.rb +0 -85
  315. data/lib/lutaml/cli/uml/serve_command.rb +0 -58
  316. data/lib/lutaml/cli/uml/shared_helpers.rb +0 -49
  317. data/lib/lutaml/cli/uml/spa_command.rb +0 -223
  318. data/lib/lutaml/cli/uml/stats_command.rb +0 -57
  319. data/lib/lutaml/cli/uml/tree_command.rb +0 -82
  320. data/lib/lutaml/cli/uml/validate_command.rb +0 -190
  321. data/lib/lutaml/cli/uml/verify_command.rb +0 -103
  322. data/lib/lutaml/cli/uml.rb +0 -24
  323. data/lib/lutaml/cli/uml_commands.rb +0 -145
  324. data/lib/lutaml/cli.rb +0 -84
  325. data/lib/lutaml/converter/dsl_to_uml.rb +0 -237
  326. data/lib/lutaml/converter/xmi_to_uml.rb +0 -329
  327. data/lib/lutaml/converter/xmi_to_uml_generalization.rb +0 -193
  328. data/lib/lutaml/converter.rb +0 -10
  329. data/lib/lutaml/ea/diagram/configuration.rb +0 -379
  330. data/lib/lutaml/ea/diagram/element_renderers/base_renderer.rb +0 -81
  331. data/lib/lutaml/ea/diagram/element_renderers/class_renderer.rb +0 -328
  332. data/lib/lutaml/ea/diagram/element_renderers/connector_renderer.rb +0 -53
  333. data/lib/lutaml/ea/diagram/element_renderers/package_renderer.rb +0 -67
  334. data/lib/lutaml/ea/diagram/element_renderers.rb +0 -18
  335. data/lib/lutaml/ea/diagram/extractor.rb +0 -550
  336. data/lib/lutaml/ea/diagram/layout_engine.rb +0 -249
  337. data/lib/lutaml/ea/diagram/path_builder.rb +0 -256
  338. data/lib/lutaml/ea/diagram/style_parser.rb +0 -315
  339. data/lib/lutaml/ea/diagram/style_resolver.rb +0 -281
  340. data/lib/lutaml/ea/diagram/svg_renderer.rb +0 -279
  341. data/lib/lutaml/ea/diagram/util.rb +0 -69
  342. data/lib/lutaml/ea/diagram.rb +0 -62
  343. data/lib/lutaml/ea.rb +0 -7
  344. data/lib/lutaml/formatter/base.rb +0 -63
  345. data/lib/lutaml/formatter/graphviz.rb +0 -374
  346. data/lib/lutaml/formatter.rb +0 -20
  347. data/lib/lutaml/layout/engine.rb +0 -17
  348. data/lib/lutaml/layout/graph_viz_engine.rb +0 -19
  349. data/lib/lutaml/layout.rb +0 -8
  350. data/lib/lutaml/model_transformations/configuration.rb +0 -333
  351. data/lib/lutaml/model_transformations/format_registry.rb +0 -392
  352. data/lib/lutaml/model_transformations/parsers/base_parser.rb +0 -464
  353. data/lib/lutaml/model_transformations/parsers/qea_parser.rb +0 -450
  354. data/lib/lutaml/model_transformations/parsers/xmi_parser.rb +0 -289
  355. data/lib/lutaml/model_transformations/transformation_engine.rb +0 -405
  356. data/lib/lutaml/model_transformations.rb +0 -143
  357. data/lib/lutaml/qea/benchmark.rb +0 -210
  358. data/lib/lutaml/qea/database.rb +0 -270
  359. data/lib/lutaml/qea/factory/association_builder.rb +0 -203
  360. data/lib/lutaml/qea/factory/association_transformer.rb +0 -107
  361. data/lib/lutaml/qea/factory/attribute_tag_transformer.rb +0 -57
  362. data/lib/lutaml/qea/factory/attribute_transformer.rb +0 -93
  363. data/lib/lutaml/qea/factory/base_transformer.rb +0 -127
  364. data/lib/lutaml/qea/factory/class_transformer.rb +0 -164
  365. data/lib/lutaml/qea/factory/constraint_transformer.rb +0 -75
  366. data/lib/lutaml/qea/factory/data_type_transformer.rb +0 -133
  367. data/lib/lutaml/qea/factory/diagram_transformer.rb +0 -157
  368. data/lib/lutaml/qea/factory/document_builder.rb +0 -273
  369. data/lib/lutaml/qea/factory/ea_to_uml_factory.rb +0 -243
  370. data/lib/lutaml/qea/factory/enum_transformer.rb +0 -88
  371. data/lib/lutaml/qea/factory/generalization_builder.rb +0 -236
  372. data/lib/lutaml/qea/factory/generalization_transformer.rb +0 -98
  373. data/lib/lutaml/qea/factory/instance_transformer.rb +0 -84
  374. data/lib/lutaml/qea/factory/object_property_transformer.rb +0 -58
  375. data/lib/lutaml/qea/factory/operation_transformer.rb +0 -66
  376. data/lib/lutaml/qea/factory/package_transformer.rb +0 -208
  377. data/lib/lutaml/qea/factory/reference_resolver.rb +0 -99
  378. data/lib/lutaml/qea/factory/stereotype_loader.rb +0 -40
  379. data/lib/lutaml/qea/factory/tagged_value_transformer.rb +0 -38
  380. data/lib/lutaml/qea/factory/transformer_registry.rb +0 -77
  381. data/lib/lutaml/qea/factory.rb +0 -37
  382. data/lib/lutaml/qea/file_detector.rb +0 -178
  383. data/lib/lutaml/qea/infrastructure/database_connection.rb +0 -100
  384. data/lib/lutaml/qea/infrastructure/schema_reader.rb +0 -136
  385. data/lib/lutaml/qea/infrastructure/table_reader.rb +0 -224
  386. data/lib/lutaml/qea/infrastructure.rb +0 -12
  387. data/lib/lutaml/qea/models/base_model.rb +0 -48
  388. data/lib/lutaml/qea/models/ea_attribute.rb +0 -133
  389. data/lib/lutaml/qea/models/ea_attribute_tag.rb +0 -107
  390. data/lib/lutaml/qea/models/ea_complexity_type.rb +0 -79
  391. data/lib/lutaml/qea/models/ea_connector.rb +0 -160
  392. data/lib/lutaml/qea/models/ea_connector_type.rb +0 -60
  393. data/lib/lutaml/qea/models/ea_constraint_type.rb +0 -63
  394. data/lib/lutaml/qea/models/ea_datatype.rb +0 -104
  395. data/lib/lutaml/qea/models/ea_diagram.rb +0 -115
  396. data/lib/lutaml/qea/models/ea_diagram_link.rb +0 -78
  397. data/lib/lutaml/qea/models/ea_diagram_object.rb +0 -84
  398. data/lib/lutaml/qea/models/ea_diagram_type.rb +0 -56
  399. data/lib/lutaml/qea/models/ea_document.rb +0 -66
  400. data/lib/lutaml/qea/models/ea_object.rb +0 -206
  401. data/lib/lutaml/qea/models/ea_object_constraint.rb +0 -60
  402. data/lib/lutaml/qea/models/ea_object_property.rb +0 -94
  403. data/lib/lutaml/qea/models/ea_object_type.rb +0 -73
  404. data/lib/lutaml/qea/models/ea_operation.rb +0 -151
  405. data/lib/lutaml/qea/models/ea_operation_param.rb +0 -71
  406. data/lib/lutaml/qea/models/ea_package.rb +0 -73
  407. data/lib/lutaml/qea/models/ea_script.rb +0 -67
  408. data/lib/lutaml/qea/models/ea_status_type.rb +0 -66
  409. data/lib/lutaml/qea/models/ea_stereotype.rb +0 -57
  410. data/lib/lutaml/qea/models/ea_tagged_value.rb +0 -103
  411. data/lib/lutaml/qea/models/ea_xref.rb +0 -172
  412. data/lib/lutaml/qea/models.rb +0 -35
  413. data/lib/lutaml/qea/parser.rb +0 -57
  414. data/lib/lutaml/qea/repositories/base_repository.rb +0 -215
  415. data/lib/lutaml/qea/repositories/object_repository.rb +0 -219
  416. data/lib/lutaml/qea/repositories.rb +0 -10
  417. data/lib/lutaml/qea/services/configuration.rb +0 -211
  418. data/lib/lutaml/qea/services/database_loader.rb +0 -186
  419. data/lib/lutaml/qea/services.rb +0 -10
  420. data/lib/lutaml/qea/validation/association_validator.rb +0 -73
  421. data/lib/lutaml/qea/validation/attribute_validator.rb +0 -101
  422. data/lib/lutaml/qea/validation/base_validator.rb +0 -312
  423. data/lib/lutaml/qea/validation/class_validator.rb +0 -121
  424. data/lib/lutaml/qea/validation/database/circular_reference_validator.rb +0 -109
  425. data/lib/lutaml/qea/validation/database/orphan_validator.rb +0 -153
  426. data/lib/lutaml/qea/validation/database/referential_integrity_validator.rb +0 -128
  427. data/lib/lutaml/qea/validation/database.rb +0 -16
  428. data/lib/lutaml/qea/validation/diagram_validator.rb +0 -112
  429. data/lib/lutaml/qea/validation/formatters/json_formatter.rb +0 -137
  430. data/lib/lutaml/qea/validation/formatters/text_formatter.rb +0 -235
  431. data/lib/lutaml/qea/validation/operation_validator.rb +0 -79
  432. data/lib/lutaml/qea/validation/package_validator.rb +0 -111
  433. data/lib/lutaml/qea/validation/validation_engine.rb +0 -477
  434. data/lib/lutaml/qea/validation/validation_message.rb +0 -144
  435. data/lib/lutaml/qea/validation/validation_result.rb +0 -210
  436. data/lib/lutaml/qea/validation/validator_registry.rb +0 -134
  437. data/lib/lutaml/qea/validation.rb +0 -27
  438. data/lib/lutaml/qea/verification/comparison_result.rb +0 -264
  439. data/lib/lutaml/qea/verification/document_normalizer.rb +0 -169
  440. data/lib/lutaml/qea/verification/document_verifier.rb +0 -323
  441. data/lib/lutaml/qea/verification/element_comparator.rb +0 -277
  442. data/lib/lutaml/qea/verification/structure_matcher.rb +0 -287
  443. data/lib/lutaml/qea/verification.rb +0 -14
  444. data/lib/lutaml/qea.rb +0 -227
  445. data/lib/lutaml/uml/abstraction.rb +0 -12
  446. data/lib/lutaml/uml/action.rb +0 -17
  447. data/lib/lutaml/uml/activity.rb +0 -12
  448. data/lib/lutaml/uml/actor.rb +0 -12
  449. data/lib/lutaml/uml/association.rb +0 -37
  450. data/lib/lutaml/uml/association_generalization.rb +0 -20
  451. data/lib/lutaml/uml/behavior.rb +0 -12
  452. data/lib/lutaml/uml/cardinality.rb +0 -12
  453. data/lib/lutaml/uml/class.rb +0 -52
  454. data/lib/lutaml/uml/classifier.rb +0 -19
  455. data/lib/lutaml/uml/comment.rb +0 -15
  456. data/lib/lutaml/uml/connector.rb +0 -20
  457. data/lib/lutaml/uml/connector_end.rb +0 -22
  458. data/lib/lutaml/uml/constraint.rb +0 -24
  459. data/lib/lutaml/uml/data_type.rb +0 -56
  460. data/lib/lutaml/uml/dependency.rb +0 -20
  461. data/lib/lutaml/uml/diagram.rb +0 -25
  462. data/lib/lutaml/uml/diagram_link.rb +0 -28
  463. data/lib/lutaml/uml/diagram_object.rb +0 -32
  464. data/lib/lutaml/uml/document.rb +0 -64
  465. data/lib/lutaml/uml/enum.rb +0 -21
  466. data/lib/lutaml/uml/event.rb +0 -12
  467. data/lib/lutaml/uml/fidelity.rb +0 -12
  468. data/lib/lutaml/uml/final_state.rb +0 -12
  469. data/lib/lutaml/uml/fontname.rb +0 -15
  470. data/lib/lutaml/uml/general_attribute.rb +0 -24
  471. data/lib/lutaml/uml/generalization.rb +0 -37
  472. data/lib/lutaml/uml/group.rb +0 -21
  473. data/lib/lutaml/uml/has_attributes.rb +0 -14
  474. data/lib/lutaml/uml/has_members.rb +0 -30
  475. data/lib/lutaml/uml/inheritance_walker.rb +0 -96
  476. data/lib/lutaml/uml/instance.rb +0 -17
  477. data/lib/lutaml/uml/model.rb +0 -15
  478. data/lib/lutaml/uml/model_helpers.rb +0 -104
  479. data/lib/lutaml/uml/namespace.rb +0 -12
  480. data/lib/lutaml/uml/node/attribute.rb +0 -30
  481. data/lib/lutaml/uml/node/base.rb +0 -19
  482. data/lib/lutaml/uml/node/class_node.rb +0 -48
  483. data/lib/lutaml/uml/node/class_relationship.rb +0 -11
  484. data/lib/lutaml/uml/node/document.rb +0 -15
  485. data/lib/lutaml/uml/node/has_name.rb +0 -15
  486. data/lib/lutaml/uml/node/has_type.rb +0 -15
  487. data/lib/lutaml/uml/node/method_argument.rb +0 -12
  488. data/lib/lutaml/uml/node/operation.rb +0 -23
  489. data/lib/lutaml/uml/node/relationship.rb +0 -22
  490. data/lib/lutaml/uml/opaque_behavior.rb +0 -12
  491. data/lib/lutaml/uml/operation.rb +0 -23
  492. data/lib/lutaml/uml/operation_parameter.rb +0 -19
  493. data/lib/lutaml/uml/package.rb +0 -33
  494. data/lib/lutaml/uml/package_path.rb +0 -235
  495. data/lib/lutaml/uml/parsers/attribute.rb +0 -68
  496. data/lib/lutaml/uml/parsers/dsl.rb +0 -415
  497. data/lib/lutaml/uml/parsers/dsl_preprocessor.rb +0 -63
  498. data/lib/lutaml/uml/parsers/dsl_transform.rb +0 -27
  499. data/lib/lutaml/uml/parsers/yaml.rb +0 -22
  500. data/lib/lutaml/uml/port.rb +0 -9
  501. data/lib/lutaml/uml/primitive_type.rb +0 -15
  502. data/lib/lutaml/uml/property.rb +0 -27
  503. data/lib/lutaml/uml/pseudostate.rb +0 -12
  504. data/lib/lutaml/uml/qualified_name.rb +0 -175
  505. data/lib/lutaml/uml/realization.rb +0 -12
  506. data/lib/lutaml/uml/region.rb +0 -12
  507. data/lib/lutaml/uml/state.rb +0 -22
  508. data/lib/lutaml/uml/state_machine.rb +0 -12
  509. data/lib/lutaml/uml/tagged_value.rb +0 -23
  510. data/lib/lutaml/uml/top_element.rb +0 -85
  511. data/lib/lutaml/uml/top_element_attribute.rb +0 -64
  512. data/lib/lutaml/uml/transition.rb +0 -24
  513. data/lib/lutaml/uml/trigger.rb +0 -18
  514. data/lib/lutaml/uml/validation/document_structure_validator.rb +0 -387
  515. data/lib/lutaml/uml/value.rb +0 -37
  516. data/lib/lutaml/uml/vertex.rb +0 -12
  517. data/lib/lutaml/uml.rb +0 -113
  518. data/lib/lutaml/uml_repository/class_lookup_index.rb +0 -39
  519. data/lib/lutaml/uml_repository/error_handler.rb +0 -203
  520. data/lib/lutaml/uml_repository/exporters/base_exporter.rb +0 -61
  521. data/lib/lutaml/uml_repository/exporters/json_exporter.rb +0 -343
  522. data/lib/lutaml/uml_repository/exporters/markdown/class_page_builder.rb +0 -187
  523. data/lib/lutaml/uml_repository/exporters/markdown/formatting.rb +0 -34
  524. data/lib/lutaml/uml_repository/exporters/markdown/index_page_builder.rb +0 -81
  525. data/lib/lutaml/uml_repository/exporters/markdown/link_resolver.rb +0 -40
  526. data/lib/lutaml/uml_repository/exporters/markdown/package_page_builder.rb +0 -107
  527. data/lib/lutaml/uml_repository/exporters/markdown.rb +0 -20
  528. data/lib/lutaml/uml_repository/exporters/markdown_exporter.rb +0 -86
  529. data/lib/lutaml/uml_repository/index_builder.rb +0 -210
  530. data/lib/lutaml/uml_repository/index_builders/association_index.rb +0 -155
  531. data/lib/lutaml/uml_repository/index_builders/class_index.rb +0 -113
  532. data/lib/lutaml/uml_repository/index_builders/package_index.rb +0 -62
  533. data/lib/lutaml/uml_repository/index_builders.rb +0 -13
  534. data/lib/lutaml/uml_repository/lazy_repository.rb +0 -236
  535. data/lib/lutaml/uml_repository/package_exporter.rb +0 -334
  536. data/lib/lutaml/uml_repository/package_loader.rb +0 -240
  537. data/lib/lutaml/uml_repository/package_metadata.rb +0 -77
  538. data/lib/lutaml/uml_repository/presenters/association_presenter.rb +0 -79
  539. data/lib/lutaml/uml_repository/presenters/attribute_presenter.rb +0 -94
  540. data/lib/lutaml/uml_repository/presenters/class_presenter.rb +0 -72
  541. data/lib/lutaml/uml_repository/presenters/datatype_presenter.rb +0 -97
  542. data/lib/lutaml/uml_repository/presenters/diagram_presenter.rb +0 -469
  543. data/lib/lutaml/uml_repository/presenters/element_presenter.rb +0 -91
  544. data/lib/lutaml/uml_repository/presenters/enum_presenter.rb +0 -78
  545. data/lib/lutaml/uml_repository/presenters/package_presenter.rb +0 -48
  546. data/lib/lutaml/uml_repository/presenters/presenter_factory.rb +0 -74
  547. data/lib/lutaml/uml_repository/queries/association_query.rb +0 -184
  548. data/lib/lutaml/uml_repository/queries/base_query.rb +0 -45
  549. data/lib/lutaml/uml_repository/queries/class_query.rb +0 -178
  550. data/lib/lutaml/uml_repository/queries/diagram_query.rb +0 -108
  551. data/lib/lutaml/uml_repository/queries/inheritance_query.rb +0 -327
  552. data/lib/lutaml/uml_repository/queries/package_query.rb +0 -230
  553. data/lib/lutaml/uml_repository/queries/search_query.rb +0 -236
  554. data/lib/lutaml/uml_repository/query_dsl/conditions/base_condition.rb +0 -28
  555. data/lib/lutaml/uml_repository/query_dsl/conditions/block_condition.rb +0 -44
  556. data/lib/lutaml/uml_repository/query_dsl/conditions/hash_condition.rb +0 -82
  557. data/lib/lutaml/uml_repository/query_dsl/conditions/package_condition.rb +0 -89
  558. data/lib/lutaml/uml_repository/query_dsl/order.rb +0 -90
  559. data/lib/lutaml/uml_repository/query_dsl/query_builder.rb +0 -290
  560. data/lib/lutaml/uml_repository/repository/deprecated.rb +0 -39
  561. data/lib/lutaml/uml_repository/repository/loader.rb +0 -117
  562. data/lib/lutaml/uml_repository/repository.rb +0 -718
  563. data/lib/lutaml/uml_repository/repository_enhanced.rb +0 -431
  564. data/lib/lutaml/uml_repository/search_result.rb +0 -86
  565. data/lib/lutaml/uml_repository/static_site/configuration.rb +0 -377
  566. data/lib/lutaml/uml_repository/static_site/data_transformer.rb +0 -135
  567. data/lib/lutaml/uml_repository/static_site/generator.rb +0 -120
  568. data/lib/lutaml/uml_repository/static_site/id_generator.rb +0 -120
  569. data/lib/lutaml/uml_repository/static_site/models/spa_association.rb +0 -29
  570. data/lib/lutaml/uml_repository/static_site/models/spa_association_end.rb +0 -25
  571. data/lib/lutaml/uml_repository/static_site/models/spa_attribute.rb +0 -58
  572. data/lib/lutaml/uml_repository/static_site/models/spa_base.rb +0 -12
  573. data/lib/lutaml/uml_repository/static_site/models/spa_cardinality.rb +0 -28
  574. data/lib/lutaml/uml_repository/static_site/models/spa_class.rb +0 -60
  575. data/lib/lutaml/uml_repository/static_site/models/spa_diagram.rb +0 -31
  576. data/lib/lutaml/uml_repository/static_site/models/spa_document.rb +0 -31
  577. data/lib/lutaml/uml_repository/static_site/models/spa_inherited_association.rb +0 -25
  578. data/lib/lutaml/uml_repository/static_site/models/spa_inherited_attribute.rb +0 -25
  579. data/lib/lutaml/uml_repository/static_site/models/spa_literal.rb +0 -19
  580. data/lib/lutaml/uml_repository/static_site/models/spa_metadata.rb +0 -39
  581. data/lib/lutaml/uml_repository/static_site/models/spa_operation.rb +0 -34
  582. data/lib/lutaml/uml_repository/static_site/models/spa_package.rb +0 -37
  583. data/lib/lutaml/uml_repository/static_site/models/spa_package_tree_node.rb +0 -32
  584. data/lib/lutaml/uml_repository/static_site/models/spa_parameter.rb +0 -21
  585. data/lib/lutaml/uml_repository/static_site/models/spa_search_entry.rb +0 -34
  586. data/lib/lutaml/uml_repository/static_site/models/spa_search_index.rb +0 -29
  587. data/lib/lutaml/uml_repository/static_site/models/spa_statistics.rb +0 -25
  588. data/lib/lutaml/uml_repository/static_site/models/spa_tree_class_ref.rb +0 -22
  589. data/lib/lutaml/uml_repository/static_site/models.rb +0 -48
  590. data/lib/lutaml/uml_repository/static_site/output/multi_file_strategy.rb +0 -69
  591. data/lib/lutaml/uml_repository/static_site/output/strategy.rb +0 -36
  592. data/lib/lutaml/uml_repository/static_site/output/vue_inlined_strategy.rb +0 -113
  593. data/lib/lutaml/uml_repository/static_site/output.rb +0 -15
  594. data/lib/lutaml/uml_repository/static_site/search_index_builder.rb +0 -216
  595. data/lib/lutaml/uml_repository/static_site/serializers/association_serializer.rb +0 -70
  596. data/lib/lutaml/uml_repository/static_site/serializers/attribute_serializer.rb +0 -24
  597. data/lib/lutaml/uml_repository/static_site/serializers/base.rb +0 -66
  598. data/lib/lutaml/uml_repository/static_site/serializers/class_serializer.rb +0 -97
  599. data/lib/lutaml/uml_repository/static_site/serializers/diagram_serializer.rb +0 -59
  600. data/lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb +0 -151
  601. data/lib/lutaml/uml_repository/static_site/serializers/metadata_builder.rb +0 -102
  602. data/lib/lutaml/uml_repository/static_site/serializers/operation_serializer.rb +0 -52
  603. data/lib/lutaml/uml_repository/static_site/serializers/package_serializer.rb +0 -55
  604. data/lib/lutaml/uml_repository/static_site/serializers/package_tree_builder.rb +0 -77
  605. data/lib/lutaml/uml_repository/static_site/serializers.rb +0 -30
  606. data/lib/lutaml/uml_repository/static_site.rb +0 -92
  607. data/lib/lutaml/uml_repository/statistics_calculator.rb +0 -342
  608. data/lib/lutaml/uml_repository/validators/repository_validator.rb +0 -402
  609. data/lib/lutaml/uml_repository/web_ui/app.rb +0 -161
  610. data/lib/lutaml/uml_repository/web_ui/public/app.js +0 -452
  611. data/lib/lutaml/uml_repository/web_ui/public/styles.css +0 -381
  612. data/lib/lutaml/uml_repository/web_ui/views/index.erb +0 -40
  613. data/lib/lutaml/uml_repository.rb +0 -117
  614. data/lib/lutaml/xmi/liquid_drops/association_drop.rb +0 -56
  615. data/lib/lutaml/xmi/liquid_drops/attribute_drop.rb +0 -72
  616. data/lib/lutaml/xmi/liquid_drops/cardinality_drop.rb +0 -35
  617. data/lib/lutaml/xmi/liquid_drops/connector_drop.rb +0 -54
  618. data/lib/lutaml/xmi/liquid_drops/constraint_drop.rb +0 -29
  619. data/lib/lutaml/xmi/liquid_drops/data_type_drop.rb +0 -63
  620. data/lib/lutaml/xmi/liquid_drops/dependency_drop.rb +0 -36
  621. data/lib/lutaml/xmi/liquid_drops/diagram_drop.rb +0 -34
  622. data/lib/lutaml/xmi/liquid_drops/enum_drop.rb +0 -49
  623. data/lib/lutaml/xmi/liquid_drops/enum_owned_literal_drop.rb +0 -25
  624. data/lib/lutaml/xmi/liquid_drops/generalization_attribute_drop.rb +0 -87
  625. data/lib/lutaml/xmi/liquid_drops/generalization_drop.rb +0 -127
  626. data/lib/lutaml/xmi/liquid_drops/klass_drop.rb +0 -191
  627. data/lib/lutaml/xmi/liquid_drops/operation_drop.rb +0 -29
  628. data/lib/lutaml/xmi/liquid_drops/package_drop.rb +0 -108
  629. data/lib/lutaml/xmi/liquid_drops/root_drop.rb +0 -34
  630. data/lib/lutaml/xmi/liquid_drops/source_target_drop.rb +0 -43
  631. data/lib/lutaml/xmi/parsers/xmi_base.rb +0 -301
  632. data/lib/lutaml/xmi/parsers/xmi_class_members.rb +0 -45
  633. data/lib/lutaml/xmi/parsers/xmi_connector.rb +0 -263
  634. data/lib/lutaml/xmi/parsers/xml.rb +0 -62
  635. data/lib/lutaml/xmi/xmi_lookup_service.rb +0 -40
  636. data/lib/lutaml/xmi.rb +0 -47
  637. data/templates/static_site/assets/images/lutaml-full.svg +0 -1
  638. data/templates/static_site/assets/images/lutaml-icon.svg +0 -1
  639. data/templates/static_site/assets/scripts/app.js +0 -45
  640. data/templates/static_site/assets/scripts/core/state.js +0 -446
  641. data/templates/static_site/assets/scripts/core/utils.js +0 -133
  642. data/templates/static_site/assets/scripts/ui/details.js +0 -74
  643. data/templates/static_site/assets/scripts/ui/diagrams.js +0 -345
  644. data/templates/static_site/assets/scripts/ui/search.js +0 -187
  645. data/templates/static_site/assets/scripts/ui/sidebar.js +0 -123
  646. data/templates/static_site/assets/styles/00-variables.css +0 -144
  647. data/templates/static_site/assets/styles/01-reset.css +0 -69
  648. data/templates/static_site/assets/styles/02-base.css +0 -144
  649. data/templates/static_site/assets/styles/03-layout.css +0 -121
  650. data/templates/static_site/assets/styles/04-components.css +0 -905
  651. data/templates/static_site/assets/styles/05-utilities.css +0 -23
  652. data/templates/static_site/assets/styles/06-diagrams.css +0 -74
  653. data/templates/static_site/components/class_details.liquid +0 -328
  654. data/templates/static_site/components/content.liquid +0 -481
  655. data/templates/static_site/components/diagram_list.liquid +0 -52
  656. data/templates/static_site/components/diagram_viewer.liquid +0 -71
  657. data/templates/static_site/components/header.liquid +0 -114
  658. data/templates/static_site/components/package_details.liquid +0 -119
  659. data/templates/static_site/components/sidebar.liquid +0 -76
  660. data/templates/static_site/components/tree_node.liquid +0 -81
  661. data/templates/static_site/multi_file.liquid +0 -49
  662. data/templates/static_site/single_file.liquid +0 -57
@@ -1,325 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- # Load local development version
5
- $LOAD_PATH.unshift(File.expand_path("../lib", __dir__))
6
-
7
- # Example: Repository Statistics and Analysis
8
- #
9
- # This example demonstrates how to extract and analyze comprehensive
10
- # statistics from a UML repository, including package structure,
11
- # class complexity, relationships, and model quality metrics.
12
-
13
- require "lutaml"
14
- require "lutaml/uml_repository/repository"
15
-
16
- puts "=" * 80
17
- puts "LUR Repository Statistics Examples"
18
- puts "=" * 80
19
- puts
20
-
21
- # Setup: Find a test file
22
- qea_file = Dir.glob("examples/qea/*.qea").first
23
- xmi_file = Dir.glob("examples/qea/*.xmi").first
24
- test_file = qea_file || xmi_file
25
-
26
- unless test_file
27
- puts "No test files found in examples/qea/"
28
- puts
29
- puts "This example demonstrates statistics extraction. To run:"
30
- puts " 1. Place a .qea or .xmi file in examples/qea/"
31
- puts " 2. Or examine the statistics API below"
32
- puts
33
- puts "Statistics API example:"
34
- puts <<~RUBY
35
- repo = Lutaml::UmlRepository::Repository.from_xmi("model.xmi")
36
-
37
- stats = repo.statistics
38
-
39
- # Core counts
40
- puts "Packages: \#{stats[:total_packages]}"
41
- puts "Classes: \#{stats[:total_classes]}"
42
- puts "Associations: \#{stats[:total_associations]}"
43
-
44
- # Stereotypes
45
- stats[:classes_by_stereotype].each do |stereotype, count|
46
- puts "\#{stereotype}: \#{count}"
47
- end
48
-
49
- # Complexity metrics
50
- puts "Max attributes: \#{stats[:max_attributes]}"
51
- puts "Avg attributes: \#{stats[:avg_attributes]}"
52
-
53
- # Package structure
54
- puts "Max package depth: \#{stats[:max_package_depth]}"
55
- RUBY
56
- exit 0
57
- end
58
-
59
- puts "Loading model: #{test_file}"
60
- puts "File size: #{File.size(test_file) / 1024}KB"
61
- puts
62
-
63
- # Load repository
64
- if test_file.end_with?(".qea")
65
- document = Lutaml::Qea.parse(test_file)
66
- repo = Lutaml::UmlRepository::Repository.new(document: document)
67
- elsif test_file.end_with?(".xmi")
68
- repo = Lutaml::UmlRepository::Repository.from_xmi(test_file)
69
- end
70
-
71
- puts "Repository loaded successfully"
72
- puts
73
-
74
- # Statistics Section 1: Overview
75
- puts "=" * 80
76
- puts "1. Model Overview"
77
- puts "=" * 80
78
-
79
- stats = repo.statistics
80
-
81
- puts "Total elements:"
82
- puts " Packages: #{stats[:total_packages]}"
83
- puts " Classes: #{stats[:total_classes]}"
84
- puts " Data types: #{stats[:total_data_types]}"
85
- puts " Enumerations: #{stats[:total_enums]}"
86
- puts " Associations: #{stats[:total_associations]}"
87
- puts " Diagrams: #{stats[:total_diagrams]}"
88
- puts
89
-
90
- # Statistics Section 2: Package Structure
91
- puts "=" * 80
92
- puts "2. Package Structure"
93
- puts "=" * 80
94
-
95
- if stats[:max_package_depth]
96
- puts "Package hierarchy depth: #{stats[:max_package_depth]}"
97
- end
98
-
99
- packages = repo.packages_index
100
- if packages.any?
101
- puts "Total packages: #{packages.size}"
102
- puts "\nSample packages:"
103
- packages.first(5).each do |pkg|
104
- puts " - #{pkg.name}"
105
- end
106
- end
107
- puts
108
-
109
- # Statistics Section 3: Class Stereotypes
110
- puts "=" * 80
111
- puts "3. Class Stereotypes"
112
- puts "=" * 80
113
-
114
- if stats[:classes_by_stereotype]
115
- stereotype_count = stats[:classes_by_stereotype].size
116
- puts "Unique stereotypes: #{stereotype_count}"
117
- puts "\nStereotype distribution:"
118
-
119
- stats[:classes_by_stereotype].sort_by do |_, count|
120
- -count
121
- end.first(10).each do |stereotype, count|
122
- percentage = (count.to_f / stats[:total_classes] * 100).round(1)
123
- puts " #{stereotype.ljust(30)} #{count.to_s.rjust(5)} (#{percentage}%)"
124
- end
125
- else
126
- puts "No stereotype information available"
127
- end
128
- puts
129
-
130
- # Statistics Section 4: Class Complexity
131
- puts "=" * 80
132
- puts "4. Class Complexity Metrics"
133
- puts "=" * 80
134
-
135
- all_classes = repo.classes_index.grep(Lutaml::Uml::Class)
136
-
137
- if all_classes.any?
138
- # Attribute counts
139
- attr_counts = all_classes.map { |c| c.attributes&.size || 0 }
140
-
141
- puts "Attribute statistics:"
142
- puts " Classes with attributes: #{attr_counts.count(&:positive?)}"
143
- puts " Min attributes: #{attr_counts.min}"
144
- puts " Max attributes: #{attr_counts.max}"
145
- puts " Avg attributes: #{(attr_counts.sum.to_f / attr_counts.size).round(2)}"
146
- puts " Median attributes: #{attr_counts.sort[attr_counts.size / 2]}"
147
-
148
- # Find most complex classes
149
- puts "\nMost complex classes (by attribute count):"
150
- complex_classes = all_classes.map { |c| [c.name, c.attributes&.size || 0] }
151
- .sort_by { |_, count| -count }
152
- .first(5)
153
-
154
- complex_classes.each do |name, count|
155
- puts " #{name}: #{count} attributes"
156
- end
157
-
158
- # Operation counts
159
- op_counts = all_classes.map { |c| c.operations&.size || 0 }
160
-
161
- puts "\nOperation statistics:"
162
- puts " Classes with operations: #{op_counts.count(&:positive?)}"
163
- puts " Max operations: #{op_counts.max}"
164
- puts " Avg operations: #{(op_counts.sum.to_f / op_counts.size).round(2)}"
165
- else
166
- puts "No class data available"
167
- end
168
- puts
169
-
170
- # Statistics Section 5: Inheritance
171
- puts "=" * 80
172
- puts "5. Inheritance Analysis"
173
- puts "=" * 80
174
-
175
- if all_classes.any?
176
- classes_with_parent = all_classes.select do |c|
177
- repo.supertype_of(c)
178
- end
179
-
180
- puts "Inheritance statistics:"
181
- puts " Classes with parent: #{classes_with_parent.size}"
182
- puts " Root classes: #{all_classes.size - classes_with_parent.size}"
183
- puts " Inheritance usage: " \
184
- "#{(classes_with_parent.size.to_f / all_classes.size * 100).round(1)}%"
185
-
186
- # Find deepest hierarchies
187
- max_depth = 0
188
- deepest_class = nil
189
-
190
- all_classes.first(100).each do |klass|
191
- ancestors = repo.ancestors_of(klass)
192
- if ancestors.size > max_depth
193
- max_depth = ancestors.size
194
- deepest_class = klass
195
- end
196
- end
197
-
198
- if deepest_class
199
- puts "\nDeepest inheritance hierarchy: #{max_depth} levels"
200
- puts " Class: #{deepest_class.name}"
201
- ancestors = repo.ancestors_of(deepest_class)
202
- puts " Ancestors: #{ancestors.map(&:name).join(' < ')}"
203
- end
204
- end
205
- puts
206
-
207
- # Statistics Section 6: Associations
208
- puts "=" * 80
209
- puts "6. Association Analysis"
210
- puts "=" * 80
211
-
212
- associations = repo.associations_index
213
-
214
- if associations.any?
215
- puts "Total associations: #{associations.size}"
216
-
217
- # Association types
218
- assoc_types = associations.group_by do |a|
219
- a.member_end_type&.first || "unknown"
220
- end
221
-
222
- puts "\nAssociation types:"
223
- assoc_types.sort_by { |_, list| -list.size }.first(10).each do |type, list|
224
- puts " #{type.ljust(20)} #{list.size}"
225
- end
226
-
227
- # Most connected classes
228
- connection_counts = Hash.new(0)
229
-
230
- all_classes.first(100).each do |klass|
231
- assocs = repo.associations_of(klass)
232
- connection_counts[klass.name] = assocs.size
233
- end
234
-
235
- puts "\nMost connected classes:"
236
- connection_counts.sort_by { |_, count| -count }.first(5).each do |name, count|
237
- puts " #{name}: #{count} associations"
238
- end
239
- end
240
- puts
241
-
242
- # Statistics Section 7: Model Quality
243
- puts "=" * 80
244
- puts "7. Model Quality Indicators"
245
- puts "=" * 80
246
-
247
- # Run validation
248
- validation = repo.validate
249
-
250
- puts "Validation status: #{validation.valid? ? 'PASS ✓' : 'FAIL ✗'}"
251
- puts " Errors: #{validation.errors.size}"
252
- puts " Warnings: #{validation.warnings.size}"
253
-
254
- if all_classes.any?
255
- # Calculate documentation coverage
256
- documented_classes = all_classes.count do |c|
257
- c.respond_to?(:documentation) && c.documentation && !c.documentation.empty?
258
- end
259
- doc_coverage = (documented_classes.to_f / all_classes.size * 100).round(1)
260
-
261
- puts "\nDocumentation coverage:"
262
- puts " Documented classes: #{documented_classes}/#{all_classes.size} " \
263
- "(#{doc_coverage}%)"
264
-
265
- # Naming conventions
266
- camel_case = all_classes.count { |c| c.name =~ /^[A-Z][a-zA-Z0-9]*$/ }
267
- naming_compliance = (camel_case.to_f / all_classes.size * 100).round(1)
268
-
269
- puts "\nNaming conventions:"
270
- puts " CamelCase classes: #{camel_case}/#{all_classes.size} " \
271
- "(#{naming_compliance}%)"
272
-
273
- # Abstract classes
274
- abstract_classes = all_classes.count do |c|
275
- c.respond_to?(:is_abstract) && c.is_abstract
276
- end
277
- abstract_ratio = (abstract_classes.to_f / all_classes.size * 100).round(1)
278
-
279
- puts "\nAbstraction:"
280
- puts " Abstract classes: #{abstract_classes}/#{all_classes.size} " \
281
- "(#{abstract_ratio}%)"
282
- end
283
- puts
284
-
285
- # Statistics Section 8: Export Summary
286
- puts "=" * 80
287
- puts "8. Summary Statistics (JSON format)"
288
- puts "=" * 80
289
-
290
- require "json"
291
-
292
- summary = {
293
- model: {
294
- packages: stats[:total_packages],
295
- classes: stats[:total_classes],
296
- data_types: stats[:total_data_types],
297
- enumerations: stats[:total_enums],
298
- associations: stats[:total_associations],
299
- diagrams: stats[:total_diagrams],
300
- },
301
- structure: {
302
- max_package_depth: stats[:max_package_depth],
303
- },
304
- validation: {
305
- valid: validation.valid?,
306
- errors: validation.errors.size,
307
- warnings: validation.warnings.size,
308
- },
309
- }
310
-
311
- if stats[:classes_by_stereotype]
312
- summary[:stereotypes] = stats[:classes_by_stereotype]
313
- end
314
-
315
- puts JSON.pretty_generate(summary)
316
- puts
317
-
318
- puts "=" * 80
319
- puts "Statistics analysis complete!"
320
- puts "=" * 80
321
- puts
322
- puts "You can also get statistics via CLI:"
323
- puts " $ lutaml uml stats model.lur"
324
- puts " $ lutaml uml stats model.lur --detailed"
325
- puts " $ lutaml uml stats model.lur --format json"
@@ -1,230 +0,0 @@
1
- = QEA Parser - Enterprise Architect Database Parser
2
-
3
- A Ruby library for parsing Enterprise Architect .qea (SQLite) database files into structured Ruby objects using Lutaml::Model.
4
-
5
- == Overview
6
-
7
- This library provides direct parsing of Enterprise Architect `.qea` files (SQLite databases) without requiring XMI export. This provides significant performance improvements and access to EA-specific metadata.
8
-
9
- You can:
10
-
11
- * Parse QEA files directly to UML documents
12
- * Access UML model elements (classes, attributes, operations, associations, packages, diagrams)
13
- * Query and analyze Enterprise Architect models programmatically
14
- * Build LUR packages for fast querying
15
-
16
- == Installation
17
-
18
- [source,bash]
19
- ----
20
- gem install lutaml
21
- ----
22
-
23
- == Usage
24
-
25
- === Basic Usage - Parse to UML Document
26
-
27
- [source,ruby]
28
- ----
29
- require "lutaml/qea"
30
-
31
- # Parse QEA file to UML Document
32
- document = Lutaml::Qea.parse("model.qea")
33
-
34
- # Use with UmlRepository for querying
35
- repo = Lutaml::UmlRepository::Repository.new(document: document)
36
-
37
- # Query the model
38
- puts "Total classes: #{repo.classes_index.size}"
39
- puts "Total packages: #{repo.packages_index.size}"
40
-
41
- # Find classes by stereotype
42
- feature_types = repo.find_classes_by_stereotype("featureType")
43
- puts "Feature types: #{feature_types.size}"
44
-
45
- # Get statistics
46
- stats = repo.statistics
47
- puts "Packages: #{stats[:total_packages]}"
48
- puts "Classes: #{stats[:total_classes]}"
49
- puts "Associations: #{stats[:total_associations]}"
50
- ----
51
-
52
- === Parse with Validation
53
-
54
- [source,ruby]
55
- ----
56
- require "lutaml/qea"
57
-
58
- # Parse with validation
59
- result = Lutaml::Qea.parse("model.qea", validate: true)
60
-
61
- document = result[:document]
62
- validation = result[:validation_result]
63
-
64
- if validation.valid?
65
- puts "Model is valid!"
66
- else
67
- puts "Validation errors: #{validation.errors.size}"
68
- validation.errors.first(5).each do |error|
69
- puts " - #{error}"
70
- end
71
- end
72
- ----
73
-
74
- === Low-Level Database Access
75
-
76
- [source,ruby]
77
- ----
78
- require "lutaml/qea"
79
-
80
- # Load database with progress callback
81
- database = Lutaml::Qea.load_database("model.qea") do |table, current, total|
82
- puts "Loading #{table}: #{current}/#{total}"
83
- end
84
-
85
- # Access raw EA tables
86
- puts "Objects: #{database.objects.size}"
87
- puts "Attributes: #{database.attributes.size}"
88
- puts "Connectors: #{database.connectors.size}"
89
- puts "Packages: #{database.packages.size}"
90
-
91
- # Get statistics
92
- stats = database.stats
93
- stats.each do |table_name, count|
94
- puts "#{table_name}: #{count} records"
95
- end
96
- ----
97
-
98
- === Quick Database Info
99
-
100
- [source,ruby]
101
- ----
102
- require "lutaml/qea"
103
-
104
- # Get quick statistics without full loading
105
- info = Lutaml::Qea.database_info("model.qea")
106
- puts info # => {"objects" => 693, "attributes" => 1910, ...}
107
- ----
108
-
109
- == Performance
110
-
111
- Direct QEA parsing offers several advantages over XMI:
112
-
113
- * *Performance*: 10-20x faster than XMI parsing
114
- * *No export step*: Parse directly from EA database
115
- * *EA metadata*: Access to EA-specific information not available in XMI
116
- * *Memory efficient*: Streams data from SQLite without loading entire file
117
-
118
- Typical performance for a 20MB EA model:
119
-
120
- * *QEA parsing*: 1-2 seconds
121
- * *XMI parsing*: 20-40 seconds
122
- * *Speedup*: 10-20x faster
123
- * *Memory*: Lower memory footprint with QEA
124
-
125
- == CLI Usage
126
-
127
- All CLI commands accept both XMI and QEA files:
128
-
129
- [source,bash]
130
- ----
131
- # Build LUR from QEA (10-20x faster than XMI)
132
- lutaml uml build model.qea -o model.lur
133
-
134
- # All other commands work the same
135
- lutaml uml search model.lur "Building"
136
- lutaml uml tree model.lur
137
- lutaml uml stats model.lur
138
- ----
139
-
140
- == File Validation
141
-
142
- [source,ruby]
143
- ----
144
- require "lutaml/qea/file_detector"
145
-
146
- # Check if file is valid QEA
147
- if Lutaml::Qea::FileDetector.qea_file?("model.qea")
148
- puts "Valid QEA file"
149
- end
150
-
151
- # Validate structure
152
- result = Lutaml::Qea::FileDetector.validate_qea("model.qea")
153
- if result[:valid]
154
- puts "QEA file is valid"
155
- else
156
- result[:errors].each { |e| puts "ERROR: #{e}" }
157
- end
158
-
159
- # Get file information
160
- info = Lutaml::Qea::FileDetector.file_info("model.qea")
161
- puts "Size: #{info[:size_mb]} MB"
162
- puts "Tables: #{info[:table_count]}"
163
- puts "Objects: #{info[:object_count]}"
164
- ----
165
-
166
- == Configuration
167
-
168
- QEA parsing is configured via `config/qea_schema.yml`:
169
-
170
- [source,yaml]
171
- ----
172
- tables:
173
- - table_name: t_object
174
- enabled: true
175
- model_class: Object
176
-
177
- - table_name: t_attribute
178
- enabled: true
179
- model_class: Attribute
180
-
181
- # ... other tables
182
- ----
183
-
184
- == Database Schema
185
-
186
- The QEA parser supports all Enterprise Architect tables:
187
-
188
- *Core UML Model:*
189
-
190
- * `objects` - UML objects (classes, interfaces, components, etc.)
191
- * `attributes` - Class attributes and properties
192
- * `operations` - Class operations and methods
193
- * `operationparams` - Operation parameters
194
- * `connectors` - Relationships between objects
195
- * `packages` - UML packages and namespaces
196
- * `diagrams` - UML diagrams
197
-
198
- *Extended Model:*
199
-
200
- * `taggedvalues` - Tagged values (stereotypes, metadata)
201
- * `stereotypes` - Stereotype definitions
202
- * `datatypes` - Data type definitions
203
- * `constraints` - Model constraints
204
- * And 80+ more tables...
205
-
206
- == Examples
207
-
208
- See the `examples/` directory for complete working examples:
209
-
210
- * `examples/lur_basic_usage.rb` - Basic repository operations with QEA files
211
- * `examples/lur_cli_workflow.rb` - Command-line workflow with QEA
212
- * `examples/lur_statistics.rb` - Statistics and validation
213
-
214
- == Limitations
215
-
216
- * QEA files must be SQLite 3 format
217
- * Requires EA-specific table structure
218
- * Some EA proprietary features may not be fully supported
219
- * Only reads from QEA; does not write back to EA database
220
- * Read-only access (safe for concurrent use)
221
-
222
- == License
223
-
224
- This library is part of LutaML and follows the same BSD-3 license.
225
-
226
- == Credits
227
-
228
- * Built with https://github.com/lutaml/lutaml-model[Lutaml::Model]
229
- * Uses SQLite3 for database access
230
- * Part of the LutaML project ecosystem
Binary file
Binary file
Binary file
Binary file
Binary file