2

Scala でblazegraph RDF4J リポジトリと接続を作成しました。

val props = new Properties()
props.put(Options.BUFFER_MODE, BufferMode.DiskRW)
props.put(Options.FILE, "embedded.jnl")
var sail = new BigdataSail(props)
var repo = new BigdataSailRepository(sail)
repo.initialize()
var cxn = repo.getConnection()

ステートメントを追加したり、SPARQL の結果を取得したりできます。

次のように、リポジトリの内容を RDF ファイルにダンプしたいと思います

Rio.write(model, System.out, RDFFormat.RDFXML);

しかし、予想されるモデル引数をmy cxnorに置き換えようとすると、Eclipse は次のように文句を言います。repo

オーバーロードされたメソッド値は、代替手段で書き込みます: (x$1: Iterable[org.openrdf.model.Statement],x$2: java.io.Writer,x$3: org.openrdf.rio.RDFFormat)Unit (x$1: Iterable[org .openrdf.model.Statement],x$2: java.io.OutputStream,x$3: org.openrdf.rio.RDFFormat)ユニットは適用できません (com.bigdata.rdf.sail.BigdataSailRepository, java.io.FileOutputStream, org.openrdf.rio.RDFFormat)。

私が持っているレポと接続から、期待されるモデルに取得するにはどうすればよいRio.write()ですか? または、他の方法でトリプルをダンプできますか?

4

3 に答える 3

2

ここで非常にうまく説明されていますhttp://docs.rdf4j.org/programming/ point 3.2.8. RDFHandler の使用

import org.eclipse.rdf4j.rio.Rio;
import org.eclipse.rdf4j.rio.RDFFormat;
import org.eclipse.rdf4j.rio.RDFWriter;

try (RepositoryConnection conn = repo.getConnection()) {
RDFWriter writer = Rio.createWriter(RDFFormat.TURTLE, System.out);
conn.prepareGraphQuery(QueryLanguage.SPARQL,
   "CONSTRUCT {?s ?p ?o } WHERE {?s ?p ?o } ").evaluate(writer);
}

System.out の代わりに、ファイルに書き込みます。

于 2017-05-12T09:45:28.683 に答える