Territories and languages
DDEX lets a sender qualify almost anything by language, script and territory. //SCHEMA keeps every variant exactly as sent, and gives you the rules to choose between them.
Every variant, verbatim#
A release's title can arrive once, or once per language, or once per script of the same language, or once per territory. The same goes for artist names, credits and copyright notices. //SCHEMA stores each variant exactly as it was delivered, with its qualifiers, and discards nothing.
The reason is simple: //SCHEMA has to be able to reproduce what it was sent. A system that collapsed variants — kept only the English title, say — could never regenerate the original delivery, and would have made a presentation decision on every customer's behalf.
Picking one is lossy#
Convenience fields such as Release.title and Party.name return a single
value, preferring the one the sender marked default. Often, nothing is marked
default: a Japanese release routinely carries a native-script and a
romanized title, neither flagged. Which of the two you get is then
arbitrary. That is why the full sets (titles, names) exist, and why the
choice of which to show is left to you.
Language tags are whole tags#
language holds the complete tag as delivered — ja-Jpan, ja-Latn,
zh-Hans-CN — and script pulls out the script subtag for convenience.
Filters match the whole tag, not a prefix, because ja would match both
ja-Jpan and ja-Latn, and telling those apart is usually the point. Filter
by script to choose a writing system.
"No territory" is not "Worldwide"#
A variant can be qualified with a territory, with the explicit value
Worldwide, or with nothing at all. //SCHEMA keeps these three apart:
- A specific territory (
DE) — applies there. - Nothing (
territory: null) — the sender did not restrict it, so it applies anywhere nothing more specific does. Worldwide— the sender explicitly said Worldwide.
It would be convenient to treat null as Worldwide, but then //SCHEMA could
no longer tell you, or regenerate, what the sender actually said.
How territory filters resolve#
When you pass territory: "DE" to titles, names, contributors,
plines or clines, you get what applies in Germany:
- variants scoped to
DE; and, for anything with noDE-specific variant, - the unqualified (
null) variant.
Variants scoped to other territories are excluded — and so are explicit
Worldwide variants, unless you ask for territory: "Worldwide". A plain
equality filter would drop the unqualified variants, which in most real
deliveries are most of the data.
"Anything" here means the same slot: for a title, the same type, language
and script; for a credit, the same party in the same role. A DE title in
German does not displace an unqualified title in Japanese.
Stored verbatim, matched loosely#
Values are stored exactly as delivered, but filters compare
case-insensitively: role: "mainartist" finds MainArtist. You never need
to know how a particular sender capitalised a value to find it.