Titles, abstracts & authors
BMJ journal article metadata from 21 July 2025 through 21 July 2026, preserving the source journal directory structure.
Three public, read-only R2 datasets for rapid prototyping: article metadata, open-access full text, and Cloudflare-native BGE vectors.
Every dataset has a machine-readable catalog and a paginated listing API. No read credentials are required.
BMJ journal article metadata from 21 July 2025 through 21 July 2026, preserving the source journal directory structure.
Full-text JSON for three open-access titles: BMJ Diabetes Research & Care, BMJ Medicine and BMJ Oncology.
A normalized float32 matrix aligned to 32,814 usable metadata records and the embedding space used by Cloudflare Workers AI.
R2 object keys describe where a file lives. JSON property keys describe the data inside that file. Both contracts are documented below.
R2 is a flat object store. The slash-separated “folders” shown here are key prefixes retained from the source export.
| Bucket | Objects | Object-key patterns | Contents |
|---|---|---|---|
| metadata | 32,984 | <journal-id>/<YYYYMMDD>_<uid>.json_state/<journal-id>.json |
32,894 article files, 87 journal state files, export and journal manifests, and a generated catalog. |
| fulltext | 227 | <journal-id>/<YYYYMMDD>_<uid>.json_state/<journal-id>.json |
222 full-text articles from bmjdrc, bmjmed and bmjonc, plus state, manifest and catalog files. |
| vectors | 4 | title_abstract.cf-baai-bge-small-en-v1-5.{f32,json} |
A binary float32 matrix, its ordered-ID sidecar, the vector storage guide and a generated catalog. |
All four hosts are served by one read-only Worker. No read token is required, writes are rejected, CORS is open, and large objects support byte ranges.
GET /Dataset description, catalog URL and useful entry points.GET /catalog.jsonEvery source key with byte size, SHA-256 and public URL.GET /__list?prefix=bmjopen/&limit=100Live paginated listing. Follow next_url until truncated is false.GET /<object-key>Fetch an exact object. HEAD, conditional requests and Range are supported.Article files use a deliberately compact normalized schema. The metadata and full-text exports share the same identity, title, abstract and author fields.
Found under a journal prefix in the metadata bucket.
uidstringStable UUID used in the filename and in the ordered vector sidecar IDs.titlestringArticle title as plain text.abstractstringNormalized abstract text.authorsarrayOrdered author objects.authors[].namestringDisplay name for an author.authors[].affiliationsstring[]Zero or more affiliation strings for that author.{
"uid": "6908057e-2698-5153-bf0f-134f410dd4d3",
"title": "…",
"abstract": "…",
"authors": [
{ "name": "…", "affiliations": ["…"] }
]
}
Uses every metadata-article key above and adds one field.
full_textstringNormalized full article text for the open-access article.These files support discovery, reproducibility and integrity checking. Most prototypes should begin with catalog.json or journals.json.
catalog.json| Key | Type | Meaning |
|---|---|---|
schema_version | number | Catalog schema version. |
dataset, title | string | Machine and display names. |
access | string | Currently public-read. |
public_base_url | string | Dataset host used to build object URLs. |
generated_at | string | ISO 8601 catalog generation time. |
source_object_count | number | Number of source objects, excluding the catalog itself. |
source_total_bytes | number | Total size of source objects. |
files[] | array | Objects with key, bytes, sha256 and url. |
journals.json| Key | Type | Meaning |
|---|---|---|
retrieved_at | string | ISO 8601 source retrieval time. |
journals[] | array | Journal records. |
journals[].id | string | Journal identifier used as the R2 key prefix. |
journals[].title | string | Journal display title. |
journals[].issn_l | string | Linking ISSN. |
journals[].document_count | number | Source-system document count, not the 12-month export count. |
manifest.json and _state/*.jsonThe export manifest records schema_version, status, created_at, completed_at, date_range, requested fields, journals, results, batching configuration and batch_history. Per-journal state files record status, timestamps, articles_written, completed/pending windows, split counts, source signatures and DOI-to-file mappings in article_files. Full-text state also includes article_ranks.
The binary matrix and JSON sidecar are inseparable. Row order is defined by the sidecar, and the BGE space must not be mixed with AllenAI SPECTER vectors.
| Sidecar key | Type | Meaning |
|---|---|---|
model | string | @cf/baai/bge-small-en-v1.5, the Workers AI checkpoint. |
dims | number | 384 float32 values per vector. |
count | number | 32,814 matrix rows. |
normalized | boolean | true; each row is L2-normalized. |
ids[] | string[] | Ordered article UUIDs. ids[N] identifies matrix row N. |
vector N =
floats[N * dims : (N + 1) * dims]
binary format =
little-endian, row-major float32
Fetch catalogs from a browser, notebook, Worker or command line. Cross-origin GET and range requests are enabled.
# Find BMJ Open objects
curl 'https://metadata.bmj-cloudflare-hackathon.com/__list?prefix=bmjopen/&limit=100'
# Download the vector contract and matrix
curl -O https://vectors.bmj-cloudflare-hackathon.com/title_abstract.cf-baai-bge-small-en-v1-5.json
curl -O https://vectors.bmj-cloudflare-hackathon.com/title_abstract.cf-baai-bge-small-en-v1-5.f32