EveryLanguageMatters
v1.0 · current

Documentation · Data Standards

ELM Dataset Standard

The full specification: how every ELM dataset is named, coded, reviewed, packaged and cited — with the rules a system needs to enforce it.

Version 1.0 Applies to all ELM datasets

01 · Overview

One standard, applied to every dataset we publish. #

Scope

Every dataset collected, processed, licensed or published by ELM — across all languages and modalities, whether it came from the Annotation Studio, ELM Voice Studio, a partner, or a field collection.

What it covers

The two names every dataset carries (§3, §4), the registries behind each code segment (§6, §7, §8), what each validation state actually means (§9), how a dataset moves between states (§10), and how the whole thing is packaged, stored and cited (§11, §13).

Who it's for

Data collectors and annotation leads naming new datasets; engineers storing and serving them; researchers and licensees reading a code and deciding how far to trust it.

Quick reference

# format
ELM-<LANGUAGE>-<MODALITY>-<TASK>-<STATUS>-<SEQUENCE>

# example
ELM-SWA-SPH-ASR-VAL-001
→ Swahili · speech · built for speech recognition · validated · first of its kind

# pattern
^ELM-[A-Z]{3}-(TXT|SPH|IMG|VID|MM)
     -(ASR|TTS|KWS|LID|SID|OCR|VQA|SLR|NER|CLS|SUM|POS|GEN|MT|ST|QA|LM)
     -(VAL|PAR|UNV)-[0-9]{3}$

Uppercase only. Hyphen separated. No spaces, underscores or accents. Exactly six segments.

02 · Terminology

Words we use precisely. #

Term Meaning
DatasetA single published collection with one language, one modality profile, one licence and one code.
RecordThe smallest reviewable unit: one utterance, one sentence pair, one image, one clip.
StemELM-SWA-SPH-ASR-001 — the code without its status segment. Permanent; never changes.
Display codeELM-SWA-SPH-ASR-VAL-001 — the full five-segment code. Changes when status changes.
Validation passOne annotator reviewing a record against the task guidelines and marking it accepted, corrected or rejected.
AuditA second, independent review of a random sample, used to confirm a first pass rather than to correct it.
ReleaseA frozen, checksummed snapshot of a dataset at a point in time.

03 · The code name

Six segments, in a fixed order. #

The code name is the formal identifier used in systems, citations and licensing. It is deliberately readable: someone who has never seen the dataset should be able to say what language it is in, what it contains, what it was built to be used for, and how far it has been checked — all without opening it.

code       = "ELM" "-" language "-" modality "-" task "-" status "-" sequence
language   = 3 uppercase letters        ; ISO 639-3, uppercased (§6)
modality   = "TXT" | "SPH" | "IMG" | "VID" | "MM"   ; what it contains (§7)
task       = 2-3 uppercase letters      ; what it is for  (§8)
status     = "VAL" | "PAR" | "UNV"      ; how far it is checked (§9)
sequence   = 3 digits, "001" .. "999"   ; (§3.6)

Rule 3.0

The code is generated from a dataset's metadata — never typed by hand into a second system. Store the stem and the status separately; render the display code from them. See §12 for the reference implementations.

3.1 Organisation #

Always ELM. It identifies Every Language Matters as the source of the dataset and is never abbreviated, localised or replaced — including for datasets built with a partner. Joint work is credited in the metadata (§11), not in the code.

3.2 Language #

Three letters, taken from the ISO 639-3 code for the language and written in uppercase — SWA for Swahili, BEM for Bemba, YOR for Yorùbá. The published registry is in §6.

  • a.Use the individual language code when the dataset is one variety, and the macrolanguage code when it spans several. SWH is coastal Swahili; SWA covers Swahili broadly.
  • b.Use MUL only when a dataset genuinely mixes languages and no single one dominates — a code-switching corpus, for example. A bilingual translation pair is not MUL; see rule c.
  • c.For translation and speech-translation datasets, the language segment is the source language. Target languages are listed in the metadata.
  • d.Script and region never enter the code. A dataset in a non-default script records it as an ISO 15924 tag in the metadata ("script": "Arab").
  • e.UND (undetermined) is permitted only for unvalidated collections awaiting language identification, and must be resolved before the dataset can leave UNV.

3.3 Modality #

