ALDC形式

提供:人工言語学Wiki
LDCF形式から転送)

最新仕様 Version :3.x

ALDC (Aliory Language Data Catalog) とは、カルノスアクアによって考案された新しい辞書形式である。ALDC は従来の辞書形式とは異なり一つの単語に一つの項目では表されず複数の項目を組み立てることで単語を作っていく。

また、この形式のテーマは "unify dictionary and encyclopedia" (辞書と百科事典の融合)である。

仕様書の更新

Varsion 内容
1.x
  • 初期リリース。
  • 文法の要素の不備と誤字脱字を修正しました。
  • <Etymology>と<Grammer>、そして<MakedDate>と<ChangedDate>要素を追加しました。
2.x
  • 辞書寄りの構成に変更し以前の仕様のいいとこどりをしました。
  • <Category>を他の要素に追加して<Keywords>要素の追加しました。
  • <Hide>と<Changed>要素を<is>要素に追加して拡張しやすく変更しました。
  • <Grouping> 要素を単語データに追加しました。
3.x
  • 要素の整理をしました。
  • 作成日と変更日の要素を<Edition> 要素に置き換えました。
  • <Group> 要素を独立させ <Entry> 要素内に <Attachment> 要素を設置しました。その代わりに <Category> 要素は廃止されました。
  • 表現データは言語素データに取り込まれました。
  • <Keywords>要素は<Entry>要素に取り込まれました。
  • 語源要素を変更しました。
  • 概念データから関連データを取り出し<Entry>要素に組み込みました。
  • 概念データの <Operation> 要素を切り替え式に変更
  • <Entry>要素の識別番号(Integer)を識別コード(String)に変更しました。
  • ニュアンスの違いを説明する欄を関連要素と言語素要素に追加しました。

仕様に関する質問や提案の受付は Google Form から直々に質問をしたい場合は考案者のカルノスアクアのツイッターアカウント(@CalonAqua) の方で受付している。

特徴

ALDF は従来の辞書形式では難しかったことを容易に行える点がいくつかある。

OTM (従来の辞書形式) ALDC
内容が同じものを個別に付ける必要がある。 概念へのリンクだけで済む。
構造化が曖昧で分かりにくい。 厳密に構造化されているので分かりやすい。
語形単位でのニュアンスの違いが説明しづらい。 語形単位で説明が付けられる。
表現の違うデータを入れにくい。 表現の違うデータが入れられる。
百科事典と辞書で分ける必要がある 辞書と百科事典で分ける必要がない

使用

"Entry" 要素

<Entry>要素はそのデータの基本的なデータが入っている。

  • <ID> 要素に使える文字は「ラテン文字」と「数字」、「記号」を入れられる。
  • <Flags>データは拡張しやすいようになっていて、以下のような状態を任意で作る事ができる。
Name 用途 Mode
Hide 洗礼されていないなどの理由で非表示にする必要の圧ものに付ける。 表示されない
Changed 更新されたものに付ける 更新されたデータ
Favorite 消したくないものに付ける。 お気に入りデータ
Remove 古いなどの理由で消す必要があるものに付ける。 将来的に消されるデータ
Memory 学習済みであるものに付ける。 学習済みデータ

仕様

最低でも Key と Value が指定できるものが好ましい。その為、保存形式は XML や JSON、YAML など何でもよい。ただし、その性質上 CSV で記載するのは難しい。

仕様を説明する前に書式の説明をする。要素は以下の形で構成されている。

<[S|M]>:<Name> = <Type> / { <Elements> }

"S"と"M"は前者は「単体のデータ」を後者は「配列のデータ」を指している。"Name"には要素の名前が入る。以下で構成されている。"Elements" はいくつかの要素の集合体である。また共通要素集合は以下のように表される。

<<Name>> = { <Elements> }

"Type" には型の名前が入る。型の種類は以下の様になっている。

型名 内容
<String> 文字列
<int> 符号付き 4-Byte 整数値
<boolean> 真偽値
<Date> 日付 (UTF)
<foo> foo という名の要素集合

日付データは以下の形式で表される。

yyyy/MM/dd hh:mm:ss

そして、内容は

