bibrecordbibrecordThe base R function utils::bibentry() provides a way to
structure citation metadata. While effective for simple references, it
falls short for modern metadata standards like:
Dublin Core Terms (DCTERMS)
DataCite
Both require clear distinction between creators, contributors, and
richly typed relationships — things bibentry() doesn’t
natively support.
To bridge this gap while preserving compatibility with base R, the
bibrecord class builds on top of bibentry,
adding support for:
Multiple person() entries for contributors
Metadata fields aligned with DCTERMS and DataCite
Safe serialization and printing
bibrecordA bibrecord is a standard bibentry object
with additional fields stored in attributes. This means:
You can use it with any code expecting a
bibentry
You gain structured metadata fields like
contributor, subject,
identifier
Methods like print() are extended to reflect these
enrichments
bibrecordperson_jane <- person("Jane", "Doe", role = "cre")
person_alice <- person("Alice", "Smith", role = "dtm")
rec <- bibrecord(
title = "GDP of Small States",
author = list(person_jane),
contributor = list(person_alice),
publisher = "Tinystat",
identifier = "doi:10.1234/example",
date = "2023-05-01",
subject = "Economic indicators"
)bibrecordThis prints both the base citation and the contributors, clearly labelled.
Because bibrecord inherits from
bibentry:
It works with citation() and other base R citation
tools
It integrates with existing bibliographic pipelines
You can convert it to as_dublincore() or
as_datacite() without loss of structure
The bibrecord class can be further enriched by:
Adding support for funder, geolocation,
relatedIdentifier, etc.
Exporting to JSON-LD or RDF formats
Integrating with Zenodo, Crossref, or Wikidata APIs
| Feature | bibentry |
bibrecord |
|---|---|---|
| Base R support | ✅ | ✅ |
| Contributors | ❌ | ✅ |
| Semantic roles | ❌ | ✅ |
| DCTERMS export | ❌ | ✅ |
| DataCite-ready | ❌ | ✅ |
bibrecord is your drop-in upgrade for structured
metadata in R.
Start simple. Stay compatible. Go semantic.