Go to the first, previous, next, last section, table of contents.


SDIC 形式

SDIC形式は、grep などの行指向の検索プログラムを使って前方一致検索及び後 方一致検索、完全一致検索、全文検索が容易に行なえる構造になっている。

BNF

file     := line*
line     := comment | entry
comment  := '#' [^\n]* '\n'
entry    := headword keyword* content '\n'
headword := '<H>' word '</H>' | keyword
keyword  := '<K>' word '</K>'
word     := char+
char     := [^<>&\n] | '&lt;' | '&gt;' | '&amp;'
content  := string
string   := char_lf+
char_lf  := char | '&lf;'

注釈

  1. entry は辞書の1つの要素に対応する構文要素である。
  2. headword は見出し語を保持する構文要素である。通常、検索結果を表示す るときの表題として用いられる。
  3. content は説明文を保持する構文要素である。
  4. keyword は検索用の文字列を保持する構文要素である。従って、見出し語 headword に以下の正規化を施した文字列を代入する。 見出し語に漢字が含まれている場合は、その読み仮名を keyword として追 加することが望ましい。
  5. headword を表現するためのタグとして `<H>' を用いる必要が生じる のは、多くの場合、見出し語に余分な要素が含まれている場合に限られる。例え ば、次のようなエントリが考えられる。
    <H>go {動-1}</H><K>go</K>行く
    
    この例では、見出し語にその語の品詞情報が含まれている。このような品詞情報 は、辞書の検索キーとして適当ではないので、検索時には対象としないようにし ておくのが適当だろう。 また、`<H>'`<K>' を適当に選択することによって、辞書の検索 速度を低下させないようにすることができる。
    <K>United Nations</K><K>united nations</K>国際連合
    
    というエントリがあったとする。この時、前方一致検索を行なうために `<K>united' をキーとして検索することを考える。行頭の文字列 `<K>United 〜' と検索キーは3文字目まで比較されるだろう。もしもあな たが、この辞書を検索する場合、つねにアルファベットの大文字と小文字の違い を無視して検索したいと考えているならば、この比較は無駄な比較である。 `<H>' を用いていれば、このような無駄な比較を避けることができる。し かし、この選択は、その辞書を検索するアプリケーションと検索を行なうプログ ラムの性質に依存する問題である。
  6. タグは大文字小文字を区別する。アルファベットの大文字と小文字を区別しない 検索( case-ignore search )が実装されていない検索プログラムを利用する可能 性があるため。
  7. 元々の辞書中に現れるメタキャラクタ <>& はそれぞれ `&lt;' `&gt;' `&amp;' に置換する。従って、string には <> は現れな い。辞書の説明文に含まれている改行コードは `&lf;' に置換する。
  8. comment は辞書についての説明などの各種のコメントを保持する構文要素で ある。
  9. SDIC形式は、SGMLとしての簡潔さや一貫性よりも、アプリケーション側からのア クセスの容易さを重要視する。従って、行頭の1文字のみによって line に 代入され得る複数の構文要素を識別できるように拡張される。
  10. SDIC形式の辞書ファイルの標準拡張子を `.sdic' とする。

検索例

前方一致検索        grep <K>study dictionary
後方一致検索        grep study</K> dictionary
完全一致検索        grep <K>study</K> dictionary


Go to the first, previous, next, last section, table of contents.