8.3 Oracle RDF Graph Adapter for Eclipse RDF4Jを使用するための設定および構成
Oracle RDF Graph Adapter for Eclipse RDF4Jを使用するには、最初にシステム環境を設定および構成する必要があります。
アダプタは、次の3つの環境で使用できます。
- Javaコードを使用したプログラムで
- SPARQLサービスとしてHTTPを介したアクセスで
- Eclipse RDF4J Workbench環境内で使用
次の項では、前述の環境でEclipse RDF4J用のアダプタを使用するためのアクションについて説明します。
8.3.1 Javaで使用するためのOracle RDF Graph Adapter for Eclipse RDF4Jの設定
Javaコードを介してプログラムでOracle RDF Graph Adapter for Eclipse RDF4Jを使用するには、「Oracle RDF Graph Adapter for Eclipse RDF4Jを使用するための前提条件」の説明に従って、システム環境がすべての前提条件を満たしていることを最初に確認する必要があります。
アダプタを使用してRDFグラフの格納、管理および問合せをOracleデータベースで開始する前に、RDFネットワークを作成する必要があります。RDFネットワークは、データベース・ユーザーが作成した複数のRDFグラフを保持できるフォルダのように機能します。RDFネットワークは、ユーザー・スキーマ(スキーマプライベート・ネットワークと呼ばれます)で作成できます。
ネットワークを作成するには、次のコマンドを実行します。
sem_apis.create_RDF_network(<tablespace_name>, network_owner=><network_owner>, network_name=><network_name>)
詳細は、「RDFネットワーク」を参照してください。
関連項目:
- Javaで使用するためのOracle RDF Graph Adapter for Eclipse RDF4Jの設定(Oracle Database 19c以降の場合)
- Javaで使用するためのOracle RDF Graph Adapter for Eclipse RDF4Jの設定(Oracle Database 18cの場合)
スキーマプライベートRDFネットワークの作成
- DBA権限がある
SYSTEM
ユーザー(またはAutonomous Database ServerlessではADMIN
ユーザー)としてOracle Databaseに接続します。CONNECT system/<password-for-system-user>
- ユーザー・データを格納するための表領域を作成します。適切なオペレーティング・システム・フォルダおよびファイル名を使用します。
Autonomous Database Serverlessを使用している場合は、事前作成された
DATA
表領域を使用します。CREATE TABLESPACE usertbs DATAFILE 'usertbs.dat' SIZE 128M REUSE AUTOEXTEND ON NEXT 64M MAXSIZE UNLIMITED SEGMENT SPACE MANAGEMENT AUTO;
- データベース・ユーザーを作成して、RDFネットワークを作成および所有します。このユーザーは、このスキーマ・プライベート・ネットワーク内でアダプタを使用して、RDFグラフを作成または使用するか、あるいはその両方を実行できます。
CREATE USER rdfuser IDENTIFIED BY <password-for-rdfuser> DEFAULT TABLESPACE usertbs QUOTA 5G ON usertbs;
- 必要な権限を新しいデータベース・ユーザーに付与します。
GRANT CONNECT, RESOURCE, CREATE VIEW TO rdfuser;
rdfuser
としてOracle Databaseに接続します。CONNECT rdfuser/<password-for-rdf-user>
NET1
という名前のスキーマ・プライベート・RDFネットワークを作成します。EXECUTE SEM_APIS.CREATE_RDF_NETWORK(tablespace_name =>'usertbs', network_owner=>'RDFUSER', network_name=>'NET1');
- スキーマプライベートRDFネットワークが正常に作成されていることを確認します。
SELECT table_name FROM sys.all_tables WHERE table_name = 'NET1#RDF_VALUE$' AND owner='RDFUSER';
ネットワーク所有者のスキーマに
<NETWORK_NAME>#RDF_VALUE$
表が存在することは、スキーマ・プライベートRDFネットワークが正常に作成されていることを示しています。TABLE_NAME ----------- NET1#RDF_VALUE$
これで、次のアクションを実行して、Javaコードで使用するOracle RDF Graph Adapter for Eclipse RDF4Jを設定できます。
- RDF4Jのダウンロード・ページからEclipse RDF4Jリリース4.3.14をダウンロードし構成します。
- Oracle Software Delivery Cloudから、Eclipse RDF4J (Oracle Adapter for Eclipse RDF4J)用のアダプタをダウンロードします。
- ダウンロードしたキット(V1047295-01.zip)を、Linuxシステム上の、
/tmp/oracle_adapter
などの一時ディレクトリに解凍します。この一時ディレクトリがまだ作成されていない場合は、解凍操作の前に作成します。 - このキットの
/jar
ディレクトリにあるOracle Adapter for Eclipse RDF4J jarファイルをCLASSPATH
に含めます。oracle-rdf4j-adapter-4.3.14-20250106.jar
sdordf-23.6.0-20241122.jar
sdordf-client-23.6.0-20241122.jar
sdoutl-23.6.0-20241122.jar
- IDEを介してJavaコードを実行するために、次のサポート・ライブラリを
CLASSPATH
に含めます:eclipse-rdf4j-4.3.14-onejar.jar
: このEclipse RDF4J jarライブラリを、RDF4Jのダウンロード・ページからダウンロードします。ojdbc8.jar
: 使用しているデータベース・バージョンに対応したこのJDBC Thinドライバを、JDBCダウンロード・ページからダウンロードします。ucp.jar
: 使用しているデータベース・バージョンに対応したこのユニバーサル接続プールjarファイルを、JDBCダウンロード・ページからダウンロードします。log4j-api-2.24.2.jar
、log4j-core-2.24.2.jar
、log4j-slf4j-impl-2.24.2.jar
、slf4j-api-1.7.36.jar
およびcommons-io-2.14.0.jar
: Apache Software Foundationからダウンロードします。
JSON-LD
サポートを使用する必要がある場合は、CLASSPATH
にさらに次のライブラリを含めます:httpclient-4.5.14.jar
、httpclient-cache-4.5.14.jar
、httpclient-osgi-4.5.13.jar
: Apache Software Foundationからダウンロードします。httpcore-4.4.16.jar
、httpcore-nio-4.4.14.jar
、httpcore-osgi-4.4.14.jar
: Apache Software Foundationからダウンロードします。jackson-annotations-2.13.5.jar
、jackson-core-2.13.5.jar
、jackson-databind-2.13.5.jar
: GitHubからダウンロードしますjsonld-java-0.13.4.jar
: GitHubからダウンロードしますrdf4j-rio-jsonld-4.3.14.jar
、rdf4j-rio-rdfjson-4.3.14.jar
: RDF4Jのダウンロードからダウンロードします
- JDK 11がまだインストールされていない場合はインストールします。
JAVA_HOME
環境変数を、JDK 11のインストールを参照するように設定します。次のコマンドを実行して、設定を定義および確認します。echo $JAVA_HOME
8.3.2 RDF4J ServerおよびWorkbenchで使用するためのOracle RDF Graph Adapter for Eclipse RDF4Jの設定
この項では、RDF4J ServerおよびRDF4J WorkbenchでのOracle RDF Graph Adapter for Eclipse RDF4Jのインストールおよび構成について説明します。
RDF4J Serverは、RDF4JリポジトリへのHTTPアクセスを提供し、SPARQLエンドポイントとして公開するデータベース管理アプリケーションです。RDF4J Workbenchには、RDF4J Serverのリポジトリを作成、問合せ、更新および検索するためのWebインタフェースが用意されています。
前提条件
次の前提条件が、RDF4J ServerおよびWorkbenchでEclipse RDF4J用のアダプタを使用するように構成されていることを確認します。
- Java 11 Runtime Environment
- 含めるサポート・ライブラリとして説明したサポート・ライブラリをダウンロードします。
- Java Servlet API 4.0およびJava Server Pages (JSP) 2.3以上をサポートするJavaサーブレット・コンテナ。
ノート:
この章の例はすべて、最新の安定バージョンのApache Tomcat (9.0.97)で実行されます。 - RDF4J Server、RDF4J WorkbenchおよびRDF4J Consoleの標準インストール。詳細は、RDF4J Server and Workbench InstallationおよびRDF4J Console installationを参照してください。
-
次の図8-1のドロップダウンに、Oracleがデフォルトのリポジトリとして表示されていないことを確認します。
ノート:
Oracleデータ・ソース・リポジトリがRDF4J Workbenchリポジトリにすでに設定されている場合は、上のドロップダウン・リストに表示されます。
RDF4J WorkbenchでのOracleデータ・ソース・リポジトリの追加
RDF4J WorkbenchでOracleデータ・ソース・リポジトリを追加するには、次のステップを実行する必要があります。
-
強調表示されている次のフィールドを更新して、Tomcatメイン
$CATALINA_HOME/conf/context.xml
ディレクトリのcontext.xml
にデータ・ソースを追加します。- Using JDBC driver <Resource name="jdbc/OracleSemDS" auth="Container" driverClassName="oracle.jdbc.OracleDriver" factory="oracle.jdbc.pool.OracleDataSourceFactory" scope="Shareable" type="oracle.jdbc.pool.OracleDataSource" user="<<username>>" password="<<pwd>>" url="jdbc:oracle:thin:@<< host:port:sid >>" maxActive="100" minIdle="15" maxIdel="15" initialSize="15" removeAbandonedTimeout="30" validationQuery="select 1 from dual" /> - Using UCP <Resource name="jdbc/OracleSemDS" auth="Container" factory="oracle.ucp.jdbc.PoolDataSourceImpl" type="oracle.ucp.jdbc.PoolDataSource" connectionFactoryClassName="oracle.jdbc.pool.OracleDataSource" minPoolSize="15" maxPoolSize="100" inactiveConnectionTimeout="60" abandonedConnectionTimeout="30" initialPoolSize="15" user="<<username>>" password="<<pwd>>" url="jdbc:oracle:thin:@<< host:port:sid >>" />
- Oracle jdbcおよびucpドライバをTomcatの
lib
フォルダにコピーします。cp -f ojdbc8.jar $CATALINA_HOME/lib cp -f ucp.jar $CATALINA_HOME/lib
oracle-rdf4j-adapter-4.3.14-20250106.jar
、sdordf-23.6.0-20241122.jar
、sdordf-client-23.6.0-20241122.jar
、sdoutl-23.6.0-20241122.jar
をRDF4J Serverのlib
フォルダにコピーします。cp -f oracle-rdf4j-adapter-4.3.14-20250106.jar $CATALINA_HOME/webapps/rdf4j-server/WEB-INF/lib cp -f sdordf-23.6.0-20241122.jar $CATALINA_HOME/webapps/rdf4j-server/WEB-INF/lib cp -f sdordf-client-23.6.0-20241122.jar $CATALINA_HOME/webapps/rdf4j-server/WEB-INF/lib cp -f sdoutl-23.6.0-20241122.jar $CATALINA_HOME/webapps/rdf4j-server/WEB-INF/lib
oracle-rdf4j-adapter-4.3.14-20250106.jar
、sdordf-23.6.0-20241122.jar
、sdordf-client-23.6.0-20241122.jar
、sdoutl-23.6.0-20241122.jar
をRDF4J Workbenchのlib
フォルダにコピーします。cp -f oracle-rdf4j-adapter-4.3.14-20250106.jar $CATALINA_HOME/webapps/rdf4j-workbench/WEB-INF/lib cp -f sdordf-23.6.0-20241122.jar $CATALINA_HOME/webapps/rdf4j-workbench/WEB-INF/lib cp -f sdordf-client-23.6.0-20241122.jar $CATALINA_HOME/webapps/rdf4j-workbench/WEB-INF/lib cp -f sdoutl-23.6.0-20241122.jar $CATALINA_HOME/webapps/rdf4j-workbench/WEB-INF/lib
- Tomcatの
$CATALINA_HOME/webapps/rdf4j-workbench/transformations
フォルダ内に構成ファイルcreate-oracle.xsl
を作成します。<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sparql="http://www.w3.org/2005/sparql-results#" xmlns="http://www.w3.org/1999/xhtml"> <xsl:include href="../locale/messages.xsl" /> <xsl:variable name="title"> <xsl:value-of select="$repository-create.title" /> </xsl:variable> <xsl:include href="template.xsl" /> <xsl:template match="sparql:sparql"> <form action="create" method="post"> <table class="dataentry"> <tbody> <tr> <th> <xsl:value-of select="$repository-type.label" /> </th> <td> <select id="type" name="type"> <option value="oracle"> Oracle Sail Store </option> </select> </td> <td></td> </tr> <tr> <th> <xsl:value-of select="$repository-id.label" /> </th> <td> <input type="text" id="id" name="Repository ID" size="16" value="native" /> </td> <td></td> </tr> <tr> <th> <xsl:value-of select="$repository-title.label" /> </th> <td> <input type="text" id="title" name="Repository title" size="50" value="Native store" /> </td> <td></td> </tr> <tr> <th> Model Name <strong style="color:Red">*</strong> </th> <td> <input type="text" id="oracleSemModelName" name="Model Name" size="50" value="" /> </td> <td></td> </tr> <tr> <th> Network Owner </th> <td> <input type="text" id="oracleSemNetworkOwner" name="Network Owner" size="50" value="" /> </td> <td></td> </tr> <tr> <th> Network Name </th> <td> <input type="text" id="oracleSemNetworkName" name="Network Name" size="50" value="" /> </td> <td></td> </tr> <tr> <th> DataSource Name </th> <td> <input type="text" id="oracleSemDataSourceName" name="DataSource Name" size="30" value="OracleSemDS" /> </td> <td></td> </tr> <tr> <td></td> <td> <input type="button" value="{$cancel.label}" style="float:right" data-href="repositories" onclick="document.location.href=this.getAttribute('data-href')" /> <input id="create" type="button" value="{$create.label}" onclick="checkOverwrite()" /> </td> </tr> </tbody> </table> </form> <script src="../../scripts/create.js" type="text/javascript"></script> </xsl:template> </xsl:stylesheet>
- Tomcatの
$CATALINA_HOME/webapps/rdf4j-workbench/transformations
変換フォルダ内の構成ファイルcreate.xsl
を置き換えます。<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE xsl:stylesheet [ <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > ]> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sparql="http://www.w3.org/2005/sparql-results#" xmlns="http://www.w3.org/1999/xhtml"> <xsl:include href="../locale/messages.xsl" /> <xsl:variable name="title"> <xsl:value-of select="$repository-create.title" /> </xsl:variable> <xsl:include href="template.xsl" /> <xsl:template match="sparql:sparql"> <form action="create"> <table class="dataentry"> <tbody> <tr> <th> <xsl:value-of select="$repository-type.label" /> </th> <td> <select id="type" name="type"> <option value="memory"> Memory Store </option> <option value="memory-lucene"> Memory Store + Lucene </option> <option value="memory-rdfs"> Memory Store + RDFS </option> <option value="memory-rdfs-dt"> Memory Store + RDFS and Direct Type </option> <option value="memory-rdfs-lucene"> Memory Store + RDFS and Lucene </option> <option value="memory-customrule"> Memory Store + Custom Graph Query Inference </option> <option value="memory-shacl"> Memory Store + SHACL </option> <option value="native"> Native Store </option> <option value="native-lucene"> Native Store + Lucene </option> <option value="native-rdfs"> Native Store + RDFS </option> <option value="native-rdfs-dt"> Native Store + RDFS and Direct Type </option> <option value="memory-rdfs-lucene"> Native Store + RDFS and Lucene </option> <option value="native-customrule"> Native Store + Custom Graph Query Inference </option> <option value="native-shacl"> Native Store + SHACL </option> <option value="remote"> Remote RDF Store </option> <option value="sparql"> SPARQL endpoint proxy </option> <option value="federate">Federation</option> <option value="lmdb">LMDB Store</option> <option value="oracle">Oracle</option> </select> </td> <td></td> </tr> <tr> <th> <xsl:value-of select="$repository-id.label" /> </th> <td> <input type="text" id="id" name="id" size="16" /> </td> <td></td> </tr> <tr> <th> <xsl:value-of select="$repository-title.label" /> </th> <td> <input type="text" id="title" name="title" size="48" /> </td> <td></td> </tr> <tr> <td></td> <td> <input type="button" value="{$cancel.label}" style="float:right" data-href="repositories" onclick="document.location.href=this.getAttribute('data-href')" /> <input type="submit" name="next" value="{$next.label}" /> </td> </tr> </tbody> </table> </form> </xsl:template> </xsl:stylesheet>
- Tomcatを再起動し、
https://localhost:8080/rdf4j-workbench
に移動します。
「Oracle」は、RDF4J Workbenchのドロップダウン・リストにオプションとして表示されます。
- RDF4J Workbenchを介したAdapter for Eclipse RFD4Jの使用
リポジトリの作成および問合せには、RDF4J Workbenchを使用できます。
8.3.2.1 RDF4J Workbenchを介したAdapter for Eclipse RFD4Jの使用
リポジトリの作成および問合せには、RDF4J Workbenchを使用できます。
RDF4J Workbenchには、RDF4J Serverのリポジトリを作成、問合せ、更新および検索するためのWebインタフェースが用意されています。
RDF4J Workbenchを使用した新規リポジトリの作成
- ブラウザにURL
https://localhost:8080/rdf4j-workbench
を入力して、RDF4J Workbenchを起動します。 - サイドバー・メニューで「新規リポジトリ」をクリックし、新規リポジトリの「タイプ」として「Oracle」を選択します。
- 次の図に示すように、新しいリポジトリの「ID」と「タイトル」を入力し、「次」をクリックします。
- モデル(RDFグラフ)の詳細を入力し、「作成」をクリックして新規リポジトリを作成します。
新しく作成されたリポジトリのサマリーが次のように表示されます。
新しく作成したリポジトリは、RDF4J Workbenchのリポジトリのリスト・ページで表示することもできます。
8.3.3 SPARQLサービスとして使用するためのOracle RDF Graph Adapter for Eclipse RDF4Jの設定
RDF4J Workbenchを介してSPARQLサービスを使用するには、RDF4J ServerおよびWorkbenchで使用するためのOracle RDF Graph Adapter for Eclipse RDF4Jの設定の説明に従って、Eclipse RDF4Jサーバーがインストールされ、Oracleデータ・ソース・リポジトリが構成されていることを確認します。
Eclipse RDF4Jサーバー・インストールで提供されるREST APIは、HTTPプロトコルを使用し、SPARQL 1.1プロトコルのW3C勧告に完全準拠した実装をカバーします。これにより、RDF4Jサーバーは標準に完全準拠したSPARQLエンドポイントとして機能します。この機能の詳細は、The RDF4J REST APIを参照してください。
次の項では、使用例を示します。
8.3.3.1 Eclipse RDF4J WorkbenchでのAdapter Over SPARQLエンドポイントの使用
この項では、Eclipse RDF4J Workbenchで提供されるSPARQLエンドポイントを介してEclipse RDF4J用のアダプタを使用する例をいくつか説明します。
例8-2 SPARQL更新を実行するリクエスト
次の例では、HTTP POSTを使用していくつかの単純なトリプルを挿入します。ファイルsparql_update.rq
の内容は次のようになっているとします。
PREFIX ex: <http://example.oracle.com/> INSERT DATA { ex:a ex:value "A" . ex:b ex:value "B" . }
その後、次のようにcurl
コマンドライン・ツールを使用して、前述のSPARQL更新を実行できます。
curl -X POST --data-binary "@sparql_update.rq" \ -H "Content-Type: application/sparql-update" \ "http://localhost:8080/rdf4j-server/repositories/MyRDFRepo/statements"
例8-3 HTTP GETを使用したSPARQL問合せの実行リクエスト
このcurl
の例は、HTTP GETを使用してSPARQL問合せを実行します。
curl -X GET -H "Accept: application/sparql-results+json" \ "http://localhost:8080/rdf4j-server/repositories/MyRDFRepo?query=SELECT%20%3Fs%20%3Fp%20%3Fo%0AWHERE%20%7B%20%3Fs%20%3Fp%20%3Fo%20%7D%0ALIMIT%2010"
前のSPARQL更新の例が空のリポジトリで実行された場合、このRESTリクエストは次のレスポンスを返すはずです。
{ "head" : { "vars" : [ "s", "p", "o" ] }, "results" : { "bindings" : [ { "p" : { "type" : "uri", "value" : "http://example.oracle.com/value" }, "s" : { "type" : "uri", "value" : "http://example.oracle.com/b" }, "o" : { "type" : "literal", "value" : "B" } }, { "p" : { "type" : "uri", "value" : "http://example.oracle.com/value" }, "s" : { "type" : "uri", "value" : "http://example.oracle.com/a" }, "o" : { "type" : "literal", "value" : "A" } } ] } }