Skip to main content

Commonmeta JSON Schemas and conformance fixtures

Project description

commonmeta-schema

Language-neutral JSON Schema definitions and conformance fixtures for Commonmeta, the scholarly metadata interchange format.

This repository is the shared source of truth consumed by the following Commonmeta implementations:

Keeping the schema and the golden fixtures in one place lets every implementation validate against the same contract and run the same cross-format conformance tests.

Layout

schemas/
  commonmeta_v1.0rc2.json      # the Commonmeta JSON Schema (current: v1.0rc2)
fixtures/
  commonmeta/                  # canonical Commonmeta records (round-trip + expected output)
  <format>/                    # input fixtures in a given source format
  <format>_out/                # expected writer output (Commonmeta -> format)
  <format>_commonmeta/         # expected reader output for non-JSON inputs

Schema versions

Schemas are versioned by filename. The current version is commonmeta_v1.0rc2.json; new versions are added alongside it rather than replacing existing files, so implementations can pin a version. The schema_version field of a Commonmeta record is the URL https://commonmeta.org/commonmeta_v1.0rc2.json.

Fixture conventions

The conformance harness in each implementation follows these naming rules (a missing pair is skipped, so partial coverage is fine):

Test kind Input Expected
Round-trip fixtures/commonmeta/<name>.json itself (re-serialized, semantically equal)
Reader (JSON input) fixtures/<format>/<name>.json fixtures/commonmeta/<name>.json
Reader (text input) fixtures/<format>/<name>.<ext> fixtures/<format>_commonmeta/<name>.json
Writer fixtures/commonmeta/<name>.json fixtures/<format>_out/<name>.<ext>

Formats currently covered: crossref, crossref_xml, datacite, datacite_xml, schemaorg, csl, bibtex, cff, ris, jsonfeed, inveniordm, codemeta.

Semantic comparison

Fixtures are compared as parsed JSON trees, not as strings, using an omitempty-aware and numeric-aware diff: key order and whitespace are irrelevant, an absent field equals an empty/zero/null value, and 52 equals 52.0. This keeps hand-authored fixtures robust across implementations.

Using this repository

Each implementation vendors (copies) the schema and fixtures it needs from here. Update the canonical files in this repository first, then sync them into commonmeta-rs and commonmeta-py.

Packaging and publishing

This repository can be published as both:

  • a Python package on PyPI (commonmeta-schema)
  • a Rust crate on crates.io (commonmeta-schema)

For the initial release, publish explicitly via CLI (not CI automation).

Package versions follow the schema version:

  • PyPI uses PEP 440 form: 1.0rc2
  • crates.io uses SemVer form: 1.0.0-rc.2

Python (PyPI) via uv publish

  1. Ensure you are authenticated for PyPI (recommended: trusted publisher or API token).
  2. Build distribution artifacts:
uv build
  1. Optionally validate the build metadata:
uvx twine check dist/*
  1. Publish to PyPI:
uv publish

Rust (crates.io) via cargo publish

  1. Log in once with a crates.io token:
cargo login
  1. Validate package contents from the crate directory:
cargo package --manifest-path rust/Cargo.toml --allow-dirty
  1. Publish:
cargo publish --manifest-path rust/Cargo.toml

Recommended first-release order

  1. Publish 1.0rc2 to PyPI with uv publish.
  2. Publish 1.0.0-rc.2 to crates.io with cargo publish.
  3. Create a git tag v1.0rc2 after both uploads succeed.

License

MIT © 2026 Front Matter

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

commonmeta_schema-1.0rc2.dev2.tar.gz (181.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

commonmeta_schema-1.0rc2.dev2-py3-none-any.whl (241.0 kB view details)

Uploaded Python 3

File details

Details for the file commonmeta_schema-1.0rc2.dev2.tar.gz.

File metadata

  • Download URL: commonmeta_schema-1.0rc2.dev2.tar.gz
  • Upload date:
  • Size: 181.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for commonmeta_schema-1.0rc2.dev2.tar.gz
Algorithm Hash digest
SHA256 e0396aff3d06f402e4a349fa03f8c4f1a5e5b5e7f14ca8b9ba4cd1161eacb130
MD5 c8229df8f076f5ef93d8519f3a801ac0
BLAKE2b-256 ea16dab8c658c73987e49e6ad24a6c76cfae5b1f470a0c32079d635768a85bf6

See more details on using hashes here.

File details

Details for the file commonmeta_schema-1.0rc2.dev2-py3-none-any.whl.

File metadata

  • Download URL: commonmeta_schema-1.0rc2.dev2-py3-none-any.whl
  • Upload date:
  • Size: 241.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for commonmeta_schema-1.0rc2.dev2-py3-none-any.whl
Algorithm Hash digest
SHA256 641465a194f73dbd1f194a4b1d046f121a70265433a6c578cceb715827334bcd
MD5 cb1addfb3701f662ebbb5a7b013b62ea
BLAKE2b-256 9e129a306da38aa0c9fe7bd45810d9314ec70c0eb08a8618a015f6b2fba8a123

See more details on using hashes here.

Supported by

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