目次

概要

現在Wikipedia APIは公開しておりません。

"Wikipedia API beta"は,WikipediaシソーラスWikipediaオントロジなどのプロジェクトで提供しているデータにアクセスするためのXML Webサービスを提供します.WSDLは以下のURLからアクセスできます.現在,日本語と英語に対応しています.

http://dev.sigwp.org/WikipediaOntologyAPIv4/Service.asmx?WSDL

このWSDLにWebサービスへのアクセス方法が記述されているため,自分のクライアントプログラム(デスクトップアプリケーション,Webアプリケーションともに)で利用することができます.

Visual Studio .net (C#)での利用

まずはじめに,メインメニューから「プロジェクト」→「Web参照の追加」をクリックします.

Image:Getting_vs1.png

次に,以下のURLをテキストボックスに入力し,「参照の追加」ボタンをクリックします.

http://dev.sigwp.org/WikipediaOntologyAPIv4/Service.asmx?WSDL

Image:Getting_vs2.png

これで準備は終了です.Wikipediaシソーラスを検索し,語彙「Microsoft」に関係する語のリストを抽出する簡単なコード例は以下のとおりになります.

org.wikipedia_lab.Service service = new org.wikipedia_lab.Service();
uint iID = service.GetTopCandidateIDFromKeyword("Microsoft", "English");
DataSet ds = service.GetThesaurusDS(0, iID, 0, "English");
MessageBox.Show(ds.GetXml());

日本語のシソーラスからデータを獲得するには,「English」の部分を「Japanese」に変更します.また,データはDataSetとして返されるため,「GridView」や「DataList」といったコントロールに簡単にバインドして利用することができます.例えば,以下のとおりです.

DataList1.DataSource = ds;
DataList1.DataBind();

Javaでの利用

まず,Apache Axis2からApache Axis2/Javaをダウンロードします.ダウンロードしたファイルを解凍すると,binフォルダ下に複数のスクリプトが提供されており,この中のwsdl2java.shかwsdl2java.batを使うことで,WSDLからJavaのソースコードを生成することができます.

Image:Apache-axis2-folder.png

使い方は,コマンドライン中のbinフォルダにおいて,以下のコマンドを使用することで,Javaのソースコードを含むフォルダsrcとビルドファイルbuild.xmlが生成することができます.

wsdl2java.bat -uri http://dev.wikipedia-lab.org/WikipediaOntologyAPIv3/OpenService.asmx?wsdl 
-p org.wikipedia.lab

-pオプションは生成したJavaのパッケージ指定であり,詳細はこちらをご覧ください.以下,生成されたソースはorg.wikipedia.lab以下に生成されているものとして話を進めます.Apache Antを用いることで生成したビルドファイルbuild.xmlからjarファイルを作成することができ,この作成したjarファイルと解凍したApache Axis2のlibフォルダ内のjarファイルのパスを通すことで,生成したクラスを使用することが可能になります.以下,生成したクラスからWikipedia APIを使用するソースコード例です.

import org.wikipedia.lab.*;
import org.wikipedia.lab.OpenServiceStub.*;

import java.rmi.RemoteException;

public class OpenServiceTest {
     /**
       * Microsoftを含む概念に対して,Wikipedia Thesaurusから得られた
       * 関連語とその関連度を表示する。
       */
    public static void main(String[] args) throws RemoteException {
        OpenServiceStub oss = new OpenServiceStub();

        // GetCandidatesFromKeywordサービスの引数
        GetCandidatesFromKeyword keyword = new GetCandidatesFromKeyword();
        keyword.setKeyword("Microsoft");
        keyword.setLanguage("English");

        // GetCandidatesFromKeywordサービスの実行
        GetCandidatesFromKeywordResponse keywordResponse = oss.GetCandidatesFromKeyword(keyword);
        // GetCandidatesFromKeywordサービスの返り値からArrayOfWikipediaArticleを取得
        ArrayOfWikipediaArticle wArticles = keywordResponse.getGetCandidatesFromKeywordResult();

        for (WikipediaArticle wArticle : wArticles.getWikipediaArticle()) {
            System.out.println("Article Name:" + wArticle.getName());

            // GetThesaurusサービスの引数
            GetThesaurus getThesaurus = new GetThesaurus();
            getThesaurus.setIType(0);
            getThesaurus.setIFrom(wArticle.getID());
            getThesaurus.setLanguage("English");
            // GetThesaurusサービスの実行
            GetThesaurusResponse thesaurusResponse = oss.GetThesaurus(getThesaurus);

            // GetThesaurusサービスから得られた関連語と関連度を出力
            System.out.println("Associated Terms:");
            ArrayOfRelatedArticle rArticles = thesaurusResponse.getGetThesaurusResult();
            for (RelatedArticle rArticle : rArticles.getRelatedArticle()) {
                System.out.println("\t" + rArticle.getName() + "\t" + rArticle.getScore());
            }
        }
    }
}

PHPでの利用

Perlでの利用

案内

ツールボックス

検索