Skip to content

CMFTool is a command-line tool for the developers of NIEM-conforming data exchange specifications using the NIEM Common Model Format (CMF).

License

Notifications You must be signed in to change notification settings

niemopen/cmftool

Repository files navigation

Common Model Format Tool (CMFTool)

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]

What's new in version 1.0-alpha.3

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.

Getting started

  1. 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
  2. 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.
  3. Put the bin directory into your PATH

  4. Try cmftool help from the command line

Examples

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.

Testing

The src/test/resources directories contains resources for the JUnit tests. Many, many examples there.

Building

This project was built with NetBeans 24, Gradle 8.12, and Oracle JDK 21. Try ./gradlew build

Other assets

In addition to this GitHub repository, this project also makes use of other assets.

Contributing

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.

Governance

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.

CLA & Non-assert signatures required

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

About

CMFTool is a command-line tool for the developers of NIEM-conforming data exchange specifications using the NIEM Common Model Format (CMF).

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published