dragoman 0.4.20

Server for scholarly metadata in commonmeta format stored in a SQLite database.
<script>
  import { _ } from '@sveltia/i18n'
  import CodeBlock from './CodeBlock.svelte'

  const code1 = `curl -H "Accept: application/x-bibtex" \\\n     https://commonmeta.org/10.1371/journal.pcbi.1000204`
  const code2 = 'curl https://commonmeta.org/10.1371/journal.pcbi.1000204?format=bibtex'
  const code3 = `curl -H "Accept: text/x-bibliography; style=vancouver; locale=de-DE" \\\n     https://commonmeta.org/10.1371/journal.pcbi.1000204`
  const code4 = 'curl "https://commonmeta.org/10.1371/journal.pcbi.1000204?format=citation&style=vancouver&locale=de-DE"'
  const code5 = `curl -H "Accept: application/vnd.citationstyles.csl+json;q=0.9, application/x-bibtex" \\\n     https://commonmeta.org/10.1371/journal.pcbi.1000204`
</script>

Commonmeta is a metadata standard for scholarly metadata. Commonmeta focuses on tools and services, helping them to convert metadata between the various formats. Commonmeta is defined and can be validated with JSON Schema. Supported formats include:

- [BibTeX](#supported-formats)
- [RIS](#supported-formats)
- [CSL-JSON](#supported-formats)
- [Crossref](#supported-formats)
- [DataCite](#supported-formats)
- [Schema.org](#supported-formats)

Commonmeta focusses on general bibliographic metadata, rather than metadata for specific disciplines or subdisciplines. BibTeX and RIS are widely supported by reference managers, allowing the sharing of metadata for references and reference lists. CSL-JSON is the input format used by the Citation Style Language (CSL) to generate formatted citations in thousands of citation styles. Crossref and DataCite are DOI registration agencies, enabling the registration of persistent identifiers and associated metadata. Schema.org is a popular schema for structured content on the web (not limited to scholarly resources). Commonmeta can and should support additional formats for metadata import and/or export.

## Inspiration

Codemeta and Commonmark are important inspirations for Commonmeta, both in name and philosophy. They share these principles:

- driven by real-world implementations and not committees
- features that focus on what is common in existing implementations/formats
- a testable specification

### Codemeta

[CodeMeta](https://codemeta.github.io/) contributors are creating a minimal metadata schema for science software and code, in JSON and XML. The goal of CodeMeta is to create a concept vocabulary that can be used to standardize the exchange of software metadata across repositories and organizations. CodeMeta started by comparing the software metadata used across multiple repositories, which resulted in the CodeMeta Metadata Crosswalk. That crosswalk was then used to generate a set of software metadata concepts, which were arranged into a JSON-LD context for serialization.

### Commonmark

[Commonmark](https://commonmark.org) is a strongly defined, highly compatible specification of Markdown, along with a suite of comprehensive tests to validate Markdown implementations against this specification.

## Implementations

### commonmeta-py (Python)

commonmeta-py is a Python library to implement Commonmeta. The first release on PyPi (version 0.5.0) was on February 16, 2023.

<p class="not-prose my-2"><a href="https://pypi.org/project/commonmeta-py/" target="_blank" rel="noreferrer"><img src="https://img.shields.io/pypi/v/commonmeta-py.svg" alt="PyPI version" class="inline-block" /></a></p>

### commonmeta-ruby (Ruby)

commonmeta-ruby is a rewrite (and rename) of the Briard Ruby Gem, which in turn was based on the [Bolognese Gem](https://rubygems.org/gems/bolognese).

<p class="not-prose my-2"><a href="https://badge.fury.io/rb/commonmeta-ruby" target="_blank" rel="noreferrer"><img src="https://badge.fury.io/rb/commonmeta-ruby.svg" alt="Gem Version" class="inline-block" /></a></p>

### commonmeta (Go)

commonmeta is a Go module to implement Commonmeta. Commonmeta was first released on April 19, 2024.

<p class="not-prose my-2"><a href="https://pkg.go.dev/github.com/front-matter/commonmeta" target="_blank" rel="noreferrer"><img src="https://pkg.go.dev/badge/github.com/front-matter/commonmeta.svg" alt="Go Reference" class="inline-block" /></a></p>

### commonmeta-rs (Rust)
commonmeta-rs is a Rust crate to implement Commonmeta. Commonmeta-rs is work in progress, the first release was on June 6, 2026. commonmeta-rs is used in [Dragoman](https://codeberg.org/front-matter/dragoman) and will become the commonmeta reference implementation.

<p class="not-prose my-2"><a href="https://crates.io/crates/commonmeta" target="_blank" rel="noreferrer"><img src="https://img.shields.io/crates/v/commonmeta.svg" alt="Crates.io version" class="inline-block" /></a></p>

## JSON Schema

The Commonmeta metadata format is defined and can be validated with a [JSON Schema](/commonmeta_v1.0rc1.json). The JSON Schema is available in the [commonmeta-rs](https://codeberg.org/front-matter/commonmeta-rs) repository and validates metadata in Commonmeta format. The schema is at version 1.0rc1 (version 1.0, release candidate 1), v1.0 is expected to be released in September 2026.

<h2 id="local-pid-database">{_('docs.database.title')}</h2>

<p>{_('docs.database.intro')}</p>

<h2 id="search">{_('docs.search.title')}</h2>

<p>{_('docs.search.intro')}</p>

<h2 id="history-bookmarks">{_('docs.saved.title')}</h2>

<p>{_('docs.saved.intro')}</p>

<h2 id="keyboard-shortcuts">{_('docs.shortcuts.title')}</h2>

| Shortcut | Action |
| --- | --- |
| ⌘K / Ctrl-K | Focus search bar |
| ⌘Y / Ctrl-Y | Toggle History & Bookmarks panel (History tab) |
| ⌘B / Ctrl-B | Toggle History & Bookmarks panel (Bookmarks tab) |
| Escape | Close panel or cancel search |
| Enter | Navigate to selected search result |

<h2 id="supported-formats">{_('docs.formats.title')}</h2>

| Format | Name | Content Type | Read | Write |
| --- | --- | --- | :---: | :---: |
| Commonmeta | commonmeta | application/vnd.commonmeta+json | ✓ | ✓ |
| [BibTeX](http://en.wikipedia.org/wiki/BibTeX) | bibtex | application/x-bibtex | ✓ | ✓ |
| [Citation File Format (CFF)](https://citation-file-format.github.io/) | cff | application/vnd.cff+yaml | ✓ | later |
| [Codemeta](https://codemeta.github.io/) | codemeta | application/vnd.codemeta.ld+json | ✓ | later |
| [Crossref](https://api.crossref.org) | crossref | application/vnd.crossref+json | ✓ | ✓ |
| [CrossRef XML](https://www.crossref.org/schema/documentation/unixref1.1/unixref1.1.html) | crossref_xml | application/vnd.crossref.unixref+xml | ✓ | ✓ |
| [CSL-JSON](https://citationstyles.org/) | csl | application/vnd.citationstyles.csl+json | ✓ | ✓ |
| [DataCite](https://api.datacite.org/) | datacite | application/vnd.datacite.datacite+json | ✓ | ✓ |
| [DataCite XML](https://datacite-metadata-schema.readthedocs.io/en/4.7/) | datacite_xml | application/vnd.datacite.datacite+xml | ✓ | ✓ |
| [Formatted Citation](https://citationstyles.org/) | citation | text/x-bibliography | n/a | ✓ |
| [InvenioRDM](https://inveniordm.docs.cern.ch/reference/metadata/) | inveniordm | application/vnd.inveniordm.v1+json | ✓ | ✓ |
| [JSON Feed](https://www.jsonfeed.org/) | jsonfeed | application/feed+json | ✓ | later |
| [OpenAlex](https://www.openalex.org/) | openalex | n/a | ✓ | later |
| [RIS](http://en.wikipedia.org/wiki/RIS_(file_format)) | ris | application/x-research-info-systems | ✓ | ✓ |
| [Schema.org (JSON-LD)](http://schema.org/) | schemaorg | application/vnd.schemaorg.ld+json | ✓ | ✓ |

<h2 id="content-negotiation">{_('docs.content_negotiation.title')}</h2>

<p>{@html _('docs.content_negotiation.intro')}</p>

<p>{_('docs.content_negotiation.bibtex_label')}</p>

<CodeBlock code={code1} />

<p>{@html _('docs.content_negotiation.format_param_label')}</p>

<CodeBlock code={code2} />

<p>{@html _('docs.content_negotiation.citation_style_label')}</p>

<CodeBlock code={code3} />

<p>{_('docs.content_negotiation.query_params_label')}</p>

<CodeBlock code={code4} />

<p>{@html _('docs.content_negotiation.multiple_types_label')}</p>

<CodeBlock code={code5} />