目次 |
概要
"Wikipedia API beta"は,WikipediaシソーラスやWikipediaオントロジなどのプロジェクトで提供しているデータにアクセスするためのXML Webサービスを提供します.WSDLは以下のURLからアクセスできます.現在,日本語と英語に対応しています.
http://dev.wikipedia-lab.org/WikipediaOntologyAPIv3/Service.asmx?WSDL
このWSDLにWebサービスへのアクセス方法が記述されているため,自分のクライアントプログラム(デスクトップアプリケーション,Webアプリケーションともに)で利用することができます.
Visual Studio .net (C#)での利用
まずはじめに,メインメニューから「プロジェクト」→「Web参照の追加」をクリックします.
次に,以下のURLをテキストボックスに入力し,「参照の追加」ボタンをクリックします.
http://dev.wikipedia-lab.org/WikipediaOntologyAPIv3/Service.asmx?WSDL
これで準備は終了です.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のソースコードを生成することができます.
使い方は,コマンドライン中の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());
}
}
}
}