What the dataset actually contains, from the closed list in §7. Two rules decide the hard cases:

  • a.A transcript that exists to describe the audio does not make a speech dataset multimodal. Speech with transcripts is SPH.
  • b.Use MM when two or more modalities are aligned and both are the point of the dataset — video paired with speech, or images paired with spoken descriptions. If the modalities aren't aligned, publish them as separate datasets instead.
  • c.Modality answers what is in the box. What the dataset is for is the task segment (§3.4) — SPH tells you there is audio, SPH-ASR tells you it is transcribed audio for recognition.

3.4 Task #

Two or three letters from the closed list in §8, naming what the dataset was built and labelled for: ASR for speech recognition, TTS for speech synthesis, MT for machine translation, CLS for classification. This is the segment that tells a researcher whether the dataset is any use to them.

  • a.The task is decided by the annotations the dataset actually carries, not by what someone might repurpose it for. Speech with verbatim transcripts is ASR even if a team later trains a voice on it.
  • b.Where a dataset genuinely supports more than one task, the code carries the primary one and the metadata lists the rest under also_supports (§11.2). Two tasks never share one code.
  • c.Use LM for unlabelled corpora gathered for pretraining, and GEN for general collections built without a single task in view. Neither means "not decided yet" — an UNV dataset still declares its intended task on day one.
  • d.The task never changes quietly. Re-annotating a dataset for a different task produces a new dataset with its own stem, recording the stem it was derived from (§10.5).
  • e.Task and modality have to be compatible — TXT-TTS is not a valid pairing. The permitted combinations are in §8.

3.5 Status #

VAL, PAR or UNV, defined in full in §9. This is the only segment that changes over a dataset's life, which has one important consequence: the display code is a label, not a key. Systems, folder names and citations use the stem (§2); the status is stored as its own field and rendered alongside.

Do

datasets/ELM-SWA-SPH-ASR-001/

Stable path. Survives revalidation.

Don't

datasets/ELM-SWA-SPH-ASR-PAR-001/

Breaks every link the day the dataset is finished.

3.6 Sequence #

Three digits, zero-padded, counting from 001. The counter is scoped to the language and modality pair, so ELM-SWA-SPH-ASR-001 and ELM-SWA-TXT-MT-001 can both exist.

  • a.Numbers are allocated at creation, in order, and are never reused — not even after a dataset is retired.
  • b.The sequence carries no meaning beyond order of creation. It is not a quality rank, a size, or a version.
  • c.Adding records to an existing dataset does not earn a new number. That's a new release (§10).

04 · The nickname

The name people will actually say out loud. #

Every dataset needs both names. The nickname is what appears in conversation, documentation and dataset listings; the code name is what appears in systems and citations. Neither one is optional.

Write it like this
  • Two to six words, in title case.
  • Lead with the language, then what makes it distinct: Bemba Radio Speech.
  • Name the domain if the domain is the point: isiZulu Customer Support Transcripts.
  • Say the job plainly when the dataset exists for one: Bemba Studio Read Speech reads as a voice dataset before anyone opens the code.
  • Unique within its language.
  • Written in the language's own orthography, diacritics included: Yorùbá News Corpus.
Not like this
  • ELM Swahili Dataset v2 — no ELM prefix, no version, no "dataset".
  • SWA-SPH Collection — codes belong in the code name.
  • Swahili Speech (Validated) — status is not part of the nickname; it changes.
  • Batch 3 Final FINAL — internal working names never ship.

A nickname can be corrected for accuracy or spelling. When it is, the old name is kept in the metadata as an alias so existing references still resolve.

05 · Build & check a code

Assemble one, or paste one in. #

Builder

Swahili

Speech recognition

Display code

ELM-SWA-SPH-ASR-VAL-001

Stem

ELM-SWA-SPH-ASR-001

Swahili · speech · for speech recognition · validated · sequence 001

Validator

06 · Language codes

The published registry. #

Codes below are ISO 639-3, uppercased. Any language with a valid ISO 639-3 code may be used; this table lists the ones already in active collection, plus the two special codes. To add a language to the registry, see §15.

