yuiseki/abr-src-2026-09
abr-src-2026-09 A frozen cut of Japan's Address Base Registry: every prefecture, municipality and 町字 in the country, with their readings, their romanisation and a representative point, as the Digital Agency published them. CC BY 4.0. That is the point of this dataset as much as the data is. The other Japanese geographic corpora in this series are OpenStreetMap and therefore ODbL, whose share-alike reaches anything built from them. This one does not: attribute it and you are… See the full description on the dataset page: https://huggingface.co/datasets/yuiseki/abr-src-2026-09.
abr-src-2026-09
A frozen cut of Japan's Address Base Registry: every prefecture, municipality and 町字 in the country, with their readings, their romanisation and a representative point, as the Digital Agency published them.
CC BY 4.0. That is the point of this dataset as much as the data is. The other Japanese geographic corpora in this series are OpenStreetMap and therefore ODbL, whose share-alike reaches anything built from them. This one does not: attribute it and you are done.
What is here
The hierarchy is stated, not computed. A row of town carries its prefecture, its county where there is one, its municipality, its ward where there is one, its 大字・町, its 丁目 and its 小字, each in kanji, kana and Latin script. No geometry is needed to know that 松山市 is in 愛媛県, and no geometry is given for it.
93,697 rows carry a postal code.
The thing to know before joining anything
The files are not the same vintage. The registry updates them separately and this dataset freezes what each one was on 2026-09-26:
Eleven months separate the names of the 町字 from their coordinates. So the two overlap rather than nest:
- 196,161 towns have a coordinate
- 128,310 coordinates belong to a town the newer file no longer carries
And coordinates sit at 大字 and 丁目 rather than at every row:
小字 is both the rung the publisher does not locate and the largest rung, so a reader who assumed one coordinate per row would find two thirds of the registry missing from a map and conclude the data was broken. It is not; it was never a map.
scripts/02_verify.py pins all four of those numbers, so the gap cannot widen in a later snapshot without the check failing.
Codes are text
lg_code 011011 is a code, not the number 11,011. machiaza_id 0000101 is not 101. Every column in the Parquet is a string for that reason. A type inferrer let near these files drops the leading zeros and the joins quietly stop matching on about a tenth of the rows.
from datasets import load_dataset
town = load_dataset("yuiseki/abr-src-2026-09", "town", split="train")
city = load_dataset("yuiseki/abr-src-2026-09", "city", split="train")-- DuckDB, straight off the Parquet
SELECT pref, city, count(*) AS towns
FROM read_parquet('parquet/mt_town_all.parquet')
WHERE ablt_date = ''
GROUP BY 1, 2 ORDER BY towns DESC LIMIT 5;What it is good for, and what it is not
It answers which prefecture a municipality is in, and which municipality a 町字 is in, authoritatively and for the whole country. OpenStreetMap answers the same question for the places somebody mapped, and disagrees at the edges.
It carries readings. 柏 is カシワ and Kashiwa, in the file, for every rung. That is a different kind of knowledge from geography and a harder one for a small model.
It does not carry boundaries. There is a representative point and nothing else, so adjacency, containment by geometry and area are not available here and have to come from somewhere else. The polygon columns exist in the position files and are empty in every row.
It stops at the 町字. Building-level and parcel-level addresses are published separately, and the parcel data carries the Ministry of Justice's own terms, which are not CC BY and are revocable at the Ministry's discretion. Nothing from there is in this dataset.
Reproducing it
git clone https://github.com/yuiseki/abr-src-2026-09
cd abr-src-2026-09
./scripts/01_download.sh # 53 files, 27 MB, md5 and Last-Modified recorded
python3 scripts/02_verify.py
python3 scripts/03_export_parquet.pycsv/MANIFEST.md5 holds the md5 and the Last-Modified header of every archive as it was fetched, so a later run can say exactly which files the publisher has replaced rather than guessing from row counts.
The archives under csv/ are the publisher's own, byte for byte. The Parquet is a conversion and says so, both here and in LICENSE.
Licence
CC BY 4.0.
出典:「アドレス・ベース・レジストリ」(デジタル庁) https://www.digital.go.jp/policies/baseregistryaddress (2026年9月26日に利用)
The publisher applies PDL1.0, 公共データ利用規約(第1.0版), whose clause 1.7(3) states that it is compatible with CC BY 4.0 and permits use of the content in accordance with CC BY. The label above is that permission.
PDL1.0 asks that a modification be declared apart from the attribution. Two were made and neither touches a value: the CSV became Parquet, and the 47 prefecture files of town positions became one table. LICENSE beside this file states it in Japanese, as the terms ask.
