DEV Community

asrocky010
asrocky010

Posted on

An exam question bank as open data: a schema, a licence, and the four things that bit me

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"
}
Enter fullscreen mode Exit fullscreen mode

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

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)