Code Language Region Type
SWASwahiliEast AfricaMacro
SWHCoastal SwahiliEast AfricaIndividual
BEMBembaZambiaIndividual
NYAChichewa / NyanjaZambia, MalawiIndividual
TOITongaZambia, ZimbabweIndividual
LOZLoziZambiaIndividual
LUNLundaZambiaIndividual
LUELuvaleZambia, AngolaIndividual
KQNKaondeZambiaIndividual
SNAShonaZimbabweIndividual
ZULisiZuluSouth AfricaIndividual
XHOisiXhosaSouth AfricaIndividual
SOTSesothoSouthern AfricaIndividual
TSNSetswanaBotswanaIndividual
AFRAfrikaansSouth AfricaIndividual
HAUHausaWest AfricaIndividual
YORYorùbáWest AfricaIndividual
IBOIgboNigeriaIndividual
WOLWolofSenegalIndividual
BAMBambaraMaliIndividual
TWITwiGhanaIndividual
EWEEweGhana, TogoIndividual
LINLingalaDR CongoIndividual
LUGLugandaUgandaIndividual
KINKinyarwandaRwandaIndividual
AMHAmharicEthiopiaIndividual
SOMSomaliHorn of AfricaIndividual
MLGMalagasyMadagascarMacro
MULMultiple languagesSpecial
UNDUndeterminedSpecial

07 · Modality codes

A closed list of five. #

Code Modality Contains Typical formats
TXTTextWritten language: articles, transcripts, dialogue, documents, translation pairs..txt .jsonl .csv
SPHSpeechSpoken audio recordings, with or without transcripts..wav + .jsonl
IMGImageVisual data, such as photographed text, signage or documents..jpg .png + .jsonl
VIDVideoVideo recordings, often paired with speech or sign language..mp4 + .jsonl
MMMultimodalTwo or more aligned modalities, such as video with speech and transcript.mixed + manifest

Note

The list is closed: a modality that doesn't fit one of these five needs a registry change (§15), not an improvised code. Modality is only half the picture — pair it with the task code in §8 to say what the dataset is for. Speech datasets follow ELM Voice Studio's convention of WAV for both source and export.

08 · Task codes

What the dataset was built to be used for. #

Modality tells you a dataset contains speech. It doesn't tell you whether that speech is transcribed word-for-word for a recogniser, recorded in a studio for a voice, or paired with a translation. The task segment closes that gap, so a researcher can rule a dataset in or out before downloading it.

Code Task Modalities What the data looks like
ASRSpeech recognitionSPH, MMRecordings with verbatim transcripts, for training and evaluating speech-to-text.
TTSSpeech synthesisSPHClean, consistent recordings from few speakers with exactly matched text.
STSpeech translationSPH, MMSpeech in one language paired with text or speech in another.
KWSKeyword spottingSPHShort clips labelled against a fixed vocabulary of trigger words.
SIDSpeaker identificationSPHRecordings labelled by pseudonymous speaker.
LIDLanguage identificationSPH, TXTSamples labelled with the language they are in.
MTMachine translationTXTAligned sentence or document pairs across two languages.
CLSClassificationTXT, IMG, SPHRecords labelled by category — topic, sentiment, intent, spam or scam.
NERNamed entity recognitionTXTEntity spans marked in running text.
POSTagging & morphologyTXTToken-level grammatical annotation.
QAQuestion answeringTXT, MMQuestions paired with answers, with or without a supporting passage.
SUMSummarisationTXTDocuments paired with summaries.
OCRText recognition in imagesIMG, VIDImages of written text with ground-truth transcription.
VQAVisual question answeringIMG, MMImages paired with questions and answers about them.
SLRSign language recognitionVID, MMSigned video with glosses or translations.
LMLanguage modellingTXTRaw or lightly cleaned corpora for pretraining. No task labels.
GENGeneral purposeanyCollected without one task in view; usable as a starting point for several.

8.1 Choosing the right one

  • a.Ask what a model could be trained or evaluated on with these labels, as they exist today. If the honest answer is "nothing yet", the code is LM or GEN.
  • b.ASR and TTS both pair audio with text, but they are not interchangeable: ASR wants many speakers and real conditions, TTS wants few speakers and clean, consistent recording. Label by what the collection was designed for.
  • c.Anything labelled by category — sentiment, topic, intent, spam or scam messages — is CLS. The specific label set lives in the metadata, not the code.
  • d.A dataset whose task cannot be named without a compound ("ASR-CLS") is two datasets, or one dataset with an also_supports entry. Compounds are not valid codes.
  • e.The list is closed. A task that isn't here needs a registry change (§15), not an improvised code.

