wikipedia apiを使ってみたい。- Java + axis2
2008/05/01
axis2
java
wikipediaapi
wsdl
動機
Wikipediaシソーラス - Wikipedia-Labがちょっとおもしろいと思ったので、ちょっと実験。
このWikipedia-LabのWikipediaシソーラスは、リンク構造に着目したWikipediaマイニングから開発されているそうです。
Wikipediaシソーラスビジュアライザー - Wikipedia-Labがかっこよかったです。
Javaです。WSDLをaxis2でjavaソースにします。
紹介されているサンプルが.netのものしかなかったのですが(20080502現在)、axis2を使って、wsdlからjavaコードにして、使ってみます。
変換するためにbin/wsdl2javaを使います。
src/org/tempuri/ServiceCallbackHandler.java
src/org/tempuri/ServiceStub.java
が生成されます。
以下、キーワードから、シソーラスを取り出すための簡単なコードです。
まず、GetTopCandidateIDFromKeywordで、番号をidをゲットして、それを使いGetThesaurusDSをゲットするという感じの流れです。
このコードではxmlを単純に標準出力しています。
package org.tempuri;
import java.rmi.RemoteException;
import org.apache.axis2.databinding.ADBException;
import org.apache.axis2.databinding.types.UnsignedInt;
import org.tempuri.ServiceStub.GetThesaurusDS;
import org.tempuri.ServiceStub.GetThesaurusDSResponse;
import org.tempuri.ServiceStub.GetTopCandidateIDFromKeyword;
import org.tempuri.ServiceStub.GetTopCandidateIDFromKeywordResponse;
public class Test {
public static void main(String[] args) throws RemoteException, ADBException {
String[] keywords = { "侍", "apple", "google", "o_o!" };
for (String k : keywords) {
System.out.println(b(a(k)));
}
}
static int a(String skeyword) throws RemoteException {
ServiceStub serviceStub = new ServiceStub();
GetTopCandidateIDFromKeyword keyword = new GetTopCandidateIDFromKeyword();
keyword.setKeyword(skeyword);
keyword.setLanguage("Japanese");
GetTopCandidateIDFromKeywordResponse response = serviceStub
.GetTopCandidateIDFromKeyword(keyword);
return response.getGetTopCandidateIDFromKeywordResult().intValue();
}
static String b(int i) throws RemoteException {
ServiceStub serviceStub = new ServiceStub();
GetThesaurusDS getThesaurusDS = new GetThesaurusDS();
getThesaurusDS.setLanguage("Japanese");
getThesaurusDS.setIFrom(new UnsignedInt(i));
GetThesaurusDSResponse response = serviceStub
.GetThesaurusDS(getThesaurusDS);
return "" + response.localGetThesaurusDSResult.localExtraElement;
}
}
import java.rmi.RemoteException;
import org.apache.axis2.databinding.ADBException;
import org.apache.axis2.databinding.types.UnsignedInt;
import org.tempuri.ServiceStub.GetThesaurusDS;
import org.tempuri.ServiceStub.GetThesaurusDSResponse;
import org.tempuri.ServiceStub.GetTopCandidateIDFromKeyword;
import org.tempuri.ServiceStub.GetTopCandidateIDFromKeywordResponse;
public class Test {
public static void main(String[] args) throws RemoteException, ADBException {
String[] keywords = { "侍", "apple", "google", "o_o!" };
for (String k : keywords) {
System.out.println(b(a(k)));
}
}
static int a(String skeyword) throws RemoteException {
ServiceStub serviceStub = new ServiceStub();
GetTopCandidateIDFromKeyword keyword = new GetTopCandidateIDFromKeyword();
keyword.setKeyword(skeyword);
keyword.setLanguage("Japanese");
GetTopCandidateIDFromKeywordResponse response = serviceStub
.GetTopCandidateIDFromKeyword(keyword);
return response.getGetTopCandidateIDFromKeywordResult().intValue();
}
static String b(int i) throws RemoteException {
ServiceStub serviceStub = new ServiceStub();
GetThesaurusDS getThesaurusDS = new GetThesaurusDS();
getThesaurusDS.setLanguage("Japanese");
getThesaurusDS.setIFrom(new UnsignedInt(i));
GetThesaurusDSResponse response = serviceStub
.GetThesaurusDS(getThesaurusDS);
return "" + response.localGetThesaurusDSResult.localExtraElement;
}
}
:
src/org/tempuri/ServiceCallbackHandler.java
src/org/tempuri/ServiceStub.java
はじめまして、
素晴らしいと思います、ちょっと試していきたいですが、上記のソースが見つからなかった、どこがありますか?
cafew2008@gmail.com
よろしくお願いいたします。
どうもです。
下記にソースコードをおいときました。
http://deiji.jp/tmp/
よろしくです。
初めまして。
試してみたのですが、コード5、6行目の「ADBException」、「UnsignedInt」がどこにあるのか分かりません。
ご教示いただけないでしょうか。
cancer.deathmask0624@gmail.com
Lulli さん
どうもです。
なにぶん昔の記事なので、記憶と僕自信の意図が不鮮明なので、若干、自信がないのですが、Axis2 を調べてみますと、
最新のものでは、
axis2-adb-1.5.1.jar
にありました。
axis2のライブラリをダウンロードしてください。
http://ws.apache.org/axis2/index.html
よろしくです。
PS.
メールアドレスとても怖いです。。。
>_<!
ご回答ありがとうございます。
返信が遅れて申し訳ありません;