コンテンツにスキップ
サイドバーの切り替え
検索
アカウント作成
個人用ツール
アカウント作成
ログイン
案内
メインページ
最近の更新
おまかせ表示
MediaWikiについてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
OTM-JSONのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴表示
その他
閲覧
ソースを閲覧
履歴表示
←
OTM-JSON
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、以下のグループに属する利用者のみが実行できます:
登録利用者
。
ページの編集を始める前にメールアドレスの確認をする必要があります。
個人設定
でメールアドレスを設定し、確認を行ってください。
このページのソースの閲覧やコピーができます。
OTM-JSON(OneToMany-JSON)は、スライム氏などによって考え出された人工言語辞書のデータ形式。 標準的な OTM-JSON はトップレベルに <code>words</code> 属性をもち、これは単語 1 つに相当するオブジェクト(<code>word</code>)の配列である。<code>word</code> オブジェクトは次の属性をもつ: * <code>entry</code> : <code>id</code>(項目 ID)と <code>form</code>(見出し語)の属性をもつオブジェクト。 * <code>translations</code> : <code>title</code>(品詞)と <code>forms</code>(訳語の配列)の属性をもつオブジェクトの配列。 * <code>tags</code> : タグの配列。 * <code>contents</code> : <code>title</code>(記述タイトル(注釈や語法など))と <code>text</code>(記述内容)の属性をもつオブジェクトの配列。OTM-JSON では自由記述はここに書かれる。 * <code>variations</code> : <code>title</code>(変化形名(過去形、未来形など))と <code>form</code>(語形)の属性をもつオブジェクトの配列。 * <code>relations</code> : <code>title</code>(関係性(同義語、対義語など))と <code>entry</code>(語項目)の属性をもつオブジェクトの配列。 よって、OTM-JSON には、単語オブジェクト、見出し語オブジェクト、翻訳オブジェクト、記述オブジェクト、語形変化オブジェクト、関連語オブジェクトが登場する。 == 厳密な仕様 == この節では、OTM-JSON 形式の厳密な仕様を述べる。 以下、<code><string></code> は文字列を表し、<code><integer></code> は整数値を表す。 また、<code>[<foo>]</code> は要素が <code><foo></code> からなる配列を表す。 整数値は、アプリケーションの予期せぬ動作を防ぐため、-2147483648 以上 2147483647 未満 (符号付き 4 バイト) が望ましい。 バージョンに関わらずトップレベルには <code>version</code> キーが存在し、この値によってバージョンを区別する。 後方互換性のため、この <code>version</code> キーは存在しなくてもよく、その場合は version 1 であるとする。 === version 1 === <otm> ::= { "words": [<word>], "version": 1 // バージョンは1で固定 (互換性のためこのキーはなくても良い) } <word> ::= { "entry": { "id": <integer>, // 項目ID (<word>全体の中で一意) "form": <string> // 見出し語 }, "translations": [<translation>], "tags": [<string>], // タグの配列 "contents": [<content>], "variations": [<variation>], "relations": [<relation>] } <translation> ::= { "title": <string>, // 品詞タグ "forms": [<string>] // 訳語の配列 } <content> ::= { "title": <string>, "text": <string> } <variation> ::= { "title": <string>, // 変化型の説明 (活用形態など) "form": <string> // 変化形の綴り } <relation> ::= { "title": <string>, // 関連語の説明 "entry": { "id": <integer>, // 項目ID "form": <string> // 見出し語 } } <code><word></code> の <code>entry</code> キーの値の中の <code>id</code> キーの値は、その JSON ファイル内で重複してはならない。 また、<code><relation></code> の <code>entry</code> キーの値は、その JSON ファイル内に存在する <code><word></code> がもつ <code>entry</code> キーのうちちょうど 1 つと全く同じでなければならない。 トップレベルの <code><otm></code> には上に記されたキー以外のキーをもつことが許される。 これは主に、OTM-JSON 形式を扱うソフトウェアが、独自の設定項目を保存するために使われる。 したがって、OTM-JSON 形式の入出力を行うソフトウェアは、読み込んだファイルを編集する際に、そのソフトウェアには必要のない <code>words</code> 以外のキーは変更せずにそのまま出力すべきである。 === version 2 === <otm> ::= { "words": [<word>], "version": 2 } version 2 の仕様は version 1 と全く同じだが、トップレベルに余分なキーをもつことが許されるのに加え、<code><word></code> 内のあらゆるオブジェクトに関しても余分なキーをもつことが許される。 これにより、OTM-JSON 形式を扱うソフトウェアが、単語ごとの設定項目などを保存することができる。 == 拡張 == ZpDIC では、<code><otm></code> に <code>zpdic</code> というキーを追加して、ZpDIC 内で用いるデータを格納している。 <code>zpdic</code> キーの値を <code><zpdic></code> と書くことにすれば、その仕様は以下の通りである (ver 1.3.0)。 <zpdic> ::= { "alphabetOrder" : <string>, // アルファベット順を表す文字列 "plainInformationTitles" : [<string>], // ラベル後に改行しない項目名の配列 "informationTitleOrder" : null | [<string>], // 内容の表示順, 設定しない場合は null "defaultWord" : <word> // 新規作成時のデフォルトデータ } また、おかゆ氏が作成しているロジバン辞書の OTM-JSON 形式には、<code>meta</code> 属性が追加され、翻訳元/先言語の情報が格納されている。 == 名称の由来 == 名称に「OTM」が入っている理由は以下の 2 つである。 * 一つ目は DB を使うことで一対多のデータを扱うのが楽になる。 * 一つの形式で、多種多様な言語の表記ができる <ref>https://twitter.com/slaimsan/status/745087303681355776</ref>。 == 対応ソフトウェア == 2016 年 11 月現在、OTM-JSON 形式に対応した辞書ソフトに [[ZpDIC]] がある。 2020 年 3 月から C# で OTM-JSON 形式を扱うためのライブラリ [https://www.nuget.org/packages/Otamajakushi/ Otamajakushi] がある。 <references /> == 外部リンク == https://togetter.com/li/1363644 == 補稿: CDDLによるスキーマ記述例 == [https://tools.ietf.org/html/rfc8610 RFC8610]に基づく。<syntaxhighlight> otm-json = otm-json-1 / otm-json-2 otm-json-1 = { "words": [ * word-1 ] "version": 1 * tstr => any } word-1 = { "entry": entry-1 "translations": [ * translation-1 ] "tags": [ * tstr ] "contents": [ * content-1 ] "variations": [ * variation-1 ] "relations": [ * relation-1 ] } entry-1 = { "id": int .size 4 "form": tstr } translation-1 = { "title": tstr "forms": [ * tstr ] } content-1 = { "title": tstr "text": tstr } variation-1 = { "title": tstr "form": tstr } relation-1 = { "title": tstr "entry": entry-1 } otm-json-2 = { "words": [ * word-2 ] "version": 2 * tstr => any } word-2 = { "entry": entry-2 "translations": [ * translation-2 ] "tags": [ * tstr ] "contents": [ * content-2 ] "variations": [ * variation-2 ] "relations": [ * relation-2 ] * tstr => any } entry-2 = { "id": int .size 4 "form": tstr * tstr => any } translation-2 = { "title": tstr "forms": [ * tstr ] * tstr => any } content-2 = { "title": tstr "text": tstr * tstr => any } variation-2 = { "title": tstr "form": tstr * tstr => any } relation-2 = { "title": tstr "entry": entry-2 * tstr => any } </syntaxhighlight> [[カテゴリ:辞書フォーマット]]
OTM-JSON
に戻る。