8.2 The same language and modality, three different jobs

ELM-BEM-SPH-ASR-PAR-004

Bemba Radio Speech

Broadcast audio with verbatim transcripts. Many speakers, real background noise — the right shape for a recogniser, the wrong shape for a voice.

ELM-BEM-SPH-TTS-VAL-005

Bemba Studio Read Speech

Four speakers reading a balanced script in one room, at one level. Same language, same modality, entirely different job.

ELM-NYA-TXT-CLS-UNV-002

Chichewa Scam Message Collection

SMS messages gathered for scam detection. Categories defined, labelling not yet started.

ELM-MUL-TXT-LM-UNV-001

Multilingual Web Corpus

Mixed-language text for pretraining. No task labels, and the code says so plainly.

09 · Validation states

What each state promises. #

VAL

Validated

Every record reviewed and accepted, plus an independent audit of a random sample that agrees with the first pass. Ready to be used or licensed with confidence.

PAR

Partially validated

Some of it has been reviewed — a sample, or work in progress. Usable, provided the reviewed share is published alongside it.

UNV

Unvalidated

Collected but not yet reviewed. May contain errors, duplicates or misidentified language. Treat accordingly.

9.1 Criteria

Status Records reviewed Audit required Must publish
VAL 100% Independent second pass on ≥ 5% of records, ≥ 95% agreement Audit sample size, agreement rate, date of last pass
PAR 1% – 99% Not required Reviewed share, and whether the reviewed portion is a random sample or a contiguous block
UNV 0% Not applicable Collection method and date

Rule 9.2

A validated dataset that fails its audit returns to PAR until the disagreements are resolved and the audit is repeated. Status is only ever raised by evidence recorded in the metadata — never by assertion.

10 · Lifecycle

How a dataset moves, and what moves with it. #

  collected            review begins           review complete + audit passes
      │                       │                              │
      ▼                       ▼                              ▼
   UNV  ───────────────▶  PAR  ──────────────────────────▶  VAL
                              ▲                              │
                              └──────────────────────────────┘
                                 audit fails, or new unreviewed records added
  • 10.1Status transitions are recorded with a date and the annotator or lead responsible. The history stays in the metadata; the code only shows the current state.
  • 10.2Adding records to a VAL dataset drops it to PAR until the new records are reviewed. Nothing silently inherits a validated status.
  • 10.3Releases are numbered MAJOR.MINOR.PATCH. Major means records were removed or re-scoped; minor means records were added; patch means corrections only. The version lives in the metadata, never in the code.
  • 10.4Retiring a dataset never frees its stem. A retired dataset keeps its code, is marked retired in the metadata with a reason, and stays resolvable so old citations don't break.
  • 10.5Splitting a dataset creates new stems with new sequence numbers, each recording the stem it came from. Merging is not permitted — publish a new dataset that names its sources instead.

11 · Package & metadata

What ships with every dataset. #

11.1 Directory layout

ELM-SWA-SPH-ASR-001/
├── dataset.json          metadata, machine readable (§11.2)
├── README.md             the same information, credits included, for a reader
├── LICENCE.txt           the licence for this dataset specifically
├── data/
│   ├── audio/            WAV, one file per record
│   └── transcripts/
├── metadata/
│   ├── records.jsonl     one line per record, incl. review state
│   └── speakers.jsonl    pseudonymised speaker profiles
└── checksums.sha256

The folder is named with the stem, not the display code — see §3.5. Speaker identity, contact details and raw consent forms never enter the package; only pseudonymous identifiers do.

11.2 dataset.json

