2011年6月19日日曜日

ARQを使ってSPARQLをやってみた

これ('RDF用クエリ言語SPARQL/2.1 シンプルなクエリの記述')をやってみた.

やってみた.
0.ARQ
ARQはこちらのページから取得(ARQ-2.8.8).

1.Eclipseプロジェクト
Eclipseのプロジェクトにまるごと入れてlib中のjar上のコンテクストメニューにてBuild Path/Add to Build Pathにてパスを通す.

2.コードを書く
package sample;

import org.openjena.atlas.lib.StrUtils;

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.ResultSetFormatter;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.vocabulary.DC;

public class Test {
public static void main(String[] args) {
Model model = ModelFactory.createDefaultModel() ;
Resource resource = model.createResource("http://example.org/book/book1");
resource.addProperty(DC.title, "SPARQL Tutorial");

String queryString = StrUtils.strjoin("\n",
"SELECT ?title",
"WHERE{",
" <http://example.org/book/book1> <http://purl.org/dc/elements/1.1/title> ?title .",
"}");
Query query = QueryFactory.create(queryString);

QueryExecution qExec = QueryExecutionFactory.create(query, model);
ResultSetFormatter.out(System.out, qExec.execSelect(), query);
qExec.close();
}
}


データをファイルで与える場合:
package sample;

import org.openjena.atlas.lib.StrUtils;

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.ResultSetFormatter;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.util.FileManager;

public class Test {
public static void main(String[] args) {
Model model = ModelFactory.createDefaultModel();
FileManager.get().readModel(model, "data.ttl");


String queryString = StrUtils.strjoin("\n",
"SELECT ?title",
"WHERE{",
" <http://example.org/book/book1> <http://purl.org/dc/elements/1.1/title> ?title .",
"}");
Query query = QueryFactory.create(queryString);

QueryExecution qExec = QueryExecutionFactory.create(query, model);
ResultSetFormatter.out(System.out, qExec.execSelect(), query);
qExec.close();
}
}

'data.ttl'ファイル.拡張子はttlである必要があるみたい(?).
<http://example.org/book/book1> <http://purl.org/dc/elements/1.1/title> "SPARQL Tutorial" .


3.実行(画像をクリックで拡大)


追記
'RDF用クエリ言語SPARQL/2.2 複数マッチ'の実行(画像をクリックで拡大)


追記2
'RDF用クエリ言語SPARQL/2.3 RDFリテラルのマッチング'の実行(画像をクリックで拡大)

0 件のコメント: