<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.conlinguistics.jp/OTM-JSON/history?feed=atom</id>
	<title>OTM-JSON - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.conlinguistics.jp/OTM-JSON/history?feed=atom"/>
	<link rel="alternate" type="text/html" href="https://wiki.conlinguistics.jp/OTM-JSON/history"/>
	<updated>2026-04-16T02:39:02Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.conlinguistics.jp/index.php?title=OTM-JSON&amp;diff=110&amp;oldid=prev</id>
		<title>Mikanixonable: https://conlinguistics.fandom.com/ja/wiki/OTM-JSON　より移行</title>
		<link rel="alternate" type="text/html" href="https://wiki.conlinguistics.jp/index.php?title=OTM-JSON&amp;diff=110&amp;oldid=prev"/>
		<updated>2023-12-26T11:47:35Z</updated>

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