{
  "stem": "ELM-SWA-SPH-ASR-001",
  "display_code": "ELM-SWA-SPH-ASR-VAL-001",
  "nickname": "Swahili Everyday Speech",
  "aliases": [],
  "language": { "code": "swa", "name": "Swahili", "script": "Latn" },
  "modality": "SPH",
  "task": "ASR",
  "also_supports": ["LID"],
  "validation": {
    "status": "VAL",
    "reviewed_share": 1.0,
    "audit_share": 0.05,
    "audit_agreement": 0.97,
    "last_pass": "2026-07-14"
  },
  "content": { "records": 18420, "duration_hours": 62.4, "speakers": 214 },
  "collection": { "method": "prompted recording", "tool": "ELM Voice Studio",
                   "started": "2026-02-03", "consent": "recorded" },
  "credits": {
    "authors": [
      { "name": "Mwaka Chanda", "role": "collection lead",
        "affiliation": "Every Language Matters", "orcid": "0000-0002-1825-0097" },
      { "name": "Asha Juma", "role": "annotation lead",
        "affiliation": "Every Language Matters" }
    ],
    "contributors": [
      { "name": "ELM Swahili annotation team", "role": "validation", "count": 9 }
    ],
    "contact": "https://everylanguagematters.com/contacts",
    "acknowledgements": "Recording space provided by the Lusaka community radio network."
  },
  "release": { "version": "1.2.0", "date": "2026-07-21" },
  "licence": "ELM-DATA-1.0",
  "checksums": "checksums.sha256"
}
Field Required Notes
stemAlwaysPermanent identifier. Immutable once assigned.
display_codeAlwaysDerived. Regenerate whenever status changes.
nicknameAlwaysRules in §4. Superseded names move to aliases.
taskAlwaysThe task the annotations support (§8). Matches the task segment of the stem.
also_supportsOptionalOther tasks the data can serve as labelled. Empty array where there are none.
credits.authorsAlwaysNamed and ordered, at least one. The people answerable for the dataset — see §11.3.
credits.contributorsOptionalEveryone who worked on it without meeting the author bar. Teams may be credited collectively with a count.
credits.contactAlwaysWhere questions about the dataset go. A route, not a personal address.
validation.reviewed_sharePAR, VALDecimal 0–1. The number behind the status.
validation.audit_*VAL onlyThe evidence a VAL claim rests on.
collection.consentAlwaysHow consent was obtained for the recorded material.
content.duration_hoursSPH, VID, MMOmit where it doesn't apply rather than writing zero.
licenceAlwaysEach dataset carries its own licence; there is no blanket one.

11.3 Credit

Datasets are work, and the people who did that work are named in the metadata so the credit travels with the data instead of living in someone's memory. credits.authors is required and ordered — it is the author list a citation uses (§13).

  • a.An author is someone who shaped the dataset: designed the collection, led the recording or gathering, wrote the annotation guidelines, or led validation. Approving a budget or hosting the files is not authorship.
  • b.Order is agreed by the authors themselves before the first release and recorded as given — not alphabetical, not by seniority.
  • c.Annotators and reviewers who worked to the guidelines go in contributors: named individually where they've agreed to be, or collectively with a count where they'd rather not be.
  • d.Speakers, writers and other data subjects are never listed as authors or contributors. They stay pseudonymous in speakers.jsonl and are credited in the aggregate.
  • e.Record an orcid where the author has one. Affiliation is recorded as it stood at the release, and isn't rewritten when someone moves on.
  • f.The author list belongs to a release. A later release that adds substantial new work may add authors; it never removes them and never reorders the ones already published.
  • g.Partner-built datasets name the partner's people alongside ours, each with their own affiliation. The organisation segment of the code stays ELM either way (§3.1).

12 · Implementation

Enforce it in code, not in review. #

Pattern

# modality and task groups, written out once
MOD  = TXT|SPH|IMG|VID|MM
TASK = ASR|TTS|KWS|LID|SID|OCR|VQA|SLR|NER|CLS|SUM|POS|GEN|MT|ST|QA|LM

# display code
^ELM-[A-Z]{3}-(MOD)-(TASK)-(VAL|PAR|UNV)-[0-9]{3}$

# stem
^ELM-[A-Z]{3}-(MOD)-(TASK)-[0-9]{3}$

Python

import re

MODALITY = "TXT|SPH|IMG|VID|MM"
TASK = "ASR|TTS|KWS|LID|SID|OCR|VQA|SLR|NER|CLS|SUM|POS|GEN|MT|ST|QA|LM"

CODE = re.compile(
    "^ELM-(?P<language>[A-Z]{3})"
    "-(?P<modality>" + MODALITY + ")"
    "-(?P<task>" + TASK + ")"
    "-(?P<status>VAL|PAR|UNV)"
    "-(?P<sequence>[0-9]{3})$"
)

def parse(code: str) -> dict:
    match = CODE.match(code.strip().upper())
    if not match:
        raise ValueError(f"{code!r} is not a valid ELM dataset code")
    return match.groupdict()

