vehicles 0.6.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +164 -0
  3. data/CHANGELOG.md +274 -0
  4. data/README.md +55 -10
  5. data/data/PROVENANCE-vehicles.md +12 -0
  6. data/data/plates/PROVENANCE.md +5 -4
  7. data/data/plates/_decode/at-districts.yml +287 -0
  8. data/data/plates/_decode/ch-cantons.yml +110 -0
  9. data/data/plates/_decode/cn-issuing-offices.yml +463 -0
  10. data/data/plates/_decode/cn-provinces.yml +614 -0
  11. data/data/plates/_decode/cz-kraj.yml +159 -0
  12. data/data/plates/_decode/dk-serial-blocks.yml +327 -0
  13. data/data/plates/_decode/fr-departements.yml +191 -0
  14. data/data/plates/_decode/gb-age-identifiers.yml +170 -0
  15. data/data/plates/_decode/gb-memory-tags.yml +202 -0
  16. data/data/plates/_decode/gr-prefectures.yml +1408 -0
  17. data/data/plates/_decode/hr-cities.yml +315 -0
  18. data/data/plates/_decode/ie-counties.yml +227 -0
  19. data/data/plates/_decode/in-state-codes.yml +169 -0
  20. data/data/plates/_decode/is-districts-1938.yml +116 -0
  21. data/data/plates/_decode/it-provinces.yml +348 -0
  22. data/data/plates/_decode/jp-office-marks.yml +960 -0
  23. data/data/plates/_decode/jp-use-marks.yml +205 -0
  24. data/data/plates/_decode/kr-authority-marks.yml +146 -0
  25. data/data/plates/_decode/kr-use-syllables.yml +194 -0
  26. data/data/plates/_decode/lu-series-order.yml +638 -0
  27. data/data/plates/_decode/mx-entity-series.yml +380 -0
  28. data/data/plates/_decode/my-index-marks.yml +271 -0
  29. data/data/plates/_decode/no-counties-1913.yml +148 -0
  30. data/data/plates/_decode/no-districts.yml +901 -0
  31. data/data/plates/_decode/pl-powiats.yml +567 -0
  32. data/data/plates/_decode/pt-trailer-services.yml +96 -0
  33. data/data/plates/_decode/ro-counties.yml +213 -0
  34. data/data/plates/_decode/se-diplomatic.yml +220 -0
  35. data/data/plates/_decode/si-regions.yml +123 -0
  36. data/data/plates/_decode/sk-districts.yml +314 -0
  37. data/data/plates/_decode/th-registration-elements.yml +208 -0
  38. data/data/plates/_decode/ua-regions.yml +393 -0
  39. data/data/plates/_decode/za-licence-marks.yml +215 -0
  40. data/data/plates/_meta/classes.yml +1 -0
  41. data/data/plates/_meta/separators.yml +102 -0
  42. data/data/plates/ad.yml +961 -0
  43. data/data/plates/ar.yml +762 -0
  44. data/data/plates/at.yml +1424 -0
  45. data/data/plates/au-act.yml +472 -0
  46. data/data/plates/au-nsw.yml +282 -0
  47. data/data/plates/au-nt.yml +431 -0
  48. data/data/plates/au-qld.yml +272 -0
  49. data/data/plates/au-sa.yml +248 -0
  50. data/data/plates/au-tas.yml +302 -0
  51. data/data/plates/au-vic.yml +215 -0
  52. data/data/plates/au-wa.yml +309 -0
  53. data/data/plates/be.yml +1840 -0
  54. data/data/plates/br.yml +1152 -0
  55. data/data/plates/ca-ab.yml +430 -0
  56. data/data/plates/ca-bc.yml +697 -0
  57. data/data/plates/ca-mb.yml +499 -0
  58. data/data/plates/ca-nb.yml +537 -0
  59. data/data/plates/ca-nl.yml +743 -0
  60. data/data/plates/ca-ns.yml +808 -0
  61. data/data/plates/ca-nt.yml +610 -0
  62. data/data/plates/ca-nu.yml +280 -0
  63. data/data/plates/ca-on.yml +881 -0
  64. data/data/plates/ca-pe.yml +592 -0
  65. data/data/plates/ca-qc.yml +1036 -0
  66. data/data/plates/ca-sk.yml +256 -0
  67. data/data/plates/ca-yt.yml +656 -0
  68. data/data/plates/ch.yml +1273 -0
  69. data/data/plates/cn.yml +1431 -0
  70. data/data/plates/cy.yml +688 -0
  71. data/data/plates/cz.yml +1179 -0
  72. data/data/plates/de.yml +553 -118
  73. data/data/plates/dk.yml +1647 -0
  74. data/data/plates/ee.yml +1275 -0
  75. data/data/plates/es.yml +228 -32
  76. data/data/plates/fi.yml +1271 -0
  77. data/data/plates/fr.yml +1265 -0
  78. data/data/plates/gb.yml +1188 -0
  79. data/data/plates/gr.yml +721 -0
  80. data/data/plates/hr.yml +860 -0
  81. data/data/plates/hu.yml +959 -0
  82. data/data/plates/ie.yml +775 -0
  83. data/data/plates/in.yml +1172 -0
  84. data/data/plates/is.yml +667 -0
  85. data/data/plates/it.yml +1317 -0
  86. data/data/plates/jp.yml +3650 -0
  87. data/data/plates/kr.yml +1375 -0
  88. data/data/plates/li.yml +1010 -0
  89. data/data/plates/lt.yml +879 -0
  90. data/data/plates/lu.yml +842 -0
  91. data/data/plates/lv.yml +924 -0
  92. data/data/plates/mc.yml +1024 -0
  93. data/data/plates/mt.yml +854 -0
  94. data/data/plates/mx.yml +1372 -0
  95. data/data/plates/my.yml +685 -0
  96. data/data/plates/nl.yml +44 -0
  97. data/data/plates/no.yml +1018 -0
  98. data/data/plates/nz.yml +1699 -0
  99. data/data/plates/pl.yml +1296 -0
  100. data/data/plates/pt.yml +847 -0
  101. data/data/plates/ro.yml +785 -0
  102. data/data/plates/se.yml +1091 -0
  103. data/data/plates/si.yml +1105 -0
  104. data/data/plates/sk.yml +1439 -0
  105. data/data/plates/sm.yml +1119 -0
  106. data/data/plates/th.yml +1150 -0
  107. data/data/plates/ua.yml +1672 -0
  108. data/data/plates/us-ak.yml +763 -0
  109. data/data/plates/us-al.yml +457 -0
  110. data/data/plates/us-ar.yml +427 -0
  111. data/data/plates/us-as.yml +454 -0
  112. data/data/plates/us-az.yml +430 -0
  113. data/data/plates/us-ca.yml +892 -0
  114. data/data/plates/us-co.yml +452 -0
  115. data/data/plates/us-ct.yml +427 -0
  116. data/data/plates/us-dc.yml +614 -0
  117. data/data/plates/us-de.yml +551 -0
  118. data/data/plates/us-fl.yml +319 -96
  119. data/data/plates/us-ga.yml +644 -0
  120. data/data/plates/us-gu.yml +658 -0
  121. data/data/plates/us-hi.yml +585 -0
  122. data/data/plates/us-ia.yml +438 -0
  123. data/data/plates/us-id.yml +531 -0
  124. data/data/plates/us-il.yml +516 -0
  125. data/data/plates/us-in.yml +324 -0
  126. data/data/plates/us-ks.yml +351 -0
  127. data/data/plates/us-ky.yml +770 -0
  128. data/data/plates/us-la.yml +568 -0
  129. data/data/plates/us-ma.yml +379 -0
  130. data/data/plates/us-md.yml +536 -0
  131. data/data/plates/us-me.yml +445 -0
  132. data/data/plates/us-mi.yml +408 -0
  133. data/data/plates/us-mn.yml +411 -0
  134. data/data/plates/us-mo.yml +356 -0
  135. data/data/plates/us-mp.yml +402 -0
  136. data/data/plates/us-ms.yml +432 -0
  137. data/data/plates/us-mt.yml +619 -0
  138. data/data/plates/us-nc.yml +602 -0
  139. data/data/plates/us-nd.yml +419 -0
  140. data/data/plates/us-ne.yml +483 -0
  141. data/data/plates/us-nh.yml +394 -0
  142. data/data/plates/us-nj.yml +547 -0
  143. data/data/plates/us-nm.yml +574 -0
  144. data/data/plates/us-nv.yml +655 -0
  145. data/data/plates/us-ny.yml +592 -0
  146. data/data/plates/us-oh.yml +404 -0
  147. data/data/plates/us-ok.yml +513 -0
  148. data/data/plates/us-or.yml +392 -0
  149. data/data/plates/us-pa.yml +506 -0
  150. data/data/plates/us-pr.yml +507 -0
  151. data/data/plates/us-ri.yml +445 -0
  152. data/data/plates/us-sc.yml +605 -0
  153. data/data/plates/us-sd.yml +428 -0
  154. data/data/plates/us-tn.yml +471 -0
  155. data/data/plates/us-tx.yml +535 -0
  156. data/data/plates/us-ut.yml +384 -0
  157. data/data/plates/us-va.yml +567 -0
  158. data/data/plates/us-vi.yml +489 -0
  159. data/data/plates/us-vt.yml +458 -0
  160. data/data/plates/us-wa.yml +484 -0
  161. data/data/plates/us-wi.yml +509 -0
  162. data/data/plates/us-wv.yml +446 -0
  163. data/data/plates/us-wy.yml +523 -0
  164. data/data/plates/va.yml +604 -0
  165. data/data/plates/za.yml +1141 -0
  166. data/data/vehicles.json +160653 -105090
  167. data/lib/vehicles/configuration.rb +17 -3
  168. data/lib/vehicles/dataset.rb +73 -18
  169. data/lib/vehicles/fuzzy.rb +115 -0
  170. data/lib/vehicles/http.rb +48 -0
  171. data/lib/vehicles/make.rb +36 -6
  172. data/lib/vehicles/mcp_server.rb +5 -5
  173. data/lib/vehicles/model.rb +21 -2
  174. data/lib/vehicles/plates/series.rb +172 -18
  175. data/lib/vehicles/plates/template_fill.rb +188 -0
  176. data/lib/vehicles/plates/templates.rb +162 -0
  177. data/lib/vehicles/plates.rb +12 -0
  178. data/lib/vehicles/providers/hosted_provider.rb +28 -55
  179. data/lib/vehicles/validators/vehicle_make_validator.rb +3 -1
  180. data/lib/vehicles/validators/vehicle_model_validator.rb +1 -1
  181. data/lib/vehicles/version.rb +1 -1
  182. data/lib/vehicles.rb +32 -16
  183. data/rakelib/data_refresh.rake +109 -0
  184. data/rakelib/plates_refresh.rake +29 -0
  185. data/sig/vehicles.rbs +18 -0
  186. metadata +164 -2
