diff --git a/.gitignore b/.gitignore index 84a24841..d9e68d6f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,10 @@ # IntelliJ IDEA: /.idea /lioncore-typescript.iml + +# NPM (build): /npm +# CLI +/lib/* + diff --git a/README.md b/README.md index 85d7b9ce..39457be0 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,7 @@ The following is a list of links to potential starting points: * [Models](models/) - various models in their serialized formats (the LIonWeb JSON format, or Ecore XML); see the [specific README](models/README.md). * [Schemas](schemas/) - various JSON Schema files for validating models serialized in the LIonWeb JSON format against; see the [specific README](schemas/README.md). * [Source](src/) - all TypeScript source to be exported as part of the NPM/Deno package. +* [Auxiliary](src-aux/) - all TypeScript source that's not core to the NPM/Deno package but still useful, e.g. for testing. * [Scripts](src-build) - a `build-npm.ts` Deno script to package the source as an NPM package using [`dnt`](https://github.com/denoland/dnt). * [Test sources](src-test/) - all TypeScript sources with/for (unit) tests. Tests are located in files with names ending with `.test.ts`. @@ -89,6 +90,7 @@ The following are considerations or concerns that bubbled up during implementati * What happens during deserialization if things don't match the provided M2? Just error out, or return `(model', issues*)`? + ## Building an NPM Package Run @@ -120,3 +122,34 @@ Or, we can publish the package to the NPM registry with ```shell pushd npm; npm publish; popd ``` + + +## Extracting essential information from a serialization + +Run + +```shell +deno task compile-cli +``` + +to produce a binary executable `lib/extract-serialization` for your platform. + +This you can then call to make "extractions" from a serialization ("chunk"), as follows (e.g.): + +```shell +lib/extract-serialization models/meta/lioncore.json +``` + +This is meant as a way to inspect, reason about, and compare serialization because the format is rather verbose. +These extractions are: + +* A "sorted" JSON with: + * all nodes sorted by ID, + * for all nodes, their properties, containments, and references sorted by key (from the meta-pointer), + * and all containments and references sorted by ID. +* A "shortened" JSON where keys are used as key names. +* If the serialization represents a language - i.e.: a LIonCore model - then a textual version is generated as well. + +This CLI utility does not perform any explicit validation apart from the file at the given path existing and being valid JSON. +It does some implicit validation as it can error out on incorrect serializations. + diff --git a/deno.json b/deno.json index 35ef8d92..61654bc0 100644 --- a/deno.json +++ b/deno.json @@ -1,19 +1,25 @@ { - "tasks": { - "run-tests": "deno test --allow-read --allow-write src-test/", - "watch-tests": "deno test --watch --allow-write --allow-read src-test/", - "lint": "deno lint src/ src-test/", - "lock-deps": "deno cache --reload --lock=deno.lock --lock-write src/deps.ts src-build/build-npm.ts src-test/deps.ts" - }, - "lint": { - "include": [ - "src/", - "src-build/", - "src-test/" - ], - "rules": { - "tags": ["recommended"], - "exclude": ["no-explicit-any"] - } + "tasks": { + "run-tests": "deno test --allow-read --allow-write src-test/", + "watch-tests": "deno test --watch --allow-write --allow-read src-test/", + "lint": "deno lint src/ src-test/ src-aux/", + "lock-deps": "deno cache --reload --lock=deno.lock --lock-write src/deps.ts src-aux/deps.ts src-build/build-npm.ts src-test/deps.ts", + "compile-cli": "deno compile --allow-read --allow-write src-aux/extract-serialization.ts && mv extract-serialization lib/" + }, + "lint": { + "include": [ + "src/", + "src-aux/", + "src-build/", + "src-test/" + ], + "rules": { + "tags": [ + "recommended" + ], + "exclude": [ + "no-explicit-any" + ] } + } } diff --git a/deno.lock b/deno.lock index 7cfea05a..9c6e999a 100644 --- a/deno.lock +++ b/deno.lock @@ -11,7 +11,6 @@ "https://deno.land/std@0.140.0/fs/ensure_dir.ts": "9dc109c27df4098b9fc12d949612ae5c9c7169507660dcf9ad90631833209d9d", "https://deno.land/std@0.140.0/hash/sha256.ts": "803846c7a5a8a5a97f31defeb37d72f519086c880837129934f5d6f72102a8e8", "https://deno.land/std@0.140.0/io/buffer.ts": "bd0c4bf53db4b4be916ca5963e454bddfd3fcd45039041ea161dbf826817822b", - "https://deno.land/std@0.140.0/io/types.d.ts": "01f60ae7ec02675b5dbed150d258fc184a78dfe5c209ef53ba4422b46b58822c", "https://deno.land/std@0.140.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3", "https://deno.land/std@0.140.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09", "https://deno.land/std@0.140.0/path/_util.ts": "c1e9686d0164e29f7d880b2158971d805b6e0efc3110d0b3e24e4b8af2190d2b", @@ -78,20 +77,16 @@ "https://deno.land/std@0.177.0/node/_crypto/crypto_browserify/public_encrypt/with_public.js": "752da754d253b5743d89c0f2432b6eb6f8815b80efd9ee588683e10a13d34400", "https://deno.land/std@0.177.0/node/_crypto/crypto_browserify/public_encrypt/xor.js": "087ebef8f6fcb8ca4c7216cc22de728d9a61ec27b9a036b900681ff25d6409af", "https://deno.land/std@0.177.0/node/_crypto/crypto_browserify/randombytes.ts": "23bde8be640e274d7bb88cf10d1da8bba252654252dc6a877fed86a77da5952c", - "https://deno.land/std@0.177.0/node/_events.d.ts": "1347437fd6b084d7c9a4e16b9fe7435f00b030970086482edeeb3b179d0775af", "https://deno.land/std@0.177.0/node/_events.mjs": "d4ba4e629abe3db9f1b14659fd5c282b7da8b2b95eaf13238eee4ebb142a2448", - "https://deno.land/std@0.177.0/node/_global.d.ts": "2d88342f38b4083b858998e27c706725fb03a74aa14ef8d985dc18438b5188e4", "https://deno.land/std@0.177.0/node/_next_tick.ts": "9a3cf107d59b019a355d3cf32275b4c6157282e4b68ea85b46a799cb1d379305", "https://deno.land/std@0.177.0/node/_process/exiting.ts": "6e336180aaabd1192bf99ffeb0d14b689116a3dec1dfb34a2afbacd6766e98ab", "https://deno.land/std@0.177.0/node/_process/process.ts": "c96bb1f6253824c372f4866ee006dcefda02b7050d46759736e403f862d91051", "https://deno.land/std@0.177.0/node/_process/stdio.mjs": "cf17727eac8da3a665851df700b5aca6a12bacc3ebbf33e63e4b919f80ba44a6", - "https://deno.land/std@0.177.0/node/_stream.d.ts": "112e1a0677cd6db932c3ce0e6e5bbdc7a2ac1874572f449044ecc82afcf5ee2e", "https://deno.land/std@0.177.0/node/_stream.mjs": "d6e2c86c1158ac65b4c2ca4fa019d7e84374ff12e21e2175345fe68c0823efe3", "https://deno.land/std@0.177.0/node/_utils.ts": "7fd55872a0cf9275e3c080a60e2fa6d45b8de9e956ebcde9053e72a344185884", "https://deno.land/std@0.177.0/node/buffer.ts": "85617be2063eccaf177dbb84c7580d1e32023724ed14bd9df4e453b152a26167", "https://deno.land/std@0.177.0/node/crypto.ts": "2c94fa0f76e90190fbc34df891dc5c284bddb86c932fae8ac11747de3f75293c", "https://deno.land/std@0.177.0/node/events.ts": "d2de352d509de11a375e2cb397d6b98f5fed4e562fc1d41be33214903a38e6b0", - "https://deno.land/std@0.177.0/node/internal/buffer.d.ts": "bdfa991cd88cb02fd08bf8235d2618550e3e511c970b2a8f2e1a6885a2793cac", "https://deno.land/std@0.177.0/node/internal/buffer.mjs": "e92303a3cc6d9aaabcd270a937ad9319825d9ba08cb332650944df4562029b27", "https://deno.land/std@0.177.0/node/internal/crypto/_keys.ts": "8f3c3b5a141aa0331a53c205e9338655f1b3b307a08085fd6ff6dda6f7c4190b", "https://deno.land/std@0.177.0/node/internal/crypto/_randomBytes.ts": "36dd164747f73b830ba86562abb160a8ac5bea34aaeb816a67f3005a00d41177", @@ -197,6 +192,45 @@ "https://deno.land/std@0.187.0/path/posix.ts": "8b7c67ac338714b30c816079303d0285dd24af6b284f7ad63da5b27372a2c94d", "https://deno.land/std@0.187.0/path/separator.ts": "0fb679739d0d1d7bf45b68dacfb4ec7563597a902edbaf3c59b50d5bcadd93b1", "https://deno.land/std@0.187.0/path/win32.ts": "d186344e5583bcbf8b18af416d13d82b35a317116e6460a5a3953508c3de5bba", + "https://deno.land/std@0.199.0/_util/os.ts": "d932f56d41e4f6a6093d56044e29ce637f8dcc43c5a90af43504a889cf1775e3", + "https://deno.land/std@0.199.0/assert/assert.ts": "9a97dad6d98c238938e7540736b826440ad8c1c1e54430ca4c4e623e585607ee", + "https://deno.land/std@0.199.0/assert/assertion_error.ts": "4d0bde9b374dfbcbe8ac23f54f567b77024fb67dbb1906a852d67fe050d42f56", + "https://deno.land/std@0.199.0/flags/mod.ts": "a5ac18af6583404f21ea03771f8816669d901e0ff4374020870334d6f61d73d5", + "https://deno.land/std@0.199.0/path/_basename.ts": "057d420c9049821f983f784fd87fa73ac471901fb628920b67972b0f44319343", + "https://deno.land/std@0.199.0/path/_constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0", + "https://deno.land/std@0.199.0/path/_dirname.ts": "355e297236b2218600aee7a5301b937204c62e12da9db4b0b044993d9e658395", + "https://deno.land/std@0.199.0/path/_extname.ts": "eaaa5aae1acf1f03254d681bd6a8ce42a9cb5b7ff2213a9d4740e8ab31283664", + "https://deno.land/std@0.199.0/path/_format.ts": "4a99270d6810f082e614309164fad75d6f1a483b68eed97c830a506cc589f8b4", + "https://deno.land/std@0.199.0/path/_from_file_url.ts": "7e4e5626089785adddb061f1b9f4932d6b21c7df778e7449531a11e32048245c", + "https://deno.land/std@0.199.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b", + "https://deno.land/std@0.199.0/path/_is_absolute.ts": "05dac10b5e93c63198b92e3687baa2be178df5321c527dc555266c0f4f51558c", + "https://deno.land/std@0.199.0/path/_join.ts": "fd78555bc34d5f188918fc7018dfe8fe2df5bbad94a3b30a433666c03934d77f", + "https://deno.land/std@0.199.0/path/_normalize.ts": "a19ec8706b2707f9dd974662a5cd89fad438e62ab1857e08b314a8eb49a34d81", + "https://deno.land/std@0.199.0/path/_parse.ts": "0f9b0ff43682dd9964eb1c4398610c4e165d8db9d3ac9d594220217adf480cfa", + "https://deno.land/std@0.199.0/path/_relative.ts": "27bdeffb5311a47d85be26d37ad1969979359f7636c5cd9fcf05dcd0d5099dc5", + "https://deno.land/std@0.199.0/path/_resolve.ts": "7a3616f1093735ed327e758313b79c3c04ea921808ca5f19ddf240cb68d0adf6", + "https://deno.land/std@0.199.0/path/_to_file_url.ts": "739bfda583598790b2e77ce227f2bb618f6ebdb939788cea47555b43970ec58c", + "https://deno.land/std@0.199.0/path/_to_namespaced_path.ts": "0d5f4caa2ed98ef7a8786286df6af804b50e38859ae897b5b5b4c8c5930a75c8", + "https://deno.land/std@0.199.0/path/_util.ts": "4e191b1bac6b3bf0c31aab42e5ca2e01a86ab5a0d2e08b75acf8585047a86221", + "https://deno.land/std@0.199.0/path/basename.ts": "6f08fbb90dbfcf320765b3abb01f995b1723f75e2534acfd5380e202c802a3aa", + "https://deno.land/std@0.199.0/path/common.ts": "ee7505ab01fd22de3963b64e46cff31f40de34f9f8de1fff6a1bd2fe79380000", + "https://deno.land/std@0.199.0/path/dirname.ts": "098996822a31b4c46e1eb52a19540d3c6f9f54b772fc8a197939eeabc29fca2f", + "https://deno.land/std@0.199.0/path/extname.ts": "9b83c62fd16505739541f7a3ab447d8972da39dbf668d47af2f93206c2480893", + "https://deno.land/std@0.199.0/path/format.ts": "cb22f95cc7853d590b87708cc9441785e760d711188facff3d225305a8213aca", + "https://deno.land/std@0.199.0/path/from_file_url.ts": "a6221cfc928928ec4d9786d767dfac98fa2ab746af0786446c9834a07b98817e", + "https://deno.land/std@0.199.0/path/glob.ts": "d479e0a695621c94d3fd7fe7abd4f9499caf32a8de13f25073451c6ef420a4e1", + "https://deno.land/std@0.199.0/path/is_absolute.ts": "6b3d36352eb7fa29edb53f9e7b09b1aeb022a3c5465764f6cc5b8c41f9736197", + "https://deno.land/std@0.199.0/path/join.ts": "4a2867ff2f3c81ffc9eb3d56dade16db6f8bd3854f269306d23dad4115089c84", + "https://deno.land/std@0.199.0/path/mod.ts": "7765507696cb321994cdacfc19ee3ba61e8e3ebf4bd98fa75a276cf5dc18ce2a", + "https://deno.land/std@0.199.0/path/normalize.ts": "7d992cd262b2deefa842d93a8ba2ed51f3949ba595b1d07f627ac2cddbc74808", + "https://deno.land/std@0.199.0/path/parse.ts": "031fe488b3497fb8312fc1dc3c3d6c2d80707edd9c661e18ee9fd20f95edf322", + "https://deno.land/std@0.199.0/path/posix.ts": "0a1c1952d132323a88736d03e92bd236f3ed5f9f079e5823fae07c8d978ee61b", + "https://deno.land/std@0.199.0/path/relative.ts": "7db80c5035016174267da16321a742d76e875215c317859a383b12f413c6f5d6", + "https://deno.land/std@0.199.0/path/resolve.ts": "103b62207726a27f28177f397008545804ecb20aaf00623af1f622b18cd80b9f", + "https://deno.land/std@0.199.0/path/separator.ts": "0fb679739d0d1d7bf45b68dacfb4ec7563597a902edbaf3c59b50d5bcadd93b1", + "https://deno.land/std@0.199.0/path/to_file_url.ts": "dd32f7a01bbf3b15b5df46796659984b372973d9b2d7d59bcf0eb990763a0cb5", + "https://deno.land/std@0.199.0/path/to_namespaced_path.ts": "4e643ab729bf49ccdc166ad48d2de262ff462938fcf2a44a4425588f4a0bd690", + "https://deno.land/std@0.199.0/path/win32.ts": "8b3f80ef7a462511d5e8020ff490edcaa0a0d118f1b1e9da50e2916bdd73f9dd", "https://deno.land/x/code_block_writer@12.0.0/mod.ts": "2c3448060e47c9d08604c8f40dee34343f553f33edcdfebbf648442be33205e5", "https://deno.land/x/code_block_writer@12.0.0/utils/string_utils.ts": "60cb4ec8bd335bf241ef785ccec51e809d576ff8e8d29da43d2273b69ce2a6ff", "https://deno.land/x/deno_cache@0.4.1/auth_tokens.ts": "5fee7e9155e78cedf3f6ff3efacffdb76ac1a76c86978658d9066d4fb0f7326e", @@ -213,7 +247,6 @@ "https://deno.land/x/deno_graph@0.26.0/lib/loader.ts": "380e37e71d0649eb50176a9786795988fc3c47063a520a54b616d7727b0f8629", "https://deno.land/x/deno_graph@0.26.0/lib/media_type.ts": "222626d524fa2f9ebcc0ec7c7a7d5dfc74cc401cc46790f7c5e0eab0b0787707", "https://deno.land/x/deno_graph@0.26.0/lib/snippets/deno_graph-de651bc9c240ed8d/src/deno_apis.js": "41192baaa550a5c6a146280fae358cede917ae16ec4e4315be51bef6631ca892", - "https://deno.land/x/deno_graph@0.26.0/lib/types.d.ts": "2bbdbf895321d1df8db511fab00160a0211c09c2e7cac56c522dd6e9ed6d2ef7", "https://deno.land/x/deno_graph@0.26.0/mod.ts": "11131ae166580a1c7fa8506ff553751465a81c263d94443f18f353d0c320bc14", "https://deno.land/x/dnt@0.35.0/lib/compiler.ts": "3259975196f44391525e4e3e96c1f95c3a90dd25ec31a1948ccd7c6b71323d76", "https://deno.land/x/dnt@0.35.0/lib/compiler_transforms.ts": "cbb1fd5948f5ced1aa5c5aed9e45134e2357ce1e7220924c1d7bded30dcd0dd0", @@ -231,13 +264,10 @@ "https://deno.land/x/dnt@0.35.0/mod.ts": "3ee53f4d4d41df72e57ecbca9f3c2b7cf86166ef57fa04452865780f83c555a9", "https://deno.land/x/dnt@0.35.0/transform.ts": "1b127c5f22699c8ab2545b98aeca38c4e5c21405b0f5342ea17e9c46280ed277", "https://deno.land/x/ts_morph@18.0.0/bootstrap/mod.ts": "b53aad517f106c4079971fcd4a81ab79fadc40b50061a3ab2b741a09119d51e9", - "https://deno.land/x/ts_morph@18.0.0/bootstrap/ts_morph_bootstrap.d.ts": "607e651c5ae5aa57c2ac4090759a6379e809c0cdc42114742ac67353b1a75038", "https://deno.land/x/ts_morph@18.0.0/bootstrap/ts_morph_bootstrap.js": "6645ac03c5e6687dfa8c78109dc5df0250b811ecb3aea2d97c504c35e8401c06", "https://deno.land/x/ts_morph@18.0.0/common/DenoRuntime.ts": "6a7180f0c6e90dcf23ccffc86aa8271c20b1c4f34c570588d08a45880b7e172d", "https://deno.land/x/ts_morph@18.0.0/common/mod.ts": "01985d2ee7da8d1caee318a9d07664774fbee4e31602bc2bb6bb62c3489555ed", - "https://deno.land/x/ts_morph@18.0.0/common/ts_morph_common.d.ts": "42a92b8263878ef48b60042dbb55adda3face9abdb8d503be4b4f0fe242f25f4", "https://deno.land/x/ts_morph@18.0.0/common/ts_morph_common.js": "845671ca951073400ce142f8acefa2d39ea9a51e29ca80928642f3f8cf2b7700", - "https://deno.land/x/ts_morph@18.0.0/common/typescript.d.ts": "21c0786dddf52537611499340166278507eb9784628d321c2cb6acc696cba0f6", "https://deno.land/x/ts_morph@18.0.0/common/typescript.js": "d5c598b6a2db2202d0428fca5fd79fc9a301a71880831a805d778797d2413c59", "https://deno.land/x/xml@2.1.1/mod.ts": "4a314a7a28d1ec92f899ce4c6991f0356c77550a75955ec3f4a36733f08548e8", "https://deno.land/x/xml@2.1.1/parse.ts": "614b8648345ae93c641368836947484d321c7ac9312ae12ec750434353cd7385", diff --git a/models/from_java/builtins.json b/models/from_java/builtins.json deleted file mode 100644 index 9b742a7d..00000000 --- a/models/from_java/builtins.json +++ /dev/null @@ -1,360 +0,0 @@ -{ - "serializationFormatVersion": "1", - "languages": [ - { - "key": "LIonCore-M3", - "version": "1" - } - ], - "nodes": [ - { - "id": "LIonCore-builtins", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Language" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Language-version" - }, - "value": "1" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-builtins" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "LIonCore-builtins" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Language-entities" - }, - "children": [ - "LIonCore-builtins-String", - "LIonCore-builtins-Boolean", - "LIonCore-builtins-Integer", - "LIonCore-builtins-JSON", - "LIonCore-builtins-Node", - "LIonCore-builtins-INamed" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Language-dependsOn" - }, - "targets": [] - } - ], - "parent": null - }, - { - "id": "LIonCore-builtins-String", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "PrimitiveType" - }, - "properties": [ - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "String" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-builtins-String" - } - ], - "children": [], - "references": [], - "parent": "LIonCore-builtins" - }, - { - "id": "LIonCore-builtins-Boolean", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "PrimitiveType" - }, - "properties": [ - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Boolean" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-builtins-Boolean" - } - ], - "children": [], - "references": [], - "parent": "LIonCore-builtins" - }, - { - "id": "LIonCore-builtins-Integer", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "PrimitiveType" - }, - "properties": [ - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Integer" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-builtins-Integer" - } - ], - "children": [], - "references": [], - "parent": "LIonCore-builtins" - }, - { - "id": "LIonCore-builtins-JSON", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "PrimitiveType" - }, - "properties": [ - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "JSON" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-builtins-JSON" - } - ], - "children": [], - "references": [], - "parent": "LIonCore-builtins" - }, - { - "id": "LIonCore-builtins-Node", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Node" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-builtins-Node" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ], - "parent": "LIonCore-builtins" - }, - { - "id": "LIonCore-builtins-INamed", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "ConceptInterface" - }, - "properties": [ - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "INamed" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-builtins-INamed" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "LIonCore-builtins-INamed-name" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "ConceptInterface-extends" - }, - "targets": [] - } - ], - "parent": "LIonCore-builtins" - }, - { - "id": "LIonCore-builtins-INamed-name", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "name" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-builtins-INamed-name" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property-type" - }, - "targets": [ - { - "resolveInfo": "String", - "reference": "LIonCore-builtins-String" - } - ] - } - ], - "parent": "LIonCore-builtins-INamed" - } - ] -} diff --git a/models/from_java/lioncore.json b/models/from_java/lioncore.json deleted file mode 100644 index f15fbd2a..00000000 --- a/models/from_java/lioncore.json +++ /dev/null @@ -1,2059 +0,0 @@ -{ - "serializationFormatVersion": "1", - "languages": [ - { - "key": "LIonCore-M3", - "version": "1" - } - ], - "nodes": [ - { - "id": "-id-LIonCore-M3", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Language" - }, - "properties": [ - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "LIonCore.M3" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Language-version" - }, - "value": "1" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-M3" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Language-entities" - }, - "children": [ - "-id-Concept", - "-id-ConceptInterface", - "-id-Containment", - "-id-DataType", - "-id-Enumeration", - "-id-EnumerationLiteral", - "-id-Feature", - "-id-Classifier", - "-id-Link", - "-id-Language", - "-id-LanguageEntity", - "-id-IKeyed", - "-id-PrimitiveType", - "-id-Property", - "-id-Reference" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Language-dependsOn" - }, - "targets": [] - } - ], - "parent": null - }, - { - "id": "-id-Concept", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Concept" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Concept" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-Concept-abstract", - "-id-Concept-partition", - "-id-Concept-extends", - "-id-Concept-implements" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "Classifier", - "reference": "-id-Classifier" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ], - "parent": "-id-LIonCore-M3" - }, - { - "id": "-id-Concept-abstract", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "abstract" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Concept-abstract" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property-type" - }, - "targets": [ - { - "resolveInfo": "Boolean", - "reference": "LIonCore-builtins-Boolean" - } - ] - } - ], - "parent": "-id-Concept" - }, - { - "id": "-id-Concept-extends", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Reference" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "extends" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Concept-extends" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "Concept", - "reference": "-id-Concept" - } - ] - } - ], - "parent": "-id-Concept" - }, - { - "id": "-id-Concept-implements", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Reference" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "implements" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Concept-implements" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "ConceptInterface", - "reference": "-id-ConceptInterface" - } - ] - } - ], - "parent": "-id-Concept" - }, - { - "id": "-id-Concept-partition", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "partition" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Concept-partition" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property-type" - }, - "targets": [ - { - "resolveInfo": "Boolean", - "reference": "LIonCore-builtins-Boolean" - } - ] - } - ], - "parent": "-id-Concept" - }, - { - "id": "-id-ConceptInterface", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "ConceptInterface" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "ConceptInterface" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-ConceptInterface-extends" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "Classifier", - "reference": "-id-Classifier" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ], - "parent": "-id-LIonCore-M3" - }, - { - "id": "-id-ConceptInterface-extends", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Reference" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "extends" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "ConceptInterface-extends" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "ConceptInterface", - "reference": "-id-ConceptInterface" - } - ] - } - ], - "parent": "-id-ConceptInterface" - }, - { - "id": "-id-Containment", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Containment" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Containment" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "Link", - "reference": "-id-Link" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ], - "parent": "-id-LIonCore-M3" - }, - { - "id": "-id-DataType", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "DataType" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "DataType" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "LanguageEntity", - "reference": "-id-LanguageEntity" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ], - "parent": "-id-LIonCore-M3" - }, - { - "id": "-id-Enumeration", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Enumeration" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Enumeration" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-Enumeration-literals" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "DataType", - "reference": "-id-DataType" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ], - "parent": "-id-LIonCore-M3" - }, - { - "id": "-id-Enumeration-literals", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Containment" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "literals" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Enumeration-literals" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "EnumerationLiteral", - "reference": "-id-EnumerationLiteral" - } - ] - } - ], - "parent": "-id-Enumeration" - }, - { - "id": "-id-EnumerationLiteral", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "EnumerationLiteral" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "EnumerationLiteral" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [ - { - "resolveInfo": "IKeyed", - "reference": "-id-IKeyed" - } - ] - } - ], - "parent": "-id-LIonCore-M3" - }, - { - "id": "-id-Feature", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Feature" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Feature" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-Feature-optional" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [ - { - "resolveInfo": "IKeyed", - "reference": "-id-IKeyed" - } - ] - } - ], - "parent": "-id-LIonCore-M3" - }, - { - "id": "-id-Feature-optional", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "optional" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Feature-optional" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property-type" - }, - "targets": [ - { - "resolveInfo": "Boolean", - "reference": "LIonCore-builtins-Boolean" - } - ] - } - ], - "parent": "-id-Feature" - }, - { - "id": "-id-Classifier", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Classifier" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Classifier" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-Classifier-features" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "LanguageEntity", - "reference": "-id-LanguageEntity" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ], - "parent": "-id-LIonCore-M3" - }, - { - "id": "-id-Classifier-features", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Containment" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "features" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Classifier-features" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "Feature", - "reference": "-id-Feature" - } - ] - } - ], - "parent": "-id-Classifier" - }, - { - "id": "-id-Link", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Link" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Link" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-Link-multiple", - "-id-Link-type" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "Feature", - "reference": "-id-Feature" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ], - "parent": "-id-LIonCore-M3" - }, - { - "id": "-id-Link-multiple", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "multiple" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Link-multiple" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property-type" - }, - "targets": [ - { - "resolveInfo": "Boolean", - "reference": "LIonCore-builtins-Boolean" - } - ] - } - ], - "parent": "-id-Link" - }, - { - "id": "-id-Link-type", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Reference" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "type" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Link-type" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "Classifier", - "reference": "-id-Classifier" - } - ] - } - ], - "parent": "-id-Link" - }, - { - "id": "-id-Language", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Language" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Language" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-Language-version", - "-id-Language-dependsOn", - "-id-Language-entities" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [ - { - "resolveInfo": "IKeyed", - "reference": "-id-IKeyed" - } - ] - } - ], - "parent": "-id-LIonCore-M3" - }, - { - "id": "-id-Language-dependsOn", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Reference" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "dependsOn" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Language-dependsOn" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "Language", - "reference": "-id-Language" - } - ] - } - ], - "parent": "-id-Language" - }, - { - "id": "-id-Language-entities", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Containment" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "entities" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Language-entities" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "LanguageEntity", - "reference": "-id-LanguageEntity" - } - ] - } - ], - "parent": "-id-Language" - }, - { - "id": "-id-Language-version", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "version" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Language-version" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property-type" - }, - "targets": [ - { - "resolveInfo": "String", - "reference": "LIonCore-builtins-String" - } - ] - } - ], - "parent": "-id-Language" - }, - { - "id": "-id-LanguageEntity", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "LanguageEntity" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LanguageEntity" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [ - { - "resolveInfo": "IKeyed", - "reference": "-id-IKeyed" - } - ] - } - ], - "parent": "-id-LIonCore-M3" - }, - { - "id": "-id-IKeyed", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "ConceptInterface" - }, - "properties": [ - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "IKeyed" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "IKeyed" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-IKeyed-key" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "ConceptInterface-extends" - }, - "targets": [ - { - "resolveInfo": "INamed", - "reference": "LIonCore-builtins-INamed" - } - ] - } - ], - "parent": "-id-LIonCore-M3" - }, - { - "id": "-id-IKeyed-key", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "key" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "IKeyed-key" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property-type" - }, - "targets": [ - { - "resolveInfo": "String", - "reference": "LIonCore-builtins-String" - } - ] - } - ], - "parent": "-id-IKeyed" - }, - { - "id": "-id-PrimitiveType", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "PrimitiveType" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "PrimitiveType" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "DataType", - "reference": "-id-DataType" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ], - "parent": "-id-LIonCore-M3" - }, - { - "id": "-id-Property", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Property" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Property" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-Property-type" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "Feature", - "reference": "-id-Feature" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ], - "parent": "-id-LIonCore-M3" - }, - { - "id": "-id-Property-type", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Reference" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "type" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Property-type" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "DataType", - "reference": "-id-DataType" - } - ] - } - ], - "parent": "-id-Property" - }, - { - "id": "-id-Reference", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Reference" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Reference" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "Link", - "reference": "-id-Link" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ], - "parent": "-id-LIonCore-M3" - } - ] -} \ No newline at end of file diff --git a/models/meta/builtins.short.json b/models/meta/builtins.short.json deleted file mode 100644 index ff906980..00000000 --- a/models/meta/builtins.short.json +++ /dev/null @@ -1,81 +0,0 @@ -[ - { - "id": "LIonCore-builtins", - "concept": "Language", - "parent": null, - "IKeyed-key": "LIonCore-builtins", - "LIonCore-builtins-INamed-name": "LIonCore-builtins", - "Language-version": "1", - "Language-entities": [ - "LIonCore-builtins-Boolean", - "LIonCore-builtins-INamed", - "LIonCore-builtins-Integer", - "LIonCore-builtins-JSON", - "LIonCore-builtins-Node", - "LIonCore-builtins-String" - ], - "Language-dependsOn": [] - }, - { - "id": "LIonCore-builtins-Boolean", - "concept": "PrimitiveType", - "parent": "LIonCore-builtins", - "IKeyed-key": "LIonCore-builtins-Boolean", - "LIonCore-builtins-INamed-name": "Boolean" - }, - { - "id": "LIonCore-builtins-INamed", - "concept": "ConceptInterface", - "parent": "LIonCore-builtins", - "IKeyed-key": "LIonCore-builtins-INamed", - "LIonCore-builtins-INamed-name": "INamed", - "Classifier-features": [ - "LIonCore-builtins-INamed-name" - ], - "ConceptInterface-extends": [] - }, - { - "id": "LIonCore-builtins-INamed-name", - "concept": "Property", - "parent": "LIonCore-builtins-INamed", - "Feature-optional": "false", - "IKeyed-key": "LIonCore-builtins-INamed-name", - "LIonCore-builtins-INamed-name": "name", - "Property-type": [ - "LIonCore-builtins-String" - ] - }, - { - "id": "LIonCore-builtins-Integer", - "concept": "PrimitiveType", - "parent": "LIonCore-builtins", - "IKeyed-key": "LIonCore-builtins-Integer", - "LIonCore-builtins-INamed-name": "Integer" - }, - { - "id": "LIonCore-builtins-JSON", - "concept": "PrimitiveType", - "parent": "LIonCore-builtins", - "IKeyed-key": "LIonCore-builtins-JSON", - "LIonCore-builtins-INamed-name": "JSON" - }, - { - "id": "LIonCore-builtins-Node", - "concept": "Concept", - "parent": "LIonCore-builtins", - "Concept-abstract": "true", - "Concept-partition": "false", - "IKeyed-key": "LIonCore-builtins-Node", - "LIonCore-builtins-INamed-name": "Node", - "Classifier-features": [], - "Concept-extends": [], - "Concept-implements": [] - }, - { - "id": "LIonCore-builtins-String", - "concept": "PrimitiveType", - "parent": "LIonCore-builtins", - "IKeyed-key": "LIonCore-builtins-String", - "LIonCore-builtins-INamed-name": "String" - } -] \ No newline at end of file diff --git a/models/meta/builtins.sorted.json b/models/meta/builtins.sorted.json deleted file mode 100644 index d144ace9..00000000 --- a/models/meta/builtins.sorted.json +++ /dev/null @@ -1,360 +0,0 @@ -{ - "serializationFormatVersion": "1", - "languages": [ - { - "key": "LIonCore-M3", - "version": "1" - } - ], - "nodes": [ - { - "id": "LIonCore-builtins", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Language" - }, - "parent": null, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-builtins" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "LIonCore-builtins" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Language-version" - }, - "value": "1" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Language-entities" - }, - "children": [ - "LIonCore-builtins-Boolean", - "LIonCore-builtins-INamed", - "LIonCore-builtins-Integer", - "LIonCore-builtins-JSON", - "LIonCore-builtins-Node", - "LIonCore-builtins-String" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Language-dependsOn" - }, - "targets": [] - } - ] - }, - { - "id": "LIonCore-builtins-Boolean", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "PrimitiveType" - }, - "parent": "LIonCore-builtins", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-builtins-Boolean" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Boolean" - } - ], - "children": [], - "references": [] - }, - { - "id": "LIonCore-builtins-INamed", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "ConceptInterface" - }, - "parent": "LIonCore-builtins", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-builtins-INamed" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "INamed" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "LIonCore-builtins-INamed-name" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "ConceptInterface-extends" - }, - "targets": [] - } - ] - }, - { - "id": "LIonCore-builtins-INamed-name", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property" - }, - "parent": "LIonCore-builtins-INamed", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-builtins-INamed-name" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "name" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property-type" - }, - "targets": [ - { - "resolveInfo": "String", - "reference": "LIonCore-builtins-String" - } - ] - } - ] - }, - { - "id": "LIonCore-builtins-Integer", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "PrimitiveType" - }, - "parent": "LIonCore-builtins", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-builtins-Integer" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Integer" - } - ], - "children": [], - "references": [] - }, - { - "id": "LIonCore-builtins-JSON", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "PrimitiveType" - }, - "parent": "LIonCore-builtins", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-builtins-JSON" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "JSON" - } - ], - "children": [], - "references": [] - }, - { - "id": "LIonCore-builtins-Node", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "parent": "LIonCore-builtins", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-builtins-Node" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Node" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ] - }, - { - "id": "LIonCore-builtins-String", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "PrimitiveType" - }, - "parent": "LIonCore-builtins", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-builtins-String" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "String" - } - ], - "children": [], - "references": [] - } - ] -} \ No newline at end of file diff --git a/models/meta/builtins.txt b/models/meta/builtins.txt deleted file mode 100644 index 1e438fd7..00000000 --- a/models/meta/builtins.txt +++ /dev/null @@ -1,18 +0,0 @@ -language LIonCore-builtins - version: 1 - entities (↓name): - - primitive type Boolean - - concept-interface INamed - features (↓name): - name: String - - primitive type Integer - - primitive type JSON - - abstract concept Node - - primitive type String - diff --git a/models/meta/language-with-enum.txt b/models/meta/language-with-enum.txt deleted file mode 100644 index 45119b45..00000000 --- a/models/meta/language-with-enum.txt +++ /dev/null @@ -1,9 +0,0 @@ -language language-with-enum - version: 1 - entities (↓name): - - enumeration enum - literals: - lit1 - lit2 - diff --git a/models/meta/library.txt b/models/meta/library.txt deleted file mode 100644 index d839e731..00000000 --- a/models/meta/library.txt +++ /dev/null @@ -1,27 +0,0 @@ -language library - version: 1 - entities (↓name): - - concept Book - features (↓name): - author -> Writer - pages: Integer - title: String - - concept GuideBookWriter extends Writer - features (↓name): - countries: String - - concept Library - features (↓name): - books: Book[1..*] - name: String - - concept SpecialistBookWriter extends Writer - features (↓name): - subject: String - - concept Writer - features (↓name): - name: String - diff --git a/models/meta/lioncore-deserialized.txt b/models/meta/lioncore-deserialized.txt deleted file mode 100644 index b25f1084..00000000 --- a/models/meta/lioncore-deserialized.txt +++ /dev/null @@ -1,62 +0,0 @@ -Language LIonCore-M3 (LIonCore-M3 \ LIonCore-M3) - version: 2 - (dependsOn: --not printed!!--) - entities (↓name): - - abstract Concept Classifier extends LanguageEntity - features (↓name): - features: Feature[0..*] - - Concept Concept extends Classifier - features (↓name): - abstract: Boolean - extends -> Concept? - implements -> ConceptInterface[0..*] - partition: Boolean - - Concept ConceptInterface extends Classifier - features (↓name): - extends -> ConceptInterface[0..*] - - Concept Containment extends Link - - abstract Concept DataType extends LanguageEntity - - Concept Enumeration extends DataType - features (↓name): - literals: EnumerationLiteral[1..*] - - Concept EnumerationLiteral implements IKeyed - - abstract Concept Feature implements IKeyed - features (↓name): - optional: Boolean - - ConceptInterface IKeyed extends INamed - features (↓name): - key: String - - ConceptInterface INamed - features (↓name): - name: String - - Concept Language implements IKeyed - features (↓name): - dependsOn -> Language[0..*] - entities: LanguageEntity[0..*] - version: String - - abstract Concept LanguageEntity implements IKeyed - - abstract Concept Link extends Feature - features (↓name): - multiple: Boolean - type -> Classifier - - Concept PrimitiveType extends DataType - - Concept Property extends Feature - features (↓name): - type -> DataType - - Concept Reference extends Link diff --git a/models/meta/lioncore.short.json b/models/meta/lioncore.short.json deleted file mode 100644 index cfc58ee5..00000000 --- a/models/meta/lioncore.short.json +++ /dev/null @@ -1,433 +0,0 @@ -[ - { - "id": "-id-Classifier", - "concept": "Concept", - "parent": "-id-LIonCore-M3", - "Concept-abstract": "true", - "Concept-partition": "false", - "IKeyed-key": "Classifier", - "LIonCore-builtins-INamed-name": "Classifier", - "Classifier-features": [ - "-id-Classifier-features" - ], - "Concept-extends": [ - "-id-LanguageEntity" - ], - "Concept-implements": [] - }, - { - "id": "-id-Classifier-features", - "concept": "Containment", - "parent": "-id-Classifier", - "Feature-optional": "true", - "IKeyed-key": "Classifier-features", - "LIonCore-builtins-INamed-name": "features", - "Link-multiple": "true", - "Link-type": [ - "-id-Feature" - ] - }, - { - "id": "-id-Concept", - "concept": "Concept", - "parent": "-id-LIonCore-M3", - "Concept-abstract": "false", - "Concept-partition": "false", - "IKeyed-key": "Concept", - "LIonCore-builtins-INamed-name": "Concept", - "Classifier-features": [ - "-id-Concept-abstract", - "-id-Concept-extends", - "-id-Concept-implements", - "-id-Concept-partition" - ], - "Concept-extends": [ - "-id-Classifier" - ], - "Concept-implements": [] - }, - { - "id": "-id-Concept-abstract", - "concept": "Property", - "parent": "-id-Concept", - "Feature-optional": "false", - "IKeyed-key": "Concept-abstract", - "LIonCore-builtins-INamed-name": "abstract", - "Property-type": [ - "LIonCore-builtins-Boolean" - ] - }, - { - "id": "-id-Concept-extends", - "concept": "Reference", - "parent": "-id-Concept", - "Feature-optional": "true", - "IKeyed-key": "Concept-extends", - "LIonCore-builtins-INamed-name": "extends", - "Link-multiple": "false", - "Link-type": [ - "-id-Concept" - ] - }, - { - "id": "-id-Concept-implements", - "concept": "Reference", - "parent": "-id-Concept", - "Feature-optional": "true", - "IKeyed-key": "Concept-implements", - "LIonCore-builtins-INamed-name": "implements", - "Link-multiple": "true", - "Link-type": [ - "-id-ConceptInterface" - ] - }, - { - "id": "-id-Concept-partition", - "concept": "Property", - "parent": "-id-Concept", - "Feature-optional": "false", - "IKeyed-key": "Concept-partition", - "LIonCore-builtins-INamed-name": "partition", - "Property-type": [ - "LIonCore-builtins-Boolean" - ] - }, - { - "id": "-id-ConceptInterface", - "concept": "Concept", - "parent": "-id-LIonCore-M3", - "Concept-abstract": "false", - "Concept-partition": "false", - "IKeyed-key": "ConceptInterface", - "LIonCore-builtins-INamed-name": "ConceptInterface", - "Classifier-features": [ - "-id-ConceptInterface-extends" - ], - "Concept-extends": [ - "-id-Classifier" - ], - "Concept-implements": [] - }, - { - "id": "-id-ConceptInterface-extends", - "concept": "Reference", - "parent": "-id-ConceptInterface", - "Feature-optional": "true", - "IKeyed-key": "ConceptInterface-extends", - "LIonCore-builtins-INamed-name": "extends", - "Link-multiple": "true", - "Link-type": [ - "-id-ConceptInterface" - ] - }, - { - "id": "-id-Containment", - "concept": "Concept", - "parent": "-id-LIonCore-M3", - "Concept-abstract": "false", - "Concept-partition": "false", - "IKeyed-key": "Containment", - "LIonCore-builtins-INamed-name": "Containment", - "Classifier-features": [], - "Concept-extends": [ - "-id-Link" - ], - "Concept-implements": [] - }, - { - "id": "-id-DataType", - "concept": "Concept", - "parent": "-id-LIonCore-M3", - "Concept-abstract": "true", - "Concept-partition": "false", - "IKeyed-key": "DataType", - "LIonCore-builtins-INamed-name": "DataType", - "Classifier-features": [], - "Concept-extends": [ - "-id-LanguageEntity" - ], - "Concept-implements": [] - }, - { - "id": "-id-Enumeration", - "concept": "Concept", - "parent": "-id-LIonCore-M3", - "Concept-abstract": "false", - "Concept-partition": "false", - "IKeyed-key": "Enumeration", - "LIonCore-builtins-INamed-name": "Enumeration", - "Classifier-features": [ - "-id-Enumeration-literals" - ], - "Concept-extends": [ - "-id-DataType" - ], - "Concept-implements": [] - }, - { - "id": "-id-Enumeration-literals", - "concept": "Containment", - "parent": "-id-Enumeration", - "Feature-optional": "true", - "IKeyed-key": "Enumeration-literals", - "LIonCore-builtins-INamed-name": "literals", - "Link-multiple": "true", - "Link-type": [ - "-id-EnumerationLiteral" - ] - }, - { - "id": "-id-EnumerationLiteral", - "concept": "Concept", - "parent": "-id-LIonCore-M3", - "Concept-abstract": "false", - "Concept-partition": "false", - "IKeyed-key": "EnumerationLiteral", - "LIonCore-builtins-INamed-name": "EnumerationLiteral", - "Classifier-features": [], - "Concept-extends": [], - "Concept-implements": [ - "-id-IKeyed" - ] - }, - { - "id": "-id-Feature", - "concept": "Concept", - "parent": "-id-LIonCore-M3", - "Concept-abstract": "true", - "Concept-partition": "false", - "IKeyed-key": "Feature", - "LIonCore-builtins-INamed-name": "Feature", - "Classifier-features": [ - "-id-Feature-optional" - ], - "Concept-extends": [], - "Concept-implements": [ - "-id-IKeyed" - ] - }, - { - "id": "-id-Feature-optional", - "concept": "Property", - "parent": "-id-Feature", - "Feature-optional": "false", - "IKeyed-key": "Feature-optional", - "LIonCore-builtins-INamed-name": "optional", - "Property-type": [ - "LIonCore-builtins-Boolean" - ] - }, - { - "id": "-id-IKeyed", - "concept": "ConceptInterface", - "parent": "-id-LIonCore-M3", - "IKeyed-key": "IKeyed", - "LIonCore-builtins-INamed-name": "IKeyed", - "Classifier-features": [ - "-id-IKeyed-key" - ], - "ConceptInterface-extends": [ - "LIonCore-builtins-INamed" - ] - }, - { - "id": "-id-IKeyed-key", - "concept": "Property", - "parent": "-id-IKeyed", - "Feature-optional": "false", - "IKeyed-key": "IKeyed-key", - "LIonCore-builtins-INamed-name": "key", - "Property-type": [ - "LIonCore-builtins-String" - ] - }, - { - "id": "-id-LIonCore-M3", - "concept": "Language", - "parent": null, - "IKeyed-key": "LIonCore-M3", - "LIonCore-builtins-INamed-name": "LIonCore.M3", - "Language-version": "1", - "Language-entities": [ - "-id-Classifier", - "-id-Concept", - "-id-ConceptInterface", - "-id-Containment", - "-id-DataType", - "-id-Enumeration", - "-id-EnumerationLiteral", - "-id-Feature", - "-id-IKeyed", - "-id-Language", - "-id-LanguageEntity", - "-id-Link", - "-id-PrimitiveType", - "-id-Property", - "-id-Reference" - ], - "Language-dependsOn": [] - }, - { - "id": "-id-Language", - "concept": "Concept", - "parent": "-id-LIonCore-M3", - "Concept-abstract": "false", - "Concept-partition": "true", - "IKeyed-key": "Language", - "LIonCore-builtins-INamed-name": "Language", - "Classifier-features": [ - "-id-Language-dependsOn", - "-id-Language-entities", - "-id-Language-version" - ], - "Concept-extends": [], - "Concept-implements": [ - "-id-IKeyed" - ] - }, - { - "id": "-id-Language-dependsOn", - "concept": "Reference", - "parent": "-id-Language", - "Feature-optional": "true", - "IKeyed-key": "Language-dependsOn", - "LIonCore-builtins-INamed-name": "dependsOn", - "Link-multiple": "true", - "Link-type": [ - "-id-Language" - ] - }, - { - "id": "-id-Language-entities", - "concept": "Containment", - "parent": "-id-Language", - "Feature-optional": "true", - "IKeyed-key": "Language-entities", - "LIonCore-builtins-INamed-name": "entities", - "Link-multiple": "true", - "Link-type": [ - "-id-LanguageEntity" - ] - }, - { - "id": "-id-Language-version", - "concept": "Property", - "parent": "-id-Language", - "Feature-optional": "false", - "IKeyed-key": "Language-version", - "LIonCore-builtins-INamed-name": "version", - "Property-type": [ - "LIonCore-builtins-String" - ] - }, - { - "id": "-id-LanguageEntity", - "concept": "Concept", - "parent": "-id-LIonCore-M3", - "Concept-abstract": "true", - "Concept-partition": "false", - "IKeyed-key": "LanguageEntity", - "LIonCore-builtins-INamed-name": "LanguageEntity", - "Classifier-features": [], - "Concept-extends": [], - "Concept-implements": [ - "-id-IKeyed" - ] - }, - { - "id": "-id-Link", - "concept": "Concept", - "parent": "-id-LIonCore-M3", - "Concept-abstract": "true", - "Concept-partition": "false", - "IKeyed-key": "Link", - "LIonCore-builtins-INamed-name": "Link", - "Classifier-features": [ - "-id-Link-multiple", - "-id-Link-type" - ], - "Concept-extends": [ - "-id-Feature" - ], - "Concept-implements": [] - }, - { - "id": "-id-Link-multiple", - "concept": "Property", - "parent": "-id-Link", - "Feature-optional": "false", - "IKeyed-key": "Link-multiple", - "LIonCore-builtins-INamed-name": "multiple", - "Property-type": [ - "LIonCore-builtins-Boolean" - ] - }, - { - "id": "-id-Link-type", - "concept": "Reference", - "parent": "-id-Link", - "Feature-optional": "false", - "IKeyed-key": "Link-type", - "LIonCore-builtins-INamed-name": "type", - "Link-multiple": "false", - "Link-type": [ - "-id-Classifier" - ] - }, - { - "id": "-id-PrimitiveType", - "concept": "Concept", - "parent": "-id-LIonCore-M3", - "Concept-abstract": "false", - "Concept-partition": "false", - "IKeyed-key": "PrimitiveType", - "LIonCore-builtins-INamed-name": "PrimitiveType", - "Classifier-features": [], - "Concept-extends": [ - "-id-DataType" - ], - "Concept-implements": [] - }, - { - "id": "-id-Property", - "concept": "Concept", - "parent": "-id-LIonCore-M3", - "Concept-abstract": "false", - "Concept-partition": "false", - "IKeyed-key": "Property", - "LIonCore-builtins-INamed-name": "Property", - "Classifier-features": [ - "-id-Property-type" - ], - "Concept-extends": [ - "-id-Feature" - ], - "Concept-implements": [] - }, - { - "id": "-id-Property-type", - "concept": "Reference", - "parent": "-id-Property", - "Feature-optional": "false", - "IKeyed-key": "Property-type", - "LIonCore-builtins-INamed-name": "type", - "Link-multiple": "false", - "Link-type": [ - "-id-DataType" - ] - }, - { - "id": "-id-Reference", - "concept": "Concept", - "parent": "-id-LIonCore-M3", - "Concept-abstract": "false", - "Concept-partition": "false", - "IKeyed-key": "Reference", - "LIonCore-builtins-INamed-name": "Reference", - "Classifier-features": [], - "Concept-extends": [ - "-id-Link" - ], - "Concept-implements": [] - } -] \ No newline at end of file diff --git a/models/meta/lioncore.sorted.json b/models/meta/lioncore.sorted.json deleted file mode 100644 index d0ed4cdd..00000000 --- a/models/meta/lioncore.sorted.json +++ /dev/null @@ -1,2059 +0,0 @@ -{ - "serializationFormatVersion": "1", - "languages": [ - { - "key": "LIonCore-M3", - "version": "1" - } - ], - "nodes": [ - { - "id": "-id-Classifier", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "parent": "-id-LIonCore-M3", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Classifier" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Classifier" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-Classifier-features" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "LanguageEntity", - "reference": "-id-LanguageEntity" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ] - }, - { - "id": "-id-Classifier-features", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Containment" - }, - "parent": "-id-Classifier", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Classifier-features" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "features" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "true" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "Feature", - "reference": "-id-Feature" - } - ] - } - ] - }, - { - "id": "-id-Concept", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "parent": "-id-LIonCore-M3", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Concept" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Concept" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-Concept-abstract", - "-id-Concept-extends", - "-id-Concept-implements", - "-id-Concept-partition" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "Classifier", - "reference": "-id-Classifier" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ] - }, - { - "id": "-id-Concept-abstract", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property" - }, - "parent": "-id-Concept", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Concept-abstract" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "abstract" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property-type" - }, - "targets": [ - { - "resolveInfo": "Boolean", - "reference": "LIonCore-builtins-Boolean" - } - ] - } - ] - }, - { - "id": "-id-Concept-extends", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Reference" - }, - "parent": "-id-Concept", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Concept-extends" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "extends" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "false" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "Concept", - "reference": "-id-Concept" - } - ] - } - ] - }, - { - "id": "-id-Concept-implements", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Reference" - }, - "parent": "-id-Concept", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Concept-implements" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "implements" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "true" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "ConceptInterface", - "reference": "-id-ConceptInterface" - } - ] - } - ] - }, - { - "id": "-id-Concept-partition", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property" - }, - "parent": "-id-Concept", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Concept-partition" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "partition" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property-type" - }, - "targets": [ - { - "resolveInfo": "Boolean", - "reference": "LIonCore-builtins-Boolean" - } - ] - } - ] - }, - { - "id": "-id-ConceptInterface", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "parent": "-id-LIonCore-M3", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "ConceptInterface" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "ConceptInterface" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-ConceptInterface-extends" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "Classifier", - "reference": "-id-Classifier" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ] - }, - { - "id": "-id-ConceptInterface-extends", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Reference" - }, - "parent": "-id-ConceptInterface", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "ConceptInterface-extends" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "extends" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "true" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "ConceptInterface", - "reference": "-id-ConceptInterface" - } - ] - } - ] - }, - { - "id": "-id-Containment", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "parent": "-id-LIonCore-M3", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Containment" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Containment" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "Link", - "reference": "-id-Link" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ] - }, - { - "id": "-id-DataType", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "parent": "-id-LIonCore-M3", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "DataType" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "DataType" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "LanguageEntity", - "reference": "-id-LanguageEntity" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ] - }, - { - "id": "-id-Enumeration", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "parent": "-id-LIonCore-M3", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Enumeration" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Enumeration" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-Enumeration-literals" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "DataType", - "reference": "-id-DataType" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ] - }, - { - "id": "-id-Enumeration-literals", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Containment" - }, - "parent": "-id-Enumeration", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Enumeration-literals" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "literals" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "true" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "EnumerationLiteral", - "reference": "-id-EnumerationLiteral" - } - ] - } - ] - }, - { - "id": "-id-EnumerationLiteral", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "parent": "-id-LIonCore-M3", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "EnumerationLiteral" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "EnumerationLiteral" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [ - { - "resolveInfo": "IKeyed", - "reference": "-id-IKeyed" - } - ] - } - ] - }, - { - "id": "-id-Feature", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "parent": "-id-LIonCore-M3", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Feature" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Feature" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-Feature-optional" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [ - { - "resolveInfo": "IKeyed", - "reference": "-id-IKeyed" - } - ] - } - ] - }, - { - "id": "-id-Feature-optional", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property" - }, - "parent": "-id-Feature", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Feature-optional" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "optional" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property-type" - }, - "targets": [ - { - "resolveInfo": "Boolean", - "reference": "LIonCore-builtins-Boolean" - } - ] - } - ] - }, - { - "id": "-id-IKeyed", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "ConceptInterface" - }, - "parent": "-id-LIonCore-M3", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "IKeyed" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "IKeyed" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-IKeyed-key" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "ConceptInterface-extends" - }, - "targets": [ - { - "resolveInfo": "INamed", - "reference": "LIonCore-builtins-INamed" - } - ] - } - ] - }, - { - "id": "-id-IKeyed-key", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property" - }, - "parent": "-id-IKeyed", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "IKeyed-key" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "key" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property-type" - }, - "targets": [ - { - "resolveInfo": "String", - "reference": "LIonCore-builtins-String" - } - ] - } - ] - }, - { - "id": "-id-LIonCore-M3", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Language" - }, - "parent": null, - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LIonCore-M3" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "LIonCore.M3" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Language-version" - }, - "value": "1" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Language-entities" - }, - "children": [ - "-id-Classifier", - "-id-Concept", - "-id-ConceptInterface", - "-id-Containment", - "-id-DataType", - "-id-Enumeration", - "-id-EnumerationLiteral", - "-id-Feature", - "-id-IKeyed", - "-id-Language", - "-id-LanguageEntity", - "-id-Link", - "-id-PrimitiveType", - "-id-Property", - "-id-Reference" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Language-dependsOn" - }, - "targets": [] - } - ] - }, - { - "id": "-id-Language", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "parent": "-id-LIonCore-M3", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Language" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Language" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-Language-dependsOn", - "-id-Language-entities", - "-id-Language-version" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [ - { - "resolveInfo": "IKeyed", - "reference": "-id-IKeyed" - } - ] - } - ] - }, - { - "id": "-id-Language-dependsOn", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Reference" - }, - "parent": "-id-Language", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Language-dependsOn" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "dependsOn" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "true" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "Language", - "reference": "-id-Language" - } - ] - } - ] - }, - { - "id": "-id-Language-entities", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Containment" - }, - "parent": "-id-Language", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Language-entities" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "entities" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "true" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "LanguageEntity", - "reference": "-id-LanguageEntity" - } - ] - } - ] - }, - { - "id": "-id-Language-version", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property" - }, - "parent": "-id-Language", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Language-version" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "version" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property-type" - }, - "targets": [ - { - "resolveInfo": "String", - "reference": "LIonCore-builtins-String" - } - ] - } - ] - }, - { - "id": "-id-LanguageEntity", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "parent": "-id-LIonCore-M3", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "LanguageEntity" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "LanguageEntity" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [ - { - "resolveInfo": "IKeyed", - "reference": "-id-IKeyed" - } - ] - } - ] - }, - { - "id": "-id-Link", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "parent": "-id-LIonCore-M3", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "true" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Link" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Link" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-Link-multiple", - "-id-Link-type" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "Feature", - "reference": "-id-Feature" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ] - }, - { - "id": "-id-Link-multiple", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property" - }, - "parent": "-id-Link", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Link-multiple" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "multiple" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Property-type" - }, - "targets": [ - { - "resolveInfo": "Boolean", - "reference": "LIonCore-builtins-Boolean" - } - ] - } - ] - }, - { - "id": "-id-Link-type", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Reference" - }, - "parent": "-id-Link", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Link-type" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "type" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "false" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "Classifier", - "reference": "-id-Classifier" - } - ] - } - ] - }, - { - "id": "-id-PrimitiveType", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "parent": "-id-LIonCore-M3", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "PrimitiveType" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "PrimitiveType" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "DataType", - "reference": "-id-DataType" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ] - }, - { - "id": "-id-Property", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "parent": "-id-LIonCore-M3", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Property" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Property" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [ - "-id-Property-type" - ] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "Feature", - "reference": "-id-Feature" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ] - }, - { - "id": "-id-Property-type", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Reference" - }, - "parent": "-id-Property", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Feature-optional" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Property-type" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "type" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-multiple" - }, - "value": "false" - } - ], - "children": [], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Link-type" - }, - "targets": [ - { - "resolveInfo": "DataType", - "reference": "-id-DataType" - } - ] - } - ] - }, - { - "id": "-id-Reference", - "concept": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept" - }, - "parent": "-id-LIonCore-M3", - "properties": [ - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-abstract" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-partition" - }, - "value": "false" - }, - { - "property": { - "language": "LIonCore-M3", - "version": "1", - "key": "IKeyed-key" - }, - "value": "Reference" - }, - { - "property": { - "language": "LIonCore-builtins", - "version": "1", - "key": "LIonCore-builtins-INamed-name" - }, - "value": "Reference" - } - ], - "children": [ - { - "containment": { - "language": "LIonCore-M3", - "version": "1", - "key": "Classifier-features" - }, - "children": [] - } - ], - "references": [ - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-extends" - }, - "targets": [ - { - "resolveInfo": "Link", - "reference": "-id-Link" - } - ] - }, - { - "reference": { - "language": "LIonCore-M3", - "version": "1", - "key": "Concept-implements" - }, - "targets": [] - } - ] - } - ] -} \ No newline at end of file diff --git a/models/meta/lioncore.txt b/models/meta/lioncore.txt deleted file mode 100644 index bf37742b..00000000 --- a/models/meta/lioncore.txt +++ /dev/null @@ -1,58 +0,0 @@ -language LIonCore.M3 - version: 1 - entities (↓name): - - abstract concept Classifier extends LanguageEntity - features (↓name): - features: Feature[0..*] - - concept Concept extends Classifier - features (↓name): - abstract: Boolean - extends -> Concept? - implements -> ConceptInterface[0..*] - partition: Boolean - - concept ConceptInterface extends Classifier - features (↓name): - extends -> ConceptInterface[0..*] - - concept Containment extends Link - - abstract concept DataType extends LanguageEntity - - concept Enumeration extends DataType - features (↓name): - literals: EnumerationLiteral[0..*] - - concept EnumerationLiteral implements IKeyed - - abstract concept Feature implements IKeyed - features (↓name): - optional: Boolean - - concept-interface IKeyed extends INamed - features (↓name): - key: String - - concept Language implements IKeyed - features (↓name): - dependsOn -> Language[0..*] - entities: LanguageEntity[0..*] - version: String - - abstract concept LanguageEntity implements IKeyed - - abstract concept Link extends Feature - features (↓name): - multiple: Boolean - type -> Classifier - - concept PrimitiveType extends DataType - - concept Property extends Feature - features (↓name): - type -> DataType - - concept Reference extends Link - diff --git a/src-aux/deps.ts b/src-aux/deps.ts new file mode 100644 index 00000000..fc54bea7 --- /dev/null +++ b/src-aux/deps.ts @@ -0,0 +1,5 @@ +import {parse} from "https://deno.land/std@0.199.0/flags/mod.ts" +import {extname} from "https://deno.land/std@0.199.0/path/mod.ts" + +export {parse as parseCliFlags, extname as extensionOfPath} + diff --git a/src-aux/extract-serialization.ts b/src-aux/extract-serialization.ts new file mode 100644 index 00000000..1b122748 --- /dev/null +++ b/src-aux/extract-serialization.ts @@ -0,0 +1,41 @@ +import {extensionOfPath} from "./deps.ts" +import {shortenSerialization, sortSerialization} from "./serialization-utils.ts" +import {writeJsonAsFile} from "../src-test/utils/json.ts" +import {asText} from "../src/m3/textual-syntax.ts" +import {deserializeLanguage} from "../src/m3/deserializer.ts" +import {lioncoreQName} from "../src/m3/lioncore.ts" + + +const isRecord = (json: unknown): json is Record => + typeof json === "object" && !Array.isArray(json) + +const isSerializedLanguage = (json: unknown): boolean => + isRecord(json) + && json["serializationFormatVersion"] === "1" + && "languages" in json + && Array.isArray(json["languages"]) + && json["languages"].some((language) => isRecord(language) && language["key"] === lioncoreQName) + + +const verbose = async (path: string) => { + try { + const json = JSON.parse(await Deno.readTextFile(path)) + const extlessPath = path.substring(0, path.length - extensionOfPath(path).length) + const sortedJson = sortSerialization(json) + await writeJsonAsFile(extlessPath + ".sorted.json", sortedJson) + await writeJsonAsFile(extlessPath + ".shortened.json", shortenSerialization(json)) // (could also sort) + if (isSerializedLanguage(json)) { + await Deno.writeTextFile(extlessPath + ".txt", asText(deserializeLanguage(json))) + } + console.log(`extracted: "${path}" -> "${extlessPath}"`) + } catch (e) { + console.error(`"${path}" is not a valid JSON file`) + } +} + + +const main = async (args: string[])=> { + args.forEach(verbose) +} +main(Deno.args) + diff --git a/src/serialization-utils.ts b/src-aux/serialization-utils.ts similarity index 84% rename from src/serialization-utils.ts rename to src-aux/serialization-utils.ts index 42dd9c9e..9c2d21ca 100644 --- a/src/serialization-utils.ts +++ b/src-aux/serialization-utils.ts @@ -1,16 +1,16 @@ -import {SerializedModel} from "./serialization.ts" -import {sortByStringKey} from "./utils/sorting.ts" +import {SerializationChunk} from "../src/serialization.ts" +import {sortByStringKey} from "../src/utils/sorting.ts" /** * @return A shortened version of a {@link SerializedModel JSON serialization}, which should make it easier to inspect. * Note that the shortened version doesn't contain all information, and could (in theory) be malformed. */ -export const shorten = ({nodes}: SerializedModel) => +export const shortenSerialization = ({nodes}: SerializationChunk) => nodes.map((node) => ({ id: node.id, concept: node.concept.key, - parent: node.parent, + parent: node.parent ?? undefined, ...Object.fromEntries( [ ...node.properties.map((serProp) => [serProp.property.key, serProp.value]), @@ -25,7 +25,7 @@ export const shorten = ({nodes}: SerializedModel) => * @return A sorted version of a {@link SerializedModel JSON serialization}, which should make it easier to inspect. * Note that the sorted version destroy the order of links, which might effectively alter semantics. */ -export const sort = ({serializationFormatVersion, languages, nodes}: SerializedModel): SerializedModel => +export const sortSerialization = ({serializationFormatVersion, languages, nodes}: SerializationChunk): SerializationChunk => ({ serializationFormatVersion, languages, diff --git a/src-test/library.test.ts b/src-test/library.test.ts index ec51f362..54ee2d57 100644 --- a/src-test/library.test.ts +++ b/src-test/library.test.ts @@ -1,7 +1,7 @@ import {assertEquals} from "./deps.ts" import {writeJsonAsFile} from "./utils/json.ts" import {undefinedValuesDeletedFrom} from "./utils/test-helpers.ts" -import {serializeModel} from "../src/serializer.ts" +import {serializeNodes} from "../src/serializer.ts" import {deserializeModel} from "../src/deserializer.ts" import {dynamicModelAPI, DynamicNode} from "../src/dynamic-api.ts" import {nameBasedConceptDeducerFor} from "../src/m3/functions.ts" @@ -12,14 +12,14 @@ import {libraryLanguage} from "./m3/library-language.ts" Deno.test("Library test model", async (tctx) => { await tctx.step("[de-]serialize example library", async () => { - const serialization = serializeModel(libraryModel, libraryModelApi) + const serialization = serializeNodes(libraryModel, libraryModelApi) await writeJsonAsFile("models/instance/library.json", serialization) const deserialization = deserializeModel(undefinedValuesDeletedFrom(serialization), libraryModelApi, libraryLanguage, []) assertEquals(deserialization, libraryModel) }) await tctx.step(`"dynamify" example library through serialization and deserialization using the Dynamic Model API`, () => { - const serialization = serializeModel(libraryModel, libraryModelApi) + const serialization = serializeNodes(libraryModel, libraryModelApi) const dynamification = deserializeModel(undefinedValuesDeletedFrom(serialization), dynamicModelAPI, libraryLanguage, []) assertEquals(dynamification.length, 2) diff --git a/src-test/m3/meta-circularity.test.ts b/src-test/m3/meta-circularity.test.ts index 73019460..08f2c603 100644 --- a/src-test/m3/meta-circularity.test.ts +++ b/src-test/m3/meta-circularity.test.ts @@ -7,7 +7,7 @@ import {issuesLanguage} from "../../src/m3/constraints.ts" import {serializeLanguage} from "../../src/m3/serializer.ts" import {deserializeLanguage} from "../../src/m3/deserializer.ts" import {readFileAsJson, writeJsonAsFile} from "../utils/json.ts" -import {SerializedModel} from "../../src/serialization.ts" +import {SerializationChunk} from "../../src/serialization.ts" import {logIssues, logUnresolvedReferences} from "../utils/test-helpers.ts" import {asText} from "../../src/m3/textual-syntax.ts" @@ -39,7 +39,7 @@ Deno.test("meta-circularity (LIonCore)", async (tctx) => { }) await tctx.step("deserialize LIonCore", async () => { - const serialization = await readFileAsJson(serializedLioncorePath) as SerializedModel + const serialization = await readFileAsJson(serializedLioncorePath) as SerializationChunk const deserialization = deserializeLanguage(serialization) assertEquals(asText(deserialization), asText(lioncore)) // assertEquals on object-level is not good enouogh (- maybe because of class JIT'ing?): diff --git a/src-test/m3/textual-syntax.test.ts b/src-test/m3/textual-syntax.test.ts index 30d84c0f..db930912 100644 --- a/src-test/m3/textual-syntax.test.ts +++ b/src-test/m3/textual-syntax.test.ts @@ -1,37 +1,25 @@ import {assertEquals} from "../deps.ts" -import {lioncore} from "../../src/m3/lioncore.ts" import {asText} from "../../src/m3/textual-syntax.ts" -import {lioncoreBuiltins} from "../../src/m3/builtins.ts" -import {libraryLanguage} from "./library-language.ts" import {languageWithEnum} from "./language-with-enum.ts" -import {deserializeLanguage} from "../../src/m3/deserializer.ts" -import {readFileAsJson} from "../utils/json.ts" -import {SerializedModel} from "../../src/serialization.ts" Deno.test("textual syntax (LIonCore)", async (tctx) => { - await tctx.step("print out self-definition as text (no assertions)", async () => { - await Deno.writeTextFile("models/meta/lioncore.txt", asText(lioncore)) - }) - - await tctx.step("print out builtins as text (no assertions)", async () => { - await Deno.writeTextFile("models/meta/builtins.txt", asText(lioncoreBuiltins)) - }) - - await tctx.step("print out library language as text (no assertions)", async () => { - await Deno.writeTextFile("models/meta/library.txt", asText(libraryLanguage)) - }) - await tctx.step("print out language with an enum as text (no assertions)", async () => { - await Deno.writeTextFile("models/meta/language-with-enum.txt", asText(languageWithEnum)) - }) - - await tctx.step("print out languages from Java, as text (no assertions)", async () => { - const lioncoreFromJava = deserializeLanguage(await readFileAsJson("models/from_java/lioncore.json") as SerializedModel) - assertEquals(lioncoreFromJava.name, "LIonCore.M3") - await Deno.writeTextFile("models/from_java/lioncore.txt", asText(lioncoreFromJava)) + assertEquals( + asText(languageWithEnum), +`language language-with-enum + version: 1 + entities (↓name): + + enumeration enum + literals: + lit1 + lit2 + +` + ) }) }) diff --git a/src-test/m3/types.test.ts b/src-test/m3/types.test.ts index 7516450a..d338460b 100644 --- a/src-test/m3/types.test.ts +++ b/src-test/m3/types.test.ts @@ -1,6 +1,6 @@ -import {assertThrows} from "../deps.ts" -import {LanguageFactory} from "../../src/m3/factory.ts" -import {builtinPrimitives} from "../../src/m3/builtins.ts" +// import {assertThrows} from "../deps.ts" +// import {LanguageFactory} from "../../src/m3/factory.ts" +// import {builtinPrimitives} from "../../src/m3/builtins.ts" /* @@ -17,23 +17,23 @@ a.with(a) // would be nice if this produced a compiler error! */ -Deno.test("M3 types", async (tctx) => { +Deno.test("M3 types", async (_) => { + /* await tctx.step("adding non-language elements to a language should fail", () => { const factory = new LanguageFactory("TestLanguage", "0") const {language} = factory const concept = factory.concept("Concept", false) const property = factory.property(concept, "property").ofType(builtinPrimitives.intDatatype) factory.language.havingEntities(concept) - /* - * TODO understand why the following fails to compile after the addition of a getter "language" to LanguageEntity + // TODO understand why the following fails to compile after the addition of a getter "language" to LanguageEntity assertThrows(() => { language.havingEntities(property), Error, `trying to add non-LanguageElements to Language: "property"` }) - */ }) + */ }) diff --git a/src-test/serialization-utils.test.ts b/src-test/serialization-utils.test.ts deleted file mode 100644 index c1e0a7cd..00000000 --- a/src-test/serialization-utils.test.ts +++ /dev/null @@ -1,26 +0,0 @@ -import {shorten, sort} from "../src/serialization-utils.ts" -import {SerializedModel} from "../src/serialization.ts" -import {readFileAsJson, writeJsonAsFile} from "./utils/json.ts" -import {asText} from "../src/m3/textual-syntax.ts" -import {deserializeLanguage} from "../src/m3/deserializer.ts" - - -Deno.test("serialization utils", async (tctx) => { - - await tctx.step("shorten and →text LIonCore-{builtins + M3}", async () => { - const shortenAndAsText = async (extlessPath: string) => { - const json = await readFileAsJson(extlessPath + ".json") as SerializedModel - const sortedJson = sort(json) - await writeJsonAsFile(extlessPath + ".sorted.json", sortedJson) - await writeJsonAsFile(extlessPath + ".short.json", shorten(sortedJson)) - await Deno.writeTextFile(extlessPath + ".txt", asText(deserializeLanguage(json))) - } - - await shortenAndAsText("models/from_java/builtins") - await shortenAndAsText("models/from_java/lioncore") - await shortenAndAsText("models/meta/builtins") - await shortenAndAsText("models/meta/lioncore") - }) - -}) - diff --git a/src/api.ts b/src/api.ts index 30c716df..136beae6 100644 --- a/src/api.ts +++ b/src/api.ts @@ -4,7 +4,10 @@ import {flatMapNonCyclingFollowing, trivialFlatMapper} from "./utils/recursion.t import {allFeaturesOf, isContainment} from "./m3/functions.ts" -export type ConceptDeducer = (node: NT) => Concept +/** + * Type def. for functions that deduce the {@link Concept concept} of a given {@link Node node}. + */ +type ConceptDeducer = (node: NT) => Concept /** @@ -14,7 +17,7 @@ export type ConceptDeducer = (node: NT) => Concept * - specific to LIoncore (so to match m3/types.ts) * - generic just to deserialize into Node & { settings: { [featureName: string]: unknown } } -- á la Federico */ -export interface ModelAPI { +interface ModelAPI { /** * @return The {@link Concept concept} of the given node @@ -28,7 +31,8 @@ export interface ModelAPI { /** - * @return An instance of the concept, given through its ID, also given its parent (or {@link undefined} for root nodes), and the values of the node's properties ("settings") + * @return An instance of the given concept, also given its parent (or {@link undefined} for root nodes), + * its ID and the values of the node's properties ("settings"). * (The latter may be required as arguments for the constructor of a class, whose instances represent nodes.) */ nodeFor: (parent: NT | undefined, concept: Concept, id: string, settings: { [propertyKey: string]: unknown }) => NT @@ -44,9 +48,14 @@ export interface ModelAPI { /** - * @return A function that extracts the children from a given node + * Type def. for functions that extract {@link Node nodes} from a given one. + */ +type NodesExtractor = (nodes: NT) => NT[] + +/** + * @return A function that extracts the children from a given node. */ -export const childrenExtractorUsing = (modelAPI: ModelAPI) => +const childrenExtractorUsing = (modelAPI: ModelAPI): NodesExtractor => (node: NT): NT[] => allFeaturesOf(modelAPI.conceptOf(node)) .filter(isContainment) @@ -54,9 +63,9 @@ export const childrenExtractorUsing = (modelAPI: ModelAPI) /** - * @return a function that extracts *all* nodes from a given start node - usually a root node + * @return a function that extracts *all* nodes from a given start node - usually a root node. */ -export const nodesExtractorUsing = (modelAPI: ModelAPI) => +const nodesExtractorUsing = (modelAPI: ModelAPI): NodesExtractor => flatMapNonCyclingFollowing(trivialFlatMapper, childrenExtractorUsing(modelAPI)) @@ -64,7 +73,7 @@ export const nodesExtractorUsing = (modelAPI: ModelAPI) => * Updates the value of the given {@link Feature feature} on the given "settings" object * - either a {@link Node node} or a sub object of it. */ -export const updateSettings = (settings: Record, feature: Feature, value: unknown) => { +const updateSettings = (settings: Record, feature: Feature, value: unknown): void => { const fName = feature.name if (feature instanceof Link && feature.multiple) { if (!Array.isArray(settings[fName])) { @@ -75,4 +84,18 @@ export const updateSettings = (settings: Record, feature: Featu settings[fName] = value } } +// TODO use feature's key instead of name + + +export type { + ConceptDeducer, + ModelAPI, + NodesExtractor +} + +export { + childrenExtractorUsing, + nodesExtractorUsing, + updateSettings +} diff --git a/src/deserializer.ts b/src/deserializer.ts index 78773b86..9c5d8322 100644 --- a/src/deserializer.ts +++ b/src/deserializer.ts @@ -1,5 +1,5 @@ import {Id, Node} from "./types.ts" -import {SerializedModel, SerializedNode} from "./serialization.ts" +import {SerializationChunk, SerializedNode} from "./serialization.ts" import {ModelAPI} from "./api.ts" import {Concept, Containment, Language, Property, Reference} from "./m3/types.ts" import {allFeaturesOf} from "./m3/functions.ts" @@ -22,24 +22,24 @@ const byIdMap = (ts: T[]): { [id: Id]: T } => { /** * @return a deserialization of a serialized model * - * @param serializedModel - a {@link SerializedModel model} from its LIonWeb serialization JSON format + * @param serializationChunk - a {@link SerializedModel model} from its LIonWeb serialization JSON format * @param modelAPI - a {@link ModelAPI model API} that is used to instantiate nodes and set values on them * @param language - a {@link Language language} that the serialized model is expected to conform to * @param dependentNodes - a collection of nodes from dependent models against which all references in the serialized model are supposed to resolve against */ export const deserializeModel = ( - serializedModel: SerializedModel, + serializationChunk: SerializationChunk, modelAPI: ModelAPI, language: Language, dependentNodes: Node[] // TODO (#13) see if you can turn this into [nodes: Node[], api: ModelAPI][] after all ): NT[] => { - if (serializedModel.serializationFormatVersion !== "1") { + if (serializationChunk.serializationFormatVersion !== "1") { throw new Error(`can't deserialize from serialization format other than version 1`) } - const { nodes: serializedNodes } = serializedModel + const { nodes: serializedNodes } = serializationChunk const serializedRootNodes = serializedNodes.filter(({parent}) => parent === null) if (serializedRootNodes.length === 0) { diff --git a/src/dynamic-api.ts b/src/dynamic-api.ts index 29104a47..a2694fc8 100644 --- a/src/dynamic-api.ts +++ b/src/dynamic-api.ts @@ -28,4 +28,5 @@ export const dynamicModelAPI: ModelAPI = ({ updateSettings(node.settings, feature, value) } }) +// TODO use feature's key instead of name diff --git a/src/m3/deserializer.ts b/src/m3/deserializer.ts index 7403d902..cf102bf3 100644 --- a/src/m3/deserializer.ts +++ b/src/m3/deserializer.ts @@ -1,5 +1,5 @@ import {Language} from "./types.ts" -import {SerializedModel} from "../serialization.ts" +import {SerializationChunk} from "../serialization.ts" import {lioncoreAPI} from "./api.ts" import {nodesExtractorUsing} from "../api.ts" import {deserializeModel} from "../deserializer.ts" @@ -11,9 +11,9 @@ import {lioncoreBuiltins} from "./builtins.ts" * Deserializes a language that's serialized into the LIonWeb serialization JSON format * as an instance of the LIonCore/M3 metametamodel, using {@link _M3Concept these type definitions}. */ -export const deserializeLanguage = (serializedModel: SerializedModel, ...dependentMetamodels: Language[]): Language => { +export const deserializeLanguage = (serializationChunk: SerializationChunk, ...dependentMetamodels: Language[]): Language => { const language = deserializeModel( - serializedModel, + serializationChunk, lioncoreAPI, lioncore, [lioncoreBuiltins, ...dependentMetamodels].flatMap(nodesExtractorUsing(lioncoreAPI)) @@ -21,4 +21,5 @@ export const deserializeLanguage = (serializedModel: SerializedModel, ...depende language.dependingOn(...dependentMetamodels) return language } +// TODO pass a function that can resolve dependent metamodels, since they'd generally only known in the serialization diff --git a/src/m3/functions.ts b/src/m3/functions.ts index d3d935c5..d775e772 100644 --- a/src/m3/functions.ts +++ b/src/m3/functions.ts @@ -86,7 +86,7 @@ const containeds = (thing: M3Concept): M3Concept[] => { return thing.entities } if (thing instanceof Classifier) { - return thing.features + return thing.features as M3Concept[] // (cast is necessary because of presence of Feature#classifier getter...?) } if (thing instanceof Enumeration) { return thing.literals diff --git a/src/m3/lioncore.ts b/src/m3/lioncore.ts index d94b6fc5..ebd693cc 100644 --- a/src/m3/lioncore.ts +++ b/src/m3/lioncore.ts @@ -1,6 +1,6 @@ import {LanguageFactory} from "./factory.ts" import {builtinClassifiers, builtinPrimitives} from "./builtins.ts" -import {Classifier, Feature, lioncoreQNameSeparator} from "./types.ts" +import {Classifier, EnumerationLiteral, Feature, lioncoreQNameSeparator} from "./types.ts" import {checkAll} from "../id-generation.ts" @@ -23,6 +23,9 @@ const factory = new LanguageFactory( if (node instanceof Classifier) { return node.name } + if (node instanceof EnumerationLiteral) { + return `${node.enumeration.name}-${node.name}` + } if (node instanceof Feature) { return `${node.classifier.name}-${node.name}` } @@ -234,3 +237,5 @@ export const metaFeatures = { property_type } +export {lioncoreQName} + diff --git a/src/m3/serializer.ts b/src/m3/serializer.ts index 40aaf808..14384163 100644 --- a/src/m3/serializer.ts +++ b/src/m3/serializer.ts @@ -1,6 +1,6 @@ import {Language} from "./types.ts" -import {SerializedModel} from "../serialization.ts" -import {serializeModel} from "../serializer.ts" +import {SerializationChunk} from "../serialization.ts" +import {serializeNodes} from "../serializer.ts" import {lioncoreAPI} from "./api.ts" @@ -9,6 +9,6 @@ import {lioncoreAPI} from "./api.ts" * using {@link M3Concept these type definitions}) * into the LIonWeb serialization JSON format. */ -export const serializeLanguage = (language: Language): SerializedModel => - serializeModel([language], lioncoreAPI) +export const serializeLanguage = (language: Language): SerializationChunk => + serializeNodes([language], lioncoreAPI) diff --git a/src/m3/types.ts b/src/m3/types.ts index 1d9a55cf..634a4e3a 100644 --- a/src/m3/types.ts +++ b/src/m3/types.ts @@ -179,7 +179,9 @@ class EnumerationLiteral extends M3Node { constructor(enumeration: Enumeration, name: string, key: string, id: Id) { super(id, name, key, enumeration) } - // TODO add enumeration getter + get enumeration(): Enumeration { + return this.parent! as Enumeration + } } class Language extends M3Node { diff --git a/src/serialization.ts b/src/serialization.ts index 320d7c24..0ae4a3ec 100644 --- a/src/serialization.ts +++ b/src/serialization.ts @@ -51,10 +51,9 @@ export type SerializedLanguageReference = { /** * Type definition for a serialization of a whole model to JSON. */ -export type SerializedModel = { +export type SerializationChunk = { serializationFormatVersion: string languages: SerializedLanguageReference[] nodes: SerializedNode[] } -// TODO rename -> Serialization? diff --git a/src/serializer.ts b/src/serializer.ts index 404f5f99..e970d253 100644 --- a/src/serializer.ts +++ b/src/serializer.ts @@ -1,5 +1,5 @@ import {ConceptDeducer as _ConceptDeducer, ModelAPI} from "./api.ts" -import {MetaPointer, SerializedModel, SerializedNode} from "./serialization.ts" +import {MetaPointer, SerializationChunk, SerializedNode} from "./serialization.ts" import {asIds} from "./functions.ts" import {Node} from "./types.ts" import {Containment, isINamed, Language, Property, Reference} from "./m3/types.ts" @@ -14,8 +14,8 @@ import {BuiltinPrimitive, lioncoreBuiltins, serializeBuiltin} from "./m3/builtin * This usage implies that the serialization will conform to (the metamodel of) a particular {@link Language language}, * which means that models that _don't_ conform to a (given) language can't be serialized truthfully! */ -export const serializeModel = (model: NT[], api: ModelAPI): SerializedModel /* <=> JSON */ => { - const nodes: SerializedNode[] = [] // keep nodes as much as possible "in order" +export const serializeNodes = (nodes: NT[], api: ModelAPI): SerializationChunk /* <=> JSON */ => { + const serializedNodes: SerializedNode[] = [] // keep nodes as much as possible "in order" const ids: { [id: string]: boolean } = {} // maintain a map to keep track of IDs of nodes that have been serialized const languagesUsed: Language[] = [] const registerLanguageUsed = (language: Language) => { @@ -44,7 +44,7 @@ export const serializeModel = (model: NT[], api: ModelAPI): references: [], parent: null } - nodes.push(serializedNode) + serializedNodes.push(serializedNode) ids[node.id] = true allFeaturesOf(concept).forEach((feature) => { const value = api.getFeatureValue(node, feature) @@ -62,7 +62,7 @@ export const serializeModel = (model: NT[], api: ModelAPI): }) return } - if (feature instanceof Containment /* && asArray(value).length > 0 */) { + if (feature instanceof Containment) { const children = asArray(value) as NT[] serializedNode.children.push({ containment: featureMetaPointer, @@ -71,7 +71,7 @@ export const serializeModel = (model: NT[], api: ModelAPI): children.forEach((child) => visit(child, node)) return } - if (feature instanceof Reference /* && asArray(value).length > 0 */) { + if (feature instanceof Reference) { const targets = asArray(value) serializedNode.references.push({ reference: featureMetaPointer, @@ -86,14 +86,14 @@ export const serializeModel = (model: NT[], api: ModelAPI): serializedNode.parent = parent?.id ?? null } - model.forEach((node) => visit(node, undefined)) + nodes.forEach((node) => visit(node, undefined)) return { serializationFormatVersion: "1", languages: languagesUsed .filter((language) => !language.equals(lioncoreBuiltins)) .map(({key, version}) => ({ key, version })), - nodes + nodes: serializedNodes } } diff --git a/src/utils/recursion.ts b/src/utils/recursion.ts index a70eb4b6..c87974ab 100644 --- a/src/utils/recursion.ts +++ b/src/utils/recursion.ts @@ -1,4 +1,7 @@ -export type FlatMapper = (t: T) => R[] +/** + * Type def. of a generic "flatMap" function. + */ +type FlatMapper = (t: T) => R[] /** * Performs a "flatMap" on a graph that's specified as a start vertex and a function that computes (outgoing) edges. @@ -27,6 +30,10 @@ const flatMapNonCyclingFollowing = ( const trivialFlatMapper = (t: T) => [t] +export type { + FlatMapper +} + export { flatMapNonCyclingFollowing, trivialFlatMapper