Jenaを使ってJavaでSPARQLエンドポイントにアクセスする
RDF (Resource Description Farmework) を用いてオープンデータを表したLOD (Linked Open Data) が急速に普及してきている。
RDF、LODに興味があったので、RDFストアにアクセスし、結果を返すサンプルプログラムを書いてみた。
今回はサンプルとして、RDFを用いて日本語版Wikipediaをリンクデータとして表したDBpedia Japanese (http://ja.dbpedia.org/) に、プロパティ100件を返すSPARQLクエリのプログラムを書いた。
* いわゆるSPARQLエンドポイントに、JavaのプログラムでアクセスするのにApache Jena (http://jena.apache.org/) が必要になるので、そのあたりの設定が必要である。
以下、プログラム。
import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.query.ResultSetFormatter;
public class TestJena {
public static void main(String[] args) {
// クエリを投げるSPARQLエンドポイント
String service = "http://ja.dbpedia.org/sparql";
// SPARQLクエリ
String queryString = "SELECT distinct ?p " +
"WHERE{?s ?p ?o}" +
"LIMIT 100";
Query query = QueryFactory.create(queryString);
QueryExecution qe = QueryExecutionFactory.sparqlService(service, query);
ResultSet results = qe.execSelect();
ResultSetFormatter.out(System.out, results, query);
qe.close();
}
}
参考にしたサイト: SPARQL で RDF データを検索する, http://www.ibm.com/developerworks/jp/java/library/j-sparql/