lutaml 0.9.43 → 0.10.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.
- checksums.yaml +4 -4
- data/.github/workflows/docs.yml +63 -0
- data/.github/workflows/links.yml +99 -0
- data/.github/workflows/rake.yml +13 -2
- data/.github/workflows/release.yml +12 -6
- data/.gitignore +3 -0
- data/.rubocop.yml +11 -3
- data/.rubocop_todo.yml +336 -0
- data/Gemfile +18 -7
- data/README.adoc +1854 -21
- data/Rakefile +7 -1
- data/bin/plantuml2lutaml +3 -3
- data/bin/yaml2lutaml +2 -2
- data/config/diagram_styles.yml +200 -0
- data/config/model_transformations.yml +266 -0
- data/config/package_metadata.example.yml +58 -0
- data/config/qea_schema.yml +1024 -0
- data/config/static_site.yml +166 -0
- data/docs/.github/workflows/docs.yml +66 -0
- data/docs/.github/workflows/links.yml +78 -0
- data/docs/CONTINUATION_PLAN.md +168 -0
- data/docs/Gemfile +13 -0
- data/docs/MIGRATION_GUIDE.md +202 -0
- data/docs/README.md +252 -0
- data/docs/REFACTOR_PLAN.md +214 -0
- data/docs/_config.yml +144 -0
- data/docs/_guides/diagram-generation.adoc +316 -0
- data/docs/_guides/index.adoc +135 -0
- data/docs/{lutaml-express.adoc → _guides/parsing/express-parsing.adoc} +7 -0
- data/docs/_guides/parsing/index.adoc +77 -0
- data/docs/{lutaml-xmi.adoc → _guides/parsing/xmi-parsing.adoc} +7 -0
- data/docs/_guides/sysml-modeling.adoc +37 -0
- data/docs/{lutaml-uml.adoc → _guides/uml-modeling.adoc} +8 -2
- data/docs/_pages/concepts/diagram-generation.adoc +337 -0
- data/docs/_pages/concepts/lur-format.adoc +711 -0
- data/docs/_pages/concepts/qea-parsing.adoc +418 -0
- data/docs/_pages/core/architecture.adoc +329 -0
- data/docs/_pages/core/installation.adoc +321 -0
- data/docs/_pages/core/overview.adoc +197 -0
- data/docs/_pages/index.adoc +48 -0
- data/docs/_pages/uml-syntax.adoc +995 -0
- data/docs/_references/configuration/diagram-styles.adoc +716 -0
- data/docs/_references/configuration/index.adoc +52 -0
- data/docs/_references/configuration/package-metadata.adoc +416 -0
- data/docs/_references/formats/index.adoc +42 -0
- data/docs/{lutaml_syntax.adoc → _references/formats/lutaml-syntax.adoc} +7 -0
- data/docs/_references/formats/qea-structure.adoc +1364 -0
- data/docs/_references/index.adoc +197 -0
- data/docs/_tutorials/index.adoc +109 -0
- data/docs/index.adoc +64 -0
- data/docs/lychee.toml +83 -0
- data/examples/UML_EA.DTD +6856 -0
- data/examples/lur/20251010_current_plateau_v5.1.lur +0 -0
- data/examples/lur/basic.lur +0 -0
- data/examples/lur/test-output.lur +0 -0
- data/examples/lur/test.lur +0 -0
- data/examples/lur_basic_usage.rb +220 -0
- data/examples/lur_cli_workflow.rb +262 -0
- data/examples/lur_statistics.rb +325 -0
- data/examples/qea/20251010_current_plateau_v5.1.qea +0 -0
- data/examples/qea/ArcGISWorkspace_template.qea +0 -0
- data/examples/qea/README_qea_parser.adoc +230 -0
- data/examples/qea/UmlModel_template.qea +0 -0
- data/examples/qea/basic.qea +0 -0
- data/examples/qea/simple.qea +0 -0
- data/examples/qea/simple_example.qea +0 -0
- data/examples/qea/test.qea +0 -0
- data/examples/xmi/20251010_current_plateau_v5.1.xmi +118121 -0
- data/examples/xmi/ArcGISWorkspace_template.xmi +1467 -0
- data/examples/xmi/Images/EAID_0016F797_D055_4717_AF1A_606413D0A166.svg +158 -0
- data/examples/xmi/Images/EAID_00C5C772_5A03_434f_BF30_AC37542A1AAC.svg +659 -0
- data/examples/xmi/Images/EAID_0114FD24_9E58_4664_98CD_71305B59AD11.svg +411 -0
- data/examples/xmi/Images/EAID_01661E1B_31B6_4167_BCCF_A00678FB4EA2.svg +102 -0
- data/examples/xmi/Images/EAID_039FE004_5408_4fc0_89AA_EB319E4F61C7.svg +169 -0
- data/examples/xmi/Images/EAID_04EE9625_17A0_4721_BC71_21756DB21D06.svg +403 -0
- data/examples/xmi/Images/EAID_05FF9417_1619_4170_B0C9_55AA6B988EF1.svg +175 -0
- data/examples/xmi/Images/EAID_09853FB2_AF8A_432f_94C5_6C47461BD937.svg +360 -0
- data/examples/xmi/Images/EAID_09927B7F_A657_4819_99E5_AC9DC99227D9.svg +195 -0
- data/examples/xmi/Images/EAID_09AF6B8A_557C_43bc_BBB0_47C1E9401EF3.svg +218 -0
- data/examples/xmi/Images/EAID_0BE81AC5_031B_4973_A9A0_223CCD92BAA1.svg +471 -0
- data/examples/xmi/Images/EAID_0EDEA6EF_4DC8_4979_BB80_28B1B9EBD1D4.svg +56 -0
- data/examples/xmi/Images/EAID_0F413534_6AD2_48bc_B4AF_8699D530D91D.svg +262 -0
- data/examples/xmi/Images/EAID_1321F39B_AD67_47b5_B5C3_3A42BBFCBDF9.svg +286 -0
- data/examples/xmi/Images/EAID_13E09C71_99E7_40b4_B72D_48AF6379BC2E.svg +164 -0
- data/examples/xmi/Images/EAID_144955D8_CB4E_4b59_BB0C_E549F7F84943.svg +66 -0
- data/examples/xmi/Images/EAID_14E9F5FD_F6CD_4f48_B1CD_F5A40C6D8E83.svg +95 -0
- data/examples/xmi/Images/EAID_157826AA_96A7_4278_89A6_94BD0F31409A.svg +63 -0
- data/examples/xmi/Images/EAID_159E9DA0_7A54_4817_B72A_401C750F675D.svg +306 -0
- data/examples/xmi/Images/EAID_17BC8309_8051_492b_BE87_61CCFE83DB16.svg +45 -0
- data/examples/xmi/Images/EAID_1A10EB6D_E2E5_42a6_A31E_B293D93FD07E.svg +193 -0
- data/examples/xmi/Images/EAID_1A290AFD_CE96_46a2_8351_A986D77CC727.svg +444 -0
- data/examples/xmi/Images/EAID_1B2D9309_C66B_492a_995C_95B2B02E0D7C.svg +168 -0
- data/examples/xmi/Images/EAID_1DE6B973_CE8A_416f_909B_54CEA1E5944E.svg +10 -0
- data/examples/xmi/Images/EAID_204F4ACC_2230_4c8d_9861_EF5A6844B712.svg +60 -0
- data/examples/xmi/Images/EAID_227300E2_4F4B_4955_83B9_FA626CE8680B.svg +188 -0
- data/examples/xmi/Images/EAID_22C24D4C_4894_480a_B113_0CB034CB59E9.svg +426 -0
- data/examples/xmi/Images/EAID_234BC4F5_8100_4969_BDCB_A24E0E641F23.svg +169 -0
- data/examples/xmi/Images/EAID_24446BFC_9FEB_4935_8970_65A4C562A93F.svg +277 -0
- data/examples/xmi/Images/EAID_24E8A45C_C99F_49b7_860A_9CF65FF76C76.svg +575 -0
- data/examples/xmi/Images/EAID_272F3181_4300_48b7_98A0_A8CFD12B1A72.svg +255 -0
- data/examples/xmi/Images/EAID_292E0D94_392C_4da6_A0B5_841501FAE50A.svg +183 -0
- data/examples/xmi/Images/EAID_29DD0967_ADAB_4abb_99C5_544821F5E7DA.svg +10 -0
- data/examples/xmi/Images/EAID_2A339928_E5EF_4ed2_9E5D_CC2CA5CF248B.svg +310 -0
- data/examples/xmi/Images/EAID_2A5E0832_06BE_4381_85D4_9B00E4F95575.svg +155 -0
- data/examples/xmi/Images/EAID_2AAB709F_EFCE_496f_8AFE_92809D66A0A9.svg +81 -0
- data/examples/xmi/Images/EAID_2C8DD882_8DEA_4065_89F8_DDA796AA0C85.svg +520 -0
- data/examples/xmi/Images/EAID_2E98EA19_37D8_4b70_BDCE_CFEE4FA800B0.svg +173 -0
- data/examples/xmi/Images/EAID_30D62231_110F_44e8_9C06_6FCDCBA53A09.svg +722 -0
- data/examples/xmi/Images/EAID_3206D3FD_1FC4_41c7_8D00_36DB908E9319.svg +181 -0
- data/examples/xmi/Images/EAID_3452CC53_9ACB_44eb_9C9D_B90CF862F284.svg +92 -0
- data/examples/xmi/Images/EAID_348EE46E_ABD9_40b0_82A1_0285E75BDC52.svg +187 -0
- data/examples/xmi/Images/EAID_34FF671B_CFDC_47ad_91DF_ECA6D8358180.svg +217 -0
- data/examples/xmi/Images/EAID_359DD694_0100_4bdf_AD5F_712D97E9C69B.svg +157 -0
- data/examples/xmi/Images/EAID_35DE714C_49A8_490e_913A_56F39EF317F9.svg +180 -0
- data/examples/xmi/Images/EAID_360C79F1_8EDF_41db_A069_DECDC55625BC.svg +31 -0
- data/examples/xmi/Images/EAID_36913C58_FF35_4ba2_A04B_9A4824E24609.svg +166 -0
- data/examples/xmi/Images/EAID_372F7F7B_57ED_469a_A640_70DB578B3C56.svg +361 -0
- data/examples/xmi/Images/EAID_37AC19B9_8433_4fee_A326_763170D54D06.svg +32 -0
- data/examples/xmi/Images/EAID_38170608_32B5_4a6f_A68D_A0D7C0C9D019.svg +234 -0
- data/examples/xmi/Images/EAID_3A77A5D0_4E1B_4116_8AAD_407FC422B47F.svg +183 -0
- data/examples/xmi/Images/EAID_3B8BD087_1683_46b1_8D0D_6F839C46C578.svg +42 -0
- data/examples/xmi/Images/EAID_3DC20801_AE8B_4e76_B08C_F574E8A90E13.svg +192 -0
- data/examples/xmi/Images/EAID_3DE28C70_C6D4_406c_B49F_EEF52148C8C1.svg +124 -0
- data/examples/xmi/Images/EAID_458E093C_BA2B_4292_BEC4_37511C163DDC.svg +140 -0
- data/examples/xmi/Images/EAID_45F9B1F7_E568_47c9_B229_953BC2E707E4.svg +266 -0
- data/examples/xmi/Images/EAID_46B3041A_8C23_46e6_8E14_ADE7012274C5.svg +80 -0
- data/examples/xmi/Images/EAID_47E4600F_CEC9_4245_9BF5_EE38007A9DDB.svg +584 -0
- data/examples/xmi/Images/EAID_4881CEEE_792C_4cb0_BEA7_54333B643D0A.svg +155 -0
- data/examples/xmi/Images/EAID_48D364F0_DCA4_41e8_B4D4_509B3023B969.svg +17 -0
- data/examples/xmi/Images/EAID_4DBDAB9E_4C1C_4cb1_A767_06BD743A50A7.svg +78 -0
- data/examples/xmi/Images/EAID_4EB75007_B31D_4f2c_8855_7E9D3A3B17F4.svg +454 -0
- data/examples/xmi/Images/EAID_4F421236_FCF3_4aae_B22A_C7E6A5EFBAC7.svg +81 -0
- data/examples/xmi/Images/EAID_4FC1D352_2102_4b73_BCB0_1410B29C6BD7.svg +379 -0
- data/examples/xmi/Images/EAID_4FE346EA_01E1_4b30_8BE6_BB32EA191E47.svg +126 -0
- data/examples/xmi/Images/EAID_5038EEE3_7DD0_4cca_9829_364E044D37E8.svg +199 -0
- data/examples/xmi/Images/EAID_508A37DC_9378_4f5a_BD96_48F4D24E03A5.svg +162 -0
- data/examples/xmi/Images/EAID_516DA1A2_F0EC_415c_9664_E4CA54E7F05C.svg +136 -0
- data/examples/xmi/Images/EAID_52A1DBD3_D3DA_4b6d_8F96_FC6F39F64242.svg +161 -0
- data/examples/xmi/Images/EAID_575E87BA_32E9_4a84_AA4E_0EFDFC5D4C07.svg +71 -0
- data/examples/xmi/Images/EAID_57E0F1A0_6C72_47ef_B922_B806F9A875E8.svg +209 -0
- data/examples/xmi/Images/EAID_5957C373_3FC1_482f_8F35_D809153A17F5.svg +123 -0
- data/examples/xmi/Images/EAID_59A66AE2_412C_48a6_BFC7_EA56CF11D269.svg +218 -0
- data/examples/xmi/Images/EAID_5A43833E_680B_4a90_8931_0C902304E029.svg +236 -0
- data/examples/xmi/Images/EAID_5D6DB5A0_5047_4bac_9E60_69904A60B56D.svg +353 -0
- data/examples/xmi/Images/EAID_5DA1E7A7_8E59_4803_A831_E9F3EC27328F.svg +242 -0
- data/examples/xmi/Images/EAID_5E2C1E2A_82A8_47f4_B2ED_1398D72BFCFD.svg +246 -0
- data/examples/xmi/Images/EAID_6052620C_4BD5_49f6_A21C_AD7E6DCA2795.svg +290 -0
- data/examples/xmi/Images/EAID_6481E2CC_35A6_43b0_88D4_10A667A2BC2D.svg +60 -0
- data/examples/xmi/Images/EAID_660C7D03_A26C_4977_A7BA_9D0A773DA811.svg +318 -0
- data/examples/xmi/Images/EAID_671F3C3D_35B6_4514_B5B6_DD7E84925493.svg +24 -0
- data/examples/xmi/Images/EAID_676B9C9A_D85F_4d2f_A46B_73F02090DC87.svg +127 -0
- data/examples/xmi/Images/EAID_6797FEFA_5801_48e4_8B9C_3C824C0E165D.svg +412 -0
- data/examples/xmi/Images/EAID_6807F4EE_18EF_4e7e_ACCF_D5BD323AFDE9.svg +130 -0
- data/examples/xmi/Images/EAID_69E81E34_CF28_4c7f_A48F_5941BA85CEE3.svg +96 -0
- data/examples/xmi/Images/EAID_6A3C55E8_3C3C_4f3a_8AAC_0299C5B23070.svg +10 -0
- data/examples/xmi/Images/EAID_6BAC333E_E2C2_42c7_8DDF_6B4FA0FFC03B.svg +143 -0
- data/examples/xmi/Images/EAID_6D0349D5_3F1B_4b28_82D2_910743DEB5E5.svg +114 -0
- data/examples/xmi/Images/EAID_6E95B74E_8A09_4698_9E9E_23BCFD2CE194.svg +37 -0
- data/examples/xmi/Images/EAID_70C77F92_5614_4b22_8C8E_67859F59D8FD.svg +254 -0
- data/examples/xmi/Images/EAID_71F9216B_E7A7_4083_B08E_6C71B57F3A1F.svg +187 -0
- data/examples/xmi/Images/EAID_73025C5A_08FC_47ff_AB2F_C7F79CF54B41.svg +145 -0
- data/examples/xmi/Images/EAID_74C974B6_6D07_425d_B7AC_C8899E3B4967.svg +76 -0
- data/examples/xmi/Images/EAID_7504FCD2_524C_4e7d_BAE4_4E58A8A8A12C.svg +196 -0
- data/examples/xmi/Images/EAID_78030266_3603_4747_9D75_03D16614BE7D.svg +35 -0
- data/examples/xmi/Images/EAID_785226C1_12B1_4104_A4C1_F19B70B9FB71.svg +348 -0
- data/examples/xmi/Images/EAID_7854470F_26B8_4d3c_AFDF_C05BCE6ED0CD.svg +72 -0
- data/examples/xmi/Images/EAID_794F4A8F_18CA_4e9f_8477_A6F0E5ED22D4.svg +187 -0
- data/examples/xmi/Images/EAID_7A24839E_C8AE_424d_B7D2_6DA16DC813E7.svg +114 -0
- data/examples/xmi/Images/EAID_7A3649FD_E960_4ae6_B9B1_A9001C066AE7.svg +181 -0
- data/examples/xmi/Images/EAID_7B2C6765_AB68_439a_87F3_DAC323CB2AF5.svg +196 -0
- data/examples/xmi/Images/EAID_7C44AC09_27C1_47b3_9A85_88EC71C081FF.svg +55 -0
- data/examples/xmi/Images/EAID_7CE102CA_97C1_4cac_BD3B_0500D3712D2A.svg +195 -0
- data/examples/xmi/Images/EAID_7D960BD8_65D8_4934_9C11_4EF860DD8FBA.svg +90 -0
- data/examples/xmi/Images/EAID_80939C98_A456_48c3_BCEA_4B72851F2DF6.svg +174 -0
- data/examples/xmi/Images/EAID_812FE862_76ED_44f0_B678_7A4601B395CF.svg +142 -0
- data/examples/xmi/Images/EAID_81B76F5B_9D64_4bbf_8AC8_34234FB87533.svg +740 -0
- data/examples/xmi/Images/EAID_84352F1A_195B_411b_9552_5BFC40BF90B5.svg +105 -0
- data/examples/xmi/Images/EAID_846DD800_139C_4d47_A1DF_3FB1AC5D130F.svg +554 -0
- data/examples/xmi/Images/EAID_84A9C65B_FD6D_4bb5_818F_E8C35FF5BCD1.svg +228 -0
- data/examples/xmi/Images/EAID_853674F5_7DC9_4aae_809B_5728098B5D5B.svg +154 -0
- data/examples/xmi/Images/EAID_860CBBFB_2F27_408f_9144_751F9D1F487F.svg +273 -0
- data/examples/xmi/Images/EAID_87476527_7B9B_4b92_967E_3D38365470CA.svg +239 -0
- data/examples/xmi/Images/EAID_87DAE930_5069_4c58_AC65_4B0B2C0F32C8.svg +10 -0
- data/examples/xmi/Images/EAID_88AF6BD7_BC34_406f_BB59_47CFAB4A7D5D.svg +116 -0
- data/examples/xmi/Images/EAID_88D0CB44_20D0_44fc_A6E3_B663332EF401.svg +200 -0
- data/examples/xmi/Images/EAID_8BB1CA0C_C003_4678_973B_A1C3308E021D.svg +136 -0
- data/examples/xmi/Images/EAID_8DAB169F_D189_4320_A0F5_4443E3297F0E.svg +181 -0
- data/examples/xmi/Images/EAID_8FD488EF_BAAB_40ec_A7ED_F7CC831D546E.svg +324 -0
- data/examples/xmi/Images/EAID_90BCA409_BB45_42c5_AFA5_45FE3D995904.svg +342 -0
- data/examples/xmi/Images/EAID_926AFE38_01FA_469e_B6AA_ED5F4D62B66F.svg +105 -0
- data/examples/xmi/Images/EAID_92AB0FD0_B0FB_4ceb_8EAE_66B6600D31D7.svg +681 -0
- data/examples/xmi/Images/EAID_92C43670_3057_47f1_A576_C60843FF3D26.svg +136 -0
- data/examples/xmi/Images/EAID_93F63576_BE01_4cd8_8A91_C674FF77FC3D.svg +718 -0
- data/examples/xmi/Images/EAID_9400D9BC_05A5_41fc_83F7_02E5C67F9718.svg +487 -0
- data/examples/xmi/Images/EAID_95246DCF_1C09_4a16_9512_98000F56B3D8.svg +292 -0
- data/examples/xmi/Images/EAID_9994BF62_51E2_42cd_BB35_16C537B6718A.svg +715 -0
- data/examples/xmi/Images/EAID_9AAD6C21_B1E7_4472_B64A_FB5E3569D970.svg +116 -0
- data/examples/xmi/Images/EAID_9BD7189A_877B_4ca9_B42C_817DEF144FB2.svg +284 -0
- data/examples/xmi/Images/EAID_9DA6C553_94FC_4204_83AD_ECC4B45A53EF.svg +159 -0
- data/examples/xmi/Images/EAID_9EE6A41B_5FAA_4c89_B98F_732059778630.svg +10 -0
- data/examples/xmi/Images/EAID_9F1A4B54_46F6_435c_9529_E43E54CF6050.svg +172 -0
- data/examples/xmi/Images/EAID_9FE1EA7B_4CEF_4976_A281_93A94315BD84.svg +153 -0
- data/examples/xmi/Images/EAID_A0695647_6172_4262_8C30_67441399609C.svg +290 -0
- data/examples/xmi/Images/EAID_A081C63E_D6F2_41a7_A99C_307836754AFA.svg +149 -0
- data/examples/xmi/Images/EAID_A24E2778_5AD9_44f2_AB8F_5CD3913477D6.svg +194 -0
- data/examples/xmi/Images/EAID_A264F089_F9B3_406c_A3A8_FF34903797D3.svg +143 -0
- data/examples/xmi/Images/EAID_A282E5D1_2A13_4e7f_BC76_5D086DD4A577.svg +357 -0
- data/examples/xmi/Images/EAID_A3BCE1D6_9DB5_4272_A020_4C0E194B99CC.svg +171 -0
- data/examples/xmi/Images/EAID_A56E3818_D1B8_4b63_B69E_FBAC4A8AF482.svg +218 -0
- data/examples/xmi/Images/EAID_A57215D5_75C5_4532_BCF4_264A77CD62F1.svg +204 -0
- data/examples/xmi/Images/EAID_A59065AF_9669_486c_9582_9693177CFC7F.svg +263 -0
- data/examples/xmi/Images/EAID_A759374D_589A_488c_99EF_537ACB9B1FF9.svg +398 -0
- data/examples/xmi/Images/EAID_A7B25F46_F18A_4373_B16D_8C6AC0B868B0.svg +174 -0
- data/examples/xmi/Images/EAID_A9FE9E6F_A5F4_47e5_A6BA_26E22C7346B6.svg +310 -0
- data/examples/xmi/Images/EAID_AA62CDEB_55EC_498d_B326_4AA2C9AF6A05.svg +144 -0
- data/examples/xmi/Images/EAID_AAF52AF6_F7F9_4005_AE46_8920847BEA03.svg +144 -0
- data/examples/xmi/Images/EAID_AB281AC1_7CB8_404a_8124_34343DDD84E2.svg +198 -0
- data/examples/xmi/Images/EAID_AB7F1FDF_A66B_42a1_B8A3_7F594BAAD508.svg +143 -0
- data/examples/xmi/Images/EAID_AC2191E3_76E3_40b2_9E21_0E0B9B5277D2.svg +114 -0
- data/examples/xmi/Images/EAID_AD451676_A7C8_4c6a_A925_A9B9CA344142.svg +339 -0
- data/examples/xmi/Images/EAID_ADBA40A1_9375_4c1b_9938_0990612EB615.svg +429 -0
- data/examples/xmi/Images/EAID_ADC8773C_1B27_48ac_BAC1_14C1C919FAF6.svg +245 -0
- data/examples/xmi/Images/EAID_AE0718DF_AF69_4ea1_A099_E20028FE40A1.svg +173 -0
- data/examples/xmi/Images/EAID_B0DDB85D_A00C_4a7f_8C06_CCA15E5E4FE5.svg +31 -0
- data/examples/xmi/Images/EAID_B27ED282_D5E5_4f33_8AC1_62802F9E0B35.svg +256 -0
- data/examples/xmi/Images/EAID_B3AFECCB_17DD_44d6_8A44_2C38D9A64C0B.svg +95 -0
- data/examples/xmi/Images/EAID_B3B6C5B1_278E_4714_8244_B6C28B66AB50.svg +176 -0
- data/examples/xmi/Images/EAID_B53E76CD_A0F2_4e2f_B3AB_796D85964EF2.svg +179 -0
- data/examples/xmi/Images/EAID_B55D6E67_0BDD_4163_B359_11A6FBA89C74.svg +207 -0
- data/examples/xmi/Images/EAID_B58D1A53_E860_41a3_8352_11C274093E83.svg +189 -0
- data/examples/xmi/Images/EAID_B62C02B3_69DB_49e9_8089_4EE398BDE666.svg +165 -0
- data/examples/xmi/Images/EAID_BC008774_B539_4150_8174_B675989053D0.svg +22 -0
- data/examples/xmi/Images/EAID_BC1F7E00_082D_4a26_922B_3967A8D66859.svg +266 -0
- data/examples/xmi/Images/EAID_BDA613D8_402A_475a_AA15_683D88FD3D23.svg +183 -0
- data/examples/xmi/Images/EAID_C028B286_4C85_47d8_B6D5_80B28F556E82.svg +303 -0
- data/examples/xmi/Images/EAID_C173A6F4_1D1B_400e_AD8C_64FFF7CD5BE5.svg +178 -0
- data/examples/xmi/Images/EAID_C1834072_CADC_4ce4_B0FC_8284AE5CF4A4.svg +158 -0
- data/examples/xmi/Images/EAID_C1EC985B_5CBD_4e91_8661_EB4EF23781D9.svg +286 -0
- data/examples/xmi/Images/EAID_C31C1314_B679_4413_B8FE_A2CD584FC128.svg +305 -0
- data/examples/xmi/Images/EAID_C37CFBD6_69BA_42fb_9AC7_2D329D931BCF.svg +171 -0
- data/examples/xmi/Images/EAID_C857C934_306F_463a_87D5_257CB225ECFE.svg +174 -0
- data/examples/xmi/Images/EAID_C96797DE_2238_42d3_896A_9F92500270ED.svg +180 -0
- data/examples/xmi/Images/EAID_C96CBC24_B20E_459a_8F9D_75B61CDCB89F.svg +656 -0
- data/examples/xmi/Images/EAID_CACB523D_56A5_4f05_B3C2_51BB18F380FD.svg +158 -0
- data/examples/xmi/Images/EAID_CB34B578_101B_48b4_9271_214FFEA6A83A.svg +409 -0
- data/examples/xmi/Images/EAID_CBBD6CF4_0A1E_4406_9930_89DE43527910.svg +361 -0
- data/examples/xmi/Images/EAID_CC06A828_3750_472f_8DB2_C2E0863FCE17.svg +96 -0
- data/examples/xmi/Images/EAID_CD5CF053_1772_4a0f_962D_B17054D8EEAA.svg +173 -0
- data/examples/xmi/Images/EAID_CE440B5A_9534_4c75_9BA5_50862BB396C2.svg +97 -0
- data/examples/xmi/Images/EAID_CE4734FC_7986_4b3a_807F_A5B2C7EDE9E4.svg +193 -0
- data/examples/xmi/Images/EAID_D14AA320_9D41_4366_8739_9C2C21F96AE1.svg +32 -0
- data/examples/xmi/Images/EAID_D2FA55D3_C733_4a4d_92D0_0BC7AC0BB5BC.svg +108 -0
- data/examples/xmi/Images/EAID_D351FC34_FB03_488d_ADA4_BDB93DA9CB02.svg +49 -0
- data/examples/xmi/Images/EAID_D368FDF3_BDC5_4718_A701_351C8587A376.svg +592 -0
- data/examples/xmi/Images/EAID_D4DA8C48_3998_450d_87C4_9D65C9FECDB4.svg +42 -0
- data/examples/xmi/Images/EAID_D5464ECF_290E_4b2b_A6C4_25BE80F886CB.svg +76 -0
- data/examples/xmi/Images/EAID_D55235B0_61E9_461a_8379_2B8BF2403BE2.svg +147 -0
- data/examples/xmi/Images/EAID_D555ED73_F010_45d7_8A53_45A33C64C249.svg +318 -0
- data/examples/xmi/Images/EAID_D7AAC526_267E_45a0_A853_3207F02363F8.svg +45 -0
- data/examples/xmi/Images/EAID_D998B20D_A875_4ef8_A9CE_996BE56602BD.svg +158 -0
- data/examples/xmi/Images/EAID_DBFA8B39_F5B7_4c0e_9552_19AEAE5BA64E.svg +200 -0
- data/examples/xmi/Images/EAID_DE47A47D_E7BE_4e6f_BA81_F789EE8CFE72.svg +61 -0
- data/examples/xmi/Images/EAID_DFBB1072_8EC5_4384_8241_7EDF4B6B888B.svg +78 -0
- data/examples/xmi/Images/EAID_E325B9D8_E955_4aed_8125_63167BD40320.svg +67 -0
- data/examples/xmi/Images/EAID_E32D9D02_CAE9_4a47_92A8_3290EDCD6E6D.svg +79 -0
- data/examples/xmi/Images/EAID_E3B28611_7857_458a_B0BC_736E777B88EC.svg +194 -0
- data/examples/xmi/Images/EAID_E43C37EC_1176_4d2e_8B98_B6F3DFF6A092.svg +96 -0
- data/examples/xmi/Images/EAID_E591C1CF_7F35_4160_8A72_DFA097AD5811.svg +271 -0
- data/examples/xmi/Images/EAID_E77C66A2_2E94_4196_BFC6_662FE5AEEB6F.svg +332 -0
- data/examples/xmi/Images/EAID_E7AABA98_2450_4986_9736_DCCAF0108C50.svg +639 -0
- data/examples/xmi/Images/EAID_E7D9A2C4_72D6_40b9_8EB8_6B35476246B3.svg +134 -0
- data/examples/xmi/Images/EAID_E9CDAD85_ECF1_43de_819F_30A0D01785E6.svg +193 -0
- data/examples/xmi/Images/EAID_EC8AF507_F441_4e8a_B8A7_C1690F3C7D0B.svg +58 -0
- data/examples/xmi/Images/EAID_ED501058_D540_47ac_8EBC_5921E8C0BF57.svg +384 -0
- data/examples/xmi/Images/EAID_EFBF5F0F_DF74_4944_8791_114F5637C335.svg +590 -0
- data/examples/xmi/Images/EAID_EFFFA027_2A1F_425c_8437_BF89AADC8893.svg +365 -0
- data/examples/xmi/Images/EAID_F07E7718_B2C2_4a65_B5DD_477CB73E971E.svg +165 -0
- data/examples/xmi/Images/EAID_F0F20BDF_C729_47f7_B6FC_25ED2C4609CA.svg +61 -0
- data/examples/xmi/Images/EAID_F32E5AFE_8605_4c77_AE69_D0D0A6E380AC.svg +76 -0
- data/examples/xmi/Images/EAID_F3F00F45_CD37_46fd_B521_D1040EB2FB16.svg +123 -0
- data/examples/xmi/Images/EAID_F46E8F19_D8F1_4a3d_B87B_B0BAB4F50F50.svg +202 -0
- data/examples/xmi/Images/EAID_F48E5F6E_2411_4635_9315_3EAA4CFA29F7.svg +351 -0
- data/examples/xmi/Images/EAID_F4C23F9E_DD74_4fed_B75D_AD3C6448BA24.svg +189 -0
- data/examples/xmi/Images/EAID_F853B3C4_B145_4ef0_B261_C3CC0475B6D2.svg +215 -0
- data/examples/xmi/Images/EAID_F8BE68CA_1F8F_47e5_9454_01A2EB7D388A.svg +124 -0
- data/examples/xmi/Images/EAID_F92A6A28_612E_468e_9E39_D7AE7D24E24D.svg +208 -0
- data/examples/xmi/Images/EAID_F995FA49_B86E_4c94_BE5E_C928FB6B87D0.svg +302 -0
- data/examples/xmi/Images/EAID_FEAE013A_A4E4_4283_A491_1FEB8D0EBA28.svg +524 -0
- data/examples/xmi/Images/EAID_FEBE5726_3751_470b_9023_8C569202E97E.svg +730 -0
- data/examples/xmi/UML_EA.DTD +6856 -0
- data/examples/xmi/UmlModel_template.xmi +23 -0
- data/examples/xmi/basic.xmi +9086 -0
- data/examples/xmi/simple.xmi +655 -0
- data/examples/xmi/simple_example.xmi +23 -0
- data/examples/xmi/test.xmi +1703 -0
- data/exe/lutaml +2 -16
- data/exe/lutaml-wsd2uml +3 -3
- data/exe/lutaml-yaml2uml +2 -2
- data/lib/lutaml/cli/commands/base_command.rb +118 -0
- data/lib/lutaml/cli/element_identifier.rb +165 -0
- data/lib/lutaml/cli/enhanced_formatter.rb +502 -0
- data/lib/lutaml/cli/interactive_shell.rb +911 -0
- data/lib/lutaml/cli/lml_commands.rb +201 -0
- data/lib/lutaml/cli/output_formatter.rb +348 -0
- data/lib/lutaml/cli/resource_registry.rb +127 -0
- data/lib/lutaml/cli/tree_view_formatter.rb +308 -0
- data/lib/lutaml/cli/uml/build_command.rb +538 -0
- data/lib/lutaml/cli/uml/diagram_command.rb +421 -0
- data/lib/lutaml/cli/uml/export_command.rb +78 -0
- data/lib/lutaml/cli/uml/find_command.rb +122 -0
- data/lib/lutaml/cli/uml/info_command.rb +104 -0
- data/lib/lutaml/cli/uml/inspect_command.rb +88 -0
- data/lib/lutaml/cli/uml/ls_command.rb +105 -0
- data/lib/lutaml/cli/uml/repl_command.rb +50 -0
- data/lib/lutaml/cli/uml/search_command.rb +88 -0
- data/lib/lutaml/cli/uml/serve_command.rb +59 -0
- data/lib/lutaml/cli/uml/shared_helpers.rb +51 -0
- data/lib/lutaml/cli/uml/spa_command.rb +209 -0
- data/lib/lutaml/cli/uml/stats_command.rb +60 -0
- data/lib/lutaml/cli/uml/tree_command.rb +85 -0
- data/lib/lutaml/cli/uml/validate_command.rb +195 -0
- data/lib/lutaml/cli/uml/verify_command.rb +107 -0
- data/lib/lutaml/cli/uml_commands.rb +163 -0
- data/lib/lutaml/cli.rb +72 -0
- data/lib/lutaml/command_line.rb +8 -6
- data/lib/lutaml/converter/dsl_to_uml.rb +2 -0
- data/lib/lutaml/converter/xmi_to_uml.rb +40 -19
- data/lib/lutaml/ea/diagram/configuration.rb +379 -0
- data/lib/lutaml/ea/diagram/element_renderers/base_renderer.rb +81 -0
- data/lib/lutaml/ea/diagram/element_renderers/class_renderer.rb +330 -0
- data/lib/lutaml/ea/diagram/element_renderers/connector_renderer.rb +55 -0
- data/lib/lutaml/ea/diagram/element_renderers/package_renderer.rb +69 -0
- data/lib/lutaml/ea/diagram/extractor.rb +559 -0
- data/lib/lutaml/ea/diagram/layout_engine.rb +251 -0
- data/lib/lutaml/ea/diagram/path_builder.rb +258 -0
- data/lib/lutaml/ea/diagram/style_parser.rb +315 -0
- data/lib/lutaml/ea/diagram/style_resolver.rb +291 -0
- data/lib/lutaml/ea/diagram/svg_renderer.rb +285 -0
- data/lib/lutaml/ea/diagram/util.rb +69 -0
- data/lib/lutaml/ea/diagram.rb +77 -0
- data/lib/lutaml/express/parsers/exp.rb +1 -1
- data/lib/lutaml/express.rb +4 -2
- data/lib/lutaml/formatter/base.rb +6 -6
- data/lib/lutaml/formatter/graphviz.rb +10 -8
- data/lib/lutaml/formatter.rb +3 -0
- data/lib/lutaml/layout/engine.rb +9 -7
- data/lib/lutaml/layout/graph_viz_engine.rb +2 -1
- data/lib/lutaml/layout.rb +8 -0
- data/lib/lutaml/model_transformations/configuration.rb +333 -0
- data/lib/lutaml/model_transformations/format_registry.rb +394 -0
- data/lib/lutaml/model_transformations/parsers/base_parser.rb +389 -0
- data/lib/lutaml/model_transformations/parsers/qea_parser.rb +455 -0
- data/lib/lutaml/model_transformations/parsers/xmi_parser.rb +301 -0
- data/lib/lutaml/model_transformations/transformation_engine.rb +409 -0
- data/lib/lutaml/model_transformations.rb +143 -0
- data/lib/lutaml/parser.rb +15 -7
- data/lib/lutaml/qea/benchmark.rb +212 -0
- data/lib/lutaml/qea/database.rb +324 -0
- data/lib/lutaml/qea/factory/association_transformer.rb +115 -0
- data/lib/lutaml/qea/factory/attribute_tag_transformer.rb +60 -0
- data/lib/lutaml/qea/factory/attribute_transformer.rb +103 -0
- data/lib/lutaml/qea/factory/base_transformer.rb +132 -0
- data/lib/lutaml/qea/factory/class_transformer.rb +734 -0
- data/lib/lutaml/qea/factory/constraint_transformer.rb +78 -0
- data/lib/lutaml/qea/factory/data_type_transformer.rb +162 -0
- data/lib/lutaml/qea/factory/diagram_transformer.rb +182 -0
- data/lib/lutaml/qea/factory/document_builder.rb +275 -0
- data/lib/lutaml/qea/factory/ea_to_uml_factory.rb +260 -0
- data/lib/lutaml/qea/factory/enum_transformer.rb +87 -0
- data/lib/lutaml/qea/factory/generalization_transformer.rb +106 -0
- data/lib/lutaml/qea/factory/instance_transformer.rb +96 -0
- data/lib/lutaml/qea/factory/object_property_transformer.rb +61 -0
- data/lib/lutaml/qea/factory/operation_transformer.rb +75 -0
- data/lib/lutaml/qea/factory/package_transformer.rb +199 -0
- data/lib/lutaml/qea/factory/reference_resolver.rb +99 -0
- data/lib/lutaml/qea/factory/tagged_value_transformer.rb +41 -0
- data/lib/lutaml/qea/factory/transformer_registry.rb +85 -0
- data/lib/lutaml/qea/file_detector.rb +178 -0
- data/lib/lutaml/qea/infrastructure/database_connection.rb +100 -0
- data/lib/lutaml/qea/infrastructure/schema_reader.rb +136 -0
- data/lib/lutaml/qea/infrastructure/table_reader.rb +224 -0
- data/lib/lutaml/qea/models/base_model.rb +48 -0
- data/lib/lutaml/qea/models/ea_attribute.rb +135 -0
- data/lib/lutaml/qea/models/ea_attribute_tag.rb +109 -0
- data/lib/lutaml/qea/models/ea_complexity_type.rb +81 -0
- data/lib/lutaml/qea/models/ea_connector.rb +162 -0
- data/lib/lutaml/qea/models/ea_connector_type.rb +62 -0
- data/lib/lutaml/qea/models/ea_constraint_type.rb +65 -0
- data/lib/lutaml/qea/models/ea_datatype.rb +108 -0
- data/lib/lutaml/qea/models/ea_diagram.rb +117 -0
- data/lib/lutaml/qea/models/ea_diagram_link.rb +80 -0
- data/lib/lutaml/qea/models/ea_diagram_object.rb +86 -0
- data/lib/lutaml/qea/models/ea_diagram_type.rb +58 -0
- data/lib/lutaml/qea/models/ea_document.rb +68 -0
- data/lib/lutaml/qea/models/ea_object.rb +208 -0
- data/lib/lutaml/qea/models/ea_object_constraint.rb +62 -0
- data/lib/lutaml/qea/models/ea_object_property.rb +96 -0
- data/lib/lutaml/qea/models/ea_object_type.rb +75 -0
- data/lib/lutaml/qea/models/ea_operation.rb +153 -0
- data/lib/lutaml/qea/models/ea_operation_param.rb +73 -0
- data/lib/lutaml/qea/models/ea_package.rb +75 -0
- data/lib/lutaml/qea/models/ea_script.rb +69 -0
- data/lib/lutaml/qea/models/ea_status_type.rb +68 -0
- data/lib/lutaml/qea/models/ea_stereotype.rb +59 -0
- data/lib/lutaml/qea/models/ea_tagged_value.rb +105 -0
- data/lib/lutaml/qea/models/ea_xref.rb +174 -0
- data/lib/lutaml/qea/parser.rb +61 -0
- data/lib/lutaml/qea/repositories/base_repository.rb +215 -0
- data/lib/lutaml/qea/repositories/object_repository.rb +221 -0
- data/lib/lutaml/qea/services/configuration.rb +211 -0
- data/lib/lutaml/qea/services/database_loader.rb +215 -0
- data/lib/lutaml/qea/validation/association_validator.rb +75 -0
- data/lib/lutaml/qea/validation/attribute_validator.rb +103 -0
- data/lib/lutaml/qea/validation/base_validator.rb +305 -0
- data/lib/lutaml/qea/validation/class_validator.rb +123 -0
- data/lib/lutaml/qea/validation/database/circular_reference_validator.rb +111 -0
- data/lib/lutaml/qea/validation/database/orphan_validator.rb +155 -0
- data/lib/lutaml/qea/validation/database/referential_integrity_validator.rb +130 -0
- data/lib/lutaml/qea/validation/diagram_validator.rb +114 -0
- data/lib/lutaml/qea/validation/formatters/json_formatter.rb +137 -0
- data/lib/lutaml/qea/validation/formatters/text_formatter.rb +235 -0
- data/lib/lutaml/qea/validation/operation_validator.rb +81 -0
- data/lib/lutaml/qea/validation/package_validator.rb +113 -0
- data/lib/lutaml/qea/validation/validation_engine.rb +497 -0
- data/lib/lutaml/qea/validation/validation_message.rb +144 -0
- data/lib/lutaml/qea/validation/validation_result.rb +212 -0
- data/lib/lutaml/qea/validation/validator_registry.rb +134 -0
- data/lib/lutaml/qea/verification/comparison_result.rb +264 -0
- data/lib/lutaml/qea/verification/document_normalizer.rb +177 -0
- data/lib/lutaml/qea/verification/document_verifier.rb +320 -0
- data/lib/lutaml/qea/verification/element_comparator.rb +306 -0
- data/lib/lutaml/qea/verification/structure_matcher.rb +287 -0
- data/lib/lutaml/qea.rb +226 -0
- data/lib/lutaml/sysml/allocate.rb +2 -0
- data/lib/lutaml/sysml/allocated.rb +2 -0
- data/lib/lutaml/sysml/binding_connector.rb +2 -0
- data/lib/lutaml/sysml/block.rb +2 -0
- data/lib/lutaml/sysml/constraint_block.rb +2 -0
- data/lib/lutaml/sysml/copy.rb +2 -0
- data/lib/lutaml/sysml/derive_requirement.rb +2 -0
- data/lib/lutaml/sysml/nested_connector_end.rb +2 -0
- data/lib/lutaml/sysml/refine.rb +2 -0
- data/lib/lutaml/sysml/requirement.rb +2 -0
- data/lib/lutaml/sysml/requirement_related.rb +2 -0
- data/lib/lutaml/sysml/satisfy.rb +2 -0
- data/lib/lutaml/sysml/test_case.rb +2 -0
- data/lib/lutaml/sysml/trace.rb +2 -0
- data/lib/lutaml/sysml/verify.rb +2 -0
- data/lib/lutaml/sysml/xmi_file.rb +2 -0
- data/lib/lutaml/sysml.rb +3 -1
- data/lib/lutaml/uml/association.rb +4 -0
- data/lib/lutaml/uml/class.rb +11 -9
- data/lib/lutaml/uml/classifier.rb +3 -0
- data/lib/lutaml/uml/comment.rb +13 -0
- data/lib/lutaml/uml/data_type.rb +7 -6
- data/lib/lutaml/uml/diagram.rb +12 -0
- data/lib/lutaml/uml/diagram_link.rb +26 -0
- data/lib/lutaml/uml/diagram_object.rb +30 -0
- data/lib/lutaml/uml/document.rb +18 -0
- data/lib/lutaml/uml/enum.rb +4 -3
- data/lib/lutaml/uml/fontname.rb +13 -0
- data/lib/lutaml/uml/generalization.rb +2 -0
- data/lib/lutaml/uml/group.rb +2 -0
- data/lib/lutaml/uml/namespace.rb +2 -2
- data/lib/lutaml/uml/node/{field.rb → attribute.rb} +4 -4
- data/lib/lutaml/uml/node/base.rb +1 -1
- data/lib/lutaml/uml/node/class_node.rb +12 -12
- data/lib/lutaml/uml/node/class_relationship.rb +2 -2
- data/lib/lutaml/uml/node/document.rb +2 -2
- data/lib/lutaml/uml/node/method_argument.rb +3 -3
- data/lib/lutaml/uml/node/{method.rb → operation.rb} +4 -4
- data/lib/lutaml/uml/node/relationship.rb +3 -3
- data/lib/lutaml/uml/package.rb +7 -4
- data/lib/lutaml/uml/package_path.rb +235 -0
- data/lib/lutaml/uml/parsers/attribute.rb +2 -2
- data/lib/lutaml/uml/parsers/dsl.rb +3 -4
- data/lib/lutaml/uml/parsers/yaml.rb +1 -1
- data/lib/lutaml/uml/qualified_name.rb +178 -0
- data/lib/lutaml/uml/tagged_value.rb +21 -0
- data/lib/lutaml/uml/top_element.rb +7 -1
- data/lib/lutaml/uml/top_element_attribute.rb +4 -0
- data/lib/lutaml/uml/validation/document_structure_validator.rb +389 -0
- data/lib/lutaml/uml.rb +89 -45
- data/lib/lutaml/uml_repository/error_handler.rb +203 -0
- data/lib/lutaml/uml_repository/exporters/base_exporter.rb +61 -0
- data/lib/lutaml/uml_repository/exporters/json_exporter.rb +344 -0
- data/lib/lutaml/uml_repository/exporters/markdown_exporter.rb +598 -0
- data/lib/lutaml/uml_repository/index_builder.rb +460 -0
- data/lib/lutaml/uml_repository/lazy_repository.rb +238 -0
- data/lib/lutaml/uml_repository/package_exporter.rb +336 -0
- data/lib/lutaml/uml_repository/package_loader.rb +220 -0
- data/lib/lutaml/uml_repository/package_metadata.rb +77 -0
- data/lib/lutaml/uml_repository/presenters/association_presenter.rb +86 -0
- data/lib/lutaml/uml_repository/presenters/attribute_presenter.rb +101 -0
- data/lib/lutaml/uml_repository/presenters/class_presenter.rb +75 -0
- data/lib/lutaml/uml_repository/presenters/datatype_presenter.rb +108 -0
- data/lib/lutaml/uml_repository/presenters/diagram_presenter.rb +508 -0
- data/lib/lutaml/uml_repository/presenters/element_presenter.rb +92 -0
- data/lib/lutaml/uml_repository/presenters/enum_presenter.rb +83 -0
- data/lib/lutaml/uml_repository/presenters/package_presenter.rb +48 -0
- data/lib/lutaml/uml_repository/presenters/presenter_factory.rb +76 -0
- data/lib/lutaml/uml_repository/queries/association_query.rb +187 -0
- data/lib/lutaml/uml_repository/queries/base_query.rb +45 -0
- data/lib/lutaml/uml_repository/queries/class_query.rb +117 -0
- data/lib/lutaml/uml_repository/queries/diagram_query.rb +111 -0
- data/lib/lutaml/uml_repository/queries/inheritance_query.rb +259 -0
- data/lib/lutaml/uml_repository/queries/package_query.rb +239 -0
- data/lib/lutaml/uml_repository/queries/search_query.rb +357 -0
- data/lib/lutaml/uml_repository/query_dsl/conditions/base_condition.rb +28 -0
- data/lib/lutaml/uml_repository/query_dsl/conditions/block_condition.rb +46 -0
- data/lib/lutaml/uml_repository/query_dsl/conditions/hash_condition.rb +84 -0
- data/lib/lutaml/uml_repository/query_dsl/conditions/package_condition.rb +84 -0
- data/lib/lutaml/uml_repository/query_dsl/order.rb +90 -0
- data/lib/lutaml/uml_repository/query_dsl/query_builder.rb +296 -0
- data/lib/lutaml/uml_repository/repository.rb +764 -0
- data/lib/lutaml/uml_repository/repository_enhanced.rb +439 -0
- data/lib/lutaml/uml_repository/search_result.rb +86 -0
- data/lib/lutaml/uml_repository/static_site/configuration.rb +270 -0
- data/lib/lutaml/uml_repository/static_site/data_transformer.rb +967 -0
- data/lib/lutaml/uml_repository/static_site/generator.rb +401 -0
- data/lib/lutaml/uml_repository/static_site/id_generator.rb +115 -0
- data/lib/lutaml/uml_repository/static_site/search_index_builder.rb +317 -0
- data/lib/lutaml/uml_repository/static_site.rb +88 -0
- data/lib/lutaml/uml_repository/statistics_calculator.rb +334 -0
- data/lib/lutaml/uml_repository/validators/repository_validator.rb +404 -0
- data/lib/lutaml/uml_repository/web_ui/app.rb +144 -0
- data/lib/lutaml/uml_repository/web_ui/public/app.js +452 -0
- data/lib/lutaml/uml_repository/web_ui/public/styles.css +381 -0
- data/lib/lutaml/uml_repository/web_ui/views/index.erb +40 -0
- data/lib/lutaml/uml_repository.rb +97 -0
- data/lib/lutaml/version.rb +3 -1
- data/lib/lutaml/xmi/liquid_drops/association_drop.rb +60 -58
- data/lib/lutaml/xmi/liquid_drops/attribute_drop.rb +55 -53
- data/lib/lutaml/xmi/liquid_drops/cardinality_drop.rb +15 -13
- data/lib/lutaml/xmi/liquid_drops/connector_drop.rb +50 -46
- data/lib/lutaml/xmi/liquid_drops/constraint_drop.rb +19 -17
- data/lib/lutaml/xmi/liquid_drops/data_type_drop.rb +93 -90
- data/lib/lutaml/xmi/liquid_drops/dependency_drop.rb +26 -24
- data/lib/lutaml/xmi/liquid_drops/diagram_drop.rb +26 -24
- data/lib/lutaml/xmi/liquid_drops/enum_drop.rb +40 -37
- data/lib/lutaml/xmi/liquid_drops/enum_owned_literal_drop.rb +20 -18
- data/lib/lutaml/xmi/liquid_drops/generalization_attribute_drop.rb +64 -62
- data/lib/lutaml/xmi/liquid_drops/generalization_drop.rb +142 -140
- data/lib/lutaml/xmi/liquid_drops/klass_drop.rb +174 -170
- data/lib/lutaml/xmi/liquid_drops/operation_drop.rb +23 -21
- data/lib/lutaml/xmi/liquid_drops/package_drop.rb +95 -93
- data/lib/lutaml/xmi/liquid_drops/root_drop.rb +28 -25
- data/lib/lutaml/xmi/liquid_drops/source_target_drop.rb +39 -37
- data/lib/lutaml/xmi/parsers/xmi_base.rb +27 -17
- data/lib/lutaml/xmi/parsers/xml.rb +9 -9
- data/lib/lutaml/xmi.rb +37 -6
- data/lib/lutaml/xml/parsers/xml.rb +3 -1
- data/lib/lutaml/xml.rb +3 -1
- data/lib/lutaml.rb +14 -2
- data/lutaml.gemspec +16 -8
- data/plateau_all_packages.lur +0 -0
- data/templates/static_site/assets/scripts/app.js +45 -0
- data/templates/static_site/assets/scripts/core/state.js +419 -0
- data/templates/static_site/assets/scripts/core/utils.js +133 -0
- data/templates/static_site/assets/scripts/ui/details.js +74 -0
- data/templates/static_site/assets/scripts/ui/diagrams.js +345 -0
- data/templates/static_site/assets/scripts/ui/search.js +187 -0
- data/templates/static_site/assets/scripts/ui/sidebar.js +214 -0
- data/templates/static_site/assets/styles/00-variables.css +144 -0
- data/templates/static_site/assets/styles/01-reset.css +79 -0
- data/templates/static_site/assets/styles/02-base.css +149 -0
- data/templates/static_site/assets/styles/03-layout.css +171 -0
- data/templates/static_site/assets/styles/04-components.css +856 -0
- data/templates/static_site/assets/styles/05-utilities.css +89 -0
- data/templates/static_site/assets/styles/06-diagrams.css +277 -0
- data/templates/static_site/components/class_details.liquid +328 -0
- data/templates/static_site/components/content.liquid +508 -0
- data/templates/static_site/components/diagram_list.liquid +52 -0
- data/templates/static_site/components/diagram_viewer.liquid +71 -0
- data/templates/static_site/components/header.liquid +134 -0
- data/templates/static_site/components/package_details.liquid +119 -0
- data/templates/static_site/components/sidebar.liquid +46 -0
- data/templates/static_site/components/tree_node.liquid +81 -0
- data/templates/static_site/multi_file.liquid +46 -0
- data/templates/static_site/single_file.liquid +52 -0
- metadata +604 -31
- data/CODE_OF_CONDUCT.md +0 -74
- data/docs/lutaml-sysml.adoc +0 -10
|
@@ -0,0 +1,1364 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: QEA File Format
|
|
3
|
+
parent: File Formats
|
|
4
|
+
grand_parent: Reference
|
|
5
|
+
nav_order: 1
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
= Enterprise Architect QEA file format
|
|
9
|
+
:toc:
|
|
10
|
+
:toclevels: 3
|
|
11
|
+
|
|
12
|
+
== Purpose
|
|
13
|
+
|
|
14
|
+
This document describes the Enterprise Architect QEA file format and how LutaML parses and transforms it into UML models.
|
|
15
|
+
|
|
16
|
+
== General
|
|
17
|
+
|
|
18
|
+
=== What is QEA?
|
|
19
|
+
|
|
20
|
+
QEA (Quantified EA) is Enterprise Architect's native database format based on SQLite 3. It stores complete UML models including:
|
|
21
|
+
|
|
22
|
+
* Packages, classes, interfaces, enumerations, data types
|
|
23
|
+
* Attributes, operations, and parameters
|
|
24
|
+
* Associations, generalizations, and other relationships
|
|
25
|
+
* Diagrams with visual layout information
|
|
26
|
+
* EA-specific metadata (stereotypes, tagged values, constraints)
|
|
27
|
+
* Cross-references and extended properties
|
|
28
|
+
|
|
29
|
+
=== Why direct QEA parsing?
|
|
30
|
+
|
|
31
|
+
Direct QEA parsing offers significant advantages over XMI export:
|
|
32
|
+
|
|
33
|
+
Performance:: 10-20x faster than XMI parsing (1-2 seconds vs 20-40 seconds for a 20MB model)
|
|
34
|
+
No export step:: Parse directly from EA database without manual export
|
|
35
|
+
EA metadata:: Access to EA-specific information not available in standard XMI
|
|
36
|
+
Memory efficient:: Streams data from SQLite without loading entire file into memory
|
|
37
|
+
|
|
38
|
+
=== File structure
|
|
39
|
+
|
|
40
|
+
QEA files are SQLite 3 databases with a specific table schema defined by Enterprise Architect.
|
|
41
|
+
|
|
42
|
+
.QEA file characteristics
|
|
43
|
+
[source]
|
|
44
|
+
----
|
|
45
|
+
File Type: SQLite 3 database
|
|
46
|
+
Extension: .qea
|
|
47
|
+
Typical Size: 5-50MB for medium models
|
|
48
|
+
Tables: ~95 total tables (42 non-empty in typical models)
|
|
49
|
+
Encoding: UTF-8
|
|
50
|
+
----
|
|
51
|
+
|
|
52
|
+
== Architecture
|
|
53
|
+
|
|
54
|
+
=== Two-layer transformation pipeline
|
|
55
|
+
|
|
56
|
+
LutaML uses a strict two-layer architecture to transform QEA data into UML models:
|
|
57
|
+
|
|
58
|
+
[source]
|
|
59
|
+
----
|
|
60
|
+
┌────────────────────────────────────────────────────────────────┐
|
|
61
|
+
│ QEA DATABASE (SQLite) │
|
|
62
|
+
│ - Flat relational tables (t_object, t_connector, etc.) │
|
|
63
|
+
└────────────────────────────────────────────────────────────────┘
|
|
64
|
+
↓
|
|
65
|
+
┌────────────────────────────────────────────────────────────────┐
|
|
66
|
+
│ LAYER 1: QEA PARSE LAYER (Lutaml::Qea::Models) │
|
|
67
|
+
│ - EaObject, EaConnector, EaDiagram, etc. │
|
|
68
|
+
│ - Direct 1:1 mapping to database rows │
|
|
69
|
+
│ - Flat relational structure matching database schema │
|
|
70
|
+
└────────────────────────────────────────────────────────────────┘
|
|
71
|
+
↓
|
|
72
|
+
┌────────────────────────────────────────────────────────────────┐
|
|
73
|
+
│ TRANSFORMERS (Lutaml::Qea::Factory) │
|
|
74
|
+
│ - ClassTransformer, DiagramTransformer, etc. │
|
|
75
|
+
│ - Convert flat relational to tree-like structure │
|
|
76
|
+
│ - Resolve references and build relationships │
|
|
77
|
+
└────────────────────────────────────────────────────────────────┘
|
|
78
|
+
↓
|
|
79
|
+
┌────────────────────────────────────────────────────────────────┐
|
|
80
|
+
│ LAYER 2: UML DOMAIN LAYER (Lutaml::Uml) │
|
|
81
|
+
│ - Class (with nested Attribute[], Operation[], Constraint[]) │
|
|
82
|
+
│ - Package (with nested Package[], Class[]) │
|
|
83
|
+
│ - Diagram (with nested DiagramObject[], DiagramLink[]) │
|
|
84
|
+
│ - Tree-like structure with rich domain behavior │
|
|
85
|
+
└────────────────────────────────────────────────────────────────┘
|
|
86
|
+
----
|
|
87
|
+
|
|
88
|
+
=== Layer 1: QEA parse layer
|
|
89
|
+
|
|
90
|
+
==== General
|
|
91
|
+
|
|
92
|
+
The QEA parse layer provides direct representation of database tables as Ruby model objects.
|
|
93
|
+
|
|
94
|
+
Location:: [`lib/lutaml/qea/models/`](../lib/lutaml/qea/models/)
|
|
95
|
+
Purpose:: 1:1 mapping of SQLite rows to Ruby objects
|
|
96
|
+
Structure:: Flat relational data matching database schema
|
|
97
|
+
Base class:: [`Lutaml::Qea::Models::BaseModel`](../lib/lutaml/qea/models/base_model.rb)
|
|
98
|
+
|
|
99
|
+
==== Characteristics
|
|
100
|
+
|
|
101
|
+
* Each table maps to one model class
|
|
102
|
+
* Column names map directly to attributes
|
|
103
|
+
* No nested relationships (references stored as IDs)
|
|
104
|
+
* No business logic or domain behavior
|
|
105
|
+
* Serializable using `lutaml-model` gem
|
|
106
|
+
|
|
107
|
+
.Example QEA model class
|
|
108
|
+
[source,ruby]
|
|
109
|
+
----
|
|
110
|
+
class EaObject < BaseModel
|
|
111
|
+
attribute :object_id, :integer
|
|
112
|
+
attribute :object_type, :string
|
|
113
|
+
attribute :name, :string
|
|
114
|
+
attribute :package_id, :integer # Foreign key, not resolved
|
|
115
|
+
attribute :stereotype, :string
|
|
116
|
+
# ... additional attributes matching database columns
|
|
117
|
+
end
|
|
118
|
+
----
|
|
119
|
+
|
|
120
|
+
=== Layer 2: UML domain layer
|
|
121
|
+
|
|
122
|
+
==== General
|
|
123
|
+
|
|
124
|
+
The UML domain layer provides rich, hierarchical UML model objects.
|
|
125
|
+
|
|
126
|
+
Location:: [`lib/lutaml/uml/`](../lib/lutaml/uml/)
|
|
127
|
+
Purpose:: Tree-like domain model with nested object hierarchies
|
|
128
|
+
Structure:: Objects contain child objects (not just IDs)
|
|
129
|
+
Namespace:: ALL UML elements MUST be in `Lutaml::Uml` namespace
|
|
130
|
+
|
|
131
|
+
==== Characteristics
|
|
132
|
+
|
|
133
|
+
* Hierarchical structure with parent-child relationships
|
|
134
|
+
* Resolved references (objects contain other objects, not IDs)
|
|
135
|
+
* Domain-specific behavior and methods
|
|
136
|
+
* Follows UML metamodel conventions
|
|
137
|
+
* Used by all LutaML consumers
|
|
138
|
+
|
|
139
|
+
.Example UML domain class
|
|
140
|
+
[source,ruby]
|
|
141
|
+
----
|
|
142
|
+
class Class
|
|
143
|
+
attribute :name, :string
|
|
144
|
+
attribute :attributes, Attribute, collection: true # Nested objects
|
|
145
|
+
attribute :operations, Operation, collection: true # Nested objects
|
|
146
|
+
attribute :constraints, Constraint, collection: true # Nested objects
|
|
147
|
+
attribute :generalizations, Generalization, collection: true
|
|
148
|
+
# Rich domain behavior...
|
|
149
|
+
end
|
|
150
|
+
----
|
|
151
|
+
|
|
152
|
+
=== Transformation layer
|
|
153
|
+
|
|
154
|
+
==== General
|
|
155
|
+
|
|
156
|
+
Transformers convert QEA models to UML domain objects.
|
|
157
|
+
|
|
158
|
+
Location:: [`lib/lutaml/qea/factory/`](../lib/lutaml/qea/factory/)
|
|
159
|
+
Purpose:: Convert flat relational data to tree-like domain model
|
|
160
|
+
Base class:: [`Lutaml::Qea::Factory::BaseTransformer`](../lib/lutaml/qea/factory/base_transformer.rb)
|
|
161
|
+
|
|
162
|
+
==== Transformation responsibilities
|
|
163
|
+
|
|
164
|
+
Reference resolution:: Convert object IDs to actual object references
|
|
165
|
+
Hierarchy building:: Create parent-child relationships
|
|
166
|
+
Data mapping:: Map EA concepts to UML metamodel
|
|
167
|
+
Validation:: Ensure data integrity during transformation
|
|
168
|
+
|
|
169
|
+
.Example transformer
|
|
170
|
+
[source,ruby]
|
|
171
|
+
----
|
|
172
|
+
class ClassTransformer < BaseTransformer
|
|
173
|
+
def transform(ea_object, database)
|
|
174
|
+
uml_class = Lutaml::Uml::Class.new
|
|
175
|
+
uml_class.name = ea_object.name
|
|
176
|
+
|
|
177
|
+
# Resolve attributes (nested objects, not IDs)
|
|
178
|
+
uml_class.attributes = load_attributes(ea_object.object_id, database)
|
|
179
|
+
|
|
180
|
+
# Resolve operations
|
|
181
|
+
uml_class.operations = load_operations(ea_object.object_id, database)
|
|
182
|
+
|
|
183
|
+
# Resolve constraints
|
|
184
|
+
uml_class.constraints = load_constraints(ea_object.object_id, database)
|
|
185
|
+
|
|
186
|
+
uml_class
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
----
|
|
190
|
+
|
|
191
|
+
== Implemented tables
|
|
192
|
+
|
|
193
|
+
=== Core UML tables
|
|
194
|
+
|
|
195
|
+
These tables are fully implemented and provide the essential UML model structure.
|
|
196
|
+
|
|
197
|
+
==== t_object - UML objects
|
|
198
|
+
|
|
199
|
+
Primary key:: `Object_ID`
|
|
200
|
+
Purpose:: Classes, interfaces, enumerations, data types, and other UML objects
|
|
201
|
+
Row count:: Typically 500-1000+ in production models
|
|
202
|
+
UML mapping:: [`Lutaml::Uml::Class`](../lib/lutaml/uml/class.rb), [`Lutaml::Uml::Enum`](../lib/lutaml/uml/enum.rb), [`Lutaml::Uml::DataType`](../lib/lutaml/uml/data_type.rb)
|
|
203
|
+
|
|
204
|
+
.Key columns
|
|
205
|
+
[cols="1,2,3"]
|
|
206
|
+
|===
|
|
207
|
+
|Column |Type |Purpose
|
|
208
|
+
|
|
209
|
+
|`Object_ID`
|
|
210
|
+
|INTEGER
|
|
211
|
+
|Primary key
|
|
212
|
+
|
|
213
|
+
|`Object_Type`
|
|
214
|
+
|TEXT
|
|
215
|
+
|"Class", "Interface", "Enumeration", etc.
|
|
216
|
+
|
|
217
|
+
|`Name`
|
|
218
|
+
|TEXT
|
|
219
|
+
|Element name
|
|
220
|
+
|
|
221
|
+
|`Package_ID`
|
|
222
|
+
|INTEGER
|
|
223
|
+
|Parent package reference
|
|
224
|
+
|
|
225
|
+
|`Stereotype`
|
|
226
|
+
|TEXT
|
|
227
|
+
|UML stereotype (e.g., "featureType")
|
|
228
|
+
|
|
229
|
+
|`Abstract`
|
|
230
|
+
|TEXT
|
|
231
|
+
|"1" if abstract class
|
|
232
|
+
|
|
233
|
+
|`ea_guid`
|
|
234
|
+
|TEXT
|
|
235
|
+
|Enterprise Architect GUID
|
|
236
|
+
|
|
237
|
+
|`Classifier`
|
|
238
|
+
|INTEGER
|
|
239
|
+
|Type reference for typed elements
|
|
240
|
+
|===
|
|
241
|
+
|
|
242
|
+
==== t_attribute - Class attributes
|
|
243
|
+
|
|
244
|
+
Primary key:: `ID`
|
|
245
|
+
Purpose:: Attributes (fields/properties) of UML classes
|
|
246
|
+
Row count:: Typically 1500-2500+ in production models
|
|
247
|
+
UML mapping:: [`Lutaml::Uml::Attribute`](../lib/lutaml/uml/attribute.rb)
|
|
248
|
+
|
|
249
|
+
.Key columns
|
|
250
|
+
[cols="1,2,3"]
|
|
251
|
+
|===
|
|
252
|
+
|Column |Type |Purpose
|
|
253
|
+
|
|
254
|
+
|`ID`
|
|
255
|
+
|INTEGER
|
|
256
|
+
|Primary key
|
|
257
|
+
|
|
258
|
+
|`Object_ID`
|
|
259
|
+
|INTEGER
|
|
260
|
+
|Owner class reference
|
|
261
|
+
|
|
262
|
+
|`Name`
|
|
263
|
+
|TEXT
|
|
264
|
+
|Attribute name
|
|
265
|
+
|
|
266
|
+
|`Type`
|
|
267
|
+
|TEXT
|
|
268
|
+
|Attribute type
|
|
269
|
+
|
|
270
|
+
|`Scope`
|
|
271
|
+
|TEXT
|
|
272
|
+
|Visibility ("Public", "Private", etc.)
|
|
273
|
+
|
|
274
|
+
|`Stereotype`
|
|
275
|
+
|TEXT
|
|
276
|
+
|Attribute stereotype
|
|
277
|
+
|
|
278
|
+
|`LowerBound`
|
|
279
|
+
|TEXT
|
|
280
|
+
|Minimum cardinality
|
|
281
|
+
|
|
282
|
+
|`UpperBound`
|
|
283
|
+
|TEXT
|
|
284
|
+
|Maximum cardinality
|
|
285
|
+
|
|
286
|
+
|`IsStatic`
|
|
287
|
+
|INTEGER
|
|
288
|
+
|1 if static attribute
|
|
289
|
+
|
|
290
|
+
|`Classifier`
|
|
291
|
+
|TEXT
|
|
292
|
+
|Type classifier reference
|
|
293
|
+
|===
|
|
294
|
+
|
|
295
|
+
==== t_operation - Class operations
|
|
296
|
+
|
|
297
|
+
Primary key:: `OperationID`
|
|
298
|
+
Purpose:: Methods/operations of UML classes
|
|
299
|
+
Row count:: Varies (0-500+ depending on model)
|
|
300
|
+
UML mapping:: [`Lutaml::Uml::Operation`](../lib/lutaml/uml/operation.rb)
|
|
301
|
+
|
|
302
|
+
.Key columns
|
|
303
|
+
[cols="1,2,3"]
|
|
304
|
+
|===
|
|
305
|
+
|Column |Type |Purpose
|
|
306
|
+
|
|
307
|
+
|`OperationID`
|
|
308
|
+
|INTEGER
|
|
309
|
+
|Primary key
|
|
310
|
+
|
|
311
|
+
|`Object_ID`
|
|
312
|
+
|INTEGER
|
|
313
|
+
|Owner class reference
|
|
314
|
+
|
|
315
|
+
|`Name`
|
|
316
|
+
|TEXT
|
|
317
|
+
|Operation name
|
|
318
|
+
|
|
319
|
+
|`Type`
|
|
320
|
+
|TEXT
|
|
321
|
+
|Return type
|
|
322
|
+
|
|
323
|
+
|`Scope`
|
|
324
|
+
|TEXT
|
|
325
|
+
|Visibility
|
|
326
|
+
|
|
327
|
+
|`Stereotype`
|
|
328
|
+
|TEXT
|
|
329
|
+
|Operation stereotype
|
|
330
|
+
|
|
331
|
+
|`IsStatic`
|
|
332
|
+
|INTEGER
|
|
333
|
+
|1 if static method
|
|
334
|
+
|
|
335
|
+
|`Abstract`
|
|
336
|
+
|TEXT
|
|
337
|
+
|1 if abstract operation
|
|
338
|
+
|===
|
|
339
|
+
|
|
340
|
+
==== t_operationparams - Operation parameters
|
|
341
|
+
|
|
342
|
+
Primary key:: `OperationID` + `Pos`
|
|
343
|
+
Purpose:: Parameters of operations/methods
|
|
344
|
+
Row count:: Varies based on operations
|
|
345
|
+
UML mapping:: [`Lutaml::Uml::Parameter`](../lib/lutaml/uml/parameter.rb)
|
|
346
|
+
|
|
347
|
+
.Key columns
|
|
348
|
+
[cols="1,2,3"]
|
|
349
|
+
|===
|
|
350
|
+
|Column |Type |Purpose
|
|
351
|
+
|
|
352
|
+
|`OperationID`
|
|
353
|
+
|INTEGER
|
|
354
|
+
|Parent operation reference
|
|
355
|
+
|
|
356
|
+
|`Name`
|
|
357
|
+
|TEXT
|
|
358
|
+
|Parameter name
|
|
359
|
+
|
|
360
|
+
|`Type`
|
|
361
|
+
|TEXT
|
|
362
|
+
|Parameter type
|
|
363
|
+
|
|
364
|
+
|`Default`
|
|
365
|
+
|TEXT
|
|
366
|
+
|Default value
|
|
367
|
+
|
|
368
|
+
|`Pos`
|
|
369
|
+
|INTEGER
|
|
370
|
+
|Parameter position
|
|
371
|
+
|
|
372
|
+
|`Kind`
|
|
373
|
+
|TEXT
|
|
374
|
+
|Parameter direction ("in", "out", etc.)
|
|
375
|
+
|===
|
|
376
|
+
|
|
377
|
+
==== t_connector - Relationships
|
|
378
|
+
|
|
379
|
+
Primary key:: `Connector_ID`
|
|
380
|
+
Purpose:: Associations, generalizations, dependencies, and other relationships
|
|
381
|
+
Row count:: Typically 800-1200+ in production models
|
|
382
|
+
UML mapping:: [`Lutaml::Uml::Association`](../lib/lutaml/uml/association.rb), [`Lutaml::Uml::Generalization`](../lib/lutaml/uml/generalization.rb)
|
|
383
|
+
|
|
384
|
+
.Key columns
|
|
385
|
+
[cols="1,2,3"]
|
|
386
|
+
|===
|
|
387
|
+
|Column |Type |Purpose
|
|
388
|
+
|
|
389
|
+
|`Connector_ID`
|
|
390
|
+
|INTEGER
|
|
391
|
+
|Primary key
|
|
392
|
+
|
|
393
|
+
|`Connector_Type`
|
|
394
|
+
|TEXT
|
|
395
|
+
|"Association", "Generalization", "Aggregation", etc.
|
|
396
|
+
|
|
397
|
+
|`Start_Object_ID`
|
|
398
|
+
|INTEGER
|
|
399
|
+
|Source element
|
|
400
|
+
|
|
401
|
+
|`End_Object_ID`
|
|
402
|
+
|INTEGER
|
|
403
|
+
|Target element
|
|
404
|
+
|
|
405
|
+
|`SourceRole`
|
|
406
|
+
|TEXT
|
|
407
|
+
|Source role name
|
|
408
|
+
|
|
409
|
+
|`DestRole`
|
|
410
|
+
|TEXT
|
|
411
|
+
|Target role name
|
|
412
|
+
|
|
413
|
+
|`SourceCard`
|
|
414
|
+
|TEXT
|
|
415
|
+
|Source cardinality ("0..1", "1..*", etc.)
|
|
416
|
+
|
|
417
|
+
|`DestCard`
|
|
418
|
+
|TEXT
|
|
419
|
+
|Target cardinality
|
|
420
|
+
|
|
421
|
+
|`Direction`
|
|
422
|
+
|TEXT
|
|
423
|
+
|Association direction
|
|
424
|
+
|===
|
|
425
|
+
|
|
426
|
+
==== t_package - Package hierarchy
|
|
427
|
+
|
|
428
|
+
Primary key:: `Package_ID`
|
|
429
|
+
Purpose:: Package organization and hierarchy
|
|
430
|
+
Row count:: Typically 50-100+ in production models
|
|
431
|
+
UML mapping:: [`Lutaml::Uml::Package`](../lib/lutaml/uml/package.rb)
|
|
432
|
+
|
|
433
|
+
.Key columns
|
|
434
|
+
[cols="1,2,3"]
|
|
435
|
+
|===
|
|
436
|
+
|Column |Type |Purpose
|
|
437
|
+
|
|
438
|
+
|`Package_ID`
|
|
439
|
+
|INTEGER
|
|
440
|
+
|Primary key
|
|
441
|
+
|
|
442
|
+
|`Name`
|
|
443
|
+
|TEXT
|
|
444
|
+
|Package name
|
|
445
|
+
|
|
446
|
+
|`Parent_ID`
|
|
447
|
+
|INTEGER
|
|
448
|
+
|Parent package reference (NULL for root)
|
|
449
|
+
|
|
450
|
+
|`ea_guid`
|
|
451
|
+
|TEXT
|
|
452
|
+
|Enterprise Architect GUID
|
|
453
|
+
|
|
454
|
+
|`Notes`
|
|
455
|
+
|TEXT
|
|
456
|
+
|Package documentation
|
|
457
|
+
|
|
458
|
+
|`TPos`
|
|
459
|
+
|INTEGER
|
|
460
|
+
|Tree position for ordering
|
|
461
|
+
|===
|
|
462
|
+
|
|
463
|
+
=== Diagram tables
|
|
464
|
+
|
|
465
|
+
These tables store diagram definitions and visual layout information.
|
|
466
|
+
|
|
467
|
+
==== t_diagram - Diagram definitions
|
|
468
|
+
|
|
469
|
+
Primary key:: `Diagram_ID`
|
|
470
|
+
Purpose:: UML diagram metadata
|
|
471
|
+
Row count:: Typically 100-300+ in production models
|
|
472
|
+
UML mapping:: [`Lutaml::Uml::Diagram`](../lib/lutaml/uml/diagram.rb)
|
|
473
|
+
|
|
474
|
+
.Key columns
|
|
475
|
+
[cols="1,2,3"]
|
|
476
|
+
|===
|
|
477
|
+
|Column |Type |Purpose
|
|
478
|
+
|
|
479
|
+
|`Diagram_ID`
|
|
480
|
+
|INTEGER
|
|
481
|
+
|Primary key
|
|
482
|
+
|
|
483
|
+
|`Package_ID`
|
|
484
|
+
|INTEGER
|
|
485
|
+
|Containing package
|
|
486
|
+
|
|
487
|
+
|`Name`
|
|
488
|
+
|TEXT
|
|
489
|
+
|Diagram name
|
|
490
|
+
|
|
491
|
+
|`Diagram_Type`
|
|
492
|
+
|TEXT
|
|
493
|
+
|"Logical", "Use Case", "Class", etc.
|
|
494
|
+
|
|
495
|
+
|`Notes`
|
|
496
|
+
|TEXT
|
|
497
|
+
|Diagram documentation
|
|
498
|
+
|
|
499
|
+
|`ea_guid`
|
|
500
|
+
|TEXT
|
|
501
|
+
|Enterprise Architect GUID
|
|
502
|
+
|===
|
|
503
|
+
|
|
504
|
+
==== t_diagramobjects - Element placement
|
|
505
|
+
|
|
506
|
+
Primary key:: `Instance_ID`
|
|
507
|
+
Purpose:: Visual placement of elements on diagrams
|
|
508
|
+
Row count:: Typically 1500-2500+ in production models
|
|
509
|
+
UML mapping:: [`Lutaml::Uml::Diagram::DiagramObject`](../lib/lutaml/uml/diagram.rb) (nested class)
|
|
510
|
+
|
|
511
|
+
.Key columns
|
|
512
|
+
[cols="1,2,3"]
|
|
513
|
+
|===
|
|
514
|
+
|Column |Type |Purpose
|
|
515
|
+
|
|
516
|
+
|`Instance_ID`
|
|
517
|
+
|INTEGER
|
|
518
|
+
|Primary key
|
|
519
|
+
|
|
520
|
+
|`Diagram_ID`
|
|
521
|
+
|INTEGER
|
|
522
|
+
|Parent diagram
|
|
523
|
+
|
|
524
|
+
|`Object_ID`
|
|
525
|
+
|INTEGER
|
|
526
|
+
|Element being displayed
|
|
527
|
+
|
|
528
|
+
|`RectTop`
|
|
529
|
+
|INTEGER
|
|
530
|
+
|Y coordinate
|
|
531
|
+
|
|
532
|
+
|`RectLeft`
|
|
533
|
+
|INTEGER
|
|
534
|
+
|X coordinate
|
|
535
|
+
|
|
536
|
+
|`RectRight`
|
|
537
|
+
|INTEGER
|
|
538
|
+
|Right edge X
|
|
539
|
+
|
|
540
|
+
|`RectBottom`
|
|
541
|
+
|INTEGER
|
|
542
|
+
|Bottom edge Y
|
|
543
|
+
|
|
544
|
+
|`ObjectStyle`
|
|
545
|
+
|TEXT
|
|
546
|
+
|Visual styling properties
|
|
547
|
+
|===
|
|
548
|
+
|
|
549
|
+
==== t_diagramlinks - Connector routing
|
|
550
|
+
|
|
551
|
+
Primary key:: `Instance_ID`
|
|
552
|
+
Purpose:: Visual routing of connectors on diagrams
|
|
553
|
+
Row count:: Typically 1500-2500+ in production models
|
|
554
|
+
UML mapping:: [`Lutaml::Uml::Diagram::DiagramLink`](../lib/lutaml/uml/diagram.rb) (nested class)
|
|
555
|
+
|
|
556
|
+
.Key columns
|
|
557
|
+
[cols="1,2,3"]
|
|
558
|
+
|===
|
|
559
|
+
|Column |Type |Purpose
|
|
560
|
+
|
|
561
|
+
|`Instance_ID`
|
|
562
|
+
|INTEGER
|
|
563
|
+
|Primary key
|
|
564
|
+
|
|
565
|
+
|`DiagramID`
|
|
566
|
+
|INTEGER
|
|
567
|
+
|Parent diagram
|
|
568
|
+
|
|
569
|
+
|`ConnectorID`
|
|
570
|
+
|INTEGER
|
|
571
|
+
|Connector being displayed
|
|
572
|
+
|
|
573
|
+
|`Geometry`
|
|
574
|
+
|TEXT
|
|
575
|
+
|Line routing coordinates
|
|
576
|
+
|
|
577
|
+
|`Path`
|
|
578
|
+
|TEXT
|
|
579
|
+
|Waypoint path
|
|
580
|
+
|
|
581
|
+
|`Hidden`
|
|
582
|
+
|INTEGER
|
|
583
|
+
|1 if hidden on diagram
|
|
584
|
+
|
|
585
|
+
|`Style`
|
|
586
|
+
|TEXT
|
|
587
|
+
|Visual styling
|
|
588
|
+
|===
|
|
589
|
+
|
|
590
|
+
=== Metadata tables
|
|
591
|
+
|
|
592
|
+
These tables store additional semantic information beyond core UML.
|
|
593
|
+
|
|
594
|
+
==== t_objectconstraint - OCL constraints
|
|
595
|
+
|
|
596
|
+
Primary key:: `ConstraintID`
|
|
597
|
+
Purpose:: OCL and other formal constraints on classes
|
|
598
|
+
Row count:: Typically 0-20 in models with constraints
|
|
599
|
+
UML mapping:: [`Lutaml::Uml::Constraint`](../lib/lutaml/uml/constraint.rb)
|
|
600
|
+
|
|
601
|
+
.Key columns
|
|
602
|
+
[cols="1,2,3"]
|
|
603
|
+
|===
|
|
604
|
+
|Column |Type |Purpose
|
|
605
|
+
|
|
606
|
+
|`ConstraintID`
|
|
607
|
+
|INTEGER
|
|
608
|
+
|Primary key
|
|
609
|
+
|
|
610
|
+
|`Object_ID`
|
|
611
|
+
|INTEGER
|
|
612
|
+
|Constrained element
|
|
613
|
+
|
|
614
|
+
|`Constraint`
|
|
615
|
+
|TEXT
|
|
616
|
+
|OCL expression or constraint text
|
|
617
|
+
|
|
618
|
+
|`ConstraintType`
|
|
619
|
+
|TEXT
|
|
620
|
+
|"Invariant", "Pre-condition", "Post-condition"
|
|
621
|
+
|
|
622
|
+
|`Weight`
|
|
623
|
+
|REAL
|
|
624
|
+
|Constraint priority/weight
|
|
625
|
+
|
|
626
|
+
|`Status`
|
|
627
|
+
|TEXT
|
|
628
|
+
|"Approved", "Proposed", etc.
|
|
629
|
+
|===
|
|
630
|
+
|
|
631
|
+
.Example OCL constraint
|
|
632
|
+
[source]
|
|
633
|
+
----
|
|
634
|
+
count(self.legalConstraints.accessConstraints) >= 1
|
|
635
|
+
----
|
|
636
|
+
|
|
637
|
+
==== t_taggedvalue - Tagged values
|
|
638
|
+
|
|
639
|
+
Primary key:: `PropertyID`
|
|
640
|
+
Purpose:: Custom metadata on UML elements
|
|
641
|
+
Row count:: Typically 1000-1500+ in production models
|
|
642
|
+
UML mapping:: Embedded as metadata in UML elements
|
|
643
|
+
|
|
644
|
+
.Key columns
|
|
645
|
+
[cols="1,2,3"]
|
|
646
|
+
|===
|
|
647
|
+
|Column |Type |Purpose
|
|
648
|
+
|
|
649
|
+
|`PropertyID`
|
|
650
|
+
|TEXT
|
|
651
|
+
|Primary key
|
|
652
|
+
|
|
653
|
+
|`ElementID`
|
|
654
|
+
|TEXT
|
|
655
|
+
|Tagged element
|
|
656
|
+
|
|
657
|
+
|`BaseClass`
|
|
658
|
+
|TEXT
|
|
659
|
+
|Element type ("Class", "Attribute", etc.)
|
|
660
|
+
|
|
661
|
+
|`TagValue`
|
|
662
|
+
|TEXT
|
|
663
|
+
|Tag name
|
|
664
|
+
|
|
665
|
+
|`Notes`
|
|
666
|
+
|TEXT
|
|
667
|
+
|Tag value
|
|
668
|
+
|===
|
|
669
|
+
|
|
670
|
+
==== t_objectproperties - Object properties
|
|
671
|
+
|
|
672
|
+
Primary key:: `PropertyID`
|
|
673
|
+
Purpose:: Object-level properties (GML/XML Schema metadata)
|
|
674
|
+
Row count:: Typically 1500-2000+ in ISO 19xxx models
|
|
675
|
+
UML mapping:: Embedded as properties in UML elements
|
|
676
|
+
|
|
677
|
+
.Key columns
|
|
678
|
+
[cols="1,2,3"]
|
|
679
|
+
|===
|
|
680
|
+
|Column |Type |Purpose
|
|
681
|
+
|
|
682
|
+
|`PropertyID`
|
|
683
|
+
|INTEGER
|
|
684
|
+
|Primary key
|
|
685
|
+
|
|
686
|
+
|`Object_ID`
|
|
687
|
+
|INTEGER
|
|
688
|
+
|Owner object
|
|
689
|
+
|
|
690
|
+
|`Property`
|
|
691
|
+
|TEXT
|
|
692
|
+
|Property name
|
|
693
|
+
|
|
694
|
+
|`Value`
|
|
695
|
+
|TEXT
|
|
696
|
+
|Property value
|
|
697
|
+
|
|
698
|
+
|`Notes`
|
|
699
|
+
|TEXT
|
|
700
|
+
|Property documentation
|
|
701
|
+
|===
|
|
702
|
+
|
|
703
|
+
==== t_attributetag - Attribute tags
|
|
704
|
+
|
|
705
|
+
Primary key:: `PropertyID`
|
|
706
|
+
Purpose:: Attribute-level tags (GML/XML Schema metadata)
|
|
707
|
+
Row count:: Typically 100-200+ in ISO 19xxx models
|
|
708
|
+
UML mapping:: Embedded as metadata in [`Lutaml::Uml::Attribute`](../lib/lutaml/uml/attribute.rb)
|
|
709
|
+
|
|
710
|
+
.Key columns
|
|
711
|
+
[cols="1,2,3"]
|
|
712
|
+
|===
|
|
713
|
+
|Column |Type |Purpose
|
|
714
|
+
|
|
715
|
+
|`PropertyID`
|
|
716
|
+
|INTEGER
|
|
717
|
+
|Primary key
|
|
718
|
+
|
|
719
|
+
|`ElementID`
|
|
720
|
+
|INTEGER
|
|
721
|
+
|Owner attribute
|
|
722
|
+
|
|
723
|
+
|`Property`
|
|
724
|
+
|TEXT
|
|
725
|
+
|Tag name
|
|
726
|
+
|
|
727
|
+
|`VALUE`
|
|
728
|
+
|TEXT
|
|
729
|
+
|Tag value
|
|
730
|
+
|
|
731
|
+
|`NOTES`
|
|
732
|
+
|TEXT
|
|
733
|
+
|Tag documentation
|
|
734
|
+
|===
|
|
735
|
+
|
|
736
|
+
==== t_xref - Cross-references
|
|
737
|
+
|
|
738
|
+
Primary key:: `XrefID`
|
|
739
|
+
Purpose:: Stereotypes, custom properties, diagram settings
|
|
740
|
+
Row count:: Typically 1000-1500+ in production models
|
|
741
|
+
UML mapping:: Used for stereotype resolution and metadata
|
|
742
|
+
|
|
743
|
+
.Key columns
|
|
744
|
+
[cols="1,2,3"]
|
|
745
|
+
|===
|
|
746
|
+
|Column |Type |Purpose
|
|
747
|
+
|
|
748
|
+
|`XrefID`
|
|
749
|
+
|TEXT
|
|
750
|
+
|Primary key
|
|
751
|
+
|
|
752
|
+
|`Name`
|
|
753
|
+
|TEXT
|
|
754
|
+
|Reference name
|
|
755
|
+
|
|
756
|
+
|`Type`
|
|
757
|
+
|TEXT
|
|
758
|
+
|Reference type
|
|
759
|
+
|
|
760
|
+
|`Client`
|
|
761
|
+
|TEXT
|
|
762
|
+
|Source element GUID
|
|
763
|
+
|
|
764
|
+
|`Supplier`
|
|
765
|
+
|TEXT
|
|
766
|
+
|Target element GUID
|
|
767
|
+
|
|
768
|
+
|`Description`
|
|
769
|
+
|TEXT
|
|
770
|
+
|Reference description
|
|
771
|
+
|===
|
|
772
|
+
|
|
773
|
+
=== Lookup/reference tables
|
|
774
|
+
|
|
775
|
+
These tables define valid values and type information.
|
|
776
|
+
|
|
777
|
+
==== t_stereotypes - Stereotype library
|
|
778
|
+
|
|
779
|
+
Primary key:: None (multi-column)
|
|
780
|
+
Purpose:: Stereotype definitions from UML profiles
|
|
781
|
+
Row count:: Typically 100-200+ in production models
|
|
782
|
+
Usage:: Referenced during stereotype resolution
|
|
783
|
+
|
|
784
|
+
.Key columns
|
|
785
|
+
[cols="1,2,3"]
|
|
786
|
+
|===
|
|
787
|
+
|Column |Type |Purpose
|
|
788
|
+
|
|
789
|
+
|`Stereotype`
|
|
790
|
+
|TEXT
|
|
791
|
+
|Stereotype name
|
|
792
|
+
|
|
793
|
+
|`AppliesTo`
|
|
794
|
+
|TEXT
|
|
795
|
+
|Applicable element types
|
|
796
|
+
|
|
797
|
+
|`Description`
|
|
798
|
+
|TEXT
|
|
799
|
+
|Stereotype documentation
|
|
800
|
+
|
|
801
|
+
|`ea_guid`
|
|
802
|
+
|TEXT
|
|
803
|
+
|Unique identifier
|
|
804
|
+
|===
|
|
805
|
+
|
|
806
|
+
==== t_datatypes - Type definitions
|
|
807
|
+
|
|
808
|
+
Primary key:: `DatatypeID`
|
|
809
|
+
Purpose:: Database-specific type definitions and mappings
|
|
810
|
+
Row count:: Typically 500-800+ entries
|
|
811
|
+
Usage:: Type resolution and database mapping
|
|
812
|
+
|
|
813
|
+
.Key columns
|
|
814
|
+
[cols="1,2,3"]
|
|
815
|
+
|===
|
|
816
|
+
|Column |Type |Purpose
|
|
817
|
+
|
|
818
|
+
|`DatatypeID`
|
|
819
|
+
|INTEGER
|
|
820
|
+
|Primary key
|
|
821
|
+
|
|
822
|
+
|`Type`
|
|
823
|
+
|TEXT
|
|
824
|
+
|Type name
|
|
825
|
+
|
|
826
|
+
|`ProductName`
|
|
827
|
+
|TEXT
|
|
828
|
+
|Database product
|
|
829
|
+
|
|
830
|
+
|`DataType`
|
|
831
|
+
|TEXT
|
|
832
|
+
|Mapped database type
|
|
833
|
+
|
|
834
|
+
|`GenericType`
|
|
835
|
+
|TEXT
|
|
836
|
+
|Generic type category
|
|
837
|
+
|===
|
|
838
|
+
|
|
839
|
+
==== t_constrainttypes - Constraint types
|
|
840
|
+
|
|
841
|
+
Primary key:: `Constraint`
|
|
842
|
+
Purpose:: Valid constraint type definitions
|
|
843
|
+
Row count:: 4 standard types
|
|
844
|
+
Usage:: Constraint type validation
|
|
845
|
+
|
|
846
|
+
.Standard constraint types
|
|
847
|
+
[cols="1,2"]
|
|
848
|
+
|===
|
|
849
|
+
|Constraint |Description
|
|
850
|
+
|
|
851
|
+
|Invariant
|
|
852
|
+
|Condition that must always hold
|
|
853
|
+
|
|
854
|
+
|Pre-condition
|
|
855
|
+
|Condition required before operation
|
|
856
|
+
|
|
857
|
+
|Post-condition
|
|
858
|
+
|Condition guaranteed after operation
|
|
859
|
+
|
|
860
|
+
|Definition
|
|
861
|
+
|Derived value or definition
|
|
862
|
+
|===
|
|
863
|
+
|
|
864
|
+
==== t_connectortypes - Connector types
|
|
865
|
+
|
|
866
|
+
Primary key:: `Connector_Type`
|
|
867
|
+
Purpose:: Valid connector/relationship type definitions
|
|
868
|
+
Row count:: ~30 standard types
|
|
869
|
+
Usage:: Relationship type validation
|
|
870
|
+
|
|
871
|
+
.Common connector types
|
|
872
|
+
[cols="1,2"]
|
|
873
|
+
|===
|
|
874
|
+
|Connector_Type |UML Mapping
|
|
875
|
+
|
|
876
|
+
|Association
|
|
877
|
+
|[`Lutaml::Uml::Association`](../lib/lutaml/uml/association.rb)
|
|
878
|
+
|
|
879
|
+
|Generalization
|
|
880
|
+
|[`Lutaml::Uml::Generalization`](../lib/lutaml/uml/generalization.rb)
|
|
881
|
+
|
|
882
|
+
|Aggregation
|
|
883
|
+
|[`Lutaml::Uml::Association`](../lib/lutaml/uml/association.rb) (with aggregation property)
|
|
884
|
+
|
|
885
|
+
|Composition
|
|
886
|
+
|[`Lutaml::Uml::Association`](../lib/lutaml/uml/association.rb) (with composition property)
|
|
887
|
+
|
|
888
|
+
|Dependency
|
|
889
|
+
|[`Lutaml::Uml::Dependency`](../lib/lutaml/uml/dependency.rb)
|
|
890
|
+
|
|
891
|
+
|Realization
|
|
892
|
+
|[`Lutaml::Uml::Realization`](../lib/lutaml/uml/realization.rb)
|
|
893
|
+
|===
|
|
894
|
+
|
|
895
|
+
==== t_diagramtypes - Diagram types
|
|
896
|
+
|
|
897
|
+
Primary key:: `Diagram_Type`
|
|
898
|
+
Purpose:: Valid diagram type definitions
|
|
899
|
+
Row count:: ~15 standard types
|
|
900
|
+
Usage:: Diagram type validation
|
|
901
|
+
|
|
902
|
+
.Common diagram types
|
|
903
|
+
[cols="1,2"]
|
|
904
|
+
|===
|
|
905
|
+
|Diagram_Type |Description
|
|
906
|
+
|
|
907
|
+
|Logical
|
|
908
|
+
|Class diagram
|
|
909
|
+
|
|
910
|
+
|Use Case
|
|
911
|
+
|Use case diagram
|
|
912
|
+
|
|
913
|
+
|Component
|
|
914
|
+
|Component diagram
|
|
915
|
+
|
|
916
|
+
|Deployment
|
|
917
|
+
|Deployment diagram
|
|
918
|
+
|
|
919
|
+
|Sequence
|
|
920
|
+
|Sequence diagram
|
|
921
|
+
|===
|
|
922
|
+
|
|
923
|
+
==== t_objecttypes - Object types
|
|
924
|
+
|
|
925
|
+
Primary key:: `Object_Type`
|
|
926
|
+
Purpose:: Valid object/element type definitions
|
|
927
|
+
Row count:: ~80 types
|
|
928
|
+
Usage:: Object type validation and classification
|
|
929
|
+
|
|
930
|
+
.Common object types
|
|
931
|
+
[cols="1,2"]
|
|
932
|
+
|===
|
|
933
|
+
|Object_Type |UML Mapping
|
|
934
|
+
|
|
935
|
+
|Class
|
|
936
|
+
|[`Lutaml::Uml::Class`](../lib/lutaml/uml/class.rb)
|
|
937
|
+
|
|
938
|
+
|Interface
|
|
939
|
+
|[`Lutaml::Uml::Class`](../lib/lutaml/uml/class.rb) (with interface stereotype)
|
|
940
|
+
|
|
941
|
+
|Enumeration
|
|
942
|
+
|[`Lutaml::Uml::Enum`](../lib/lutaml/uml/enum.rb)
|
|
943
|
+
|
|
944
|
+
|DataType
|
|
945
|
+
|[`Lutaml::Uml::DataType`](../lib/lutaml/uml/data_type.rb)
|
|
946
|
+
|
|
947
|
+
|Package
|
|
948
|
+
|[`Lutaml::Uml::Package`](../lib/lutaml/uml/package.rb)
|
|
949
|
+
|===
|
|
950
|
+
|
|
951
|
+
==== t_statustypes - Status values
|
|
952
|
+
|
|
953
|
+
Primary key:: `Status`
|
|
954
|
+
Purpose:: Valid status value definitions
|
|
955
|
+
Row count:: ~5 standard statuses
|
|
956
|
+
Usage:: Status field validation
|
|
957
|
+
|
|
958
|
+
.Standard status types
|
|
959
|
+
[cols="1,2"]
|
|
960
|
+
|===
|
|
961
|
+
|Status |Description
|
|
962
|
+
|
|
963
|
+
|Approved
|
|
964
|
+
|Approved for use
|
|
965
|
+
|
|
966
|
+
|Proposed
|
|
967
|
+
|Under review
|
|
968
|
+
|
|
969
|
+
|Validated
|
|
970
|
+
|Validated design
|
|
971
|
+
|
|
972
|
+
|Mandatory
|
|
973
|
+
|Mandatory element
|
|
974
|
+
|
|
975
|
+
|Implemen ted
|
|
976
|
+
|Implemented
|
|
977
|
+
|===
|
|
978
|
+
|
|
979
|
+
==== t_complexitytypes - Complexity levels
|
|
980
|
+
|
|
981
|
+
Primary key:: `Complexity`
|
|
982
|
+
Purpose:: Complexity level definitions with numeric weights
|
|
983
|
+
Row count:: ~6 complexity levels
|
|
984
|
+
Usage:: Complexity assessment
|
|
985
|
+
|
|
986
|
+
.Standard complexity types
|
|
987
|
+
[cols="1,2"]
|
|
988
|
+
|===
|
|
989
|
+
|Complexity |NumericWeight
|
|
990
|
+
|
|
991
|
+
|Easy
|
|
992
|
+
|1
|
|
993
|
+
|
|
994
|
+
|Medium
|
|
995
|
+
|5
|
|
996
|
+
|
|
997
|
+
|Difficult
|
|
998
|
+
|10
|
|
999
|
+
|===
|
|
1000
|
+
|
|
1001
|
+
== Excluded tables
|
|
1002
|
+
|
|
1003
|
+
The following table categories are NOT implemented in LutaML as they are not relevant for UML model extraction:
|
|
1004
|
+
|
|
1005
|
+
=== Project management tables
|
|
1006
|
+
|
|
1007
|
+
These tables manage EA project workflow and are not part of the UML model:
|
|
1008
|
+
|
|
1009
|
+
* `t_tasks` - Task tracking
|
|
1010
|
+
* `t_phase` - Project phases
|
|
1011
|
+
* `t_projectroles` - Project role assignments
|
|
1012
|
+
* `t_resources` - Resource allocation
|
|
1013
|
+
* `t_objectresource` - Object resource mapping
|
|
1014
|
+
* `t_objecteffort` - Effort tracking
|
|
1015
|
+
* `t_efforttypes` - Effort type definitions
|
|
1016
|
+
|
|
1017
|
+
=== Problem/issue tracking
|
|
1018
|
+
|
|
1019
|
+
These tables track issues and risks, not UML semantics:
|
|
1020
|
+
|
|
1021
|
+
* `t_issues` - Issue tracking
|
|
1022
|
+
* `t_objectproblems` - Problem assignments
|
|
1023
|
+
* `t_problemtypes` - Problem type definitions
|
|
1024
|
+
* `t_objectrisks` - Risk assignments
|
|
1025
|
+
* `t_risktypes` - Risk type definitions
|
|
1026
|
+
|
|
1027
|
+
=== Testing/quality
|
|
1028
|
+
|
|
1029
|
+
These tables manage test cases and scenarios:
|
|
1030
|
+
|
|
1031
|
+
* `t_tests` - Test definitions
|
|
1032
|
+
* `t_objecttests` - Test assignments
|
|
1033
|
+
* `t_testclass` - Test classifications
|
|
1034
|
+
* `t_testplans` - Test plans
|
|
1035
|
+
* `t_testtypes` - Test type definitions
|
|
1036
|
+
* `t_scenarios` - Test scenarios
|
|
1037
|
+
* `t_objectscenarios` - Scenario assignments
|
|
1038
|
+
* `t_scenariotypes` - Scenario type definitions
|
|
1039
|
+
|
|
1040
|
+
=== Requirements/traceability
|
|
1041
|
+
|
|
1042
|
+
These tables manage requirements traceability:
|
|
1043
|
+
|
|
1044
|
+
* `t_objectrequires` - Requirement links
|
|
1045
|
+
* `t_requiretypes` - Requirement type definitions
|
|
1046
|
+
* `t_trxtypes` - Traceability type definitions
|
|
1047
|
+
* `t_objecttrx` - Traceability links
|
|
1048
|
+
|
|
1049
|
+
=== Security
|
|
1050
|
+
|
|
1051
|
+
These tables manage EA repository security:
|
|
1052
|
+
|
|
1053
|
+
* `t_secgroup` - Security groups
|
|
1054
|
+
* `t_secgrouppermission` - Group permissions
|
|
1055
|
+
* `t_seclocks` - Element locks
|
|
1056
|
+
* `t_secpermission` - Permission definitions
|
|
1057
|
+
* `t_secpolicies` - Security policies
|
|
1058
|
+
* `t_secuser` - User accounts
|
|
1059
|
+
* `t_secusergroup` - User-group assignments
|
|
1060
|
+
* `t_secuserpermission` - User permissions
|
|
1061
|
+
|
|
1062
|
+
=== System tables
|
|
1063
|
+
|
|
1064
|
+
SQLite system tables and EA internal tables:
|
|
1065
|
+
|
|
1066
|
+
* `sqlite_sequence` - SQLite auto-increment tracking
|
|
1067
|
+
* `usys_*` - EA system tables
|
|
1068
|
+
|
|
1069
|
+
=== Content/media
|
|
1070
|
+
|
|
1071
|
+
These tables store rich content not relevant for UML extraction:
|
|
1072
|
+
|
|
1073
|
+
* `t_document` - Documentation artifacts
|
|
1074
|
+
* `t_script` - Behavioral scripts
|
|
1075
|
+
* `t_html` - HTML content
|
|
1076
|
+
* `t_image` - Image data
|
|
1077
|
+
* `t_rtf` - RTF documents
|
|
1078
|
+
* `t_rtfreport` - Report templates
|
|
1079
|
+
* `t_template` - Code templates
|
|
1080
|
+
* `t_snapshot` - Version snapshots
|
|
1081
|
+
|
|
1082
|
+
=== Other excluded tables
|
|
1083
|
+
|
|
1084
|
+
Miscellaneous tables not relevant for UML models:
|
|
1085
|
+
|
|
1086
|
+
* `t_authors` - Author information
|
|
1087
|
+
* `t_category` - Element categories
|
|
1088
|
+
* `t_clients` - Client information
|
|
1089
|
+
* `t_constants` - System constants
|
|
1090
|
+
* `t_ecf` - Environmental complexity factors
|
|
1091
|
+
* `t_implement` - Implementation tracking
|
|
1092
|
+
* `t_lists` - List definitions
|
|
1093
|
+
* `t_method` - Method library
|
|
1094
|
+
* `t_objectmetrics` - Metrics data
|
|
1095
|
+
* `t_ocf` - Organizational complexity factors
|
|
1096
|
+
* `t_operationposts` - Post-conditions (use `t_objectconstraint` instead)
|
|
1097
|
+
* `t_operationpres` - Pre-conditions (use `t_objectconstraint` instead)
|
|
1098
|
+
* `t_operationtag` - Operation tags
|
|
1099
|
+
* `t_palette` - Toolbox palettes
|
|
1100
|
+
* `t_paletteitem` - Palette items
|
|
1101
|
+
* `t_roleconstraint` - Role constraints
|
|
1102
|
+
* `t_rules` - Validation rules
|
|
1103
|
+
* `t_tcf` - Technical complexity factors
|
|
1104
|
+
* `t_umlpattern` - Pattern library
|
|
1105
|
+
* `t_version` - Version history
|
|
1106
|
+
* `t_xrefuser` - Cross-reference user data
|
|
1107
|
+
|
|
1108
|
+
== Configuration
|
|
1109
|
+
|
|
1110
|
+
=== Schema configuration file
|
|
1111
|
+
|
|
1112
|
+
QEA parsing is configured via [`config/qea_schema.yml`](../config/qea_schema.yml).
|
|
1113
|
+
|
|
1114
|
+
.Configuration structure
|
|
1115
|
+
[source,yaml]
|
|
1116
|
+
----
|
|
1117
|
+
version: "1.0"
|
|
1118
|
+
description: "EA QEA database schema configuration"
|
|
1119
|
+
|
|
1120
|
+
model_classes:
|
|
1121
|
+
t_object: Lutaml::Qea::Models::EaObject
|
|
1122
|
+
t_attribute: Lutaml::Qea::Models::EaAttribute
|
|
1123
|
+
# ... other tables
|
|
1124
|
+
|
|
1125
|
+
tables:
|
|
1126
|
+
- table_name: t_object
|
|
1127
|
+
enabled: true
|
|
1128
|
+
primary_key: Object_ID
|
|
1129
|
+
collection_name: objects
|
|
1130
|
+
description: "UML objects (classes, interfaces, etc.)"
|
|
1131
|
+
columns:
|
|
1132
|
+
- name: Object_ID
|
|
1133
|
+
type: INTEGER
|
|
1134
|
+
primary: true
|
|
1135
|
+
# ... other columns
|
|
1136
|
+
|
|
1137
|
+
transformations:
|
|
1138
|
+
object_types:
|
|
1139
|
+
Class: Lutaml::Uml::Class
|
|
1140
|
+
Interface: Lutaml::Uml::Class
|
|
1141
|
+
# ... other mappings
|
|
1142
|
+
|
|
1143
|
+
transformers:
|
|
1144
|
+
class: Lutaml::Qea::Factory::ClassTransformer
|
|
1145
|
+
# ... other transformers
|
|
1146
|
+
----
|
|
1147
|
+
|
|
1148
|
+
=== Boolean field handling
|
|
1149
|
+
|
|
1150
|
+
EA stores boolean values as INTEGER (0/1). The configuration specifies which fields should be treated as boolean:
|
|
1151
|
+
|
|
1152
|
+
.Boolean fields
|
|
1153
|
+
[source,yaml]
|
|
1154
|
+
----
|
|
1155
|
+
boolean_fields:
|
|
1156
|
+
- IsStatic
|
|
1157
|
+
- IsCollection
|
|
1158
|
+
- IsOrdered
|
|
1159
|
+
- AllowDuplicates
|
|
1160
|
+
- IsControlled
|
|
1161
|
+
- Protected
|
|
1162
|
+
- IsRoot
|
|
1163
|
+
- IsLeaf
|
|
1164
|
+
- IsSpec
|
|
1165
|
+
- IsActive
|
|
1166
|
+
- Const
|
|
1167
|
+
- Tagged
|
|
1168
|
+
----
|
|
1169
|
+
|
|
1170
|
+
=== Type mappings
|
|
1171
|
+
|
|
1172
|
+
SQLite types are mapped to Ruby types:
|
|
1173
|
+
|
|
1174
|
+
.Type mappings
|
|
1175
|
+
[cols="1,1"]
|
|
1176
|
+
|===
|
|
1177
|
+
|SQLite Type |Ruby Type
|
|
1178
|
+
|
|
1179
|
+
|INTEGER
|
|
1180
|
+
|integer
|
|
1181
|
+
|
|
1182
|
+
|TEXT
|
|
1183
|
+
|string
|
|
1184
|
+
|
|
1185
|
+
|REAL
|
|
1186
|
+
|float
|
|
1187
|
+
|
|
1188
|
+
|BLOB
|
|
1189
|
+
|binary
|
|
1190
|
+
|
|
1191
|
+
|NULL
|
|
1192
|
+
|null
|
|
1193
|
+
|===
|
|
1194
|
+
|
|
1195
|
+
== Usage
|
|
1196
|
+
|
|
1197
|
+
=== Parsing a QEA file
|
|
1198
|
+
|
|
1199
|
+
.Basic parsing
|
|
1200
|
+
[source,ruby]
|
|
1201
|
+
----
|
|
1202
|
+
require "lutaml/qea"
|
|
1203
|
+
|
|
1204
|
+
# Parse QEA file directly
|
|
1205
|
+
document = Lutaml::Qea.parse("model.qea")
|
|
1206
|
+
# => Returns Lutaml::Uml::Document
|
|
1207
|
+
|
|
1208
|
+
# With options
|
|
1209
|
+
document = Lutaml::Qea.parse("model.qea",
|
|
1210
|
+
include_diagrams: true,
|
|
1211
|
+
validate: true
|
|
1212
|
+
)
|
|
1213
|
+
----
|
|
1214
|
+
|
|
1215
|
+
=== Using with parser API
|
|
1216
|
+
|
|
1217
|
+
.Integration with Lutaml::Parser
|
|
1218
|
+
[source,ruby]
|
|
1219
|
+
----
|
|
1220
|
+
require "lutaml"
|
|
1221
|
+
|
|
1222
|
+
# Auto-detect file type
|
|
1223
|
+
model = Lutaml::Parser.parse([File.new("model.qea")])
|
|
1224
|
+
# => Returns array with Lutaml::Uml::Document
|
|
1225
|
+
|
|
1226
|
+
document = model.first
|
|
1227
|
+
----
|
|
1228
|
+
|
|
1229
|
+
=== Database information
|
|
1230
|
+
|
|
1231
|
+
.Get quick statistics
|
|
1232
|
+
[source,ruby]
|
|
1233
|
+
----
|
|
1234
|
+
require "lutaml/qea"
|
|
1235
|
+
|
|
1236
|
+
# Get database statistics
|
|
1237
|
+
info = Lutaml::Qea.database_info("model.qea")
|
|
1238
|
+
puts info
|
|
1239
|
+
# => {
|
|
1240
|
+
# "objects" => 693,
|
|
1241
|
+
# "attributes" => 1910,
|
|
1242
|
+
# "connectors" => 908,
|
|
1243
|
+
# "packages" => 58,
|
|
1244
|
+
# "diagrams" => 205
|
|
1245
|
+
# }
|
|
1246
|
+
----
|
|
1247
|
+
|
|
1248
|
+
=== Low-level database access
|
|
1249
|
+
|
|
1250
|
+
.Direct database loading
|
|
1251
|
+
[source,ruby]
|
|
1252
|
+
----
|
|
1253
|
+
require "lutaml/qea"
|
|
1254
|
+
|
|
1255
|
+
# Load database with progress callback
|
|
1256
|
+
database = Lutaml::Qea.load_database("model.qea") do |table, current, total|
|
|
1257
|
+
puts "Loading #{table}: #{current}/#{total}"
|
|
1258
|
+
end
|
|
1259
|
+
|
|
1260
|
+
# Access raw data
|
|
1261
|
+
database.objects.each do |ea_object|
|
|
1262
|
+
puts "Class: #{ea_object.name}"
|
|
1263
|
+
end
|
|
1264
|
+
----
|
|
1265
|
+
|
|
1266
|
+
=== File validation
|
|
1267
|
+
|
|
1268
|
+
.Validate QEA file
|
|
1269
|
+
[source,ruby]
|
|
1270
|
+
----
|
|
1271
|
+
require "lutaml/qea/file_detector"
|
|
1272
|
+
|
|
1273
|
+
# Check if file is valid QEA
|
|
1274
|
+
if Lutaml::Qea::FileDetector.qea_file?("model.qea")
|
|
1275
|
+
puts "Valid QEA file"
|
|
1276
|
+
end
|
|
1277
|
+
|
|
1278
|
+
# Validate structure
|
|
1279
|
+
result = Lutaml::Qea::FileDetector.validate_qea("model.qea")
|
|
1280
|
+
if result[:valid]
|
|
1281
|
+
puts "QEA file is valid"
|
|
1282
|
+
puts "Tables: #{result[:table_count]}"
|
|
1283
|
+
puts "Objects: #{result[:object_count]}"
|
|
1284
|
+
else
|
|
1285
|
+
result[:errors].each { |e| puts "ERROR: #{e}" }
|
|
1286
|
+
end
|
|
1287
|
+
----
|
|
1288
|
+
|
|
1289
|
+
== Performance
|
|
1290
|
+
|
|
1291
|
+
=== Benchmarks
|
|
1292
|
+
|
|
1293
|
+
Typical performance for a 20MB EA model with 693 objects:
|
|
1294
|
+
|
|
1295
|
+
.QEA vs XMI parsing
|
|
1296
|
+
[cols="1,1,1"]
|
|
1297
|
+
|===
|
|
1298
|
+
|Format |Parse Time |Memory
|
|
1299
|
+
|
|
1300
|
+
|QEA
|
|
1301
|
+
|1-2 seconds
|
|
1302
|
+
|Lower
|
|
1303
|
+
|
|
1304
|
+
|XMI
|
|
1305
|
+
|20-40 seconds
|
|
1306
|
+
|Higher
|
|
1307
|
+
|===
|
|
1308
|
+
|
|
1309
|
+
Speedup:: 10-20x faster than XMI
|
|
1310
|
+
Memory usage:: Lower memory footprint with streaming
|
|
1311
|
+
|
|
1312
|
+
=== Optimization techniques
|
|
1313
|
+
|
|
1314
|
+
The QEA parser uses several optimization techniques:
|
|
1315
|
+
|
|
1316
|
+
Streaming:: Reads data from SQLite without loading entire file
|
|
1317
|
+
Lazy loading:: Loads only requested tables
|
|
1318
|
+
Indexed queries:: Uses database indexes for fast lookups
|
|
1319
|
+
Batch processing:: Processes related records together
|
|
1320
|
+
Connection pooling:: Reuses database connections
|
|
1321
|
+
|
|
1322
|
+
== Limitations
|
|
1323
|
+
|
|
1324
|
+
=== File format requirements
|
|
1325
|
+
|
|
1326
|
+
* QEA files must be SQLite 3 format
|
|
1327
|
+
* Requires EA-specific table structure
|
|
1328
|
+
* Unicode (UTF-8) encoding required
|
|
1329
|
+
|
|
1330
|
+
=== Feature support
|
|
1331
|
+
|
|
1332
|
+
* Read-only access (does not write back to EA database)
|
|
1333
|
+
* Some EA proprietary features may not be fully supported
|
|
1334
|
+
* Diagram layout is approximate (EA uses proprietary rendering)
|
|
1335
|
+
* Version control information not extracted
|
|
1336
|
+
|
|
1337
|
+
=== Compatibility
|
|
1338
|
+
|
|
1339
|
+
* Tested with EA versions 13-16
|
|
1340
|
+
* May not support very old EA versions (< 10)
|
|
1341
|
+
* Custom EA schema modifications not supported
|
|
1342
|
+
|
|
1343
|
+
== References
|
|
1344
|
+
|
|
1345
|
+
=== Documentation
|
|
1346
|
+
|
|
1347
|
+
* link:QEA_DATABASE_TABLE_ANALYSIS.md[Detailed table analysis]
|
|
1348
|
+
* link:../README[LutaML main documentation]
|
|
1349
|
+
* link:DIAGRAM_SUPPORT_IMPLEMENTATION.md[Diagram implementation details]
|
|
1350
|
+
* link:OBJECT_PROPERTIES_IMPLEMENTATION.md[Object properties implementation]
|
|
1351
|
+
|
|
1352
|
+
=== Source code
|
|
1353
|
+
|
|
1354
|
+
* [`lib/lutaml/qea/`](../lib/lutaml/qea/) - QEA module
|
|
1355
|
+
* [`lib/lutaml/qea/models/`](../lib/lutaml/qea/models/) - EA model classes
|
|
1356
|
+
* [`lib/lutaml/qea/factory/`](../lib/lutaml/qea/factory/) - Transformers
|
|
1357
|
+
* [`lib/lutaml/uml/`](../lib/lutaml/uml/) - UML domain layer
|
|
1358
|
+
* [`config/qea_schema.yml`](../config/qea_schema.yml) - Schema configuration
|
|
1359
|
+
|
|
1360
|
+
=== External resources
|
|
1361
|
+
|
|
1362
|
+
* https://sparxsystems.com/[Sparx Systems EA]
|
|
1363
|
+
* https://www.sqlite.org/[SQLite database]
|
|
1364
|
+
* https://www.omg.org/spec/UML/[UML specification]
|