def display_code(stem: str, status: str) -> str:
    org, language, modality, task, sequence = stem.split("-")
    return "-".join([org, language, modality, task, status, sequence])

PHP · Laravel

// config/datasets.php
'modalities' => ['TXT', 'SPH', 'IMG', 'VID', 'MM'],
'tasks' => ['ASR', 'TTS', 'ST', 'KWS', 'SID', 'LID', 'MT', 'CLS', 'NER',
             'POS', 'QA', 'SUM', 'OCR', 'VQA', 'SLR', 'LM', 'GEN'],

// validation
$mod = implode('|', config('datasets.modalities'));
$task = implode('|', config('datasets.tasks'));

'stem' => ['required', "regex:/^ELM-[A-Z]{3}-($mod)-($task)-[0-9]{3}$/"],
'status' => ['required', Rule::in(['VAL', 'PAR', 'UNV'])],

// App\Models\Dataset — never store the display code
protected function displayCode(): Attribute
{
    return Attribute::get(function () {
        [$org, $language, $modality, $task, $sequence] = explode('-', $this->stem);

        return implode('-', [$org, $language, $modality, $task, $this->status, $sequence]);
    });
}

PostgreSQL

ALTER TABLE datasets
  ADD CONSTRAINT datasets_stem_format
  CHECK (stem ~ '^ELM-[A-Z]{3}-(TXT|SPH|IMG|VID|MM)'
              '-(ASR|TTS|KWS|LID|SID|OCR|VQA|SLR|NER|CLS|SUM|POS|GEN|MT|ST|QA|LM)-[0-9]{3}$');

ALTER TABLE datasets ADD CONSTRAINT datasets_stem_unique UNIQUE (stem);

13 · Citation

Cite the stem, name the release. #

A citation has to stay true after a dataset is revalidated, so it points at the stem and the release, and states the status as it stood on the day the work was done. It opens with the author list from credits.authors (§11.3), in the order recorded there.

# with named authors
Chanda, M., & Juma, A. (2026). Swahili Everyday Speech (Version 1.2.0)
  [Data set]. Every Language Matters. ELM-SWA-SPH-ASR-001, status VAL
  as of 2026-07-21. https://everylanguagematters.com/datasets/ELM-SWA-SPH-ASR-001

# seven or more authors
Chanda, M., et al. (2026). Swahili Everyday Speech (Version 1.2.0)
  [Data set]. Every Language Matters. ELM-SWA-SPH-ASR-001, status VAL
  as of 2026-07-21. https://everylanguagematters.com/datasets/ELM-SWA-SPH-ASR-001
  • a.Papers reporting results on a PAR dataset should state the reviewed share they trained or evaluated on.
  • b.The task segment is part of the stem, so a citation already states what the dataset was built for. Don't drop segments to shorten it.
  • c.Every Language Matters is the publisher, not the author. A complete citation names both.
  • d.Licences attach to a release, not to a stem. Check the LICENCE.txt in the copy you actually received.

14 · Checklist

Before a dataset is published. #

  • Code name matches the pattern, and the language code is in the registry or has been proposed.
  • Sequence number allocated from the register for that language and modality, and not reused.
  • Nickname follows §4 and is unique within the language.
  • Task code matches the annotations the dataset actually carries, and is valid for its modality (§8).
  • Status matches the evidence in dataset.json — reviewed share, and audit figures for VAL.
  • Folder is named with the stem; no status in any path.
  • Author list agreed and ordered by the authors themselves, with contributors credited as they consented (§11.3).
  • Licence file present and specific to this dataset.
  • Consent recorded, and no personal identifiers in the package.
  • Checksums generated and verified against the release.
  • README carries the same figures as the metadata.

15 · Governance

Changing the standard. #

Adding a language to the registry, adding a modality code, or changing a validation threshold is a change to this document. Send the proposal — what you want to add, why the existing codes don't cover it, and the datasets affected — through the contacts page. Registry additions are usually decided within a week; changes to the code format itself are versioned and announced on the news page before they take effect.

15.1 Change log

Version Date Change
1.0 21 July 2026 First published standard: code format, modality codes, validation states, metadata and packaging.

ELM Dataset Standard · v1.0

Cite this version by its URL. It is not edited in place — a dataset named under v1.0 is governed by v1.0.