Using the Metaschema Information Modeling Framework
Currently, a Metaschema module is defined using an XML-based format. Alternate formats (e.g., JSON, YAML) are currently being considered.
An ISO Schematron ruleset is also provided to enforce some of the rules described in the Metaschema specification.
A tutorial covering basic concepts is provided that will walk you through an example of creating a new Metaschema module.
Schema Generation
A Metaschema module can be used to generate a schema, expressed as an XML or JSON Schema, for the corresponding data model in a format-specific, serializable form (e.g., XML, JSON, YAML). These generated schemas can be used to validate that data to be processed by the system is well-formed and consistent with the requirements of the data model.
Other Generative Use Cases
Metaschema modules are used to generate other model-related artifacts based on the metaschema description. These artifacts include:
- Conversion utilities that can convert content instances between the XML and JSON formats derived from a given metaschema definition, ensuring the resulting content is schema-valid, model-identical, and equivalent to its input (without loss or addition when processed in a Metaschema-aware context).
- Model-aware utilities and mock datasets for generic display, data conversion, reformatting, and testing.
- XML and JSON model documentation for use on a website (e.g., the OSCAL website).
- Programming language APIs used for parsing data conformant to a given data model into a set of language-specific objects, and also writing data in language-specific objects out to one of the supported data model formats.
Related work
- A Java implementation provides Metaschema parsing, data instance validation and parsing, content conversion, Java code generation, and XSD and JSON schema generation capabilities.
- An XSLT implementation provides data instance validation, content conversion, documentation generation, and XSD and JSON schema generation capabilities.