100 likes | 236 Views
CQL と非ヨーロッパ書法の検討 (1). 宮澤 彰 国立情報学研究所. term と word. search-clause ::= "(" cql-query ")" | [index-name relation] term term::= string|""string"" string ::= a character string (space / = < > ( ) " must be double quoted) relation ::= base-relation{"/"qualifier}
E N D
CQLと非ヨーロッパ書法の検討(1) 宮澤 彰 国立情報学研究所
termとword search-clause ::= "(" cql-query ")" | [index-name relation] term term::= string|""string"" string ::= a character string (space / = < > ( ) " must be double quoted) relation ::= base-relation{"/"qualifier} base-relation ::= order-relation | "=" | "exact" | "all" | "any" | "scr" MIYAZAWA Akira
termとword • termは、relationがany, all, =(など)の場合、さらにwordに分解される。この分解のためのアルゴリズムは明示されていないが、スペースで区切ることを想定していると思われる。これを実装に依存したアルゴリズムによって分解する、とすることで基本的には問題ない、だろう。 MIYAZAWA Akira
patternとword MIYAZAWA Akira
ただし、Word中に用いることのできるPattern文字 * ? ^については検討が必要である。たとえば"東京特許許可局局長"というtermをwordに分解できたとしても、"東京*局局長"ではwordとして"東京*"をとるのか、"*局"をとるのか、"*"がwordなのか判定できない。 • この問題に対しては、「patternを使う場合はスペースによるword分割を導入しword境界を明示的に与える必要がある」といった付加的規則で対応できる、と考える。 MIYAZAWA Akira
characterベースのproxy演算 • boolean ::= "and"|"or"|"not"|prox • prox::= "prox" [ "/" prox-qualifiers ] • prox-qualifiers ::=[ prox-relation ] "/" [distance] "/" [ unit ] "/" ordering • 例cat prox/word/=/3/ordered hat MIYAZAWA Akira
proxyのunitとqualifierのunit • この場合、catおよびhatは、srw.serverChoice scr cat prox/word/=/3/orderedsrw.serverChoice scr hat と解釈されるが、この場合のscr演算がword単位のものでないとproxyのunitとqualifierのunitと矛盾するが、その点に関する何らかの規約が必要かもしれない。 MIYAZAWA Akira
東アジア言語での要求 • 中国語や日本語の場合、"東京"と"局"が間に4文字以内で現れる、といった条件を指定したい。この場合、"東京"と"局"が同一wordか、wordをまたがっているかは問わない。このような要求は、これらの言語で用いるスクリプトの性質と、word境界が必ずしも明確でないというwriting system上の性質に基づくものである。 MIYAZAWA Akira
patternでの解決 • この要求に答えるためには、patternを利用する方法とproxyを利用する方法が考えられる。patternの場合、ある種の正規表現では可能であるが、CQLのpatternをそこまで拡張することは比較的難しいと考える。 MIYAZAWA Akira
proxyでの解決 • 東京 proxy/character/<=/4/ordered 局という書き方が考えられる。 • ただし"局"がwordでsrw.serverChoice scr 局という条件とすると、unitがcharacterということと矛盾する。 • この矛盾を解決する方法はあるか? MIYAZAWA Akira