DataCite decisions¶
mesa-mcp writes DataCite records as AVUs (mesa_avu_apply_datacite) and validates them
against the DataCite 4.x controlled vocabularies. Choosing a value from those vocabularies
is a closed choice, so M5 freezes five of them in registry.py (a test asserts parity with
mesa-mcp's enums) and asks them like any other question:
| Vocabulary | Members | Question | Shape |
|---|---|---|---|
| ResourceTypeGeneral | 28 | datacite.resource_type_fits |
yes/no per member (28 exceeds the 26-option cap) |
| ContributorType | 21 | datacite.contributor_type (+ _fits twin) |
choice under a wide backend, twin under the gateway's cap of 8 |
| RelationType | 23 | datacite.relation_type (+ twin) |
same |
| DateType | 10 | datacite.date_type (+ twin) |
same |
| DescriptionType | 6 | datacite.description_type |
choice |
The state is the text being classified (a description, a contributor line, a related
identifier, a date), the vocabulary name and, for the twins, the candidate value, with the
card header when a card is at hand. Levels, calibration and thresholds work as for every
other question; there are no labels yet, so every threshold is auto: null and the answers
are proposals.
uv run mesa-anyjev datacite --card tests/fixtures/cards/DP1.10022.001.bet_sorting.md
uv run mesa-anyjev datacite --vocabulary DescriptionType --text "We sampled beetles with pitfall traps."
datacite --card answers what a dataset card can answer on its own (the general resource
type of the product and the description type of its description) and prints the
record fragment in the shape mesa_avu_apply_datacite takes, with the ranked
alternatives beside it.