Skip to content

JSON Schema ​

data/ にあるすべてのファイルには、schema/ に JSON Schema(draft-07)が あります。スキーマは TypeScript の型から生成されるので、型・スキーマ・データの三つがずれることは ありません。三つのうちどれかが食い違えば CI が失敗します。

データファイルスキーマ
data/judicial-areas.jsonjudicial-areas.schema.json
data/arrondissements.jsonarrondissements.schema.json
data/cantons.jsoncantons.schema.json
data/canton-boundaries.jsoncanton-boundaries.schema.json
data/municipalities.jsonmunicipalities.schema.json
data/regions.jsonregions.schema.json
data/provinces.jsonprovinces.schema.json
data/courts.jsoncourts.schema.json
data/prisons.jsonprisons.schema.json
data/houses-of-justice.jsonhouses-of-justice.schema.json
data/postal-codes.jsonpostal-codes.schema.json
data/interest-rates.jsoninterest-rates.schema.json

各スキーマの $id はこのサイト上の URL です(例: https://pieterjanscheir.github.io/belgica/schema/courts.schema.json)。npm パッケージにも belgica/schema/courts.schema.json として含まれています。

データを検証する ​

python
import json
from urllib.request import urlopen
from jsonschema import validate  # pip install jsonschema

# schema/ を含む release tag に固定する。最初の release が出るまでは main を使う
TAG = "main"
BASE = f"https://raw.githubusercontent.com/pieterjanscheir/belgica/{TAG}"
courts = json.load(urlopen(f"{BASE}/data/courts.json"))
schema = json.load(urlopen(f"{BASE}/schema/courts.schema.json"))
validate(courts, schema)
ts
import { Ajv } from 'ajv'
import addFormats from 'ajv-formats'
import courts from 'belgica/data/courts.json' with { type: 'json' }
import schema from 'belgica/schema/courts.schema.json' with { type: 'json' }

const ajv = new Ajv()
addFormats(ajv)
ajv.validate(schema, courts) // true

これが役に立つのは主に、データのコピーを手元に持っている場合(独自のレコードを追加した fork、 キャッシュしたダウンロードなど)に、それがまだパッケージの想定する構造を保っているかを 確かめたいときです。

他の言語向けに型を生成する ​

スキーマは標準的な形式なので、モデルを手で書く代わりに生成できます。Python(Pydantic)には datamodel-code-generator、C#、Go、Java、 Kotlin、Swift などには quicktype が使えます。

bash
datamodel-codegen --input courts.schema.json --input-file-type jsonschema --output courts.py

datapackage.json ​

リポジトリのルートには datapackage.json があります。これは Frictionless Data Package のディスクリプタで、オープンデータセットの 標準的なメタデータファイルです。各データファイルについて、タイトル、説明、スキーマ、公式の 情報源、ライセンスと、このプロジェクト独自の二つのフィールドを記載しています。

  • lastReviewed:そのデータセットを最後に情報源と照合した日
  • reviewEveryMonths:次に照合しなければならない間隔。データセットの照合期限が過ぎると、 鮮度チェックが issue を作成します。

コードは MIT、データは CC BY 4.0 で提供。リファレンスデータであり、法的助言ではありません。公式の情報源を確認してください。