API:Query/ja

action=querymoduleによって、すべての種類のデータを取り出すことができるようになります. このモジュールは大まかには現在廃止されているQuery APIを基づいて開発されました. action=queryも使われます. 編集などに必要なトークンを取り出すために使われます.

queryモジュールは多くのサブモジュールを持ち(query modulesと呼ばれる)、それぞれのサブモジュールは異なる機能を持ちます、queryモジュールは自由に結びつけることができます. queryモジュールには3つのタイプがあります:
 * wikiとログインユーザに関するメタ情報
 * ある基準を満たすページの一覧
 * ページのプロパティ

queryモジュールとは別に、action=queryは独自の機能をいくつか持ちます.

タイトルを指定する
次の方法でタイトルを指定できます:
 * パラメータを使う、例えば
 * パラメータを使う、例えば
 * パラメータを使う、例えば
 * 大抵のqueryモジュールはリビジョンIDが所属するページを使います. prop=revisionsのみが実際にリビジョンIDそれ自身を使います
 * ジェネレータを使う

タイトルの正規化
タイトルの正規化はページタイトルを正統的な形式に変換します. 最初の文字は大文字に変換され、アンダースコアはスペースに置き換えられるなどのことが行われることを意味します. どのqueryモジュールが使われているかに関わらず、タイトルの正規化は自動的に行われます.

見つからないもしくは無効なタイトル
存在しないもしくは無効なタイトルが セクションに表示されますが、but それらは もしくは 属性のセットを持ちます. (JSONやPHPのシリアライズ化などの)数値の配列キーをサポートする出力フォーマットにおいて、見つからないタイトルと無効なタイトルはユニークで、負のページIDを持ちます. query modulesは見つからないもしくは無効なタイトルで何か便利なことはできないのでそれらのタイトルを無視します.

リダイレクトを解決する
リダイレクトは自動的に解決されるので、リダイレクトのターゲットが任意のタイトルの代わりに返されます. 下記の例は本当に役立ちません. それはquery modulesを使わないからですが、 パラメータの動作方法を示します. 標準化とリダイレクトの両方が起こることがあります. 二重のリダイレクトの場合、すべてのリダイレクトは解決され、循環リダイレクトの場合、'pages'セクションにページが存在しないことがあります(下記も参照).

循環リダイレクト
Page1 &rarr; Page2 &rarr; Page3 &rarr; Page1 (循環リダイレクト)を想定します. また、この例では非標準的な名前である'page1'が使われます.

制限
サーバの加重負荷を防止するために、それぞれのクエリは処理できるアイテムの個数を制限します. 匿名ユーザーとログインユーザーには1つの制限がある一方で、botとsysopはコミュニティに信用されているのでかない高い制限があります. 現在、それぞれのクエリは可能な最大のリクエストサイズの一覧表示します. 大抵のquery modulesのために、これは匿名ユーザーと正規のユーザーに対してこれは500、botとsysopに対しては5000になります.
 * 欠点: 現在すべての制限は追加式なので、ユーザーがallpagesとbacklinksをリクエストする場合、ユーザーはそれぞれの500を取得します. これはあまりよくありません、アイテムが1つのリクエストにcompoundされるほど、サーバ上のロードは重くなります. 代わりに、ある種の重み付きの(weighted)メカニズムが開発され、それぞれのリクエストアイテムはそれに関連したある"cost"を持ち、それぞれのユーザーはリクエストごとに修正された許可量(allowance)が割り当てられます. ユーザーがより多くの情報をリクエストするほど、そのリクエストに対する制限はより小さくなります. 残念ながら、それによってクエリを実行するために最大制限を算出するのがとても難しくなるので、実現可能な解決方法ではないのかもしれません.

クエリを継続する
一つのリクエストで頻繁にすべてのデータを取得しません. 1つのリクエストを継続するために、任意の の値を使用できます.

次の10のカテゴリを取得するために を使うことができます.

ジェネレータ
ジェネレータによって、 パラメータの代わりにリストの出力を使うことができます. リストの出力はページのリストでなければなりません. , もしくは パラメータの代わりに、そのタイトルが自動的に使われます. 多のquery modulesは パラメータを通してあたかもユーザーによって提供されたものとしてそれらのページを取り扱います. 1つのジェネレータのみが許可されます. ページのリストを表示しないlist modulesはジェネレータとして使うことはできません. prop modulesの中にはジェネレータとして使うことができるものもあります.

ジェネレータに渡されたパラメータは接頭辞が'g'でなければなりません. 例えば、generator=backlinksを使うとき、 の代わりに を使って下さい.

ジェネレータはページタイトルを'real'クエリに渡すだけで、それら自身の情報を出力できないことに注意してください. のようなパラメータを設定しても効果はありません.

ジェネレータとリダイレクト
ここでは、prop=linksをジェネレータとして使います. このクエリはTitleからリンクされたすべてのページからのすべてのリンクを取得します. この例では、TitleはTitleAとTitleBへのリンクを持つことを仮定します. TitleBはTitleCへのリダイレクトです. TitleAはTitleA1、TitleA2、TitleA3にリンクします; そしてTitleCはTitleC1とTitleC2にリンクします. パラメータが設定されているので、リダイレクトは解決されます.

クエリは次のステップを実行します:
 * 1)  パラメータでタイトルに対するリダイレクトを解決する
 * 2)  パラメータのすべてのタイトルに対して、それらがリンクするページのリストを取得する
 * 3) そのリストでリダイレクトを解決する
 * 4) タイトルのそのリスト上でprop=linksクエリを実行する

ジェネレータのより詳しい例

 * "T"の文字で始まる4ページに関する情報を表示する
 * http://en.wikipedia.org/w/api.php?action=query&generator=allpages&gaplimit=4&gapfrom=T&prop=info


 * "Re"で始まる最初の2つの非リダイレクトのページの内容を表示する
 * http://en.wikipedia.org/w/api.php?action=query&generator=allpages&gaplimit=2&gapfilterredir=nonredirects&gapfrom=Re&prop=revisions&rvprop=content