Paradigm - A metamodeling framework for MBSE tooling

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:

  1. the idea of a Thrift model
  2. some particular Thrift model
  3. 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.

2 Likes

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

2 Likes

Thank you for checking it out!

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 :smiley:

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

1 Like