form
フォームは、一連の CGI パラメーター (一連の名前と値のペア) を構造化 (ブール) 照会に変換する方法、およびその逆の変換の方法を指定します。
使用法
(要素の名前とその name 属性を使用して) リポジトリーで保管および取得できます。
説明
構造化照会はツリー構造であり、そのノードは演算子で、リーフは割り当てられたフィールドが含まれている条件です。
メタ検索の実行時に、Watson™ Explorer は CGI パラメーターを入力として取り、(query-meta の meta.input-form 変数で指定されている) 入力フォームを使用して構造化照会に変換します。照会は、関連付けられているフォームを使用して、別のソースに送信されます。可能な場合は、構造化照会から CGI 照会への再変換が実行されます。したがって、フォームは、両方向の変換を実行するために使用できます。
フォームは、HTML のフォームと非常に良く似ていますが、意味 (「このパラメーターはどのフィールドに対応しているのか?」) および構文 (「この照会ボックスで AND、+ などを使用できるか?」) の情報が追加されています。
以下も参照してください。
- オンラインまたは印刷書式での構文の資料
- オンラインまたは印刷書式での照会変換の資料
- オンラインまたは印刷資料でのソースおよびフォームに関するチュートリアル
属性
- async (ブール デフォルト: true) - 非同期処理。 解析タグの場合、次の兄弟の前に要求をエンキューするのか (false)、処理するのか。 他の要素の場合、要素を処理する前に処理する必要がある非同期要求が含まれている場合にのみ、この属性は意味を持ちます。 その際、false の場合、要素の次の兄弟は、現行要素の後にのみ処理されます。true の場合、Watson Explorer は現行要素が処理されるのを待たずに、次の兄弟を処理します。
- elt-id (整数) - 使用法: 内部
- max-elt-id (整数) - 使用法: 内部
- execute-acl (テキスト)
- process (テキスト) - 処理される属性または子、あるいはその両方を決定する XPath。現在、「」、「*」、「@*」、および「*|@*」のみがサポートされます。
- internal (テキスト)
- overrides (テキスト)
- overrides-status (以下のいずれか: identical、merge)
- no-override (以下のみが可能: no-override)
- modified (整数)
- modified-by (テキスト)
- do-not-delete (以下のみが可能: do-not-delete) - 管理インターフェースからのリポジトリー内の要素の削除を許可しません。使用法: 内部
- read-only (以下のみが可能: read-only) - 管理インターフェースからのリポジトリー内の要素の変更を許可しません。使用法: 内部
- products (以下のいずれかのリスト: all、vivisimo、velocity、discovery、clustermed、clustergoogle、life-sciences、japanese、chinese、mobile、ius、admin、admin-full)- 使用法: 内部
- cookie-jar (テキスト) - 使用法: 内部
- timeout (以下のタイプのいずれか: xs:unsignedInt 以下のみが可能: -1) - この要求が強制終了されるまでのミリ秒数。 なお、これは、vivisimo_fetch_uris_finish に渡されたグローバル・タイムアウトと組み合わせて使用されます。
- max-size (以下のタイプのいずれか: xs:unsignedInt 以下のみが可能: -1 デフォルト: -1) - この要求でフェッチできるバイト数を制限します。-1 を指定した場合、制限はありません。
- proxy (xs:string の制限形式) - この要求をフェッチする際に使用するプロキシー (ホスト名:ポート)。
- proxy-user-password (テキスト) - プロキシーで使用する、コロン区切りのユーザー名とパスワード。
- cache-write (ブール デフォルト: false) - 要求が成功した場合にのみ、最終的に後から再使用するために、応答 (ヘッダーと本文) のコピーをキャッシュ・ディレクトリーに保存します。
- cache-read (ブール デフォルト: false) - この要求が既にキャッシュに入れられていて、キャッシュがまだ有効な場合 (cache-write を参照)、キャッシュから応答を読み取ります。
- cache-max-age (整数 デフォルト: -1) - キャッシュが cache-max-age 秒前より後に作成された場合にのみキャッシュをロードします。
- headers (テキスト) -
リモート・サーバーに送信される HTTP ヘッダー・フィールド (cookies、user-agent、など)。
ここで指定されたヘッダーにより、複数値を取ることができない Watson Explorer のデフォルト・ヘッダーが上書きされます。なお、デフォルト Watson Explorer ヘッダーは、以下のようになっています。
HTTP/1.1 User-Agent: curl/7.11.1 (os) libcurl/7.11.1 OpenSSL/0.9.7b zlib/1.1.4 Host: xxx.xxx.xxx.xxx Pragma: no-cache Accept: */* Accept-Encoding: deflate, gzip
- username (NMToken) - 認証で使用するユーザー名。Watson Explorer は、使用可能な場合に適切なプロトコルを使用します。現在、HTTP、Basic、Digest、および NTLM がサポートされます。
- password (テキスト) - 認証で使用するパスワード。
- method (以下のいずれか: GET、POST、HEAD、GET-POST、POST-XML、POST-SOAP デフォルト: GET) - URL をフェッチする際に使用するメソッド (HTTP プロトコル)。
- xml-container (テキスト) - method が POST-XML または POST-SOAP の場合、含まれているタグの名前。
- xml-namespace-url (テキスト) - method が POST-SOAP の場合、要求要素に関連した名前空間。
- content-type (xs:string の制限形式) - リモート・サーバーから返されたコンテンツ・タイプを上書きします (リモート・サーバーが誤ったコンテンツ・タイプを指定している場合に役立ちます)。
- separator (テキスト デフォルト: &) - リモート・サーバーに送信された URL の照会ストリングに含まれている CGI パラメーターを区切るために使用する区切り文字。
- ignore-http-status (以下のみが可能: ignore-http-status) - 返された HTTP 状況に関係なく、出力の解析を強制する場合に、このフラグを使用します。例えば、Watson Explorer は、location および refresh HTTP ヘッダーを確認し、http-equiv="refresh" メタ・タグを確認することで、自動的にリダイレクトに従います。リダイレクト時に、Watson Explorer は、リダイレクト先 URL の解析を実行しません。リダイレクトされたページの何らかの項目を解析する必要がある場合に、このフラグを使用します。
- disable-compression (以下のみが可能: disable-compression) -
デフォルトでは、Watson Explorer は、以下を HTTP ヘッダーに追加することで、圧縮形式のデータをフェッチすることを受け入れます。
Accept-Encoding: deflate, gzip
このフラグにより、問題が発生する場合にそれを無効にすることができます。 - store-headers (以下のみが可能: store-headers) - 解析要素の解析として HTTP ヘッダーを保管します。
- ssl-version (以下のいずれか: Any、TLSv1、SSLv2、SSLv3 デフォルト: Any) - HTTPS 接続で使用する SSL のバージョンを指定します。デフォルトでは、使用可能な最も強いプロトコルが使用されます。
- ssl-cert (NMToken) - HTTPS 接続で使用する SSL 証明書が含まれているファイルの絶対パス。これには、秘密鍵が含まれていても含まれていなくても構いません。
- ssl-cert-type (以下のいずれか: pem、der、p12 デフォルト: pem) - cert 属性によって参照されている証明書のタイプ。
- ssl-key (NMToken) - HTTPS 接続で使用する SSL 秘密鍵が含まれているファイルの絶対パス。
- ssl-key-type (以下のいずれか: pem、eng、der、p12 デフォルト: pem) - ssl-key 属性によって参照されている証明書のタイプ。
- ssl-key-password (NMToken) - 秘密鍵ファイル (または、証明書ファイルに秘密鍵が含まれている場合は、その証明書ファイル) を読み取るために使用するパスワード。
- ssl-verify-peer (以下のみが可能: ssl-verify-peer) - Watson Explorer がピアの証明書の認証性を検証するかどうかを決定します。SSL 接続のネゴシエーション時に、サーバーは、その ID を示す証明書を送信します。Watson Explorer は、証明書が本物かどうか、つまりそのサーバーが証明書で記述されているサーバーであることを信頼できるかを検証します。この信頼は、meta.ssl-ca-cert オプションで指定された認証局 (CA) 証明書をルートとするデジタル署名チェーンに基づきます。
- name (以下のタイプのいずれか: NMToken、xs:string の制限形式: パターン ¥#anonymous¥#¥d+) - フォームの名前。フォームが submit に埋め込まれていない場合にのみ必要です。
- action (テキスト) - HTML のものと似ており、ソースがある URL。 なお、HTML フォームとは異なり、この action 内には CGI パラメーターを追加できます。そうしたパラメーターは、照会変換によって計算されたものに追加されるだけです。使用法: すべての子要素が処理された後に指定する必要があります
- display-action (テキスト) - 指定されている場合、照会変換によって生成された schema.x.element.parse 要素に関連した display-url が、action で指定されているものではなく、このアクションを使用して計算されます。これは、XML と HTML の両方の結果を返すリソースから結果を取得する場合に便利です。XML の結果を解析する一方で、ユーザーに HTML の結果へのリンクを示すことができるためです。
- encoding (xs:string の制限形式 デフォルト: UTF-8) - (URL エスケープする前に) URL 内の CGI パラメーターをエンコードするために使用されるエンコード。HTML フォームを介してソースに照会できる場合、これは、フォームが含まれているページのエンコードです (この属性は、照会変換によって変換された parse 要素に url-encoding 属性として渡されます)。
- output-encoding (xs:string の制限形式) - リモート・サーバーから返されたエンコードが正しくない場合に、そのエンコードを上書きします (この属性は、照会変換によって生成された parse 要素に encoding 属性として渡されます)。
- status (以下のいずれか: trans-failed、trans-succeeded 内部値: resolved) -
- trans-failed: このフォームを使用して、現在の構造化照会を CGI 照会に変換できませんでした。
- trans-succeeded: このフォームを使用して、現在の構造化照会を CGI 照会に変換できました。
- max (xs:unsignedInt) - このフォームから取得できる文書の最大数。
- max-over-request (10 進数 デフォルト: 1) - max フィールドに渡す前に最大値に適用される乗数。
- multimax (xs:unsignedInt) - 複数のソースに同時に照会される場合に max 属性を上書きします。
- transform (NMToken) - 変換の出力 (parse タグのリストが含まれた scope タグ) を変換するために使用されるパーサー (できれば、xsl タイプのもの) を指定します。
- normalized (以下のみが可能: normalized) - 使用法: 内部
子
例
入力例:
<field name="query" record="record"/> <param name="q" value="test"/> <form name="vivisimo"> <input name="q" field="query"/> </form> <query form="vivisimo"/>
出力例:
<param name="q" value="test"/> <meta query=" test "/> <field name="query" record="record"/> <form name="vivisimo"> <input name="q" field="query"/> </form> <query> <operator logic="and"> <term field="query" str="test" position="0"/> </operator> </query>
入力例:
<field name="query" record="record"/>
<field name="title" record="record"/>
<field name="date"/>
<operator name="OR" middle-string="OR" logic="or"/>
<operator name="parenthesis" start-string="(" end-string=")" logic="bracket"/>
<operator name="AND" middle-string="AND" logic="and" precedence="1"/>
<operator name="squot" start-string="'" end-string="'" logic="phrase"/>
<operator name="not" start-string="-" logic="not"/>
<operator name="title" start-string="title:" field="title"/>
<operator name="author" end-string="[au]" field="author"/>
<operator name="date" start-string="[date[" end-string="]]" field="date"/>
<operator name="near" start-string="{" middle-string="," end-string="}" logic="near"/>
<param name="query" value="'r s' 't u OR v"/>
<param name="query" value="-w"/>
<param name="query" value="x-y"/>
<param name="query" value="-title:'z a'"/>
<param name="query" value="b[au] c [au]"/>
<param name="query" value="[date[d]]"/>
<param name="query" value="{e,f} {g , h}"/>
<param name="query" value="-[au] -AND -OR -- "/>
<param name="query" value="-- "/>
<form name="f">
<input name="query" field="query" syntax="OR AND parenthesis wildcard squot not title author date near"/>
</form>
<query form="f"/>
出力例:
<param name="query" value="'r s' 't u OR v"/>
<param name="query" value="-w"/>
<param name="query" value="x-y"/>
<param name="query" value="-title:'z a'"/>
<param name="query" value="b[au] c [au]"/>
<param name="query" value="[date[d]]"/>
<param name="query" value="{e,f} {g , h}"/>
<param name="query" value="-[au] -AND -OR -- "/>
<param name="query" value="-- "/>
<meta query=" r s 't u | v w x-y z a b c e f g h [au] AND OR - - "/>
<field name="query" record="record"/>
<field name="title" record="record"/>
<field name="date"/>
<operator name="OR" middle-string="OR" logic="or"/>
<operator name="parenthesis" start-string="(" end-string=")" logic="bracket"/>
<operator name="AND" middle-string="AND" logic="and" precedence="1"/>
<operator name="squot" start-string="'" end-string="'" logic="phrase"/>
<operator name="not" start-string="-" logic="not"/>
<operator name="title" start-string="title:" field="title"/>
<operator name="author" end-string="[au]" field="author"/>
<operator name="date" start-string="[date[" end-string="]]" field="date"/>
<operator name="near" start-string="{" middle-string="," end-string="}" logic="near"/>
<form name="f">
<input name="query" field="query" syntax="OR AND parenthesis wildcard squot not title author date near"/>
</form>
<query>
<operator logic="and">
<term field="query" str="r s" phrase="phrase" position="0"/>
<term field="query" str="'t" position="1"/>
<operator name="OR" middle-string="OR" logic="or">
<term field="query" str="u" position="2"/>
<term field="query" str="v" position="3"/>
</operator>
<operator name="not" start-string="-" logic="not">
<term field="query" str="w" position="4"/>
</operator>
<term field="query" str="x-y" position="5"/>
<operator name="not" start-string="-" logic="not">
<term field="title" str="z a" phrase="phrase" position="6"/>
</operator>
<term field="author" str="b" position="7" processing="strict"/>
<term field="author" str="c" position="8" processing="strict"/>
<term field="date" str="d" position="9"/>
<operator name="near" start-string="{" middle-string="," end-string="}" logic="near">
<term field="query" str="e" position="10"/>
<term field="query" str="f" position="11"/>
</operator>
<operator name="near" start-string="{" middle-string="," end-string="}" logic="near">
<term field="query" str="g" position="12"/>
<term field="query" str="h" position="13"/>
</operator>
<operator name="not" start-string="-" logic="not">
<term field="query" str="[au]" position="14"/>
</operator>
<operator name="not" start-string="-" logic="not">
<term field="query" str="AND" position="15"/>
</operator>
<operator name="not" start-string="-" logic="not">
<term field="query" str="OR" position="16"/>
</operator>
<operator name="not" start-string="-" logic="not">
<term field="query" str="-" position="17"/>
</operator>
<operator name="not" start-string="-" logic="not">
<term field="query" str="-" position="18"/>
</operator>
</operator>
</query>
入力例:
<operator name="any" logic="or"/> <field name="query" record="record"/> <query> <operator logic="and"> <term str="a" field="query"/> <term str="b" field="query"/> </operator> </query> <submit num="50"> <form action="http://test"> <input name="i" field="query"> <operator middle-string="AND" logic="and"/> <operator logic="or"/> </input> </form> </submit> <submit num="50"> <form action="http://test"> <input name="i" field="query" syntax=""/> </form> </submit> <submit num="30"> <form action="http://test"> <input name="i" field="query"> <operator middle-string="AND" logic="and"/> </input> </form> </submit> <submit num="20"> <form action="http://test"> <input name="i" field="query"> <operator logic="or"/> </input> </form> </submit> <submit num="10"> <form action="http://test"> <input name="i" field="query"> <operator logic="phrase"/> </input> <input name="j" field="query"> <operator logic="phrase"/> </input> </form> </submit>
出力例:
<meta query=" a b "/> <operator name="any" logic="or"/> <field name="query" record="record"/> <query> <operator logic="and"> <term str="a" field="query"/> <term str="b" field="query"/> </operator> </query> <submit num="50" status="translated" last-rank="50" last-page="1"> <form action="http://test" normalized="normalized" status="trans-succeeded"> <input name="i" field="query" logic="or" delimiters=" 	 " position="0" value="a AND b"> <operator middle-string="AND" logic="and"/> </input> <input field="per"/> </form> </submit> <scope max="50" orig-tag="submit"> <parse url="http://test/?i=a_AND_b" per="50" page="0" start="0" parser="#vxml#" ref="0"/> </scope> <submit num="50" status="translated" last-rank="50" last-page="1"> <form action="http://test" normalized="normalized" status="trans-succeeded"> <input name="i" field="query" syntax="" logic="and" delimiters=" 	 " position="0" value="a b"/> <input field="per"/> </form> </submit> <scope max="50" orig-tag="submit"> <parse url="http://test/?i=a_b" per="50" page="0" start="0" parser="#vxml#" ref="1"/> </scope> <submit num="30" status="translated" last-rank="30" last-page="1"> <form action="http://test" normalized="normalized" status="trans-succeeded"> <input name="i" field="query" logic="and" delimiters=" 	 " position="0" value="a b"> <operator middle-string="AND" logic="and"/> </input> <input field="per"/> </form> </submit> <scope max="30" orig-tag="submit"> <parse url="http://test/?i=a_b" per="30" page="0" start="0" parser="#vxml#" ref="2"/> </scope> <submit num="20" status="translation-failed"> <form action="http://test" normalized="normalized" status="trans-failed"> <input name="i" field="query" logic="or" delimiters=" 	 " position="0"/> </form> <contextual-msg name="bad-sub-query"> <msg time="5" date="1170291631" cputime="0" id="QUERY_NO_CONVERT" function="vivisimo_input_xml" fid="0">The query has not been converted because of sub-query <xmlnode> <term str="b" field="query"/> </xmlnode> </msg> <term str="b" field="query"/> </contextual-msg> </submit> <submit num="10" status="translated" last-rank="10" last-page="1"> <form action="http://test" normalized="normalized" status="trans-succeeded"> <input name="i" field="query" delimiters="" logic="and" position="0" value="a"/> <input name="j" field="query" delimiters="" logic="and" position="1" value="b"/> <input field="per"/> </form> </submit> <scope max="10" orig-tag="submit"> <parse url="http://test/?i=a&j=b" per="10" page="0" start="0" parser="#vxml#" ref="3"/> </scope>「or」照会の変換
入力例:
<field name="query" record="record"/> <query> <operator logic="or"> <term str="a" field="query"/> <term str="b" field="query"/> </operator> </query> <submit> <form action="http://test.com"> <input name="i" field="query"> <operator middle-string="OR" logic="or"/> <operator logic="and"/> </input> </form> </submit>
出力例:
<meta query=" a | b "/> <field name="query" record="record"/> <query> <operator logic="or"> <term str="a" field="query"/> <term str="b" field="query"/> </operator> </query> <submit status="translated" num="50" last-rank="50" last-page="1"> <form action="http://test.com" normalized="normalized" status="trans-succeeded"> <input name="i" field="query" logic="and" delimiters=" 	 " position="0" value="a OR b"> <operator middle-string="OR" logic="or"/> </input> <input field="per"/> </form> </submit> <scope max="50" orig-tag="submit"> <parse url="http://test.com/?i=a_OR_b" per="50" page="0" start="0" parser="#vxml#" ref="0"/> </scope>照会構文をサポートしている最初のフォームが submit に使用されます。以下の場合、2 つ目のフォームが使用されます。
入力例:
<query> <operator logic="and"> <term str="vivisimo.com" field="host"/> <term str="vivisimo.com" field="query"/> </operator> </query> <submit> <form action="http://se.com/search?"> <input name="query" field="query"/> </form> <form action="http://se.com/advsearch?"> <input name="query" field="query"/> <input name="host" field="host"/> </form> </submit>
出力例:
<meta query=" vivisimo.com vivisimo.com "/> <query> <operator logic="and"> <term str="vivisimo.com" field="host" processing="strict"/> <term str="vivisimo.com" field="query" processing="strict"/> </operator> </query> <submit status="translated" num="50" last-rank="50" last-page="1"> <form action="http://se.com/search?" normalized="normalized" status="trans-failed"> <input name="query" field="query" logic="and" delimiters=" 	 " position="0"/> </form> <form action="http://se.com/advsearch?" normalized="normalized" status="trans-succeeded"> <input name="query" field="query" logic="and" delimiters=" 	 " position="0" value="vivisimo.com"/> <input name="host" field="host" logic="and" delimiters=" 	 " position="1" value="vivisimo.com"/> <input field="per"/> </form> </submit> <scope max="50" orig-tag="submit"> <parse url="http://se.com/advsearch?query=vivisimo.com&host=vivisimo.com" per="50" page="0" start="0" parser="#vxml#" ref="0"/> </scope>select では、特定のフィールドで単一または複数の条件を渡すことができます。
入力例:
<field name="f"/> <form name="f" action="http://action"> <select name="p" field="f" multiple="multiple" logic="or"> <option value="v1" field-value="fv1"/> <option value="v2" field-value="fv2"/> <option value="v3" field-value="fv3"/> </select> </form> <param name="p" value="v1"/> <param name="p" value="v2"/> <query form="f"/> <submit forms="f"/>
出力例:
<param name="p" value="v1"/> <param name="p" value="v2"/> <meta query=" | "/> <field name="f"/> <form name="f" action="http://action"> <select name="p" field="f" multiple="multiple" logic="or"> <option value="v1" field-value="fv1"/> <option value="v2" field-value="fv2"/> <option value="v3" field-value="fv3"/> </select> </form> <query> <operator logic="and"> <operator logic="or"> <term field="f" str="fv1" position="0"/> <term field="f" str="fv2" position="1"/> </operator> </operator> </query> <submit status="translated" num="50" last-rank="50" last-page="1"> <form name="f" action="http://action" status="trans-succeeded" normalized="normalized"> <select name="p" field="f" multiple="multiple" logic="or"> <option value="v1" field-value="fv1" position="0" selected="selected"/> <option value="v2" field-value="fv2" position="1" selected="selected"/> <option value="v3" field-value="fv3" position="2"/> </select> <input field="per"/> </form> </submit> <scope max="50" orig-tag="submit"> <parse url="http://action/?p=v1&p=v2" per="50" page="0" start="0" parser="#vxml#" ref="0"/> </scope>