Skip to content

JSON Schema ​

data/ içindeki her dosyanın schema/ içinde bir JSON Schema (draft-07) şeması vardır. Şemalar TypeScript tiplerinden üretilir; böylece tipler, şemalar ve veriler birbirinden kopamaz: üçünden biri diğerleriyle uyuşmadığında CI başarısız olur.

Veri dosyasıŞema
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

Her şemanın $id değeri, bu sitedeki URL'sidir; ör. https://pieterjanscheir.github.io/belgica/schema/courts.schema.json. Şemalar npm paketinde de belgica/schema/courts.schema.json olarak bulunur.

Verileri doğrulama ​

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

# schema/ içeren bir release tag'e sabitleyin; ilki çıkana kadar main kullanın
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

Buna çoğunlukla verilerin bir kopyasını tuttuğunuzda (ek kayıtlar içeren bir fork, önbelleğe alınmış bir indirme) ve kopyanın hâlâ paketin beklediği yapıda olup olmadığını bilmek istediğinizde ihtiyaç duyarsınız.

Başka diller için tip üretme ​

Şemalar standart olduğu için modelleri elle yazmak yerine üretebilirsiniz: Python (Pydantic) için datamodel-code-generator; C#, Go, Java, Kotlin, Swift ve daha fazlası için quicktype.

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

datapackage.json ​

Repository'nin kökünde bir datapackage.json bulunur: açık veri kümeleri için standart metadata dosyası olan bir Frictionless Data Package tanımlayıcısı. Her veri dosyasını başlığı, açıklaması, şeması, resmî kaynakları, lisansı ve bize ait iki alanla birlikte listeler:

  • lastReviewed: veri kümesinin kaynaklarıyla en son karşılaştırıldığı gün;
  • reviewEveryMonths: ne sıklıkla yeniden kontrol edilmesi gerektiği. Bir veri kümesinin süresi geçtiğinde güncellik kontrolü bir issue açar.

Kod MIT lisansıyla, veriler CC BY 4.0 lisansıyla. Referans verileridir, hukuki tavsiye değildir: resmî kaynakları kontrol edin.