WHOISによるEDB検索(仕様策定中)

NAME
whois --- lookup information on EDB using whois/tcp interface

SYNOPSIS
whois -h db.db.tokushima-u.ac.jp 'command'

DESCRIPTION
公開用のデータベースは EDBより公開可能&有効&最新の情報のみを取り出したものである.
学内からのアクセスに対しては学内公開用のデータベース(edb_university)を参照し,学外からのアクセスに対しては学外公開用のデータベース(edb_public)を参照する.
db1.db.tokushima-u.ac.jp, db2.db.tokushima-u.ac.jp のいずれのサーバにおいて情報検索を行うかは,各サーバの負荷により決定される.
原則として,オリジナルサーバにおいて登録が行われると公開用のデータベースにも登録された内容が自動的に反映されるが,その時々のサーバの状態に反映に遅延が生じることがある.
command
  • STYLE=style
    • XML…XML(Extensible Markup Language)形式(情報の登録内容そのもの)で出力する.
    • cXML…completed XML(参照部分のテキストを補間した形式)で出力する.
    • CSV…項目をTAB文字(U+0009)で区切って出力する.表計算ソフト等でTAB文字を区切りとし,全て文字列属性で読み込む.(EDBの登録情報中にはTAB文字は含まれない)
    • ITEMIZE…項目を行毎に出力する.
    • STANDARD…標準的な表示形式で出力.
    • CAPTION…見出しで出力.
  • DML=dml
    • XML…XML(Extensible Markup Language)形式で出力する.
    • HTML…HTML(Hyper Text Markup Language)形式で出力する.出力は定型の様式を取り,Webにそのままの形で張り付けることが可能なものを生成する.
    • PLAIN…テキスト形式で出力する.出力は項目毎に分離された形式で生成される.文字修飾(superscript, subscriptなどの指定)はすべて取り去られる.
    • TeX…TeX形式で出力する.style=ITEMIZEと組み合わせることによりLaTeX形式となる.
    • plainTeX…plain TeX形式で出力する.plain TeXにより処理することを前提とした出力を生成する.
    • LaTeX…LaTeX形式で出力する.LaTeXにより処理することを前提とした出力を生成する.STYLEは無視される.
    DMLXMLHTMLTeXPLAIN
    STYLE
    XMLplainTeXXMLの要素記述様式による.ただし,XML中に含まれるテキストは,各DMLで指定されたエンコードに従う.
    CSV×TABで区切って出力.
    STANDARD×「:」や「,」で区切って出力.
    CAPTION×「(」「)」や「[」「]」で区切って出力.
    ITEMIZE×LaTeX要素/行で出力.
  • LANG=lang
    • english…英語(Latin語圏)指向での出力
    • japanese…日本語指向での出力
    指定しない場合には,情報の属性により自動的に調整される. また,情報により英語,日本語が登録されていない場合には,登録されている方を出力する.(英語を指定した場合に置いても,必ず全文が英語とは限らない.)
  • LOOK=look… 検索する情報に対する条件式を記述する.
    基本形は
    	table.{column1="string1" [column2="string2" [...]]}
    である.([ ]は省略可能であることを示す)
    • table…テーブル名(XML名)
    • columnx…カラム名(XML名)
    • stringxcolumnxの登録内容にマッチングする文字列
      指定する文字列は対象となるカラムの型によって異なる.
      文字列
      TEXT登録内容に等しい文字列
      NAME登録内容の(英),(日),(読)のいずれかに等しい文字列
      INTEGER登録内容に等しい数値,もしくは登録内容を含む範囲
      DATE登録内容に等しい月日,もしくは登録内容を含む期間
      INTEGER,DATE等を範囲で検索する場合には
      	column="val1 val2"
      と指定する.val2が省略された場合,完全一致とみなす.
      DATEは西暦年月日(YYYYMMDD; 年4桁, 月2桁, 日2桁)で指定する.桁が足りない場合には0を挿入.
    この形式はEIDの集合に展開される. EDBにおける情報識別子EIDを用いて直接指定する場合には
    	\E{eid}
    のようにeidが情報識別子EIDである事を明記する.
    特別なlook引数
    サーバ外部のホストから,アクティブなPostgreSQLのデータベースを得るためのコマンドとして,以下を用意している.
    LOOK=DBPATH.public
    学外に公開可能な情報のみを蓄積しているデータベースのパスを返す..
    LOOK=DBPATH.university
    学内に公開可能な情報のみを蓄積しているデータベースのパスを返す..
    LOOK=DBPATH
    接続元のIPアドレスによって
    • 学内: LOOK=DBPATH.university
    • 学外: LOOK=DBPATH.public
    と等価なパスを返す.
    戻り値は servername:port:dbname の形式で表現され,データベースパス毎に1行.一般に複数である.
    複数のパスを受け取った場合,利用者はそれらのうちのどれか現在の負荷が少ないデータベースを使用することを想定している.
  • PRINT=print… 表示する項目を指定する.表示する項目を,表示したい順番で,
    	{column1 column2 ...}
    のように指定する. 項目の間には空白(スペース)をいれること.
    PRINTの指定がない場合には,全ての項目が出力される.
  • ORDER=order… 検索結果の排列を指定する. 排列を決める項目を,優先する順に,
    	{column1 column2 ...}
    のように指定する. 項目の間には空白(スペース)をいれること.
    項目名の前に`!'を指定するとその項目について逆順に排列される.
    ORDERの指定がない場合には,デフォルトの排列順になる.
    テキスト属性が項目の場合には辞書排列に準拠し,年月日は時代順,数値は昇順に排列される.
    参照形式についての排列は参照先の情報より取り出した見出しを頼りに排列される. また, 配列で定義されている項目は排列を決める項目として指定できないことがある.
  • SCOPE=scope… 検索結果のスコープを指定する. public, universityが利用できる.
    • public… 学外において公開可能な情報に限定.
    • university… 学内において公開可能な情報に限定.ただし,学外からのアクセスに対しては"university"は無効.

RETURN
検索結果は文字集合Unicode (UTF-8)によりエンコードされた文字列で出力される.
検索結果は,「--- BEGIN-OF-LOOK ---」 と「--- END-OF-LOOK ---」ではさまれた箇所に表示される.
DMLの指定により,
  • PLAIN … 行頭に「!」
  • HTML … 「<!-- コメント -->」
  • TeX … 行頭に「%」
と示される行はコメントである.
処理中に発見されたコマンドの間違いに対する警告や,処理情報などはコメントにより表示される.

EXAMPLE(UNIXシェル/bin/cshでの実行例)
whois -h db.db.tokushima-u.ac.jp 'DML=LaTeX LOOK=\E{10001}'
whois -h db.db.tokushima-u.ac.jp 'DML=LaTeX LOOK=person.{@.surname="徳島" @.givenname="太郎"}'
whois -h db.db.tokushima-u.ac.jp 'DML=LaTeX LOOK=article.{@.author=person.{@.surname="徳島" @.givenname="太郎"} @.kind=articleattribute.{@.name="国際会議"}}'
whois -h db.db.tokushima-u.ac.jp 'DML=LaTeX LOOK=article.{@.organization=organization.{@.name="工学部"}}'
whois -h db.db.tokushima-u.ac.jp 'DML=LaTeX LOOK=person.{@.surname="Tokushima" @.givenname="Taro"}'
whois -h db.db.tokushima-u.ac.jp 'DML=LaTeX LOOK=article.{@.author=person.{@.surname="Tokushima" @.givenname="Taro"} @.kind=articleattribute.{@.name="Proceeding of International Conference"}}'
whois -h db.db.tokushima-u.ac.jp 'DML=LaTeX LOOK=article.{@.organization=organization.{@.name="Faculty of Engineering"}}'
各項目は空白(SPACE, TAB)で区切る事.

APPENDIX
※ STYLE=ITEMIZEを指定した場合の出力について
●ITEMIZEを指定した場合には,項目毎に1行の表示形式をとる.
●空行が情報の区切りを示す.
●DML={HTML|PLAIN|plainTeX}を指定した場合,出力行は
	column:index:language	text
という形式になる. columnは項目の名称,indexはインデックス(1,2,3...),languageはテキストの属性を表し,
  • @…EID(参照形式の場合.データベース上の情報識別子EIDを表示する)
  • E…English
  • J…Japanese
を意味する.
●該当項目が無いことを明示するためにindex=0が出力されることがある.その場合,textは空である.
●DML=LaTeXを指定した場合,出力行は
	\ColDef{table:column}{index}{language}{text}
という形式になる. tableはテーブルの名称であり,その他についてはDML={HTML|PLAIN|plainTeX}の場合と同じである.
●出力順.
	column:index:@	EID
	column:index:E	English-Text
	column:index:J	Japanese-Text
の出力の順序は表示する言語属性によって変化し,日本語が優先される場合には上記の順序となり,英語が優先される場合には,
	column:index:@	EID
	column:index:J	Japanese-Text
	column:index:E	English-Text
の順序となる.(後に出力される方が優先順位が高いとする)