8.1 Oracle RDF Graph Support for Eclipse RDF4Jの概要

Oracle RDF Graph Adapter for Eclipse RDF4J APIは、Eclipse RDF4J SAIL APIに準拠するAPIフレームワークおよびツールを介して、Oracle RDFデータへのJavaベース・インタフェースを提供します。

RDF Graph support for Eclipse RDF4Jは、RDF Graph Support for Apache Jenaで説明されているRDF Graph support for Apache Jenaに似ています。

Eclipse RDF4J用のアダプタでは、Oracle Databaseに格納されているRDFデータと対話するためのJava APIが提供されています。また、次のとおりEclipse RDF4Jツールを包括的に提供します。

  • Eclipse RDF4J Server。HTTP SPARQLエンドポイントを提供します。
  • Eclipse RDF4J Workbench。WebベースのクライアントUIで、データベースを管理し、問合せを実行します。

Eclispe RDF4J用のアダプタによって提供される機能を次に示します。

  • (コンテキスト付きおよびコンテキストなしの)文のロード(バルクおよび増分)、エクスポートおよび削除
  • データの問合せ(コンテキストがある場合とない場合)
  • データの更新(コンテキストがある場合とない場合)
  • SHACL制約によるデータの検証

Oracle RDF Graph Adapter for Eclipse RDF4Jでは、Eclipse RDF4J Storage and Inference Layer (SAIL) APIの様々なインタフェースを実装しています。

たとえばクラスOracleSailConnectionは、Eclipse RDF4J SailConnectionインタフェースのOracle実装で、クラスOracleSailStoreAbstractSailを拡張した、Eclipse RDF4J SailインタフェースのOracle実装です。

次の例に、RDF Graph support for Eclipse RDF4Jの一般的な使用フローを示します。

例8-1 スキーマプライベートRDFネットワークを使用した、Eclipse RDF4J用RDFグラフ・サポートのサンプル使用フロー

String networkOwner = "SCOTT";
String networkName = "NET1";
String modelName = "UsageFlow";
OraclePool oraclePool = new OraclePool(jdbcurl, user, password);
SailRepository sr = new SailRepository(new OracleSailStore(oraclePool, modelName, networkOwner, networkName));
SailRepositoryConnection conn = sr.getConnection();

//A ValueFactory factory for creating IRIs, blank nodes, literals and statements
ValueFactory vf = conn.getValueFactory();
IRI alice = vf.createIRI("http://example.org/Alice");
IRI friendOf = vf.createIRI("http://example.org/friendOf");
IRI bob = vf.createIRI("http://example.org/Bob");
Resource context1 = vf.createIRI("http://example.org/");

// Data loading can happen here.
conn.add(alice, friendOf, bob, context1);
String query =
  " PREFIX foaf: <http://xmlns.com/foaf/0.1/> " +
  " PREFIX dc: <http://purl.org/dc/elements/1.1/> " +
  " select ?s ?p ?o ?name WHERE {?s ?p ?o . OPTIONAL {?o foaf:name ?name .} } ";
TupleQuery tq = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
TupleQueryResult tqr = tq.evaluate();
while (tqr.hasNext()) {
    System.out.println((tqr.next().toString()));
}
tqr.close();
conn.close();
sr.shutDown();