@@ -0,0 +1,721 @@
1
+ # plates/gr.yml — Greece (PRD-PLATES gate L1, wave 2).
2
+ #
3
+ # THE CENTRAL FACT OF THIS JURISDICTION, AND IT IS A REGULATED ONE: a Greek
4
+ # ordinary plate is spelled in GREEK CAPITALS, but only in the fourteen Greek
5
+ # capitals whose printed glyph is IDENTICAL to a Latin capital. That is not a
6
+ # convention, an aesthetic, or an artefact of the font — it is written into the
7
+ # instrument, with its reason, and this file quotes it.
8
+ #
9
+ # ΥΑ οικ. 4700/330/2004, ΑΡΘΡΟ 1 παρ. 2, verbatim:
10
+ #
11
+ # "Η αρίθμηση των πινακίδων για τα αυτοκίνητα Ι.Χ. και Δ.Χ. γίνεται με
12
+ # συνδυασμό ανά τρία (3) των δεκατεσσάρων (14) γραμμάτων: Α, Β, Ε, Ζ, Η, Ι,
13
+ # Κ, Μ, Ν, Ο, Ρ, Τ, Υ και Χ, ΠΟΥ ΕΙΝΑΙ ΚΟΙΝΑ ΣΤΗΝ ΕΛΛΗΝΙΚΗ ΚΑΙ ΛΑΤΙΝΙΚΗ
14
+ # ΑΛΦΑΒΗΤΟ, με δυνατότητα επανάληψης και διαφορετικής διάταξης του αυτού
15
+ # γράμματος σε κάθε τριάδα και ενός τετραψήφιου αριθμού (1000-9999)."
16
+ #
17
+ # ("The numbering of the plates for private-use and public-use cars is done
18
+ # with a combination of three (3) of the fourteen (14) letters: Α, Β, Ε, Ζ,
19
+ # Η, Ι, Κ, Μ, Ν, Ο, Ρ, Τ, Υ and Χ, WHICH ARE COMMON TO THE GREEK AND THE
20
+ # LATIN ALPHABET, with repetition and different ordering of the same letter
21
+ # permitted in each triple, and a four-digit number (1000-9999).")
22
+ #
23
+ # The clause "που είναι κοινά στην ελληνική και λατινική αλφάβητο" is the
24
+ # authority stating its own reason inside the operative sentence, and that
25
+ # clause is ALL the instrument gives. The EXCLUSION is the interesting
26
+ # artefact: Greece does not decline to use Γ, Δ, Θ, Λ, Ξ, Π, Σ, Φ, Ψ, Ω
27
+ # because they are confusable — it declines because they are not shared with
28
+ # the Latin alphabet.
29
+ #
30
+ # THE *WHY BEHIND THE WHY* IS NOT SOURCED HERE, and is marked rather than
31
+ # asserted. Secondary accounts explain the rule by the 1968 Vienna Convention
32
+ # on Road Traffic, whose Annex 2 is said to require the registration number to
33
+ # be shown in capital Latin characters and Arabic numerals — on that reading,
34
+ # issuing only the intersection of the two alphabets lets one physical plate
35
+ # satisfy the domestic Greek script and the international requirement at once.
36
+ # That is a plausible and widely repeated rationale, but PRD-PLATES §4 records
37
+ # the Vienna Convention annexes as UNPINNED in this program (UNECE returned
38
+ # 403s), and Greece's own ratification status was not checked in this pass.
39
+ # The instrument itself says only "common to the Greek and the Latin alphabet"
40
+ # and does not cite the Convention. So: the LETTER RULE is quoted from the
41
+ # instrument and is as solid as anything in this dataset; the CONVENTION
42
+ # EXPLANATION is corroboration only and must not be restated as though the
43
+ # treaty had been read. What the instrument DOES cite, in its recitals, is
44
+ # Council Regulation (EC) 2411/98 — the mutual-recognition instrument — which
45
+ # is a different thing and is recorded as such.
46
+ #
47
+ # ============================================================================
48
+ # CODEPOINTS — STATED EXPLICITLY, BECAUSE THIS IS WHERE THE FILE COULD LIE
49
+ # ============================================================================
50
+ # The plate prints GREEK capitals. This dataset matches on LATIN capitals.
51
+ # Those are different characters with the same picture, and conflating them
52
+ # silently is the one error here that no visual review can catch.
53
+ #
54
+ # PRINTED (Greek and Coptic block) MATCHED (Basic Latin block)
55
+ # Α U+0391 GREEK CAPITAL ALPHA A U+0041 LATIN CAPITAL LETTER A
56
+ # Β U+0392 GREEK CAPITAL BETA B U+0042 LATIN CAPITAL LETTER B
57
+ # Ε U+0395 GREEK CAPITAL EPSILON E U+0045 LATIN CAPITAL LETTER E
58
+ # Ζ U+0396 GREEK CAPITAL ZETA Z U+005A LATIN CAPITAL LETTER Z
59
+ # Η U+0397 GREEK CAPITAL ETA H U+0048 LATIN CAPITAL LETTER H
60
+ # Ι U+0399 GREEK CAPITAL IOTA I U+0049 LATIN CAPITAL LETTER I
61
+ # Κ U+039A GREEK CAPITAL KAPPA K U+004B LATIN CAPITAL LETTER K
62
+ # Μ U+039C GREEK CAPITAL MU M U+004D LATIN CAPITAL LETTER M
63
+ # Ν U+039D GREEK CAPITAL NU N U+004E LATIN CAPITAL LETTER N
64
+ # Ο U+039F GREEK CAPITAL OMICRON O U+004F LATIN CAPITAL LETTER O
65
+ # Ρ U+03A1 GREEK CAPITAL RHO P U+0050 LATIN CAPITAL LETTER P
66
+ # Τ U+03A4 GREEK CAPITAL TAU T U+0054 LATIN CAPITAL LETTER T
67
+ # Υ U+03A5 GREEK CAPITAL UPSILON Y U+0059 LATIN CAPITAL LETTER Y
68
+ # Χ U+03A7 GREEK CAPITAL CHI X U+0058 LATIN CAPITAL LETTER X
69
+ #
70
+ # THE MAPPING IS BY GLYPH, NEVER BY PHONETICS, and four of the fourteen are
71
+ # traps that a transliterating human or an LLM gets wrong by reflex:
72
+ # Η -> H, not E or I Ρ -> P, not R
73
+ # Υ -> Y, not U Χ -> X, not C or CH (and Β -> B, not V)
74
+ # Rhodes is ΡΚ on the metal and PK in this dataset. A phonetically
75
+ # transliterated Greek plate dataset matches nothing and looks perfect.
76
+ #
77
+ # WHY LATIN AND NOT THE GREEK CODEPOINTS: plates/_meta/separators.yml fixes the
78
+ # dataset's serial alphabet, normatively and dataset-wide, as
79
+ # "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", and scripts/lint_plates.rb enforces
80
+ # every pattern and regex against it. Emitting U+0391 in a regex is a lint
81
+ # failure by construction. That is the right outcome and not a workaround: a
82
+ # consumer receives Greek plate strings from OCR, from keyboards and from
83
+ # registries overwhelmingly in Latin transliteration, and the fourteen-letter
84
+ # rule is precisely what makes the Latin form lossless. Greece is the
85
+ # jurisdiction where a Latin-only serial alphabet costs nothing, BY STATUTE.
86
+ #
87
+ # PROVENANCE OF THE LETTER SET — it is NOT taken from an encyclopaedia. The
88
+ # fourteen letters above were read out of the operative text of ΥΑ οικ.
89
+ # 4700/330/2004 as fetched from dsanet.gr, and their codepoints were extracted
90
+ # mechanically from those bytes (all fourteen in U+0391..U+03A7, all Greek
91
+ # script, none Latin) rather than read off a screen. This matters because
92
+ # secondary write-ups of Greek plates routinely render the same list in Latin
93
+ # script, which would make the claim circular.
94
+ #
95
+ # THE LATIN SETS THIS IMPLIES, in full, so no consumer has to derive them:
96
+ # ISSUED (14): A B E H I K M N O P T X Y Z
97
+ # NEVER (12): C D F G J L Q R S U V W
98
+ # NOTE WHAT IS *NOT* EXCLUDED. Greece issues both I and O, the two letters most
99
+ # European systems drop for confusability with 1 and 0 (contrast Italy, which
100
+ # excludes I, O, Q, U; Spain, which excludes the vowels plus Ñ and Q). The
101
+ # Greek rule optimises for cross-alphabet legibility and accepts the digit
102
+ # confusion — the opposite trade to its neighbours, and a real one: ΙΟ and
103
+ # 10 are the same picture. The 1000-9999 digit range (no leading zero) and the
104
+ # fact that the letters and the digits sit in separate groups either side of a
105
+ # statutory hyphen are what keep it unambiguous in practice.
106
+ #
107
+ # ============================================================================
108
+ # THE INSTRUMENT CHAIN
109
+ # ============================================================================
110
+ # * Ν. 2696/1999 (Α' 57), Κώδικας Οδικής Κυκλοφορίας art. 90 para. 2 — the
111
+ # ENABLING provision. ΥΑ οικ. 4700/330/2004 cites it as its first legal
112
+ # basis. Its own text was not fetched in this pass (recorded gap).
113
+ # * ΥΑ 19800/1982 (ΦΕΚ Β' 455 of 1-7-1982), Υπουργός Συγκοινωνιών,
114
+ # «Πινακίδες αριθμού κυκλοφορίας αυτοκινήτων οχημάτων και ρυμουλκουμένων»
115
+ # — the founding plate instrument, still the frame: it survives 2004 and is
116
+ # still being amended in 2023 and 2024. Its ANNEX carries the letter
117
+ # allocation (see plates/_decode/gr-prefectures.yml). ITS TEXT WAS NOT
118
+ # OBTAINED — e-nomothesia paywalls the consolidated version and et.gr's
119
+ # download endpoints did not resolve. This is the largest single gap in the
120
+ # file and it is flagged at every point of use.
121
+ # * ΥΑ οικ. 4700/330/2004 (ΦΕΚ Β' 192 of 4-2-2004), Υπουργός Μεταφορών και
122
+ # Επικοινωνιών, same title — THE CURRENT SPECIFICATION, obtained in full
123
+ # and quoted throughout this file. In force 1 MAY 2004 (art. 9), except its
124
+ # art. 8 on replacement plates, in force 1 November 2004.
125
+ # * ΥΑ 282069/2023 (ΦΕΚ Β' 5645 of 25-9-2023) and ΥΑ 178239/2024 (ΦΕΚ Β' 5096
126
+ # of 9-9-2024) — live amendments to the 1982 allocation annex.
127
+ #
128
+ # THE INSTRUMENT-DATE RULE, APPLIED TWICE AND HONESTLY (PRD-PLATES §5.3):
129
+ #
130
+ # 1. The 2004 series does NOT start on 4-2-2004, the date of its instrument.
131
+ # Art. 9 states its own commencement: "Η ισχύς της απόφασης αυτής αρχίζει
132
+ # την 1 Μαΐου 2004" — 1 MAY 2004. The gazette date and the commencement
133
+ # date are five months apart and only the second one is the series.
134
+ # 2. The 1982 series is the harder case and this file does NOT pretend
135
+ # otherwise. ΥΑ 19800/1982 was published 1-7-1982; secondary accounts
136
+ # place the first three-letter plates in 1983-1984. Because the 1982 text
137
+ # could not be read, ITS OWN COMMENCEMENT CLAUSE IS UNKNOWN — it may well
138
+ # contain a delayed or progressive rollout provision of exactly the kind
139
+ # Italy's art. 260 comma 5 turned out to contain. The period is therefore
140
+ # recorded as start 1982 with `period_evidence: enabling-instrument` and
141
+ # the divergence is written into the notes rather than averaged away. A
142
+ # verifier who obtains ΦΕΚ Β' 455/1982 should expect to correct this
143
+ # boundary, and it is the single most likely correction in this file.
144
+ #
145
+ # AND THE END OF THE 1982 SERIES IS SOFT, BY STATUTE — art. 9 again, verbatim:
146
+ # "Μετά τη θέση σε ισχύ της παρούσας απόφασης, συνεχίζεται μέχρι εξαντλήσεως
147
+ # των αποθεμάτων η χορήγηση των πινακίδων που έχουν εκδοθεί με τις
148
+ # προδιαγραφές της 19800/1982 απόφασης."
149
+ # ("After this decision enters into force, the issuance of plates produced to
150
+ # the specifications of decision 19800/1982 CONTINUES UNTIL STOCKS ARE
151
+ # EXHAUSTED.")
152
+ # So pre-band plates went on being ISSUED, lawfully, for an undated period
153
+ # after 1-5-2004. This is the PRD's "old stock issues on" case stated by the
154
+ # authority itself, and it is why the two standard series overlap at 2004.
155
+ #
156
+ # ============================================================================
157
+ # WHAT THIS FILE DELIBERATELY DOES NOT CONTAIN — A SCHEMA FINDING, NOT LAZINESS
158
+ # ============================================================================
159
+ # Greece runs a large family of special series keyed by a Greek-letter prefix.
160
+ # They split cleanly in two, and the split is a property of THIS dataset's
161
+ # serial alphabet rather than of Greece:
162
+ #
163
+ # REPRESENTABLE (every letter is one of the fourteen, so the Latin form is
164
+ # exact): ΙΟ historic -> IO; ΤΑ taxi -> TA; ΕΚ national haulage -> EK; ΙΑ
165
+ # international haulage -> IA; ΝΧ prefecture haulage -> NX; ΚΥ/ΚΚ state ->
166
+ # KY/KK; ΜΕ works machinery -> ME; ΑΜ agricultural machinery -> AM; ΑΟ Mount
167
+ # Athos -> AO.
168
+ #
169
+ # NOT REPRESENTABLE AT ALL — the prefix uses Greek letters with NO Latin
170
+ # glyph twin, so there is no honest Latin string for them and this dataset
171
+ # cannot spell them without inventing one:
172
+ # ΔΣ diplomatic corps (Δ U+0394, Σ U+03A3)
173
+ # ΞΑ foreign missions (Ξ U+039E)
174
+ # ΔΟΚ dealer / test plates (Δ U+0394)
175
+ # ΕΣ Army, ΠΑ Air Force, ΠΝ Navy, ΛΣ Coast Guard, ΠΣ Fire Service,
176
+ # ΕΛ.ΑΣ / ΑΝ.Π police and war-disabled (Π U+03A0, Λ U+039B, Σ U+03A3)
177
+ #
178
+ # Transliterating ΔΣ to "DS" would be a CHOICE, not a glyph identity: no Greek
179
+ # diplomatic plate has ever shown the letters D and S, and a regex spelling
180
+ # "DS" would be a fabricated string presented as a format. Per PRD-PLATES §2.6
181
+ # ("a jurisdiction that prints a glyph inside a serial is a schema amendment,
182
+ # not a data entry"), these series are REPORTED AS A GAP requiring a schema
183
+ # decision — a `script:` field on the series plus a Greek-capital extension to
184
+ # the serial alphabet, or an explicit `transliteration:` map — and are not
185
+ # authored here. Filing them with invented Latin serials would have been the
186
+ # single most damaging thing this file could do, because the fabrication would
187
+ # be undetectable downstream.
188
+ #
189
+ # The representable special series are mostly NOT authored either, for a
190
+ # different and more ordinary reason: no format was sourced to a standard this
191
+ # file is willing to assert. ΤΑ, ΕΚ, ΙΑ and ΝΧ turn out not to need their own
192
+ # series at all — they are letter ALLOCATIONS inside the ordinary series,
193
+ # carried in the decode table, and their yellow ground is the statutory Δ.Χ.
194
+ # colour recorded as a variant on gr-standard-2004. ΜΕ, ΑΜ, ΚΥ/ΚΚ and ΑΟ have
195
+ # no sourced digit grammar and are recorded as gaps.
196
+ #
197
+ # COLOUR POLICY: ΥΑ οικ. 4700/330/2004 names colours in words only — "λευκή",
198
+ # "κίτρινη", "κυανού" — and prescribes NO chromaticity coordinates and no
199
+ # luminance factors anywhere (contrast Spain's Anexo XVIII Cuadro 3, which
200
+ # constrains a CIE gamut). There is consequently no colour box to cite and no
201
+ # spec-anchored hex to compute. Every hex below is therefore `hex_basis:
202
+ # observed` with no `color_spec`, and that absence is itself the sourced fact.
203
+ jurisdiction: gr
204
+ authority:
205
+ name: Υπουργείο Υποδομών και Μεταφορών (Ministry of Infrastructure and Transport) — ΥΑ οικ. 4700/330/2004, ΦΕΚ Β' 192/4-2-2004
206
+ url: "https://www.yme.gov.gr/"
207
+ binding: vehicle
208
+
209
+ charset_defaults:
210
+ letters_printed: ["Α", "Β", "Ε", "Ζ", "Η", "Ι", "Κ", "Μ", "Ν", "Ο", "Ρ", "Τ", "Υ", "Χ"]
211
+ letters_printed_codepoints: ["U+0391", "U+0392", "U+0395", "U+0396", "U+0397", "U+0399", "U+039A", "U+039C", "U+039D", "U+039F", "U+03A1", "U+03A4", "U+03A5", "U+03A7"]
212
+ letters_matched: [A, B, E, H, I, K, M, N, O, P, T, X, Y, Z]
213
+ letters_matched_codepoints: ["U+0041", "U+0042", "U+0045", "U+0048", "U+0049", "U+004B", "U+004D", "U+004E", "U+004F", "U+0050", "U+0054", "U+0058", "U+0059", "U+005A"]
214
+ excluded_letters_matched: [C, D, F, G, J, L, Q, R, S, U, V, W]
215
+ excluded_letters_printed_note: >-
216
+ The Greek capitals never issued on an ordinary plate are Γ, Δ, Θ, Λ, Ξ, Π,
217
+ Σ, Φ, Ψ, Ω — precisely those with no Latin glyph twin. Ϝ and the archaic
218
+ letters do not arise. Note that the exclusion is by SHAPE, not by
219
+ confusability: Greece keeps Ι and Ο despite 1/0 confusion, and drops Σ and
220
+ Δ despite their being perfectly legible to a Greek reader.
221
+ glyph_map:
222
+ note: >-
223
+ Printed Greek capital -> matched Latin capital, by IDENTICAL GLYPH. Read
224
+ this as the render/parse contract for Greece: a consumer displaying a
225
+ Greek plate should render the LEFT column, and a consumer matching one
226
+ should normalise to the RIGHT column. The four traps are Η->H, Ρ->P,
227
+ Υ->Y, Χ->X, where the phonetic transliteration (E/I, R, U, CH) is wrong.
228
+ pairs: ["Α=A", "Β=B", "Ε=E", "Ζ=Z", "Η=H", "Ι=I", "Κ=K", "Μ=M", "Ν=N", "Ο=O", "Ρ=P", "Τ=T", "Υ=Y", "Χ=X"]
229
+ source: "https://www.dsanet.gr/Epikairothta/Nomothesia/yaoik4700-330_04.htm # ΥΑ οικ. 4700/330/2004 art. 1 para. 2, verbatim: the fourteen letters and the stated reason 'που είναι κοινά στην ελληνική και λατινική αλφάβητο'. Codepoints extracted mechanically from the fetched bytes, 2026-08-02"
230
+
231
+ font_spec: # cited once; referenced by every design below
232
+ letters: "DIN 1451 Teil 4 [4.1 Schriftform G (Engschrift)]"
233
+ digits: "DIN 1451 Teil 4 [4.2 Schriftform H (Mittelschrift)]"
234
+ note: >-
235
+ ΥΑ οικ. 4700/330/2004 art. 2 para. 5 prescribes a DIFFERENT DIN 1451 cut
236
+ for the letters than for the digits — Engschrift for the letters,
237
+ Mittelschrift for the digits — and art. 2 para. 2 puts the euroband's "GR"
238
+ in Engschrift as well. This is unusual and is easy to miss: most
239
+ jurisdictions name one typeface for the whole serial. A render layer that
240
+ sets a Greek plate in a single cut is wrong by the instrument. PRD-PLATES
241
+ §6 applies to DIN 1451 itself: build to it, never redistribute its
242
+ drawings; the statute names the standard rather than supplying a
243
+ Schriftmuster, so the render layer needs a metrically-compatible free face
244
+ with the substitution recorded.
245
+ source: "https://www.dsanet.gr/Epikairothta/Nomothesia/yaoik4700-330_04.htm # art. 2 paras. 2 and 5"
246
+
247
+ security_marking:
248
+ emblem: "εθνόσημο (national emblem), 30 mm diameter, printed as a security marking immediately to the right of the blue field on its horizontal axis, 1 mm clear"
249
+ state_seal: "additionally EMBOSSED: the seal of the State with the national emblem and the legend «ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Υ.Μ.Ε.», 30 mm diameter, sitting ON the hyphen between the letter group and the digit group"
250
+ note: >-
251
+ Art. 2 para. 7 requires the marking to be integrated "έτσι ώστε να μην
252
+ μπορεί να γίνει απομίμηση, αντικατάσταση, τροποποίηση" — so that imitation,
253
+ substitution or alteration is impossible without changing the appearance of
254
+ the plate. PRD-PLATES §3 emblem rule applies: the render layer emits a
255
+ neutral placeholder in both emblem slots.
256
+ source: "https://www.dsanet.gr/Epikairothta/Nomothesia/yaoik4700-330_04.htm # art. 2 paras. 7 and 8; art. 3 para. 2(δ) places the embossed seal on the hyphen"
257
+
258
+ series:
259
+
260
+ # =========================================================================
261
+ # THE CURRENT ORDINARY SERIES — three letters, statutory hyphen, four digits.
262
+ # =========================================================================
263
+ - id: gr-standard-2004
264
+ class: standard
265
+ categories: [car, van, truck, bus]
266
+ period: { start: 2004 }
267
+ period_evidence: enacted-commencement
268
+ matching: strict
269
+ format:
270
+ pattern: "LLL-9999"
271
+ regex: '\A[A-Z]{3}-\d{4}\z'
272
+ regex_strict: '\A[ABEHIKMNOPTXYZ]{3}-[1-9]\d{3}\z'
273
+ charset:
274
+ letters: [A, B, E, H, I, K, M, N, O, P, T, X, Y, Z]
275
+ notes: >-
276
+ The fourteen letters of art. 1 para. 2, in this dataset's Latin form —
277
+ see charset_defaults for the printed Greek codepoints and the glyph
278
+ map. `regex` cannot carry the restriction because the lint's pattern
279
+ generator emits all 26 letters for an "L"; `regex_strict` carries both
280
+ the sourced alphabet AND the sourced digit floor.
281
+ digits: "1000-9999 — art. 1 para. 2 states the range explicitly, so a leading zero is excluded and regex_strict spells [1-9] for the first digit"
282
+ repetition: >-
283
+ Expressly permitted, and this is a sourced fact rather than an
284
+ assumption: "με δυνατότητα επανάληψης και διαφορετικής διάταξης του
285
+ αυτού γράμματος σε κάθε τριάδα" — repetition and re-ordering of the
286
+ same letter within a triple are allowed. ΑΑΑ, ΖΖΖ and ΧΧΧ are
287
+ well-formed. A validator must not reject repeats.
288
+ progression: >-
289
+ The first TWO letters identify the issuing Directorate of Transport (see
290
+ region_encoding); the third advances through the fourteen-letter
291
+ alphabet as a sub-series, and the four digits cycle 1000-9999 within it.
292
+ So a Greek plate decodes to PLACE, not to time — there is no age
293
+ signal in it at all, unlike the UK memory tag or the Dutch sidecode.
294
+ Whether the third letter is strictly sequential within a Directorate was
295
+ not sourced; the decode table's per-code notes record several triples
296
+ the source reports as skipped (e.g. ΑΗΗ, ΑΙΙ, ΕΒΒ), which is consistent
297
+ with a doubled-letter avoidance rule but does not establish one.
298
+ separator_note: >-
299
+ THE HYPHEN IS STATUTORY AND IT IS A PHYSICAL OBJECT. Art. 3 para. 2
300
+ lists the elements of the plate left to right and gives the separator
301
+ its own item, verbatim: "δ) η παύλα πάνω στην οποία και σε ίση απόσταση
302
+ από αυτήν και το άνω μέρος του μαύρου περιθωρίου υπάρχει ανάγλυφη η
303
+ σφραγίδα του Κράτους με το εθνόσημο" — "the dash, upon which, equidistant
304
+ from it and from the upper edge of the black border, is embossed the
305
+ seal of the State bearing the national emblem". The gap between the
306
+ letters and the digits is not typography and not a Plakette slot as in
307
+ Germany: it is a printed dash carrying the state seal above it. The
308
+ emitted HYPHEN-MINUS of plates/_meta/separators.yml is the correct
309
+ encoding, and a separator-stripping consumer collapsing "ΡΚΑ-1234" to
310
+ "PKA1234" loses nothing.
311
+ design:
312
+ plate: { w: 520, h: 110, unit: mm }
313
+ plate_variants:
314
+ - { w: 340, h: 200, unit: mm, note: "two-row REAR plate (art. 4) — for vehicles whose manufacturer-provided mounting cannot take the long plate. Row 1: blue field 88 mm high, security marking, the three letters. Row 2: the hyphen with the embossed seal above it, then the four digits." }
315
+ characters: { h: 77, w: 44, stroke: 11, unit: mm, note: "art. 2 paras. 9 and 10 — 77 x 44 x 11 for BOTH letters and digits, expressly excepting the letter Ι and the digit 1, whose width is not stated" }
316
+ relief: { max: 1.6, unit: mm, note: "art. 2 para. 11: relief above the plate ground must not exceed 1.6 mm, to limit dust accumulation and shadowing; character edges struck at 45 degrees so the retroreflective material is not damaged in pressing" }
317
+ substrate: { material: aluminium, thickness: 1, unit: mm, purity_min: "96% aluminium", note: "art. 2 para. 11" }
318
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
319
+ foreground: "#000000"
320
+ border: { color: "#000000", width: 4, outer_lip: 1, unit: mm, note: "art. 2 para. 6: a black frame 4 mm wide running the whole perimeter, with a 1 mm outer lip" }
321
+ band:
322
+ side: left
323
+ color: "#003399"
324
+ hex_basis: observed
325
+ content: eu-stars+GR
326
+ width: 45
327
+ unit: mm
328
+ note: >-
329
+ Art. 2 paras. 1-4: a retroreflective field of "κυανού" (blue) 45 mm
330
+ long, carrying the twelve-star EU circle above and the international
331
+ distinguishing sign GR below. Precise geometry, all statutory: the
332
+ twelve yellow stars' CENTRES lie on a circle of radius 15 mm; opposite
333
+ tips of one star are 5 mm apart; the GR letters are 20 mm high, are
334
+ RETROREFLECTIVE, and take THE SAME COLOUR AS THE PLATE GROUND rather
335
+ than a fixed white — so on a yellow Δ.Χ. plate the GR is yellow, not
336
+ white. That last detail is stated in art. 2 para. 2 and is routinely
337
+ drawn wrong.
338
+ emblem: { present: true, rendered: placeholder, note: "two distinct emblems — the printed security-marking εθνόσημο and the embossed state seal; see the file-level security_marking block" }
339
+ font: { name: "DIN 1451 Teil 4", note: "see file-level font_spec — Engschrift for letters, Mittelschrift for digits", license: "standards document; build to it, never redistribute (PRD-PLATES §6)" }
340
+ rear_differs: false
341
+ tolerances: { element_sizes: 0.5, overall: 1.0, other: 1.0, unit: mm, note: "art. 2 paras. 12-14" }
342
+ region_encoding: "plates/_decode/gr-prefectures.yml"
343
+ region_encoding_mechanism: >-
344
+ The FIRST TWO of the three letters denote the issuing Directorate of
345
+ Transport. The decode table is `secondary-wikipedia`, NOT the statutory
346
+ annex — the annex to ΥΑ 19800/1982 exists and is still being amended
347
+ (ΥΑ 282069/2023, ΥΑ 178239/2024) but was not obtainable. Two cautions a
348
+ parse API must honour: the prefix is NOT unique on its own (NX means
349
+ either Thessaloniki-motorcycle or nationwide-haulage-truck, so the
350
+ vehicle category is part of the key), and 34 of the 195 rows are
351
+ allocations not yet in issue.
352
+ variants:
353
+ - class: taxi
354
+ design:
355
+ background: { color: "#F9B700", finish: retroreflective, hex_basis: observed }
356
+ foreground: "#000000"
357
+ band: { side: left, color: "#003399", content: eu-stars+GR, note: "the GR takes the ground colour, so YELLOW here — art. 2 para. 2" }
358
+ note: >-
359
+ PUBLIC-USE (Δ.Χ., δημόσιας χρήσης) VEHICLES CARRY THE SAME SERIAL ON A
360
+ YELLOW GROUND. One instrument, one sentence, both colours — art. 2
361
+ para. 5, verbatim: "Τα γράμματα και οι αριθμοί, του αριθμού
362
+ κυκλοφορίας, θα είναι χρώματος μαύρου σε λευκή αντανακλαστική
363
+ επιφάνεια για αυτοκίνητα Ι.Χ., μοτοσικλέτες, ρυμουλκούμενα και σε
364
+ κίτρινη αντανακλαστική επιφάνεια για τα αυτοκίνητα Δ.Χ." — black
365
+ characters on a WHITE retroreflective ground for private cars,
366
+ motorcycles and trailers, and on a YELLOW retroreflective ground for
367
+ public-use cars. Same format, same period, colour-only difference,
368
+ therefore a sub-entry and not its own series (PRD-PLATES §2.3).
369
+ CLASS CAVEAT, and it matters: Δ.Χ. is BROADER THAN `taxi`. It is the
370
+ whole public-use category — taxis, hire cars, and the licensed
371
+ haulage and bus fleets whose reserved prefixes (ΤΑ, ΕΚ, ΙΑ, ΝΧ ->
372
+ TA, EK, IA, NX) appear in the decode table. `taxi` is the closest
373
+ member of the controlled vocabulary and is recorded as an approximation,
374
+ not as the statutory category. A `public-service` class would fit
375
+ Greece, Cyprus (ΦΔΧ/ΛΔΧ) and Malta (PY) alike and is flagged as a
376
+ vocabulary gap.
377
+ sources:
378
+ - "https://www.dsanet.gr/Epikairothta/Nomothesia/yaoik4700-330_04.htm # art. 2 para. 5: the Ι.Χ. white / Δ.Χ. yellow split, verbatim; art. 2 para. 2: the GR takes the ground colour"
379
+ sources:
380
+ - "https://www.dsanet.gr/Epikairothta/Nomothesia/yaoik4700-330_04.htm # ΥΑ οικ. 4700/330/2004 (ΦΕΚ Β' 192/4-2-2004) in full: art. 1 para. 2 format + the fourteen letters + digit range + repetition rule; art. 2 construction, colours, euroband geometry, DIN 1451 cuts, security marking, character metrics, substrate, tolerances; art. 3 the 520x110 one-row plate and the statutory hyphen; art. 4 the 340x200 two-row rear plate; art. 9 commencement 1-5-2004 and the old-stock provision. Fetched and text-extracted 2026-08-02"
381
+ - "https://www.e-nomothesia.gr/kat-aytokinita/pinakides-kuklophorias/ # the Ministry's plate-instrument series, used to establish that ΥΑ 19800/1982 is the base instrument and that it is still being amended. Accessed 2026-08-02"
382
+ notes: >-
383
+ THE CURRENT GREEK SERIES. Its legal start is 1 MAY 2004, stated by the
384
+ instrument itself (art. 9: "Η ισχύς της απόφασης αυτής αρχίζει την 1
385
+ Μαΐου 2004"), NOT the gazette date of 4-2-2004 and not the
386
+ "September/October 2004" that circulates in secondary accounts — the
387
+ latter is a rollout observation, and both are true statements about
388
+ different things. What changed on that date was the DESIGN, not the
389
+ format: the euroband, the DIN 1451 cuts and the security marking arrived,
390
+ while the three-letter/four-digit grammar and the whole letter allocation
391
+ were expressly carried over ("παραμένει ως έχει", art. 1 para. 5). That is
392
+ why this series and gr-standard-1982 share a format and differ in design,
393
+ and why a plate string alone cannot tell them apart — only the physical
394
+ plate can. A parse API must return BOTH as candidates for any
395
+ well-formed ΛΛΛ-9999 string and must not claim the era from the string.
396
+ Art. 1 para. 1 gives the plate count: two plates per car (one front, one
397
+ rear), one plate for a motorcycle or a trailer.
398
+
399
+ # =========================================================================
400
+ # MOTORCYCLES — same alphabet, three digits, and a plate of its own shape.
401
+ # =========================================================================
402
+ - id: gr-motorcycle-2004
403
+ class: motorcycle
404
+ categories: [motorcycle]
405
+ period: { start: 2004 }
406
+ period_evidence: enacted-commencement
407
+ matching: strict
408
+ format:
409
+ pattern: "LLL-999"
410
+ regex: '\A[A-Z]{3}-\d{3}\z'
411
+ regex_strict: '\A[ABEHIKMNOPTXYZ]{3}-(?!000)\d{3}\z'
412
+ charset:
413
+ letters: [A, B, E, H, I, K, M, N, O, P, T, X, Y, Z]
414
+ digits: "001-999"
415
+ notes: >-
416
+ Art. 1 para. 3, verbatim: "Η αρίθμηση των πινακίδων για τις
417
+ μοτοσικλέτες γίνεται με συνδυασμό τριών από τα δεκατέσσερα (14)
418
+ προαναφερόμενα γράμματα, με δυνατότητα επανάληψης και διαφορετικής
419
+ διάταξης του αυτού γράμματος σε κάθε τριάδα και ενός μονοψήφιου έως
420
+ τριψήφιου αριθμού (001-999)." The number is described as "one- to
421
+ three-digit" but its range is written 001-999 and art. 5 para. 2
422
+ prescribes "ο συνδυασμός των τριών (3) αριθμών" — a group of THREE
423
+ figures. The plate therefore shows three digit positions and values
424
+ below 100 are zero-padded; regex_strict excludes only 000, which the
425
+ stated range excludes.
426
+ progression: "as the ordinary series — the first two letters are the Directorate, but note that the motorcycle allocation is a SEPARATE arm of the annex, amended by its own instruments (ΥΑ 282069/2023, ΥΑ 178239/2024), so a two-letter prefix may denote different Directorates for cars and for motorcycles"
427
+ separator_note: "the statutory hyphen, carrying the embossed state seal above it, exactly as on the car plate (art. 5 para. 2(β))"
428
+ design:
429
+ plate: { w: 280, h: 210, unit: mm, note: "art. 5 para. 1 — REAR plate only; art. 1 para. 1 gives motorcycles one plate" }
430
+ characters: { h: 77, w: 44, stroke: 11, unit: mm }
431
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
432
+ foreground: "#000000"
433
+ border: { color: "#000000", width: 4, outer_lip: 1, unit: mm }
434
+ band: { side: left, color: "#003399", hex_basis: observed, content: eu-stars+GR, h: 88, unit: mm, note: "art. 5 para. 2(α): on the two-row layouts the blue field is 88 mm high and sits on the FIRST row only, beside the three letters — it does not run the full height of the plate as it does on the 520 x 110 car plate" }
435
+ emblem: { present: true, rendered: placeholder }
436
+ font: { name: "DIN 1451 Teil 4", note: "see file-level font_spec" }
437
+ rear_differs: false
438
+ layout: "TWO ROWS. Row 1: blue field (88 mm), security marking, the three letters. Row 2: the hyphen with the embossed state seal above it, then the three digits."
439
+ region_encoding: "plates/_decode/gr-prefectures.yml"
440
+ region_encoding_mechanism: "first two letters = Directorate, from the motorcycle arm of the allocation annex; 52 of the decode table's rows are marked motorcycle allocations"
441
+ sources:
442
+ - "https://www.dsanet.gr/Epikairothta/Nomothesia/yaoik4700-330_04.htm # art. 1 paras. 1 and 3 (one plate, three letters + 001-999); art. 5 (280 x 210 two-row layout, 88 mm blue field); art. 2 para. 5 (white ground for motorcycles). Fetched 2026-08-02"
443
+ notes: >-
444
+ GREEK MOTORCYCLE PLATE — 280 x 210 mm, nearly square, two rows. It is NOT
445
+ a size variant of the car plate and is not modelled as one, because the
446
+ DIGIT COUNT differs (three, not four): that is a format difference and
447
+ therefore its own series under PRD-PLATES §2.3. Worth stating for a parse
448
+ API: a three-letter/three-digit Greek string is a motorcycle, and a
449
+ three-letter/four-digit one is not — the digit count is the only
450
+ discriminator in the string, and it is reliable because both are fixed by
451
+ the same instrument. Commencement 1-5-2004 as for the car series, with the
452
+ same statutory old-stock tail.
453
+
454
+ # =========================================================================
455
+ # TRAILERS — the one ordinary series with a fixed letter, and it is a Rho.
456
+ # =========================================================================
457
+ - id: gr-trailer-2004
458
+ class: trailer
459
+ categories: [trailer, semitrailer]
460
+ period: { start: 2004 }
461
+ period_evidence: enacted-commencement
462
+ matching: strict
463
+ format:
464
+ pattern: "P-99999"
465
+ regex: '\AP-\d{4,5}\z'
466
+ charset:
467
+ notes: >-
468
+ THE LETTER IS A GREEK RHO, Ρ (U+03A1), and it is matched here as
469
+ LATIN P (U+0050) under the file's glyph map. This single character is
470
+ the clearest demonstration of why the map is by shape and not by
471
+ sound: a phonetic reading gives "R", and a Greek trailer plate has
472
+ never shown a Latin R. Art. 1 para. 4, verbatim: "Η αρίθμηση των
473
+ πινακίδων για τα ρυμουλκούμενα γίνεται με το γράμμα Ρ και από τον
474
+ αριθμό 1000 έως τον αριθμό 99999."
475
+ digits: "1000-99999"
476
+ pattern_note: >-
477
+ A RECORDED INTERNAL TENSION IN THE INSTRUMENT, not smoothed over. Art. 1
478
+ para. 4 gives the number range as 1000 to 99999 — four OR five figures.
479
+ Art. 6 para. 2(ε) describes the printed layout as "ο συνδυασμός των
480
+ πέντε (5) αριθμών" — a group of FIVE figures. The two are reconcilable
481
+ only if four-digit values are zero-padded to five on the plate, which is
482
+ the likeliest reading but is nowhere stated. `regex` therefore accepts
483
+ four OR five digits and makes no padding claim; `pattern` shows the
484
+ five-figure form because that is what art. 6 prescribes for the plate.
485
+ A verifier with a photograph of a low-numbered Greek trailer plate can
486
+ settle this in one observation.
487
+ separator_note: "statutory hyphen with the embossed seal above it (art. 6 para. 2(δ)), as on every other Greek plate"
488
+ design:
489
+ plate: { w: 520, h: 110, unit: mm, note: "art. 6 para. 1 — the trailer plate is the FULL-SIZE car plate, not a reduced one" }
490
+ characters: { h: 77, w: 44, stroke: 11, unit: mm }
491
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
492
+ foreground: "#000000"
493
+ border: { color: "#000000", width: 4, outer_lip: 1, unit: mm }
494
+ band: { side: left, color: "#003399", hex_basis: observed, content: eu-stars+GR, note: "full-height, as on the one-row car plate" }
495
+ emblem: { present: true, rendered: placeholder }
496
+ font: { name: "DIN 1451 Teil 4", note: "see file-level font_spec" }
497
+ layout: "ONE ROW: blue field, security marking, the letter Ρ, the hyphen with the embossed seal, five digits (art. 6 para. 2)"
498
+ region_encoding: none
499
+ region_encoding_note: "NO GEOGRAPHY. The trailer serial is a single fixed letter and a national number — there is no Directorate prefix, so a Greek trailer plate cannot be located. A sourced negative."
500
+ sources:
501
+ - "https://www.dsanet.gr/Epikairothta/Nomothesia/yaoik4700-330_04.htm # art. 1 para. 4 (letter Ρ, 1000-99999); art. 6 (520 x 110, one row, five figures); art. 2 para. 5 (white ground for ρυμουλκούμενα); art. 1 para. 1 (one plate). Fetched 2026-08-02"
502
+ notes: >-
503
+ GREEK TRAILER PLATE. Trailers and semi-trailers share one series here
504
+ because art. 1 para. 4 treats "τα ρυμουλκούμενα" as one category with one
505
+ letter — the same modelling choice Spain's Anexo XVIII forces, and the
506
+ opposite of the Netherlands, where W and O split them. Note that the
507
+ trailer keeps the white ground even when towed by a yellow Δ.Χ. tractor:
508
+ art. 2 para. 5 lists ρυμουλκούμενα with the white group unconditionally.
509
+
510
+ # =========================================================================
511
+ # THE PRE-EUROBAND THREE-LETTER SERIES, 1982-2004. Same grammar, no band.
512
+ # =========================================================================
513
+ - id: gr-standard-1982
514
+ class: standard
515
+ categories: [car, van, truck, bus]
516
+ period: { start: 1982, end: 2004 }
517
+ period_evidence: enabling-instrument
518
+ matching: strict
519
+ format:
520
+ pattern: "LLL-9999"
521
+ regex: '\A[A-Z]{3}-\d{4}\z'
522
+ charset:
523
+ notes: >-
524
+ NO regex_strict, DELIBERATELY. The fourteen-letter rule is sourced to
525
+ a primary only from 2004 (ΥΑ οικ. 4700/330/2004 art. 1 para. 2). It is
526
+ universally reported to be older, and ΥΑ 19800/1982's survival of the
527
+ 2004 rewrite plus the "παραμένει ως έχει" carry-over of the allocation
528
+ make it near-certain that the same fourteen letters governed this era
529
+ too — but "near-certain" is not "sourced", the 1982 text was not
530
+ obtained, and this file does not put an unsourced alphabet in a strict
531
+ twin. A verifier who reads ΦΕΚ Β' 455/1982 should be able to add one.
532
+ separator_note: "the hyphen is assumed to be statutory in this era as well, on the strength of the 2004 text's continuity, but the 1982 wording was not read — recorded as an inference, not a citation"
533
+ design:
534
+ plate: { w: 520, h: 110, unit: mm }
535
+ plate_variants:
536
+ - { w: 223, h: 160, unit: mm, note: "motorcycle plate of the era — see the design_history note for the sourcing caveat on this figure" }
537
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
538
+ foreground: "#000000"
539
+ band: { side: none }
540
+ band_note: >-
541
+ THE ABSENCE OF THE EUROBAND IS THE SOUND PART OF THIS DESIGN BLOCK, and
542
+ it is a primary-supported negative rather than an observation: the blue
543
+ field is CREATED by ΥΑ οικ. 4700/330/2004 art. 2 para. 1, whose
544
+ commencement is 1-5-2004, so it cannot have been on a plate issued
545
+ under the 1982 specification. Everything else in this block is weaker
546
+ than the 2004 series' equivalents and is marked accordingly.
547
+ design_history: >-
548
+ Secondary reporting of a further amending instrument, ΥΑ 26380/1145
549
+ (ΦΕΚ not established), describes the pre-2004 plate as a "αργυρόλευκο"
550
+ (silver-white) retroreflective field with black embossed characters, the
551
+ car plate at 520 x 110 mm and the motorcycle plate at 223 x 160 mm, and
552
+ mentions the ΔΟΚ trade and ΚΚ state prefixes. Recorded as a LEAD, not as
553
+ a claim: the instrument's gazette reference was not established and its
554
+ text was not read. Note in particular that "silver-white" and the
555
+ #FFFFFF above may not be the same colour, and that 223 x 160 differs
556
+ from the 280 x 210 the 2004 instrument prescribes — so the motorcycle
557
+ plate changed SIZE in 2004, which if confirmed is a second reason the
558
+ two motorcycle series are properly distinct.
559
+ region_encoding: "plates/_decode/gr-prefectures.yml"
560
+ region_encoding_note: >-
561
+ PERIOD-DISCIPLINE CAVEAT. The decode table describes the CURRENT
562
+ allocation. Directorate boundaries and prefecture names changed
563
+ materially over this series' life — most sweepingly with the 2010
564
+ Καλλικράτης reform, which abolished the prefectures (νομοί) as
565
+ self-governing units altogether while the plate codes kept their
566
+ prefecture names. Decoding a 1980s or 1990s Greek plate through the
567
+ current table will therefore be right often and wrong silently. Historic
568
+ decode rows are L4 work (PRD-PLATES §7) — recorded gap.
569
+ sources:
570
+ - "https://www.e-nomothesia.gr/index.php/pinakides-kuklophorias/ya-19800-1982.html # ΥΑ 19800/1982 «Πινακίδες αριθμού κυκλοφορίας αυτοκινήτων οχημάτων και ρυμουλκουμένων», ΦΕΚ Β' 455/1-7-1982 — the instrument's IDENTITY, title and gazette reference. Its TEXT is paywalled and was NOT read; every claim in this entry that depends on the text is marked. Accessed 2026-08-02"
571
+ - "https://www.dsanet.gr/Epikairothta/Nomothesia/yaoik4700-330_04.htm # ΥΑ οικ. 4700/330/2004 art. 9: repeals paragraphs Α, Β, ΙΑ, ΙΓ, ΙΕ and ΙΣΤ of Chapter Ι of the 1982 decision as regards state plates for cars, trailers and motorcycles, commences 1-5-2004, and expressly continues issuance of 1982-specification plates until stocks are exhausted — i.e. this series' END, dated, from the instrument that ended it"
572
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Greece # secondary-wikipedia: the first-issue date of the three-letter format, given as 1983-1984, which DIVERGES from the 1982 instrument date recorded here. Revision 1367180219 of 2026-08-01. Recorded, not averaged"
573
+ notes: >-
574
+ THE PRE-EUROBAND THREE-LETTER SERIES. PERIOD HONESTY, stated at point of
575
+ use, because this is exactly the boundary PRD-PLATES §5.3 warns about.
576
+ START: ΥΑ 19800/1982 was published in ΦΕΚ Β' 455 on 1-7-1982 and is the
577
+ instrument that frames this system, but ITS TEXT WAS NOT OBTAINED, so its
578
+ own commencement clause is unknown and it may contain a delayed or
579
+ progressive rollout provision. Secondary sources put the first
580
+ three-letter plates in 1983-1984. The recorded start is therefore 1982
581
+ with `period_evidence: enabling-instrument` — the earliest date the
582
+ instrument supports — and the 1983-1984 divergence is recorded here rather
583
+ than averaged into a compromise year. This is the file's weakest period
584
+ claim and the most likely correction. END: 1-5-2004 for the specification,
585
+ by the commencement of ΥΑ οικ. 4700/330/2004 — but SOFT, because that
586
+ instrument's own final paragraph continues issuance of 1982-specification
587
+ plates "μέχρι εξαντλήσεως των αποθεμάτων", until stocks are exhausted, on
588
+ no stated date. Pre-band plates were therefore lawfully ISSUED after
589
+ 1-5-2004 and remain valid on the road indefinitely; the overlap with
590
+ gr-standard-2004 in 2004 is real, statutory, and the reason both entries
591
+ carry distinct notes.
592
+
593
+ - id: gr-motorcycle-1990
594
+ class: motorcycle
595
+ categories: [motorcycle]
596
+ period: { start: 1990, end: 2004 }
597
+ period_evidence: secondary-dated
598
+ matching: strict
599
+ format:
600
+ pattern: "LLL-999"
601
+ regex: '\A[A-Z]{3}-\d{3}\z'
602
+ charset: { notes: "no regex_strict, for the same reason as gr-standard-1982: the fourteen-letter alphabet is sourced to a primary only from 2004" }
603
+ design:
604
+ plate: { w: 223, h: 160, unit: mm, note: "secondary; see gr-standard-1982.design.design_history for the ΥΑ 26380/1145 lead this figure rests on" }
605
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
606
+ foreground: "#000000"
607
+ band: { side: none }
608
+ region_encoding: "plates/_decode/gr-prefectures.yml"
609
+ region_encoding_note: "same period-discipline caveat as gr-standard-1982"
610
+ sources:
611
+ - "https://el.wikipedia.org/wiki/%CE%A0%CE%B9%CE%BD%CE%B1%CE%BA%CE%AF%CE%B4%CE%B5%CF%82_%CE%BA%CF%85%CE%BA%CE%BB%CE%BF%CF%86%CE%BF%CF%81%CE%AF%CE%B1%CF%82_%CE%BF%CF%87%CE%B7%CE%BC%CE%AC%CF%84%CF%89%CE%BD_%CF%84%CE%B7%CF%82_%CE%95%CE%BB%CE%BB%CE%AC%CE%B4%CE%B1%CF%82 # secondary-wikipedia: three-letter motorcycle plates from 1.1.1990, three-letter + one-to-three-digit form. Accessed 2026-08-02"
612
+ - "https://www.dsanet.gr/Epikairothta/Nomothesia/yaoik4700-330_04.htm # the END: ΥΑ οικ. 4700/330/2004 arts. 5 and 9 replace the motorcycle plate specification with effect from 1-5-2004"
613
+ notes: >-
614
+ MOTORCYCLES BEFORE THE EUROBAND. `period_evidence: secondary-dated`: the
615
+ start is a Greek-Wikipedia date (1 January 1990) with NO primary secured,
616
+ and it is recorded because it is specific and internally consistent — the
617
+ three-letter motorcycle format postdates the three-letter car format by
618
+ several years, which is why motorcycle allocations are still being made
619
+ today by their own amending instruments. Treat the 1990 boundary as
620
+ unverified. The END is instrument-dated (1-5-2004) and carries the same
621
+ statutory old-stock tail as the car series, which is why this entry and
622
+ gr-motorcycle-2004 overlap in 2004 with distinct notes.
623
+
624
+ # =========================================================================
625
+ # THE TWO-LETTER PROVINCIAL SERIES, 1972-1984 — recall-only, no primary.
626
+ # =========================================================================
627
+ - id: gr-provincial-1972
628
+ class: standard
629
+ categories: [car, van, truck, bus]
630
+ period: { start: 1972, end: 1984 }
631
+ period_evidence: secondary-dated
632
+ matching: recall-only
633
+ format:
634
+ pattern: "LL-9999"
635
+ regex: '\A[A-Z]{2}-\d{4}\z'
636
+ pattern_note: >-
637
+ DELIBERATELY WIDE, hence recall-only. No instrument was obtained for
638
+ this era at all, so neither the letter alphabet nor the digit range is
639
+ sourced: the four-digit group is the reported shape and the regex makes
640
+ no claim beyond it. Whether the fourteen-letter restriction already
641
+ applied in 1972 is unknown, and whether the digits ran 1000-9999 or from
642
+ 1 is unknown. A match here means "this string has a shape Greece is
643
+ reported to have issued" and nothing more.
644
+ design:
645
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
646
+ foreground: "#000000"
647
+ band: { side: none }
648
+ note: "black on white, reported; no instrument read, no colour specification located for this era"
649
+ region_encoding: "not established for this era"
650
+ region_encoding_note: >-
651
+ The two-letter mark of this series is reported to be a PREFECTURE code,
652
+ and it is the ancestor of the modern two-letter prefix — but this file
653
+ does NOT point it at plates/_decode/gr-prefectures.yml, because that table
654
+ is the CURRENT allocation and there is no evidence the 1972 codes survived
655
+ into it unchanged. Pointing a 1972 plate at a 2004 table would be the
656
+ French-SIV error PRD-PLATES §2.4 records. Recorded gap.
657
+ sources:
658
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Greece # secondary-wikipedia: two letters + four digits, prefecture letters introduced 1972, superseded by the three-letter format in the mid-1980s. Revision 1367180219 of 2026-08-01T14:31:31Z"
659
+ - "https://el.wikipedia.org/wiki/%CE%A0%CE%B9%CE%BD%CE%B1%CE%BA%CE%AF%CE%B4%CE%B5%CF%82_%CE%BA%CF%85%CE%BA%CE%BB%CE%BF%CF%86%CE%BF%CF%81%CE%AF%CE%B1%CF%82_%CE%BF%CF%87%CE%B7%CE%BC%CE%AC%CF%84%CF%89%CE%BD_%CF%84%CE%B7%CF%82_%CE%95%CE%BB%CE%BB%CE%AC%CE%B4%CE%B1%CF%82 # secondary-wikipedia: the same era given as 1972-1984, corroborating the end but note the two articles differ (see notes)"
660
+ notes: >-
661
+ THE TWO-LETTER PREFECTURE SERIES. NO PRIMARY WAS SECURED FOR THIS SERIES
662
+ AT ALL — no instrument, no gazette reference, no format text — and the
663
+ entry exists to record the era's shape rather than to validate strings,
664
+ which is why it is `recall-only`. A RECORDED DISAGREEMENT, not averaged:
665
+ the English article gives the succeeding three-letter format as
666
+ "1984-2004" and this era as "1972-1985"; the Greek article gives
667
+ "1972-1984". The end is recorded as 1984 and the overlap with
668
+ gr-standard-1982 (1982-2004) is left standing, because a rollout across
669
+ Directorates genuinely produces several years in which both marks were
670
+ being issued. PRE-1972 GREECE IS NOT MODELLED: the purely numeric eras
671
+ (reported as 1911-1954 and 1956-1972) and the short 1954-1956
672
+ letter-and-number era have no instrument, no reliable format and no
673
+ colour source here, and pre-2000 depth is L4 work under PRD-PLATES §7.
674
+ Recorded as a deliberate gap rather than authored from folklore.
675
+
676
+ # =========================================================================
677
+ # HISTORIC VEHICLES — ΙΟ, the one special prefix that IS Latin-representable
678
+ # and well enough attested to author.
679
+ # =========================================================================
680
+ - id: gr-historic-io-2023
681
+ class: historic
682
+ categories: [car, van, truck, bus, motorcycle]
683
+ period: { start: 2023 }
684
+ period_evidence: secondary-dated
685
+ matching: strict
686
+ format:
687
+ pattern: "IO-99999"
688
+ regex: '\AIO-\d{5}\z'
689
+ charset:
690
+ notes: >-
691
+ The prefix is ΙΟ — Greek Iota (U+0399) and Omicron (U+039F) — for
692
+ «Ιστορικά Οχήματα», historic vehicles. Both letters are inside the
693
+ fourteen, so the Latin form IO is exact rather than a transliteration
694
+ choice. It is also the sharpest illustration of the Greek alphabet's
695
+ one weakness noted in this file's header: ΙΟ-12345 and the digits
696
+ 1O/10 are very nearly the same picture.
697
+ digits: "five digits, reported; no range sourced"
698
+ design:
699
+ plate: { w: 520, h: 110, unit: mm, note: "assumed to be the ordinary plate size; not separately sourced" }
700
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
701
+ foreground: "#0088FF"
702
+ foreground_note: "BLUE characters on white — the only Greek series in this file whose characters are not black. The hex is the value the source article uses for its own rendering and is `observed` in the weakest sense; no specification was located."
703
+ band: { side: none, note: "not established — whether the ΙΟ plate carries the euroband was not sourced" }
704
+ region_encoding: none
705
+ region_encoding_note: "none — a national historic series with no Directorate prefix, as reported"
706
+ sources:
707
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Greece # secondary-wikipedia: ΙΟ historic-vehicle plates for vehicles over 30 years old that pass an authenticity inspection, IO-12345 form, white ground with blue characters, issued from 2023, replacing the earlier club-issued (FILPA / FHVE) yellow-blue, white-blue and white-orange plates. Revision 1367180219 of 2026-08-01T14:31:31Z"
708
+ - "https://el.wikipedia.org/wiki/%CE%A0%CE%B9%CE%BD%CE%B1%CE%BA%CE%AF%CE%B4%CE%B5%CF%82_%CE%BA%CF%85%CE%BA%CE%BB%CE%BF%CF%86%CE%BF%CF%81%CE%AF%CE%B1%CF%82_%CE%BF%CF%87%CE%B7%CE%BC%CE%AC%CF%84%CF%89%CE%BD_%CF%84%CE%B7%CF%82_%CE%95%CE%BB%CE%BB%CE%AC%CE%B4%CE%B1%CF%82 # secondary-wikipedia: corroborates ΙΟ, white ground / blue characters, and records that the club-issued predecessors expired 31-12-2024"
709
+ notes: >-
710
+ ΙΣΤΟΡΙΚΑ ΟΧΗΜΑΤΑ. ENTIRELY SECONDARY — no instrument was located for this
711
+ series, and the 2023 start is a reported year with no gazette reference,
712
+ hence `period_evidence: secondary-dated`. It is authored, where the other
713
+ Greek special series are not, for two reasons: its prefix is exactly
714
+ representable in this dataset's serial alphabet, and its format is
715
+ reported consistently by two independent articles. Everything about it
716
+ should be treated as provisional until a ΦΕΚ is pinned. Note the
717
+ transition it implies and which is worth a verifier's attention: historic
718
+ status in Greece moved from CLUB certification (FILPA, FHVE, whose plates
719
+ are reported to have expired on 31-12-2024) to a STATE series — so
720
+ 1990s-2024 Greek historic plates are a different animal entirely and are
721
+ not modelled here.