記号 表す物
yyyy
MM
dd
hh
mm
ss

である。

※ 注意 ※

  • Catalog データの外側にはソフト側で使う設定データなどを入れてよい。
  1. 以降の文字列は全てコメントである。
# エントリーデータの内容
 <Entry> = {
 	# 識別コード
 	S:ID = <String>
 	# 版情報
 	S:Editon = <int>
 	# キーワード
 	M:Keywords = <String>
 	# エントリーの種類
 	S:Type = <String>
 	# 所属グループ
 	M:Attachment = {
 		# 所属グループの識別番号
 		S:GroupCode = <String>
 		# 所属グループのトップであるか
 		S:isOwner = <boolean>
 	}
 	# 関連データ
 	M:Connection = {
 		# 関連の分類データ
 		S:Category = <String>
 		# 同種のエントリーの識別番号
 		M:EntryCode = <String>
 		# 関連とのニュアンスの違いの説明欄
 		S:Summary = <String>
 	}
 	# フラグデータ
 	M:Flags = {
 		# フラグ名(例えば "Hide" や "Changed" など)
 		S:Name = <String>
 		# フラグの状態 ("True" ならばその状態である事を表す。)
 		S:Mode = <boolean>
 	}
 }
 
 # 訳文や原文データの内容
 <Translation> = {
 	# 原文データ
 	S:Text = <String>
 	# 訳文データ
 	M:Translation = {
 		# 言語名
 		S:Language = <String>
 		# 訳文や用法の形式データ
 		S:Text = <String>
 	}
 }
 
 # カタログ(トップ)
 S:Catalog = {
 	# グループデータ
 	M:Groups = {
 		# グループのエントリー
 		S:Entry = <Entry>
 		# グループ名
 		S:Name = <String>
 		# 概要
 		S:Summary = <String>
 	}
 	# 単語データ
 	M:Words = {
 		# 単語のエントリー
 		S:Entry = <Entry>
 		# 国語辞典的説明のデータ
 		S:Description = <String>
 		# 学習レベルのデータ
 		S:LearningLevel = <int>
 		# 訳語データ
 		M:Translations = {
 			# 言語名のデータ
 			S:Language = <String>
 			# 訳語のデータ
 			M:Texts = <String>
 		}
 		# 語源データ
 		M:Etymology = {
 			# 語源のカテゴリー(現実世界の話か、創作世界の話かなど)
 			S:Category = <String>
 			# 語源のデータ
 			M:Content =  {
 				# 時期データ
 				S:Age = <String>
 				# 概要データ
 				S:Summary = <String>
 			}
 		}
 		# 言語素データ
 		M:Langemes = {
 			# 概念データ
 			M:ConceptCode = <String>
 			# 語形毎のニュアンスの違いを説明する欄
 			S:Summary = <String>
 			# 表現データ
 			M:Forms = {
 				# 実現形データ
 				S:Format = <String>
 				# 内容データ
 				S:Content = <String>
 			}
 			# 用法データ
 			M:Grammers = {
 				# 文法の訳語データ [exp:"{A} eat {B}"/"{A}が{B}を食べる"]
 				M:Translation = <Translation>
 				# 文法内の要素の説明データ
 				M:Items = {
 					# 要素名のデータ [exp:"A"]
 					S:Name = <String>
 					# 要素の型(格)のデータ [exp:"主格"]
 					S:Case = <String>
 					# 要素の簡単な説明データ [exp:"捕食者"]
 					S:Summary = <String>
 				}
 			}
 		}
 	}
 	# 概念データ
 	M:Concepts = {
 		# 概念のエントリー
 		S:Entry = <Entry>
 		# タイトルデータ
 		S:Title = <String>
 		# 説明データ
 		S:Summary = <String>
 		# 概念間の演算
 		M:Operation = {
 			# どんな演算子を使うか(true=Combine, false=Remove)
 			S:Mode = <boolean>
 			# 演算に対応させる概念の識別番号
 			S:ConceptID = <int>
 		}
 	}
 	# 例文データ
 	M:Examples = {
 		# 例文のエントリー
 		S:Entry = <Entry>
 		# 訳文と原文データ
 		S:Translation = <Translation>
 	}
 }