Skip to main content

JADN schema tools

Project description

JADN is an information modeling language used to define the information needed by applications and to serialize that information using one or more data formats. It has several purposes, including convenient and expressive definition of data structures, validation of data instances, providing hints for user interfaces working with structured data, and facilitating protocol internationalization. A JADN specification consists of two parts: an Information Model (abstract schema) that is independent of data format, and serialization rules that define how to represent information using a specific data format. A single JADN schema defines protocol data in multiple formats including XML, JSON, and an actually-concise CBOR format. Additional data formats can be defined and applied to any JADN schema.

The software in this package is organized by function:

  • core: Load, validate, and save a JADN schema.

  • codec: Validate, encode, and decode application information using a specified data format:

    • Idiomatic (verbose) JSON

    • Minimized (concise) JSON

    • CBOR*

    • XML*

  • convert: Convert JADN schema between JSON and documentation formats:

    • text-based Interface Definition Language (IDL)

    • html tables

    • markdown tables

    • GraphViz and PlantUML diagrams

  • transform: Process a JADN schema to produce another JADN schema:

    • combine definitions from separate schemas into a single schema

    • split a schema that defines multiple objects into separate schemas for each object

    • remove unused definitions

    • delete or truncate comments

  • translate: Convert a JADN schema into a concrete schema language:

    • JSON Schema

    • XSD*

    • CDDL*

    • Protobuf*

* Planned

Quickstart

The quickstart.py script illustrates how to use these functions:

  • define and validate a schema

  • convert the schema to and from documentation formats

  • truncate comments

  • translate a JADN schema to JSON Schema

  • validate messages and serialize using multiple data formats:

    • JSON

    • Minimized JSON

Make Artifacts

The make_artifacts.py script translates all JADN schemas in a source directory to multiple formats in an output directory.

Input formats are:

  • JADN

  • JADN IDL

  • HTML (with tags produced by this package)

Output formats are:

  • JADN

  • Core JADN (with extensions removed)

  • JADN IDL

  • HTML tables

  • Markdown tables

  • GraphViz diagram

  • PlantUML diagram

  • JSON Schema

Contributors

Jerome Czachor - Massive code cleanup, type hinting, conversion classes, refactor using datatypes

Feedback

Comments on this software can be submitted using GitHub issues and pull requests.

The JADN specification is being developed by the OASIS OpenC2 Technical Committee. OASIS members may participate directly in its development; others may participate indirectly using GitHub issues or the openc2-comment public mail list.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jadn-0.7.4.tar.gz (68.0 kB view details)

Uploaded Source

Built Distribution

jadn-0.7.4-py2.py3-none-any.whl (62.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file jadn-0.7.4.tar.gz.

File metadata

  • Download URL: jadn-0.7.4.tar.gz
  • Upload date:
  • Size: 68.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for jadn-0.7.4.tar.gz
Algorithm Hash digest
SHA256 db1242283fecd5261cbb245bde6dc195174c15e21f5ae2217396cfd89f205340
MD5 a42b13d362c7f60eb272fe03c707872e
BLAKE2b-256 652c8cd57f144b518400601f7ab3c19821e582278acf672d46f130ca261acb41

See more details on using hashes here.

File details

Details for the file jadn-0.7.4-py2.py3-none-any.whl.

File metadata

  • Download URL: jadn-0.7.4-py2.py3-none-any.whl
  • Upload date:
  • Size: 62.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for jadn-0.7.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 9af68edc48c566f9b87cde1bf693daaef73b5a1d337f698cd7089fcd0bbcf480
MD5 c7b7f2ba02e6f68b54f22a471d769940
BLAKE2b-256 ba5cd5303c5aea7c6157da99fef505c7cf073a093251900e41ec9e1213b8108d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page