I published a 580-item exam question bank as an open dataset this week (CC BY 4.0, DOI below). The content is niche - it is a food-safety certification exam - but the schema questions are the same ones you hit with any multiple-choice corpus.
Four decisions I would make again, and one I would change.
1. Store an answer index and the answer text
{
"id": "r014",
"topic": "cleaning-sanitizing",
"task": "warewashing",
"difficulty": "Medium",
"question": "...",
"options": ["...", "...", "...", "..."],
"answer_index": 1,
"answer_text": "...",
"explanation": "...",
"reference": "FDA Food Code 4-501.110"
}
answer_index is what a trainer needs. answer_text is what a CSV consumer, a spreadsheet, or a human spot-checking the file needs. Storing both looks redundant and costs nothing. Deriving one from the other at read time is where off-by-one bugs live forever.
2. Put the taxonomy in the row, not in a side table
topic and task are denormalised onto every item. Yes, that violates normal form. It also means the file is self-describing: nobody needs a join to answer "how many items does this bank have for the warewashing task".
You can always generate the grouped view as a separate file - I ship a breakdown.csv with counts by topic and by task next to the flat one.
3. Licence it permissively, on purpose
CC BY 4.0. The attribution requirement is the whole point: it is the only mechanism by which a dataset that exists to teach gets reproduced by other people who teach. A bank that nobody can reuse is a marketing asset; a bank that anybody can reuse is infrastructure.
4. Say what the data is not
The README states, in the second paragraph, that every item is original wording written against the public source document, that no item is copied from a live exam, and that no item is claimed to appear on a real exam. For an exam-prep dataset this is not boilerplate - it is the difference between a study resource and a copyright problem for whoever downloads it.
The one I would change: shipping a BOM
Excel is the most likely consumer of a CSV of questions. Without a UTF-8 BOM, a file full of degree signs and typographic dashes opens as mojibake on Windows and the first support email writes itself. Prefix the file with one and move on; a byte-order mark is cheaper than a bug report.
Where it is
- Dataset and DOI: https://doi.org/10.5281/zenodo.23320230
- The browsable, timed version: https://foodsafeprep.com/
- Schema notes and the flat CSV: https://foodsafeprep.com/servsafe-manager-test-questions
If you are publishing a question corpus, the schema above is boring and portable, which is the highest compliment a data format can get.
Top comments (0)