|This is a snapshot of the specification that was created during midPrivacy: provenance prototype project. For the latest development version of the document please look in Axiom workspace.|
Axiom is a language originally designed to model data in midPoint project. MidPoint was originally designed with XML and XML Schema Definition (XSD), however those mechanisms were never a perfect fit for project needs. Finally in 2020 it was decided to replace XSD with a new data modeling language that would be a better fit. First step was to use Axiom to represent meta-data schema (meta-schema) for data provenance purposes needed by MidPrivacy initiative.
Axiom was used to model Prism data structures in midPoint. Prism is a Java framework that can be used to maintain object-based data models. Prism specifies basic properties of a data object, it defines data structures that describe object changes (deltas), it specifies query language for objects and so on. Prism evolved in midPoint project where it was used as a basic data framework.
Axiom sytnax was heavily inspired by Statement concepts were inspired by YANG modeling language. Some of Axiom concepts were also inspired by YANG.
Axiom in MidPoint
Axiom is data modeling language used to model data and metadata for Prism and midPrivacy project, with intention to replace XSD as go-to modeling language for Prism.
Axiom is designed with migration path from XSD to Axiom in mind, which is possible thanks to common mapping of concepts via Prism. Axiom maps more directly to Prism concepts and it is intended to be less verbose than same model written in XSD.
Axiom is developed in an incremental fashion. The focus is on practical use and overall usefulness of Axiom. We have no ambition for Axiom to become a universal language suitable for every situation. Axiom is designed for use in applications.
Axiom is built on solid foundations. We are paying a lot of attention to make sure that the basic principles of Axiom are correct and consistent and that Axiom can evolve in the future. But all the details of Axiom are not laid out yet. However, first versions of Axiom are not going to be perfect. It will be limited and there may be mistakes that need to be corrected in the future. However, Axiom can be validated only by practical use of the language in prototypes and real-world implementations. Therefore the primary goal of Axiom effort is to allow for such implementations to allow Axiom to continually improve. Each new version of Axiom should be better, more detailed, better documented, more polished.
Axiom specification will progress from initial draft to early versions, prototypes, specification improvements, validation using initial implementations, progressing in iterations. Language specifications will go hand in hand with implementations. Primary implementation of Axiom is available under open source license and developed in the open source way.
Axiom may get standardized eventually. But we want to avoid premature standardization. We see standardization as the very last step in Axiom development. Before we get to standardization, we need to make sure that Axiom is good enough and that it works. That has to be proven by several independent implementations and the language needs sufficient time to mature.
Axiom was created and it is maintained by Evolveum.
Initial version of Axiom was developed in MidPrivacy project that was supported by funding from NGI_TRUST program.
This project has received funding from the European Union’s Horizon 2020 research and innovation programme under the NGI_TRUST grant agreement no 825618.