JSON Schemaリファレンス¶
このリファレンスは、配布データを検証する利用者と、データ構造を変更する開発者向けの資料です。 許可される値と条件付き制約も、JSON Schemaごとに説明します。 各フィールドの役割や実際の値を先に理解したい場合は、レンズと関連光学製品のフィールドリファレンスまたはマウントアダプターのフィールドリファレンスを参照してください。
このプロジェクトのJSON Schemaは、JSON Schema Draft 2020-12に準拠しています。
公開URLの名前空間は、レンズと関連光学製品、マウントアダプター、共通定義に分かれています。
JSON Schema一式には一つのスキーマバージョンを使い、配布データのschemaVersionに記録します。
目的からJSON Schemaを選ぶ¶
確認するデータの種類や単位によって、最初に開くページが異なります。
| 確認する対象 | 最初に開くページ |
|---|---|
| レンズFull版またはレンズLight版の配布データ全体 | dataset-fullまたはdataset-light |
| レンズFull版またはレンズLight版に含まれる製品1件 | product-fullまたはproduct-light |
| レンズと関連光学製品の収録製品データ | product-record |
| マウントアダプターFull版の配布データ全体 | dataset-full |
| マウントアダプターFull版に含まれる製品1件 | adapter-full |
| マウントアダプターの収録製品データ | adapter-record |
| 候補製品の調査結果データ | レンズと関連光学製品またはマウントアダプター |
| 配布用JSONに埋め込むIDと表示情報 | reference-data |
フィールド表と制約の読み方¶
各ページのフィールド表では、JSON内の位置を「パス」、許可されるデータ型や固定値を「型・値」、項目の役割を「説明」として示します。
[]は配列を表します。 たとえばproducts[]は、products配列に含まれる各要素を指します。- 「Aまたは
null」は、その項目にAで示した型の値かnullを記録できることを表します。 {}はプロパティを持たない空のオブジェクトを表します。true、false、null、列挙値、JSONのキーはコード表記で示します。
型表では、JSONの型名を次の日本語で表記します。
| 表記 | JSONまたはJSON Schema上の表現 |
|---|---|
| 文字列 | string |
| 数値 | number |
| 整数 | integer |
| オブジェクト | object |
| 真偽値 | boolean |
| 配列 | array |
| 列挙値 | JSON Schemaのenumで許可された値。JSON自体の型ではない |
型名の後ろに付けた[]は、その型の値を要素とする配列を表します。
すべての整数はI-JSONの安全整数範囲で扱い、上限を9007199254740991とします。
負の値を許す項目の下限は-9007199254740991です。
個別の表に、これより狭い範囲が記載されている場合は、その制約が優先されます。
リファレンスの各ページは、JSON Schemaの内容を本文と表で説明した資料です。
正確な型、必須項目、許可される値、条件付き制約はJSON Schemaファイルで確認してください。
リポジトリ内のソースを変更した場合、JSON Schemaだけでは表せない規則はhatch run validateで検証します。
リポジトリ検証の対象には、JSON Schema自体のDraft 2020-12適合性、$idと$ref、ファイル名と配置、IDとレジストリの参照、ファイル間の対応が含まれます。
公開URLとバージョン¶
各JSON Schemaの$idは、スキーマバージョンと名前空間を含む公開URLです。
現在のスキーマバージョンは1.0.0で、URLは次の形式です。
- レンズと関連光学製品:
https://cercidiphyllum.jp/schemas/1.0.0/lenses/<schema-file> - マウントアダプター:
https://cercidiphyllum.jp/schemas/1.0.0/adapters/<schema-file> - 共通定義:
https://cercidiphyllum.jp/schemas/1.0.0/shared/<schema-file>
公開したバージョン付きURLとJSON Schemaの内容は変更しません。
データ構造や制約を変更する場合はschemaVersionを更新し、旧バージョンも引き続き公開します。
配布データを利用する側でのバージョン確認は、配布データを使うで説明しています。
共通¶
共通のJSON Schemaは、両方のデータセットで使う基本定義と、配布用JSONに埋め込む参照情報を検証します。
| JSON Schema | 検証する対象 |
|---|---|
| shared-definitions | ID、数値、測定条件など、複数のJSON Schemaから参照する定義 |
| reference-data | 配布用JSONのルートに埋め込む、参照IDと表示情報の対応表 |
レンズと関連光学製品¶
レンズと関連光学製品では、配布データ、収録製品データ、調査結果データを別々のJSON Schemaで検証します。
| JSON Schema | 検証する対象 |
|---|---|
| dataset-full | レンズFull版の配布データ全体 |
| dataset-light | レンズLight版の配布データ全体 |
| product-full | レンズFull版のproducts[]に含まれる製品1件 |
| product-light | レンズLight版のproducts[]に含まれる製品1件 |
| product-record | data/records/lenses/に置く収録製品データ1件 |
| product-components | 複数の製品種別で使う識別情報、発売情報、マウント、外形などの共通ブロック |
| product-type-lens | レンズのlensブロック |
| product-type-teleconverter | テレコンバーターのteleconverterブロック |
| product-type-pinhole | ピンホールのpinholeブロック |
| research-result | research/results/lenses/に置く調査結果データ1件 |
マウントアダプター¶
マウントアダプターはレンズと関連光学製品とは異なるデータ構造を使い、Light版を設けません。
| JSON Schema | 検証する対象 |
|---|---|
| dataset-full | マウントアダプターFull版の配布データ全体 |
| adapter-full | マウントアダプターFull版のadapters[]に含まれる製品1件 |
| adapter-record | data/records/adapters/に置く収録製品データ1件 |
| adapter-components | マウント変換、電子機能、光学要素、外形などの共通ブロック |
| research-result | research/results/adapters/に置く調査結果データ1件 |
JSON Schemaのライセンス¶
schemas/配下のJSON SchemaファイルにはMIT Licenseを適用します。
各ファイルの$commentにあるSPDX-FileCopyrightTextとSPDX-License-Identifier: MITも、JSON Schemaファイルだけを対象とします。
JSON Schemaで検証する調査結果データ、収録製品データ、レジストリ、配布データにはCC BY 4.0を適用します。
関連ページ¶
- データモデル:調査結果データ、収録製品データ、配布データの関係
- 値の読み方:省略、
null、空配列、falseの使い分け - レンズと関連光学製品のフィールドリファレンス:実際の収録製品データを使った項目の説明
- マウントアダプターのフィールドリファレンス:実際の収録製品データを使った項目の説明
- 開発と検証:生成、リポジトリ検証、ドキュメントのビルド手順