Hi! I just wanted to share my public release of something I’ve been working on. The Paradigm library provides some core utilities for a data modeling framework. As an example, there might be 3 different things that you want to reason about:
the idea of a Thrift model
some particular Thrift model
data conforming to that particular model
Paradigm lets you set this up formally. You can also have different information co-existing at each level allowing you to set up, say, Thrift<->Protobuf schema conversions or data-level integrations.
The core is still subject to major changes. I am working on several other libraries using it as a dependency. In particular
Interoperability with metamodels for Thrift/Protobuf/Avro
Codegen with compile-time validity checks
BaseX XQuery graph adapters for document database
Thank you for your time and feel free to get in touch.
I’ve read the doc and examples and I still don’t understand what this library does and what problems it solves. Plus, documentation has a lot of jargon specific for MBSE (I had to google what MBSE means too). Perhaps it would make sense to do one of these two things:
Mark that the library is intended for users who have prior MBSE knowledge of some level and link some resources which would provide this knowledge
Make the documentation and examples accessible for average Elixir developer with simple examples, real-world use-case examples, guides, cheatsheets, maybe even youtube videos with demonstrations
PS. Personally, I find comments in the example very funny
Get the metamodel paradigm, embed it into a graph for manipulation, validate that the embedded graph conforms to the metamodel, extract back to a paradigm struct
Even though comments are in plain English, it all sounds like I joined maths course in the middle of it, and now nothing makes sense to me
It’s not expected to be widely directly applicable without more structure around it (i.e more Paradigms and Transforms). That work is ongoing. I am also working on a book, “Basic Applied Metamodeling” that starts from zero assumptions and has a bunch of nice diagrams to introduce the theory behind it.
If you are interested in the maths then the foundation is in category theory with the notion of database instances as set-valued functors.
Thanks again and I will have more exposition forthcoming.
This round-tripping process is front-and-center because it’s the “semantic bootstrapping” of a system. The self-model is valid as data or as a paradigm. The meta-meta-model is the same as the meta-model.
I am trying to add some clarity but it’s arcane stuff by nature. Even MBSE practitioners need not bother themselves with this, it’s really for those making tools.
This is adjacent:
The interoperability layer is a more compelling application. You can slurp up a folder of heterogenous format schemas, round-trip between them to see which ones have universal representation, and stub out mediation layers. I could use some help on it if anyone is interested
Hey all, just wanted to bump this thread as the library and docs have been extensively worked-over, and I also have some demos running at https://paradigmpro.live/. I will be back soon with a technical paper. Cheers