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,688 @@
1
+ # plates/cy.yml — Republic of Cyprus (PRD-PLATES gate L1, wave 2).
2
+ #
3
+ # ============================================================================
4
+ # WHAT THIS FILE COVERS, AND WHAT IT DOES NOT — READ FIRST
5
+ # ============================================================================
6
+ # This file records the vehicle registration system of the REPUBLIC OF CYPRUS:
7
+ # the system administered by the Έφορος Μηχανοκινήτων Οχημάτων (Registrar of
8
+ # Motor Vehicles) under the Motor Vehicles and Road Traffic Law, Ν. 86/1972,
9
+ # and the Regulations made under it.
10
+ #
11
+ # The northern part of the island is administered separately and its vehicles
12
+ # are registered under a separate system, by authorities whose sovereignty is
13
+ # recognised only by Türkiye. THAT SYSTEM IS NOT COVERED HERE. No primary
14
+ # source for it was consulted in this pass and no claim about its formats,
15
+ # colours or periods is made anywhere in this file — including by implication.
16
+ # A consumer must not read the absence of those plates as a statement that they
17
+ # do not exist or are not encountered; it is a statement about this file's
18
+ # sourcing, nothing more. Covering it would require its own sourced pass and,
19
+ # on the evidence below, its own jurisdiction key, because it is not
20
+ # administered under the instruments cited here.
21
+ #
22
+ # The division is not an editorial gloss added by this dataset — it is visible
23
+ # inside the Republic's own primary text. Ν. 86/1972 as consolidated carries
24
+ # provisos referring to «τις περιοχές της Δημοκρατίας που ελέγχονται από τα
25
+ # Τουρκικά στρατεύματα κατοχής» ("the areas of the Republic controlled by the
26
+ # Turkish occupation troops") and to a «Τουρκοκύπριο που δεν κυκλοφορεί στις
27
+ # περιοχές που ελέγχονται από τη Δημοκρατία". So the enabling statute itself
28
+ # records that the Registrar's writ does not run across the whole island, which
29
+ # is the sourced reason this file's scope is what it is.
30
+ #
31
+ # ALSO NOT COVERED: the Sovereign Base Areas of Akrotiri and Dhekelia, which
32
+ # are a British Overseas Territory with their own Ordinances published in the
33
+ # SBA Gazette rather than on CyLaw. Ν. 86/1972's regulations mention the
34
+ # British Ministry of Defence only as a SOURCE of second-hand vehicles whose
35
+ # age limits apply on registration in the Republic (Κ.Δ.Π. 66/1984 Καν. 4(2)(α),
36
+ # 4(3)) — nothing about SBA plates. Recorded gap.
37
+ #
38
+ # ============================================================================
39
+ # THE PERMITTED LETTER SET — TWELVE LETTERS, AND IT IS IN LAW
40
+ # ============================================================================
41
+ # Κ.Δ.Π. 291/2010, Δεύτερο Παράρτημα, Μέρος Ι, παρ. 1 (Ε.Ε. Παρ. III(1) Αρ.
42
+ # 4437, gazette page 1721), verbatim:
43
+ #
44
+ # «1. Τα γράμματα και οι αριθμοί που θα περιέχονται στις πινακίδες εγγραφής
45
+ # είναι τα ακόλουθα:
46
+ # A B E H K M N P T X Y Z,
47
+ # και
48
+ # 1 2 3 4 5 6 7 8 9 0.»
49
+ #
50
+ # ("The letters and the numbers that shall be contained in registration
51
+ # plates are the following: A B E H K M N P T X Y Z, and 1 2 3 4 5 6 7 8 9 0.")
52
+ #
53
+ # Twelve letters. In force 3 June 2013. This was read off the gazette page
54
+ # image directly (the PDF has no text layer), not taken from a secondary.
55
+ #
56
+ # WHICH SCRIPT IS THAT LIST IN? It matters, it is not answerable from the
57
+ # glyphs — every one of those twelve is drawn identically in both alphabets,
58
+ # which is the entire point of the set — and this file answers it from the
59
+ # ORDERING, which is the one signal a scan preserves:
60
+ #
61
+ # * The gazette prints them A B E H K M N P T X Y Z. That is exactly LATIN
62
+ # alphabetical order.
63
+ # * Read as Greek capitals the same twelve are Α Β Ε Η Κ Μ Ν Ρ Τ Χ Υ Ζ, and
64
+ # that is NOT Greek alphabetical order — Greek order would put Ζ fourth
65
+ # (Α Β Ε Ζ Η Κ Μ Ν Ρ Τ Υ Χ) and Χ after Υ.
66
+ #
67
+ # So a Greek-language instrument enumerates the plate letters in LATIN
68
+ # collation, which is the expected result for a Republic whose plates are
69
+ # Latin-script, and this file records them as LATIN codepoints:
70
+ # A U+0041 B U+0042 E U+0045 H U+0048 K U+004B M U+004D
71
+ # N U+004E P U+0050 T U+0054 X U+0058 Y U+0059 Z U+005A
72
+ #
73
+ # THE CONTRAST WITH GREECE IS EXACT AND IS WORTH STATING, because the two
74
+ # files look superficially identical and are not:
75
+ # * GREECE (plates/gr.yml) prints GREEK capitals — Α U+0391 … Χ U+03A7 —
76
+ # restricted to the fourteen that have a Latin twin, and ΥΑ οικ.
77
+ # 4700/330/2004 lists them in GREEK alphabetical order.
78
+ # * CYPRUS prints LATIN capitals restricted to the twelve that have a Greek
79
+ # twin, listed in LATIN alphabetical order.
80
+ # Same intersection of two alphabets, approached from opposite sides. The
81
+ # Cypriot set is the Greek set MINUS I and O — that is, Cyprus additionally
82
+ # drops the two letters confusable with the digits 1 and 0, which Greece keeps.
83
+ # Cyprus therefore has the stricter, more machine-legible alphabet of the two.
84
+ #
85
+ # ============================================================================
86
+ # THE INSTRUMENT CHAIN
87
+ # ============================================================================
88
+ # * Ν. 86/1972, Ο περί Μηχανοκινήτων Οχημάτων και Τροχαίας Κινήσεως Νόμος
89
+ # (Ε.Ε. Παρ. Ι, Αρ. 976, 1-12-1972) — the ENABLING statute. It prescribes
90
+ # NO plate format; s.5(1)(α) empowers the Council of Ministers to make
91
+ # Regulations on classification, registration and licensing.
92
+ # * Κ.Δ.Π. 159/1973 (Ε.Ε. Παρ. III(1) Αρ. 1023, 13-7-1973) — first
93
+ # Regulations under the Law.
94
+ # * Κ.Δ.Π. 66/1984 (Ε.Ε. Παρ. III(1) Αρ. 1937, 8-3-1984) — the «βασικοί
95
+ # κανονισμοί», the base Regulations, still the frame today.
96
+ # * Κ.Δ.Π. 291/2010 (Ε.Ε. Παρ. III(1) Αρ. 4437, pages 1703-1738, 9-7-2010) —
97
+ # THE SUBSTANTIVE MODERN INSTRUMENT: it replaces the Second Schedule
98
+ # wholesale with Parts I (letters and numbers), II (dimensions, mounting,
99
+ # construction, colours) and III (the EU band), and inserts Καν. 6(21) (the
100
+ # government plates). Most of this file comes from it.
101
+ # * Κ.Δ.Π. 71/2013 (Αρ. 4629, pages 594-617, 1-3-2013) — the Registrar's
102
+ # Γνωστοποίηση under Καν. 6(10)(β) fixing the LETTERFORMS, as 23 pages of
103
+ # drawn specimens. Repeals Κ.Δ.Π. 503/2011.
104
+ # * Κ.Δ.Π. 72/2013 (Αρ. 4629, page 618, 1-3-2013) — THE COMMENCEMENT
105
+ # INSTRUMENT, one sentence, fixing 3 JUNE 2013.
106
+ # * Κ.Δ.Π. 325/2012 (Αρ. 4590, pages 2211-2213, 7-9-2012) — sale of
107
+ # registration marks.
108
+ #
109
+ # A CORRECTION TO THE SECONDARY RECORD, worth stating because it is the kind of
110
+ # thing that propagates: the commonly cited "Motor Vehicles and Road Traffic
111
+ # Regulations 2013 (Identification Marks and Registration Plates) (Commencement)
112
+ # Order 2013" DOES NOT EXIST under that name. The substantive instrument is
113
+ # Κ.Δ.Π. 291/2010 and the commencement instrument is Κ.Δ.Π. 72/2013.
114
+ #
115
+ # THE INSTRUMENT-DATE RULE, AND CYPRUS IS THE CLEANEST CASE IN THIS WAVE: the
116
+ # substantive instrument is dated 9 JULY 2010 and the series begins on
117
+ # 3 JUNE 2013, nearly three years later, because Κ.Δ.Π. 291/2010 Καν. 4(β)(i)
118
+ # deferred the operative paragraphs to a date to be fixed by the Registrar, and
119
+ # Κ.Δ.Π. 72/2013 then fixed it. Shipping 2010 as the period would have been
120
+ # precisely the Spanish error. Neither date is the gazette date of the
121
+ # commencement instrument either (1 March 2013) — THREE plausible dates, and
122
+ # only one of them is the series.
123
+ #
124
+ # AND THE ROLLOUT HAS THREE LIMBS, all in Καν. 4(β):
125
+ # (i) 3 June 2013 — vehicles registered for the first time;
126
+ # (ii) 3 June 2013 — any vehicle whose plates are REPLACED for any reason,
127
+ # including at the owner's election, or on loss, damage or destruction;
128
+ # (iii) 3 December 2013 (six months later) — already-registered taxis, goods
129
+ # vehicles, and L-category vehicles (L1e-L7e).
130
+ # Καν. 4(δ) then keeps the repealed Second Schedule alive for those vehicles
131
+ # «μέχρι την εγκατάσταση σε αυτά πινακίδων εγγραφής» — until new plates are
132
+ # fitted. THERE IS NO END DATE FOR THE PRE-2013 STOCK: a 1990-era plate was
133
+ # never invalidated and remains lawful indefinitely. That is why the pre-2013
134
+ # series below carry no hard end and overlap the current one.
135
+ #
136
+ # ============================================================================
137
+ # THE BIG SOURCED NEGATIVE: BEFORE 2013 THERE WAS NO PLATE FORMAT IN LAW
138
+ # ============================================================================
139
+ # This is the most important structural fact about Cypriot plate history and it
140
+ # is a NEGATIVE, established by reading the instruments rather than by failing
141
+ # to find one. Κ.Δ.Π. 66/1984, Δεύτερον Παράρτημα, παρ. 2 is the ENTIRE
142
+ # specification of a mark's content from 1984 to 2013, verbatim:
143
+ #
144
+ # «2. Εκάστη πινακίς δέον όπως είναι σχήματος ορθογωνίου και φέρη επ' αυτής
145
+ # τα παραχωρηθέντα υπό του Εφόρου γράμματα και αριθμούς.»
146
+ # ("Each plate shall be rectangular and shall bear on it the letters and
147
+ # numbers granted by the Registrar.")
148
+ #
149
+ # That is all of it. No letter set, no letter count, no digit count, no series,
150
+ # and no overall plate dimensions. Κ.Δ.Π. 159/1973's Second Schedule is
151
+ # verbatim identical on the point. Καν. 6(2) simply has the Registrar
152
+ # «παραχωρεί εις αυτό διακριτικά σημεία ταυτότητος».
153
+ #
154
+ # CONSEQUENCE, and it governs how the historic series below are modelled: the
155
+ # AB123 / AB 123 / ABC123 lineage consists of ADMINISTRATIVE SERIES OF THE
156
+ # REGISTRAR, not creatures of any published instrument. There is no instrument
157
+ # to date them from, and their boundaries are therefore secondary. Every
158
+ # pre-2013 series in this file is `matching: recall-only` for that reason: the
159
+ # authority published no grammar for them, so no regex can be a well-formedness
160
+ # claim. (All 67 CyLaw Κ.Δ.Π. year indexes 1960-2026 were swept for
161
+ # «Μηχανοκινήτων Οχημάτων» and «πινακίδ» instruments to reach this conclusion.)
162
+ #
163
+ # COLOUR POLICY: Κ.Δ.Π. 291/2010 Μέρος ΙΙ παρ. 5 names colours in words only —
164
+ # άσπρου, κίτρινου, κόκκινου, πορτοκαλί, μαύρου, κυανού, αργυρού — with NO
165
+ # chromaticity coordinates. Construction quality is delegated to ISO 7591-1982
166
+ # ("Road Vehicles — Retro-reflective registration plates for motor vehicles and
167
+ # trailers — Specification"), which is a retroreflectivity standard, not a
168
+ # colour gamut for these purposes and not fetched here. So every hex below is
169
+ # `hex_basis: observed` and carries no `color_spec`.
170
+ jurisdiction: cy
171
+ authority:
172
+ name: Έφορος Μηχανοκινήτων Οχημάτων / Τμήμα Οδικών Μεταφορών (Registrar of Motor Vehicles, Road Transport Department) — Ν. 86/1972 and Κ.Δ.Π. 291/2010
173
+ url: "https://www.cylaw.org/nomoi/enop/non-ind/1972_1_86/full.html"
174
+ binding: vehicle
175
+
176
+ charset_defaults:
177
+ letters: [A, B, E, H, K, M, N, P, T, X, Y, Z]
178
+ letters_codepoints: ["U+0041", "U+0042", "U+0045", "U+0048", "U+004B", "U+004D", "U+004E", "U+0050", "U+0054", "U+0058", "U+0059", "U+005A"]
179
+ script: latin
180
+ script_evidence: >-
181
+ Determined by COLLATION, not by glyph, because the glyphs are identical in
182
+ both alphabets. The gazette prints the twelve in Latin alphabetical order
183
+ (A B E H K M N P T X Y Z); read as Greek capitals they would be out of
184
+ Greek alphabetical order. See the file header.
185
+ excluded_letters: [C, D, F, G, I, J, L, O, Q, R, S, U, V, W]
186
+ excluded_letters_note: >-
187
+ Fourteen Latin capitals are never issued. Twelve of them (C D F G J L Q R S
188
+ U V W) have no Greek capital twin; the remaining two, I and O, DO have
189
+ twins (Ι U+0399, Ο U+039F) and are nonetheless excluded — which is the one
190
+ place the Cypriot rule goes beyond the shared-alphabet principle and
191
+ excludes for DIGIT CONFUSABILITY (1 and 0) as well. Greece, working from
192
+ the same intersection, keeps I and O.
193
+ digits: "0-9, all ten, expressly enumerated by the same paragraph"
194
+ zero_padding: >-
195
+ Μέρος Ι παρ. 2 makes the three-digit numeric block mandatory rather than
196
+ incidental, verbatim: «Όταν τα διακριτικά σημεία ταυτότητας που
197
+ παραχωρούνται από τον Έφορο περιέχουν αριθμό που έπεται γράμματος και που
198
+ αποτελείται από — (α) ένα μόνο ψηφίο, αναγράφεται πριν από αυτόν ο αριθμός
199
+ «0» δύο φορές και, (β) δύο ψηφία, αναγράφεται πριν από αυτόν ο αριθμός «0»
200
+ μία φορά». One digit is padded with two zeros, two digits with one — so the
201
+ numeric group is ALWAYS three characters, 001-999. This is the actual
202
+ source of the familiar "ABC 123" shape.
203
+ source: "https://www.cylaw.org/KDP/data/2010_1_291.pdf # Κ.Δ.Π. 291/2010, Δεύτερο Παράρτημα Μέρος Ι παρ. 1 and 2, gazette page 1721 (PDF page 19). The page has NO TEXT LAYER; it was rendered and read as an image. In force 3-6-2013 per Κ.Δ.Π. 72/2013"
204
+
205
+ sic_notes:
206
+ letter_i_exception: >-
207
+ A DEFECT IN THE INSTRUMENT, recorded rather than smoothed. Μέρος Ι παρ. 3,
208
+ setting minimum character dimensions for the reduced L-category plates,
209
+ excepts "the letter I" from the minimum-width rule («εκτός από το γράμμα
210
+ I»). But I is NOT among the twelve letters paragraph 1 permits. The
211
+ exception is inoperative as drafted — almost certainly carried over from a
212
+ template written before the letter set was closed. It is preserved here
213
+ because a reader comparing this dataset to the gazette would otherwise
214
+ think the dataset had dropped a letter.
215
+
216
+ government_ministry_codes:
217
+ note: >-
218
+ PRIMARY DATA, DELIBERATELY NOT LATINISED, AND NOT AUTHORED AS A SERIES.
219
+ Κ.Δ.Π. 291/2010 Καν. 6(21)(β) gives Ministry vehicles an orange plate
220
+ bearing the θυρεός (coat of arms), then «τα ψηφία «ΚΔ»», then Registrar-
221
+ assigned numbers, then a two-letter Ministry code from Μέρος V. The prefix
222
+ ΚΔ is Greek Kappa + Delta, and Δ (U+0394) HAS NO LATIN GLYPH TWIN — so
223
+ neither the prefix nor half of the Ministry codes can be written in this
224
+ dataset's Latin serial alphabet without inventing characters. Of the twelve
225
+ codes, six have exact Latin glyph twins (ΑΜ ΒΑ ΕΜ ΕΡ ΥΟ ΥΥ) and six do not
226
+ (ΓΦ ΔΔ ΕΞ ΕΣ ΠΠ ΥΣ, using Γ Δ Ξ Σ Π). A PARTIAL Latin column would be worse
227
+ than none — it would silently decode half the fleet and mangle the rest —
228
+ so the codes are recorded in their printed Greek only, per the rule that a
229
+ fact whose identity is its form is copied exactly. See the file-level
230
+ not_representable block.
231
+ source: "https://www.cylaw.org/KDP/data/2010_1_291.pdf # Κ.Δ.Π. 291/2010, Καν. 6(21) (gazette pages 1710-1711) and Δεύτερο Παράρτημα Μέρος V (gazette page 1738)"
232
+ commencement_caveat: >-
233
+ ENACTED BUT OF UNVERIFIED COMMENCEMENT. Καν. 4(γ) of Κ.Δ.Π. 291/2010 defers
234
+ Καν. 6(21) to a date "που θα καθοριστεί με γνωστοποίηση του Εφόρου" — a
235
+ further notification by the Registrar, SEPARATE from the Κ.Δ.Π. 72/2013 that
236
+ commenced Καν. 4(β). That notification was not located in the CyLaw Κ.Δ.Π.
237
+ indexes 2010-2026. So the orange ΚΔ plate is law on paper with no
238
+ established start date, and is not authored as a series here for that reason
239
+ as well as the script one.
240
+ codes:
241
+ - { printed: "ΑΜ", body: "Υπουργείο Άμυνας", body_en: "Ministry of Defence", latin_representable: true }
242
+ - { printed: "ΒΑ", body: "Βουλή των Αντιπροσώπων", body_en: "House of Representatives", latin_representable: true }
243
+ - { printed: "ΓΦ", body: "Υπουργείο Γεωργίας, Φυσικών Πόρων και Περιβάλλοντος", body_en: "Ministry of Agriculture, Natural Resources and Environment", latin_representable: false }
244
+ - { printed: "ΔΔ", body: "Υπουργείο Δικαιοσύνης και Δημοσίας Τάξεως", body_en: "Ministry of Justice and Public Order", latin_representable: false }
245
+ - { printed: "ΕΜ", body: "Υπουργείο Εμπορίου, Βιομηχανίας και Τουρισμού", body_en: "Ministry of Commerce, Industry and Tourism", latin_representable: true }
246
+ - { printed: "ΕΞ", body: "Υπουργείο Εξωτερικών", body_en: "Ministry of Foreign Affairs", latin_representable: false }
247
+ - { printed: "ΕΡ", body: "Υπουργείο Εργασίας και Κοινωνικών Ασφαλίσεων", body_en: "Ministry of Labour and Social Insurance", latin_representable: true }
248
+ - { printed: "ΕΣ", body: "Υπουργείο Εσωτερικών", body_en: "Ministry of the Interior", latin_representable: false }
249
+ - { printed: "ΠΠ", body: "Υπουργείο Παιδείας και Πολιτισμού", body_en: "Ministry of Education and Culture", latin_representable: false }
250
+ - { printed: "ΥΟ", body: "Υπουργείο Οικονομικών", body_en: "Ministry of Finance", latin_representable: true }
251
+ - { printed: "ΥΣ", body: "Υπουργείο Συγκοινωνιών και Έργων", body_en: "Ministry of Communications and Works", latin_representable: false }
252
+ - { printed: "ΥΥ", body: "Υπουργείο Υγείας", body_en: "Ministry of Health", latin_representable: true }
253
+ president_note: >-
254
+ Καν. 6(21)(α): vehicles used by the President of the Republic carry «μόνο
255
+ το θυρεό, έμβλημα της Κυπριακής Δημοκρατίας» — ONLY the coat of arms, with
256
+ no registration mark at all. A plate with no serial cannot be given a
257
+ pattern and is therefore not a series in this schema; recorded here as the
258
+ fact it is. Καν. 6(21)(β) expressly EXCLUDES the Police and the National
259
+ Guard from the ΚΔ scheme, so both must have separate regimes — neither was
260
+ located in this legislation. Recorded gap.
261
+
262
+ not_representable:
263
+ note: >-
264
+ THE SAME SCHEMA GAP THIS WAVE FOUND IN GREECE, INDEPENDENTLY, IN A SECOND
265
+ JURISDICTION — which is what makes it a schema problem rather than a Greek
266
+ quirk. These Cypriot marks are printed in Greek capitals that have NO Latin
267
+ glyph twin, so plates/_meta/separators.yml's Latin-only serial alphabet
268
+ cannot spell them and no honest pattern can be written:
269
+ * «ΚΔ» government prefix and six of the twelve Ministry codes (above) —
270
+ Δ U+0394, Γ U+0393, Ξ U+039E, Σ U+03A3, Π U+03A0.
271
+ * «ΕΦ» National Guard — Φ U+03A6. Reported by secondary sources as
272
+ following an old-form Greek flag; no instrument located.
273
+ * «ΔΟΚΙΜΗ» dealer legend — Δ U+0394. See dealer_plates below, where the
274
+ larger finding is that this legend is not in the instrument at all.
275
+ Per PRD-PLATES §2.6 a jurisdiction printing a glyph the serial alphabet
276
+ lacks is a SCHEMA AMENDMENT, not a data entry. Transliterating ΚΔ to "KD"
277
+ would fabricate a string no Cypriot plate shows. Reported, not authored.
278
+
279
+ dealer_plates:
280
+ note: >-
281
+ SOURCED COLOUR, UNSOURCED FORMAT — so recorded here rather than as a series,
282
+ because the lint quite rightly requires a pattern and this dataset has no
283
+ honest one to give. Κ.Δ.Π. 66/1984 Καν. 11(3), verbatim: the dealer must
284
+ supply the plate at his own expense and it «δέον όπως είναι του εγκεκριμένου
285
+ υπό του Εφόρου μεγέθους, λευκής επιφανείας, τα δε επ' αυτής τοποθετούμενα
286
+ γράμματα και αριθμοί ερυθρού χρώματος» — of a size APPROVED BY THE
287
+ REGISTRAR, white surface, with the letters and numbers on it in RED. The
288
+ size and the composition are both left to the Registrar, so there is no
289
+ published grammar. Καν. 11(2): the dealer licence runs six months.
290
+ correction: >-
291
+ A SECONDARY CLAIM REFUTED BY THE PRIMARY. Secondary sources state that
292
+ Cypriot dealer plates read «ΔΟΚΙΜΗ» ("TEST"). The word ΔΟΚΙΜΗ does not
293
+ appear anywhere in Κ.Δ.Π. 66/1984 — the full text was searched. Whatever is
294
+ printed on those plates in practice, it is not prescribed by this
295
+ instrument. Recorded as a refuted claim rather than repeated.
296
+ source: "https://www.cylaw.org/KDP/data/1984_1_66.pdf # Κ.Δ.Π. 66/1984 Καν. 11(2)-(3), gazette page 248"
297
+
298
+ sale_of_marks:
299
+ note: >-
300
+ Κ.Δ.Π. 325/2012 Παράρτημα Μέρος 1 παρ. 3 governs the sale of registration
301
+ marks and contains an unusually specific exclusion, verbatim: «Οι
302
+ προσφερόμενοι αριθμοί καθορίζονται ως οι αριθμοί από το ένα (1) μέχρι το
303
+ εννιακόσια ενενήντα εννιά (999) κάθε προσφερόμενης γραμματοσειράς, με
304
+ εξαίρεση τους αριθμούς δεκατρία (13), εξήντα εννιά (69) και εξακόσια εξήντα
305
+ έξι (666).» — the numbers offered are 1 to 999 of each offered letter
306
+ series, EXCEPT 13, 69 and 666. Those three are withheld from sale by name.
307
+ They are not excluded from ordinary sequential allocation by this
308
+ paragraph, which is a distinction a parse API should not blur: a Cypriot
309
+ plate ending 666 is perfectly possible, it just was not auctioned.
310
+ source: "https://www.cylaw.org/KDP/data/2012_1_325.pdf # Κ.Δ.Π. 325/2012 (Ε.Ε. Παρ. III(1) Αρ. 4590, 7-9-2012), Παράρτημα Μέρος 1 παρ. 3, gazette page 2212. Repeals Κ.Δ.Π. 73/2009"
311
+
312
+ series:
313
+
314
+ # =========================================================================
315
+ # THE CURRENT SERIES — three letters, a printed gap, three digits.
316
+ # =========================================================================
317
+ - id: cy-standard-2013
318
+ class: standard
319
+ categories: [car, van, truck, bus]
320
+ period: { start: 2013 }
321
+ period_evidence: enacted-commencement
322
+ matching: strict
323
+ format:
324
+ pattern: "LLL 999"
325
+ regex: '\A[A-Z]{3} \d{3}\z'
326
+ regex_strict: '\A[ABEHKMNPTXYZ]{3} (?!000)\d{3}\z'
327
+ charset:
328
+ letters: [A, B, E, H, K, M, N, P, T, X, Y, Z]
329
+ notes: "the twelve letters of Κ.Δ.Π. 291/2010 Μέρος Ι παρ. 1; see charset_defaults. regex cannot carry the restriction because the lint's generator emits all 26 letters for an L"
330
+ digits: "001-999, always three characters by the Μέρος Ι παρ. 2 zero-padding rule; 000 is excluded, which regex_strict spells"
331
+ progression: >-
332
+ Sequential within a letter triple: the numbers run 001-999 and then the
333
+ third letter advances (MAA 999 -> MAB 001), which is why the triple is a
334
+ rough age signal and the digits are not. The first combination issued
335
+ under this series was MAA 001 on 3 June 2013 — that is a
336
+ secondary-wikipedia claim, NOT from the instrument, and it is the only
337
+ thing in this entry that is not primary. An applicant may choose an
338
+ available number within the current letter series.
339
+ separator_note: >-
340
+ NO SEPARATOR GLYPH IS PRESCRIBED. Κ.Δ.Π. 291/2010 Μέρος Ι παρ. 3 fixes
341
+ "τις αποστάσεις που πρέπει να τηρούνται μεταξύ τους" — the distances to
342
+ be kept between the characters — by reference to drawn specimens, and
343
+ names no hyphen, dot or other mark. The SPACE in the pattern is
344
+ therefore the printed gap and not a glyph, exactly as in Spain's Anexo
345
+ XVIII (plates/es.yml). A separator-stripping consumer collapsing
346
+ "MAA 001" to "MAA001" loses nothing.
347
+ design:
348
+ plate: { w: 520, h: 110, unit: mm, tolerance: 1, note: "Μέρος ΙΙ παρ. 1(α); «Οι ολικές εξωτερικές διαστάσεις των πινακίδων δύναται να έχουν ανοχή ± 1 χιλιοστόμετρο»" }
349
+ plate_variants:
350
+ - { w: 340, h: 200, unit: mm, note: "two-row plate, Μέρος ΙΙ παρ. 1(β)" }
351
+ - { w: [240, 280], h: 200, unit: mm, note: "Μέρος ΙΙ παρ. 1(γ): L1e and L3e vehicles (motorcycles) — width 240 to 280 mm, height 200 mm" }
352
+ - { w: [240, 280], h: 110, unit: mm, note: "Μέρος ΙΙ παρ. 1(γ): FRONT plates of L2e, L4e, L5e, L6e and L7e vehicles are 110 mm high; their REAR plates take the 200 mm height above" }
353
+ characters: { h: 75, w_letter: 47.5, w_digit: 44.5, stroke: 11, unit: mm, tolerance: 0.5, note: "from the ΔΕΙΓΜΑ (specimen) sheets, gazette pages 1722-1724. Note letters and digits have DIFFERENT widths — 47.5 vs 44.5 mm" }
354
+ characters_reduced: { h_min: 45, w_min: 30, stroke_min: 9, unit: mm, note: "Μέρος Ι παρ. 3: on the reduced L-category plates the dimensions may be scaled down, but never below 45 mm height, 30 mm total width per character, 9 mm stroke. See sic_notes.letter_i_exception" }
355
+ relief: { max: 1.6, unit: mm, note: "Μέρος ΙΙ παρ. 2(α): characters are ΑΝΑΓΛΥΦΑ (embossed), relief not exceeding 1.6 mm, edges struck at 45 degrees" }
356
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
357
+ foreground: "#000000"
358
+ border: { color: "#000000", width: 4, tolerance: 0.5, outer_lip: 1, unit: mm, note: "Μέρος ΙΙ παρ. 5.7" }
359
+ date_mark:
360
+ present: true
361
+ position: center
362
+ layout: "MM stacked over YY, small, in the gap between the letter triple and the digit triple"
363
+ content_note: >-
364
+ OBSERVED ON ISSUED PLATES, ABSENT FROM EVERY INSTRUMENT READ: two
365
+ independent Commons photographs agree (NBE 049 with 07/15,
366
+ motorcycle; PEM 499 with 04/22, yellow goods colourway), and a black
367
+ historic plate (ET 145, 05/70) shows the same convention — there
368
+ plausibly the vehicle's original qualifying date, which is an
369
+ inference, not a confirmed reading. A secondary source (a Cyprus
370
+ insurance-broker blog) calls it the registration month/year. Neither
371
+ Κ.Δ.Π. 291/2010 Μέρος Ι/ΙΙ nor the read pages of Κ.Δ.Π. 71/2013
372
+ mention a date field — it may sit in the unread 23-page letterform
373
+ annexe, or be Road Transport Department practice outside the plate
374
+ instruments. Recorded with the same observed-not-prescribed posture
375
+ this file already takes on the typeface.
376
+ evidence: photographic-observed
377
+ sources:
378
+ - "https://commons.wikimedia.org/wiki/File:2013_Cyprus_motorcycle_plate.jpg # NBE 049, 07/15"
379
+ - "https://commons.wikimedia.org/wiki/File:2013_Cyprus_license_plate_for_commercial_vehicles_(truck).jpg # PEM 499, 04/22"
380
+ - "https://commons.wikimedia.org/wiki/File:Cyprus_antique_vehicle_license_plate.jpg # ET 145, 05/70 — the inference case"
381
+ - "https://digicare-insurance.com/blog/cyprus-number-plates-regulations-2026 # secondary, semantics only"
382
+ band:
383
+ side: left
384
+ color: "#003399"
385
+ hex_basis: observed
386
+ content: eu-stars+CY
387
+ note: >-
388
+ Μέρος ΙΙΙ: the distinguishing sign of the Republic goes on the LEFT of
389
+ every plate, to the specification in the Annex to Council Regulation
390
+ (EC) No 2411/98 of 3 November 1998 (OJ L 299, 10-11-1998, p. 1), with
391
+ the letters CY below the twelve stars, retroreflective. Καν. 6(23)
392
+ makes it mandatory. COLOUR RULE, and it is the same design logic
393
+ Greece uses for its GR: the CY takes THE SAME COLOUR AS THE PLATE
394
+ GROUND, except where that ground is neither white nor yellow, in which
395
+ case the CY is white — so CY is white on the orange government plate
396
+ and on the black historic plate, and takes the ground colour on the
397
+ ordinary white and the taxi yellow.
398
+ construction_standard: "ISO 7591-1982, Road Vehicles — Retro-reflective registration plates for motor vehicles and trailers — Specification (Μέρος ΙΙ παρ. 4.16). Not fetched; named here, not quoted"
399
+ font:
400
+ name: "not named by any instrument"
401
+ note: >-
402
+ A CORRECTION TO THE SECONDARY RECORD. Secondary sources state that
403
+ Cyprus mandates FE-Schrift. NO CYPRIOT INSTRUMENT NAMES A TYPEFACE.
404
+ Καν. 6(10)(β) delegates "τα ιδιαίτερα χαρακτηριστικά των γραμμάτων και
405
+ αριθμών" to a Γνωστοποίηση of the Registrar, and the operative one,
406
+ Κ.Δ.Π. 71/2013, defines the letterforms as 23 PAGES OF DRAWN
407
+ SPECIMENS — by drawing, never by name. The drawn digits are visually
408
+ consistent with FE-Schrift (the long-footed 1, the open-topped 4, the
409
+ squarish 8), so the secondary claim is substantively defensible, but
410
+ the citable fact is "the letterforms reproduced in the Annex to
411
+ Κ.Δ.Π. 71/2013", not a typeface name. This is the same posture
412
+ PRD-PLATES §6 records for the UK, Germany and Spain: statutory
413
+ drawing, not licensable font.
414
+ license: "statutory drawing — PRD-PLATES §6: derive glyphs from the specimens, never from a third-party TTF"
415
+ mounting: { note: "Μέρος ΙΙ παρ. 3: vertical, tilt not exceeding 5 degrees (30/15 degree tolerances in specified cases), lower edge at least 0.30 m above the ground" }
416
+ rear_differs: false
417
+ rear_differs_note: >-
418
+ A REAL CHANGE AT 3-6-2013 THAT SECONDARY SOURCES GET RIGHT AND THAT IS
419
+ WORTH PINNING: before this series, Cypriot plates were WHITE AT THE
420
+ FRONT AND YELLOW AT THE REAR (Κ.Δ.Π. 66/1984 Δεύτερον Παράρτημα παρ.
421
+ 3(γ)). Μέρος ΙΙ παρ. 5.1 abolishes that: every plate is white unless it
422
+ falls in one of the special colour classes. So `rear_differs: false`
423
+ here is a substantive claim about this series, and `true` on the
424
+ pre-2013 series is a substantive claim about those.
425
+ region_encoding: none
426
+ region_encoding_note: >-
427
+ NONE, AND THIS IS A WELL-EVIDENCED SOURCED NEGATIVE RATHER THAN AN
428
+ ABSENCE OF EVIDENCE. There is no district code — for Nicosia, Limassol,
429
+ Larnaca, Famagusta, Paphos or Kyrenia — in Κ.Δ.Π. 159/1973, Κ.Δ.Π.
430
+ 66/1984 or Κ.Δ.Π. 291/2010. Registration is centralised: Καν. 3(α)
431
+ provides for a single «Βιβλίον Εγγραφής Μηχανοκινήτων Οχημάτων» kept by
432
+ one Έφορος for the whole Republic. A Cypriot plate has never encoded
433
+ geography and a parse API must never attempt to decode it.
434
+ variants:
435
+ - class: taxi
436
+ design:
437
+ background: { color: "#F9B700", finish: retroreflective, hex_basis: observed }
438
+ foreground: "#000000"
439
+ note: >-
440
+ YELLOW GROUND for taxis AND for goods vehicles. Μέρος ΙΙ παρ. 5.4:
441
+ every front and rear plate of a ταξί and of a φορτηγό όχημα, in the
442
+ sense given by the περί της Πρόσβασης στο Επάγγελμα του Οδικού
443
+ Μεταφορέα Νόμο του 2001, must have a yellow ground. CLASS CAVEAT: the
444
+ controlled vocabulary has no class covering "taxi plus licensed
445
+ goods vehicle"; `taxi` is the closest member and understates the
446
+ category, exactly as it does for Greece's Δ.Χ. The same
447
+ `public-service` vocabulary gap is flagged from both files.
448
+ HISTORICAL NOTE: until 9-7-2010 the distinction was carried by a
449
+ LETTER, not a colour — see the file's charset history and
450
+ cy-standard-1990.
451
+ sources:
452
+ - "https://www.cylaw.org/KDP/data/2010_1_291.pdf # Κ.Δ.Π. 291/2010 Δεύτερο Παράρτημα Μέρος ΙΙ παρ. 5.4, gazette page 1734"
453
+ - class: temporary
454
+ design:
455
+ background: { color: "#CE1126", finish: retroreflective, hex_basis: observed }
456
+ foreground: "#000000"
457
+ note: >-
458
+ RED GROUND for self-drive hire vehicles — «οχήματος εκμισθουμένου άνευ
459
+ οδηγού», literally "vehicle hired out without a driver" (Μέρος ΙΙ παρ.
460
+ 5.5). This is the rental-car plate. CLASS CAVEAT: recorded as
461
+ `temporary` because the controlled vocabulary has no `rental` or
462
+ `hire` class; the registration is not in fact temporary, and this is
463
+ the weakest class mapping in the file. A `rental` class is flagged as
464
+ a vocabulary gap. Until 9-7-2010 these vehicles carried a mandatory
465
+ «Ζ» prefix letter instead.
466
+ sources:
467
+ - "https://www.cylaw.org/KDP/data/2010_1_291.pdf # Κ.Δ.Π. 291/2010 Δεύτερο Παράρτημα Μέρος ΙΙ παρ. 5.5, gazette page 1734"
468
+ sources:
469
+ - "https://www.cylaw.org/KDP/data/2010_1_291.pdf # Κ.Δ.Π. 291/2010 (Ε.Ε. Παρ. III(1) Αρ. 4437, 9-7-2010): Δεύτερο Παράρτημα Μέρος Ι (letters, digits, zero-padding, reduced dimensions) page 1721; Μέρος ΙΙ παρ. 1 (plate sizes) page 1725, παρ. 2 (embossing), παρ. 3 (mounting), παρ. 4.16 (ISO 7591), παρ. 5 (colours) page 1734, παρ. 5.7 (border); Μέρος ΙΙΙ (EU band) page 1735; Καν. 4 (deferred commencement) page 1718-1720; Καν. 6(23) (band mandatory) page 1712. Page images read directly — the PDF has no text layer. Accessed 2026-08-02"
470
+ - "https://www.cylaw.org/KDP/data/2013_1_72.pdf # Κ.Δ.Π. 72/2013 (Αρ. 4629 page 618, 1-3-2013) — THE COMMENCEMENT: the Registrar «καθορίζει την 3η Ιουνίου 2013 ως την ημερομηνία έναρξης της ισχύος των προνοιών της παραγράφου 4(β)». This is the period start"
471
+ - "https://www.cylaw.org/KDP/data/2013_1_71.pdf # Κ.Δ.Π. 71/2013 (Αρ. 4629 pages 594-617) — the letterform specimens under Καν. 6(10)(β); dimensioned specimen page 595 gives height 75 mm, letter width 47.5 mm, digit width 44.5 mm. Repeals Κ.Δ.Π. 503/2011"
472
+ - "https://www.cylaw.org/nomoi/enop/non-ind/1972_1_86/full.html # Ν. 86/1972 s.5(1)(α) — the enabling power; s.17 the offence of altering the marks"
473
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Cyprus # secondary-wikipedia, ONE claim only: that the first combination issued was MAA 001. Revision 1344966818 of 2026-03-23T15:33:51Z"
474
+ notes: >-
475
+ THE CURRENT CYPRIOT SERIES. Start 3 JUNE 2013, fixed by Κ.Δ.Π. 72/2013,
476
+ NOT the 9-7-2010 date of the substantive instrument and NOT the 1-3-2013
477
+ gazette date of the commencement instrument — three candidate dates, one
478
+ correct answer, and the instrument-date trap in its purest form. The
479
+ series applies from that date to first registrations and to any plate
480
+ REPLACEMENT for any reason including owner election; already-registered
481
+ taxis, goods vehicles and L-category vehicles had until 3 DECEMBER 2013
482
+ (Καν. 4(β)(iii)). This entry overlaps the pre-2013 series because Καν.
483
+ 4(δ) keeps the old Second Schedule alive for unreplated vehicles with NO
484
+ END DATE — pre-2013 plates were never invalidated and remain lawful today.
485
+
486
+ # =========================================================================
487
+ # HISTORIC — a colour class over an unprescribed mark, hence recall-only.
488
+ # =========================================================================
489
+ - id: cy-historic-black-2013
490
+ class: historic
491
+ categories: [car, van, truck, bus, motorcycle]
492
+ period: { start: 2013 }
493
+ period_evidence: enacted-commencement
494
+ matching: recall-only
495
+ format:
496
+ pattern: "LLL 999"
497
+ regex: '\A[A-Z]{2,3} ?\d{1,5}\z'
498
+ pattern_note: >-
499
+ DELIBERATELY WIDE — a union, hence recall-only. This is not a series
500
+ with its own grammar at all: it is a COLOUR PERMISSION attaching to a
501
+ vehicle's EXISTING registration mark. An eligible vehicle keeps whatever
502
+ mark it already has, which for a vehicle registered on or before
503
+ 31-12-1974 is a mark of the AB123 or AB 123 era, and the regex is
504
+ therefore the union of the shapes Cyprus is known to have issued. A
505
+ match here says "this string has a shape Cyprus has issued and the
506
+ vehicle MAY be eligible for a black plate" — it is emphatically not a
507
+ claim that the plate is black. This is the nl-export case in
508
+ PRD-PLATES §2.7, and it is why no regex_strict exists.
509
+ design:
510
+ background: { color: "#000000", finish: non-retroreflective, hex_basis: observed }
511
+ foreground: "#FFFFFF"
512
+ foreground_note: "«χρώματος άσπρου ή αργυρού» — WHITE OR SILVER, the instrument permits either; the hex records the white option and a render layer must know silver is equally lawful"
513
+ band: { side: left, color: "#003399", content: eu-stars+CY, note: "the CY is WHITE here, because Μέρος ΙΙΙ παρ. 3 makes it white wherever the ground is neither white nor yellow" }
514
+ region_encoding: none
515
+ sources:
516
+ - "https://www.cylaw.org/KDP/data/2010_1_291.pdf # Κ.Δ.Π. 291/2010 Δεύτερο Παράρτημα Μέρος ΙΙ παρ. 5.3 (gazette page 1734): «Η βάση πινακίδων παλαιών οχημάτων ή οχημάτων που ενεγράφησαν στη Δημοκρατία μέχρι την 31 Δεκεμβρίου 1974 είναι δυνατόν να είναι χρώματος μαύρου»; Μέρος ΙΙ παρ. 5.6(β) the white-or-silver characters; and the Καν. 4(β)(ii) proviso (page 1719) restating the same permission"
517
+ notes: >-
518
+ THE CYPRIOT HISTORIC PLATE IS A FIXED-DATE RULE, NOT A ROLLING AGE RULE,
519
+ AND THIS CORRECTS A WIDESPREAD SECONDARY CLAIM. Secondary sources say
520
+ "vehicles older than 30 years". The instrument says «παλαιών οχημάτων ή
521
+ οχημάτων που ενεγράφησαν στη Δημοκρατία μέχρι την 31 Δεκεμβρίου 1974» —
522
+ old vehicles, OR vehicles registered in the Republic ON OR BEFORE 31
523
+ DECEMBER 1974. A fixed calendar cutoff does not move: the eligible
524
+ population shrinks every year and can never grow, which is the opposite of
525
+ a rolling 30-year rule. NOTE THE DISJUNCTION, and it is the honest
526
+ residue: the phrase is "παλαιών οχημάτων Ή ...", so there are two limbs,
527
+ and «παλαιό όχημα» (old vehicle) is NOT DEFINED anywhere in the
528
+ instruments read. A rolling definition may well live in the vehicle-tax or
529
+ roadworthiness legislation, which was not fetched — recorded gap, and the
530
+ reason this note does not simply assert the 1974 date as the whole test.
531
+ The permission is expressed as «είναι δυνατόν» — MAY be — so the black
532
+ plate is optional, and an eligible vehicle on a white plate is not
533
+ irregular. Period start is 3-6-2013 because that is when this Schedule
534
+ commenced; black plates on old Cypriot cars long predate it in practice,
535
+ under arrangements not sourced here.
536
+
537
+ # =========================================================================
538
+ # THE PRE-2013 ADMINISTRATIVE SERIES. No published grammar — recall-only.
539
+ # =========================================================================
540
+ - id: cy-standard-1990
541
+ class: standard
542
+ categories: [car, van, truck, bus]
543
+ period: { start: 1990, end: 2013 }
544
+ period_evidence: secondary-dated
545
+ matching: recall-only
546
+ format:
547
+ pattern: "LLL999"
548
+ regex: '\A[A-Z]{3} ?\d{1,3}\z'
549
+ pattern_note: >-
550
+ recall-only because THE AUTHORITY PUBLISHED NO GRAMMAR. Κ.Δ.Π. 66/1984's
551
+ Second Schedule required only that the plate bear «τα παραχωρηθέντα υπό
552
+ του Εφόρου γράμματα και αριθμούς», so there is no instrument fixing
553
+ three letters, three digits, or any letter set for this era. The three-
554
+ letter/three-digit shape is a secondary description of the Registrar's
555
+ practice. The regex tolerates an optional gap and one to three digits
556
+ and makes no claim beyond shape.
557
+ design:
558
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
559
+ foreground: "#000000"
560
+ rear_differs: true
561
+ rear: { background: { color: "#F9B700", finish: retroreflective, hex_basis: observed }, foreground: "#000000" }
562
+ front: { background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }, foreground: "#000000" }
563
+ rear_differs_note: >-
564
+ WHITE FRONT, YELLOW REAR — and this one IS primary, from Κ.Δ.Π. 66/1984
565
+ Δεύτερον Παράρτημα παρ. 3(γ): black characters on a retroreflective
566
+ ground, «εν τη περιπτώσει απάντων των λοιπών οχημάτων, χρώματος λευκού
567
+ εις το πρόσθιον και χρώματος κιτρίνου εις το οπίσθιον μέρος του
568
+ οχήματος» — white at the front and yellow at the rear, for all vehicles
569
+ other than the diplomatic and self-drive-hire classes. Abolished by
570
+ Κ.Δ.Π. 291/2010 Μέρος ΙΙ παρ. 5.1 with effect 3-6-2013. This is the
571
+ clearest single visual discriminator between a pre- and post-2013
572
+ Cypriot vehicle.
573
+ band: { side: none, note: "Cyprus acceded to the EU on 1-5-2004 and CY-band plates were in use before 2013 in practice, but the Cypriot instrument that MAKES the band mandatory is Καν. 6(23) of Κ.Δ.Π. 291/2010, in force 3-6-2013. No earlier Cypriot band instrument was located. So `none` is the sourced position for this series and the practical reality was mixed — recorded, not smoothed" }
574
+ region_encoding: none
575
+ region_encoding_note: "none, on the same sourced negative as the current series — there has never been a district code in Cypriot law"
576
+ sources:
577
+ - "https://www.cylaw.org/KDP/data/1984_1_66.pdf # Κ.Δ.Π. 66/1984 (Ε.Ε. Παρ. III(1) Αρ. 1937, 8-3-1984): Καν. 6(2) (the Registrar grants the marks); Δεύτερον Παράρτημα παρ. 2 (the ENTIRE content specification, gazette page 331); παρ. 3(γ) (white front / yellow rear). THE SOURCED NEGATIVE for this series' format"
578
+ - "https://www.cylaw.org/KDP/data/2010_1_291.pdf # Κ.Δ.Π. 291/2010 Καν. 3 repeals that Second Schedule and Καν. 4(δ) keeps it alive for unreplated vehicles indefinitely — this series' END, and the reason the end is soft"
579
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Cyprus # secondary-wikipedia: the 1990 start of the three-letter form and the ABC123 shape. Revision 1344966818 of 2026-03-23T15:33:51Z. NO primary exists for this boundary — see notes"
580
+ notes: >-
581
+ THE THREE-LETTER PRE-EU-BAND SERIES. `period_evidence: secondary-dated`
582
+ and `matching: recall-only` are both consequences of one finding: UNTIL
583
+ 3-6-2013 NO CYPRIOT INSTRUMENT PRESCRIBED THE COMPOSITION OF A
584
+ REGISTRATION MARK AT ALL. The 1990 boundary is a secondary date with no
585
+ gazette reference; all 67 CyLaw Κ.Δ.Π. year indexes 1960-2026 were swept
586
+ and nothing in 1989-1991 is a series instrument by title. If the change
587
+ was published at all it would have been as a Γνωστοποίηση, and none was
588
+ found — so this is a well-evidenced gap rather than a search shortfall.
589
+ The END is likewise soft in a way that matters: 2013 is when the new
590
+ Schedule commenced, but Καν. 4(δ) leaves these plates lawful with no end
591
+ date, so they remain on the road and this series overlaps the current one
592
+ permanently. A LETTER-PREFIX FACT THAT BELONGS TO THIS ERA: Κ.Δ.Π. 66/1984
593
+ Καν. 6(5) required a «Τ» prefix on public-use vehicles and a «Ζ» prefix on
594
+ self-drive-hire vehicles, wording that goes back to Κ.Δ.Π. 159/1973 Καν.
595
+ 6(3). Both prefixes were DELETED by Κ.Δ.Π. 291/2010 Καν. 2(α), which was
596
+ not among the deferred paragraphs and so took effect on publication,
597
+ 9 JULY 2010 — three years before the new plates. From that date the taxi
598
+ and rental distinctions moved from a letter to a colour. CAVEAT recorded
599
+ by the researcher: the 1973 and 1984 texts of that proviso and the 2010
600
+ deletion were read, but the intervening amendments 1985-2009 were not
601
+ traced, so it is not strictly proven that the Τ/Ζ proviso was still the
602
+ FIRST proviso of Καν. 6(5) in 2010.
603
+
604
+ - id: cy-standard-1956
605
+ class: standard
606
+ categories: [car, van, truck, bus]
607
+ period: { start: 1956, end: 1990 }
608
+ period_evidence: secondary-dated
609
+ matching: recall-only
610
+ format:
611
+ pattern: "LL 999"
612
+ regex: '\A[A-Z]{2} ?\d{1,3}\z'
613
+ pattern_note: >-
614
+ One recall-only series for the whole two-letter era. Secondary sources
615
+ split it at 1973 into an unspaced AB123 form and a spaced AB 123 form;
616
+ that is a TYPOGRAPHIC distinction with no instrument behind it (Κ.Δ.Π.
617
+ 159/1973's Second Schedule is verbatim identical to Κ.Δ.Π. 66/1984's on
618
+ plate content, i.e. it prescribes nothing), so the two are modelled as
619
+ one series with an optional gap rather than as two series divided by an
620
+ unsourced boundary. No letter set, no digit count and no dimensions were
621
+ prescribed in this era.
622
+ design:
623
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
624
+ foreground: "#000000"
625
+ rear_differs: true
626
+ rear: { background: { color: "#F9B700", hex_basis: observed }, foreground: "#000000" }
627
+ rear_differs_note: "white front / yellow rear from at least 1973, per Κ.Δ.Π. 159/1973 and Κ.Δ.Π. 66/1984 Δεύτερον Παράρτημα παρ. 3(γ); the position before 1973 was not sourced"
628
+ band: { side: none }
629
+ region_encoding: none
630
+ sources:
631
+ - "https://www.cylaw.org/KDP/data/1973_1_159.pdf # Κ.Δ.Π. 159/1973 (Ε.Ε. Παρ. III(1) Αρ. 1023, 13-7-1973): Δεύτερον Παράρτημα, gazette pages 646-648 — plate content unprescribed; Καν. 6(3) the Τ/Ζ prefixes"
632
+ - "https://www.cylaw.org/KDP/data/1984_1_66.pdf # Κ.Δ.Π. 66/1984 — same position restated; Δεύτερον Παράρτημα παρ. 3(γ) the front/rear colours"
633
+ - "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Cyprus # secondary-wikipedia: the two-letter era and its approximate boundaries (1956-1973 unspaced, 1973-1990 spaced). Revision 1344966818 of 2026-03-23T15:33:51Z"
634
+ notes: >-
635
+ THE TWO-LETTER ERA. Entirely administrative, like its successor: no
636
+ instrument fixed the mark's composition, so the boundaries are secondary
637
+ and the regex is a shape. 1956 is a secondary start date and predates the
638
+ Republic's independence (1960) and the enabling Law (1972) — the marks
639
+ were carried forward across both, which is itself the reason a
640
+ registration series can outlive the constitutional order that created it
641
+ and why this file dates the SERIES rather than the STATE. The 1990 end
642
+ overlaps cy-standard-1990's start for the ordinary reason that a
643
+ Registrar's change of practice is not a dated event. PRE-1956 CYPRUS IS
644
+ NOT MODELLED — colonial-era registration is L4 historical depth under
645
+ PRD-PLATES §7 and no source was consulted.
646
+
647
+ # =========================================================================
648
+ # DIPLOMATIC — green in law 1973-2013, then silently dropped.
649
+ # =========================================================================
650
+ - id: cy-diplomatic-green-1973
651
+ class: diplomatic
652
+ categories: [car, van, motorcycle]
653
+ period: { start: 1973, end: 2013 }
654
+ period_evidence: instrument-dated-both-ends
655
+ matching: recall-only
656
+ format:
657
+ pattern: "LLL 999"
658
+ regex: '\A[A-Z]{2,3} ?\d{1,3}\z'
659
+ pattern_note: >-
660
+ recall-only, and for the same reason as every pre-2013 Cypriot series:
661
+ the instrument prescribes the COLOUR of the diplomatic plate and nothing
662
+ else. No letter set, no prefix, no digit count. The regex is the union
663
+ of contemporaneous ordinary shapes.
664
+ design:
665
+ background: { color: "#007A33", finish: retroreflective, hex_basis: observed }
666
+ foreground: "#000000"
667
+ band: { side: none }
668
+ region_encoding: none
669
+ sources:
670
+ - "https://www.cylaw.org/KDP/data/1984_1_66.pdf # Κ.Δ.Π. 66/1984 Δεύτερον Παράρτημα παρ. 3(α), gazette page 331: black characters on a retroreflective ground «εν τη περιπτώσει οχημάτων ανηκόντων εις τα μέλη του Διπλωματικού Σώματος ή των Ξένων Αποστολών, χρώματος πρασίνου» — GREEN, for vehicles belonging to members of the Diplomatic Corps or of Foreign Missions. START: identical wording in Κ.Δ.Π. 159/1973 παρ. 3"
671
+ - "https://www.cylaw.org/KDP/data/2010_1_291.pdf # END: Κ.Δ.Π. 291/2010 Καν. 3 repeals that Second Schedule, and the replacement Μέρος ΙΙ παρ. 5.1-5.7 enumerates white, orange, black, yellow and red and contains NO green and no diplomatic class. In force 3-6-2013"
672
+ notes: >-
673
+ THE GREEN DIPLOMATIC PLATE, AND ITS DISAPPEARANCE. Sourced at both ends,
674
+ which is why `period_evidence: instrument-dated-both-ends`: the green
675
+ ground is prescribed identically by the 1973 and 1984 Second Schedules,
676
+ and the 2010 replacement Schedule — which commenced 3-6-2013 — enumerates
677
+ the colour classes exhaustively and simply does not include it. The
678
+ diplomatic colour class was not amended or replaced; it was DROPPED. WHAT
679
+ REPLACED IT IS NOT SOURCED: secondary sources describe a current
680
+ diplomatic format of a two-digit country code plus CD, CC or AT plus up to
681
+ three digits on a white EU-band plate, and no instrument establishing that
682
+ was found — the whole colour paragraph was read, so this is a real gap and
683
+ not an incomplete search. That current diplomatic series is therefore NOT
684
+ AUTHORED here rather than authored from secondary description alone.
685
+ Note in passing that CD/CC/AT use C and D, which are outside the twelve
686
+ permitted ordinary letters — consistent with diplomatic marks sitting
687
+ outside the Μέρος Ι alphabet entirely, but that is an inference, not a
688
+ citation.