This repository is part of the NIEMOpen project. It contains the NIEMOpen Common Model Format Tool (CMF).
The NIEM Common Model Format (CMF) is a data modeling formalism for NIEM-conforming data exchange specifications. CMFTool is a command-line tool for the designers of those specifications.
For more information on NIEMOpen, see the project's website at www.niemopen.org.
General questions about OASIS Open Projects may be directed to OASIS staff at [email protected]
The code base is reorganized into four subprojects:
- app-cmftool: Code for the cmftool command-line program
- app-scheval: Code for the scheval command-line program.
- lib-cmf: Library for all things CMF and NIEM-XSD
- lib-util: Utility library for people who don't necessarily care about CMF
The CMF specification has changed significantly since the alpha.2 release.
- The representation of augmentations is completely different (and much simpler)
- Wildcards (xs:any and xs:anyAttribute) are supported
- Internationalization support added for all documentation strings
This version of CMFTool is not compatible with older CMF files. Older versions of CMFTool are not compatible with current CMF files.
-
You must have a Java runtime environment. JRE21 or later will work. JRE17 might work.
- Try
java –version
from the command line. If that works, you should be OK - Otherwise make sure your
JAVA_HOME
environment variable points to your JRE
- Try
-
Unpack the executable distribution from the Assets tab on the Release page
- The cmftool program is in cmftool-1.0-alpha.3.zip
- The scheval program is in scheval-1.0-beta.1.zip
- It's OK to combine the bin and lib directories from both.
-
Put the bin directory into your PATH
-
Try
cmftool help
from the command line
The CrashDriver message specification is in lib-cmf/examples/CrashDriver. The XSD representation of the message model in the model.xsd directory exercises most of the features of the NIEM 6 naming and design rules.
cmftool x2m -o tmp.cmf model.xsd/cmf.xsd
will create the CMF version of the model in tmp.cmf. This should be the same as model.cmf.cmftool m2x -o tmp tmp.cmf
will create the XSD version of the model in the tmp directory. This should be the same as model.xsd.
The src/test/resources directories contains resources for the JUnit tests. Many, many examples there.
This project was built with NetBeans 24, Gradle 8.12, and Oracle JDK 21.
Try ./gradlew build
In addition to this GitHub repository, this project also makes use of other assets.
- The NIEMOpen website is at www.niemopen.org. The website contains news, announcements, and other information of interest about the project.
- The General purpose mailing list. To subscribe, send an empty email message to [email protected]. Anyone interested is welcome to subscribe and send email to the list. The list maintains an archive.
- The Project Governing Board mailing list. This is the discussion list for use by the members of the PGB. To subscribe, send an empty email message to [email protected]. Anyone interested is welcome to subscribe read-only. Only PGB members can post. The list maintains an archive.
- NBAC Technical Steering Committee mailing list. This is the discussion list for use by the members of the NIEM Business Architecture Committee TSC. To subscribe, send an empty email message to [email protected]. Anyone interested is welcome to subscribe read-only. The list maintains an archive.
- NTAC Technical Steering Committee mailing list. This is the discussion list for use by the members of the NIEM Technical Architecture Committee TSC. To subscribe, send an empty email message to [email protected]. Anyone interested is welcome to subscribe read-only. The list maintains an archive.
Please read CONTRIBUTING.md for details how to join the project, contribute changes to our repositories and communicate with the rest of the project contributors. Please become familiar with and follow the code of conduct.
NIEM Open operates under the terms of the Open Project Rules and the applicable license(s) specified in LICENSE.md. Further details can be found in GOVERNANCE.md, GOVERNANCE-NBAC.md, and GOVERNANCE-NTAC.md.
All technical contributions must be covered by a Contributor's License Agreement. This requirement allows our work to advance through OASIS standards development stages and potentially be submitted to de jure organizations such as ISO. You will get a prompt to sign this document when you submit your first pull request to a project repository, or you can sign here. If you are contributing on behalf of your employer, you must also sign the ECLA here.q