ALDC形式
最新仕様 Version :3.x
ALDC (Aliory Language Data Catalog) とは、カルノスアクアによって考案された新しい辞書形式である。ALDC は従来の辞書形式とは異なり一つの単語に一つの項目では表されず複数の項目を組み立てることで単語を作っていく。
また、この形式のテーマは "unify dictionary and encyclopedia" (辞書と百科事典の融合)である。
仕様書の更新
Varsion | 内容 |
---|---|
1.x |
|
2.x |
|
3.x |
|
仕様に関する質問や提案の受付は 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 データの外側にはソフト側で使う設定データなどを入れてよい。
- 以降の文字列は全てコメントである。
# エントリーデータの内容 <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> } }