Commonmeta is a set of libraries to convert scholarly metadata into different formats via an intermediary format defined by JSON Schema. The schema is now available as a v1.0 version release candidate, with v1.0 planned to be released in September.

The feature image of this post is from a presentation by Geoffrey Bilder from the early work on the Research Organization Registry (ROR) where we were both involved. The organizational identifier gap has since been addressed, making another important gap visible: the metadata to describe scholarly content, contributors and organizations with persistent identifies (via Crossref, DataCite, ORCID, ROR) and the ways to obtain them via APIs or downloadable annual data files, are fragmented and complicated. Commonmeta tries to address one important aspect of this gap, making these metadata easier to interoperate, e.g. when combining metadata about dissertations or preprints registered with Crossref or DataCite, or finding out more details (e.g. license or language) about the works found in an ORCID profile.

Work on commonmeta started with the bolognese Ruby library that I wrote in 2017 as DataCite Technical Director to support DOI content negotiation and later also DOI registration. In 2023 I announced commonmeta as I had refactored bolognese to be more generic and rewritten in Python. When I launched the Rogue Scholar science blog archive in 2023, I added Crossref DOI registration functionality to commonmeta. And in the last nine months I worked on integrating Crossref DOI registration into the InvenioRDM repository platform, version 14.0 will launch in a few weeks and has Crossref DOI registration built in.

Crossref DOI registration requires submitting XML and XML validation, features supported in commonmeta, included the latest Crossref 5.5 schema announces last week. But commonmeta itself is described in JSON and defined via JSON Schema. JSON is not only the most common serialization format for scholarly metadata (compared to XML, JSON-LD, or older formats such as bibtex or ris), but is also much easier (and faster) to work with, including the important checks for validity and consistency. Commonmeta therefore is described with JSON Schema, but until now the schema was at version 0.x and not stable. Releasing a stable v1.0 of the schema will be an important milestone.

This version v1.0 of the commonmeta schema comes with four important changes:

  1. Focus on collections. Scholarly metadata are now always described as a collection (array or list) of objects. This more naturally describes the ways we work with scholarly metadata and the supported commonmeta formats, e.g. bibtex or a bibliography of formatted citations. Describing a single scholarly object (e.g. a journal article) with commonmeta is of course still possible.
  2. Support for works, people and organizations. Previous versions of commonmeta focussed on scholarly metadata for works. With schema 1.0, commonmeta can also describe people and organizations, typically as the first object in a collection, e.g. a list of publications by a particular person or organization. The initial support for people and organizations focusses on ORCID and ROR, allowing the conversion of ORCID or ROR records into commonmeta format and the deeper integration of people and affiliation metadata in scholarly works.
  3. Release of commonmeta-rs. The commonmeta v1.0 schema is supported by commonmeta-py, the Python version of the commonmeta library. Working with large collections, e.g. the 2026 Crossref public data file with nearly 180 million records, can be slow in Python, one reason why I launched a Go version of the commonmeta library in April 2024. This worked well, but Go has one important limitation: there is currently no csl processor to generate formatted citation using the Citation Style Language, one essential use case for commonmeta.
    Last month I therefore launched a Rust version of commonmeta (commonmeta-rs) with many of the same advantages (fast, static typing, single binary), but with formatted citation support via the Typst Hayagriva Rust library. The commonmeta v1.0 schema is also supported by commonmeta-rs.
  4. Release of language-neutral test fixtures. Commonmeta implementations in multiples languages (Ruby, Python, Go, Rust) can make it challenging to keep functionality in sync. A common JSON Schema is a big help, but I also released a set of test fixtures with the expected inputs and outputs for the supported metadata formats. The JSON Schema and test fixtures are generated from a single source and can be installed as Python package or Rust crate, further helping to harmonize the different language implementations.

The latest schema can be found at https://codeberg.org/front-matter/commonmeta-schema/src/branch/main/schemas. Please reach out via emailMastodonBluesky or Rogue Scholar Slack if you have any questions or comments regarding the commometa v1.0 schema release candidate.

References

  1. Fenner, M. (2017). Bolognese: A Ruby library for conversion of DOI Metadata [Computer software]. DataCite. https://doi.org/10.5438/N138-Z3MK
  2. Fenner, M. (2023, March 9). Announcing Commonmeta. Front Matter. https://doi.org/10.53731/cp7apdj-jk5f471
  3. Feeney, P. (2026, July 9). Schema 5.5 now available: Adding CRediT, new record types for blogs and posters, and more. Crossref Blog. https://doi.org/10.64000/6xx3c-nmp80
  4. Rittman, M., Del Ojo Elías, C., & Montilla, L. (2026, March 17). 2026 public data file now available. Crossref Blog. https://doi.org/10.64000/7s70g-drz77
  5. Fenner, M. (2024, April 23). Rogue Scholar is learning a new language. Front Matter. https://doi.org/10.53731/azg9q-3vn50