ITに疎いけど興味ある人のブログ

ITに疎いけど興味ある人のブログです。

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/