7.17 SPARQL GatewayとRDFデータ
SPARQL Gatewayは、support for Apache Jenaに含まれるJ2EE Webアプリケーションです。Oracle Business Intelligence Enterprise Edition (OBIEE) 11gなどの、リレーショナル・データおよびXMLデータで稼働するアプリケーションで、RDFデータ(RDF/OWL/SKOS)を容易に利用可能にすることを目的としています。
7.17.1 SPARQL Gatewayの機能および利点の概要
SPARQL Gatewayでは、RDFデータを非セマンティク・アプリケーションに公開する際の次のような課題に対処します。
-
RDF構文、SPARQL問合せ構文およびSPARQLプロトコルについて理解しておく必要があること。
-
SPARQL問合せのレスポンス構文を理解しておく必要があること。
-
変換で、SPARQL問合せのレスポンスを、アプリケーションが使用できる形に変更する必要があること。
このような課題に対処するため、SPARQL Gatewayは、SPARQL問合せとXSLT操作を管理し、標準準拠の任意のSPARQLエンドポイントに対してSPARQL問合せを実行して、必要なXSL変換を実行してから、アプリケーションへレスポンスを渡します。こうすると、アプリケーションは既存のデータ・ソースからの場合と同じようにRDFデータを使用できるようになります。
異なるトリプル・ストアまたはクワッド・ストアには、異なる機能があります。たとえば、Oracle DatabaseによってサポートされるSPARQLエンドポイントは、指定された標準準拠のSPARQL問合せを解析して応答するというコア機能に加え、RDF Graph support for Apache Jenaを使用して、パラレル実行、問合せタイムアウト、動的なサンプリング、結果キャッシュおよびその他の機能を実行できます。一方、これらの機能は、指定された別のRDFデータ・ストアからは使用できない場合があります。
RDF Graph SPARQL Gatewayでは、たとえば長時間実行中の問合せにタイムアウトを設定する機能や、複雑な問合せから指定された時間内に結果の一部を取得する機能のような、強く求められる特定の機能を利用することができます。アプリケーションに応答時間の制約があるように、問合せの終了を無期限に待機することは、エンド・ユーザーにとって困難です。SPARQL Gatewayは、SPARQLエンドポイントの上位に、タイムアウトとベスト・エフォート型問合せ関数の両方を提供します。このような効率性によって、SPARQL問合せの実行中のRDFデータの使用に関して、不確実性がある程度は効果的に排除されます。(「タイムアウト値の指定」と「ベスト・エフォート型の問合せ実行の指定」を参照してください。)
親トピック: SPARQL GatewayとRDFデータ
7.17.2 SPARQL Gatewayのインストールおよび構成
SPARQL Gatewayをインストールして構成するには、次の主要なステップを実行します(それぞれの項を参照してください)。
- RDF Graph support for Apache Jena .zipファイルをダウンロードする(まだダウンロードしていない場合)
- WebLogic ServerでのSPARQL Gatewayのデプロイ
- プロキシ設定の変更(必要な場合)
- OracleSGDSデータ・ソースの構成(必要な場合)
- SparqlGatewayAdminGroupグループの追加と構成(必要な場合)
親トピック: SPARQL GatewayとRDFデータ
7.17.2.1 RDF Graph Support for Apache Jena .zipファイルをダウンロードする(まだダウンロードしていない場合)
RDF Graph support for Apache Jenaファイルをまだダウンロードしていない場合は、「ソフトウェア環境の設定」の説明に従ってRDFグラフ・ページからファイルをダウンロードし、一時ディレクトリに解凍します。
なお、SPARQL GatewayのJavaクラスの実装は、sdordfclient.jar
に含まれています(「SPARQL GatewayのJava APIの使用」を参照)。
親トピック: SPARQLゲートウェイのインストールおよび構成
7.17.2.2 WebLogic ServerでのSPARQL Gatewayのデプロイ
Oracle WebLogic Serverで、次のようにSPARQL Gatewayをデプロイします。
-
次のとおり、WebLogic Serverのautodeployディレクトリに移動し、ビルトイン
sparqlgateway.war
ファイルをコピーします。(開発ドメインでのアプリケーションに対する自動デプロイの詳細は、http://docs.oracle.com/cd/E11035_01/wls100/deployment/autodeploy.html
を参照してください。)cp -rf /tmp/jena_adapter/sparqlgateway_web_app/sparqlgateway.war <domain_name>/autodeploy/sparqgateway.war
この例では、<domain_name>はWebLogic Serverドメインの名前です。
次の方法で、ビルトイン・アプリケーションをカスタマイズできます。
-
必要に応じて、
sparqlgateway_web_app/sparqlgateway.war
に埋め込まれているWEB-INF/web.xml
ファイルを変更します。sparql_gateway_repository_filedir
パラメータとsparql_gateway_repository_url
パラメータに対して、適切な値を指定してください。 -
必要に応じて、XSLTファイルまたはSPARQL問合せファイルを、
sparqlgateway_web_app/sparqlgateway.war
のトップレベル・ディレクトリに追加します。ディレクトリには、Oracle提供のファイル
default.xslt
、noop.xslt
およびqb1.sparql
があります。default.xslt
ファイルは、SPARQL問合せレスポンス(XML)を、主にOracleで利用可能な形式に変換するためのものです。(これらのファイルについては「SPARQL問合せとXSL変換の格納」を、SPARQL GatewayでのOBIEEの使用については「SPARQL GatewayのOBIEEへのXMLデータソースとしての使用」を参照してください。)
-
-
Webブラウザを使用して、次の書式のURLに接続し、デプロイメントを確認します(Webアプリケーションはポート7001でデプロイされているとします)。
http://<hostname>:7001/sparqlgateway
親トピック: SPARQLゲートウェイのインストールおよび構成
7.17.2.3 プロキシ設定の変更(必要な場合)
SPARQL Gatewayがファイアウォールの内側にあり、SPARQL Gatewayでファイアウォール内部のみでなくインターネット上のSPARQLエンドポイントとも通信する必要がある場合は、次のJVM設定を使用する必要があります。
-Dhttp.proxyHost=<your_proxy_host> -Dhttp.proxyPort=<your_proxy_port> -Dhttp.nonProxyHosts=127.0.0.1|<hostname_1_for_sparql_endpoint_inside_firewall>|<hostname_2_for_sparql_endpoint_inside_firewall>|...|<hostname_n_for_sparql_endpoint_inside_firewall>
これらの設定は、startWebLogic.sh
スクリプトに指定することができます。
親トピック: SPARQLゲートウェイのインストールおよび構成
7.17.2.4 OracleSGDSデータ・ソースの構成(必要な場合)
SPARQL GatewayのSPARQL問合せとXSL変換を格納してアクセスするためにOracle Databaseを使用する場合は、OracleSGDS
という名前のデータソースが使用可能である必要があります。
OracleSGDS
データソースが構成されていて使用可能な場合、SPARQL Gatewayサーブレットは、すべての必要な表と索引を初期化時に自動作成します。
親トピック: SPARQLゲートウェイのインストールおよび構成
7.17.2.5 SparqlGatewayAdminGroupグループの追加と構成(必要な場合)
SPARQL Gatewayの次のJSPファイルは、Oracle Databaseに格納されているSPARQL問合せとXSL変換を表示、編集および更新するために役立ちます。
http://<host>:7001/sparqlgateway/admin/sparql.jsp http://<host>:7001/sparqlgateway/admin/xslt.jsp
これらのファイルは、HTTP Basic認証によって保護されています。WEB-INF/weblogic.xml
に、SparqlGatewayAdminGroup
という名前のプリンシパルが定義されます。
これらのJSPページのどちらにでもログインできるように、WebLogic Serverを使用してSparqlGatewayAdminGroup
という名前のグループを追加し、新しいユーザーを作成するか、または既存ユーザーをこのグループに割り当てる必要があります。
親トピック: SPARQLゲートウェイのインストールおよび構成
7.17.3 RDFデータに対するSPARQL Gatewayの使用
SPARQL Gatewayと対話するアプリケーションの主要なインタフェースには、次の形式のURLを使用します。
http://host:port/sparqlgateway/sg?<SPARQL_ENDPOINT>&<SPARQL_QUERY>&<XSLT>
前述の形式の説明:
-
<SPARQL_ENDPOINT>では、
ee
パラメータを指定します。SPARQLエンドポイントのURLエンコード形式を含みます。たとえば、
ee=http%3A%2F%2Fsparql.org%2Fbooks
はSPARQLエンドポイントhttp://sparql.org/books
のURLエンコード文字列です。これは、SPARQL問合せがエンドポイントhttp://sparql.org/books
に対して実行されることを意味します。 -
<SPARQL_QUERY>では、SPARQL問合せ、またはSPARQL問合せの場所を指定します。
アプリケーションで非常に長いURLを使用できる場合は、SPARQL問合せ全体をエンコードし、URLに
eq=
<encoded_SPARQL_query>
を設定することができます。あまり長いURLをアプリケーションで使用できない場合は、「SPARQL問合せとXSL変換の格納」で説明されている方法の1つを使用して、SPARQL問合せを格納し、これらをSPARQL Gatewayで使用可能にすることができます。 -
<XSLT>では、XSL変換またはXSL変換の場所を指定します。
アプリケーションで非常に長いURLを使用できる場合は、XSL変換全体をエンコードし、URLに
ex=
<encoded_XSLT>
を設定することができます。あまり長いURLをアプリケーションで使用できない場合は、「SPARQL問合せとXSL変換の格納」で説明されている方法の1つを使用して、XSL変換を格納し、これらをSPARQL Gatewayで使用可能にすることができます。
親トピック: SPARQL GatewayとRDFデータ
7.17.3.1 SPARQL問合せとXSL変換の格納
あまり長いURLをアプリケーションで使用できない場合は、SPARQL問合せとXSL変換の場所を、「SPARQL Gatewayでのセマンティク・データの使用」の説明にあるURL形式の<SPARQL_QUERY>と<XSLT>の部分に指定できます。次のいずれかの方法を使用します。
-
SPARQL問合せとXSL変換をSPARQL Gateway Webアプリケーション自体に格納します。
これを行うには、
sparqlgateway.war
ファイルを解凍し、SPARQL問合せとXSL変換を最上位ディレクトリに格納した後、sparqlgateway.war
ファイルを圧縮して、再デプロイします。sparqlgateway.war
ファイルには、サンプル・ファイルqb1.sparql
(SPARQL問合せ)およびdefault.xslt
(XSL変換)が含まれています。ヒント:
SPARQL問合せファイルには、ファイル拡張子
.sparql
を使用し、XSL変換ファイルには、ファイル拡張子.xslt
を使用します。(提供されているサンプル・ファイルの名前を使用して)これらのファイルを指定する構文は、SPARQL問合せファイルについては
wq
=qb1
.sparql、XSL変換ファイルについてはwx
=default.xslt
です。デフォルトのXSL変換をカスタマイズする必要がある場合は、「デフォルトのXSLTファイルのカスタマイズ」の例を参照してください。
wx=noop.xslt
を指定すると、XSL変換は実行されず、SPARQLレスポンスはそのままでクライアントに戻されます。 -
ファイル・システム・ディレクトリにSPARQL問合せとXSL変換を格納し、そのディレクトリがデプロイ済のSPARQL Gateway Webアプリケーションにアクセス可能なことを確認します。
デフォルトでは、次の
<init-param>
設定に示すとおり、そのディレクトリは/tmp
に設定されています。<init-param> <param-name>sparql_gateway_repository_filedir</param-name> <param-value>/tmp/</param-value> </init-param>
SPARQL Gatewayをデプロイする前に、このディレクトリをカスタマイズすることをお薦めします。ディレクトリ設定を変更するには、
<param-value>
タグと</param-value>
タグの間のテキストを編集します。次の例では、
sparql_gateway_repository_filedir
の<init-param>
要素で指定されたディレクトリのSPARQL問合せファイルとXSL変換ファイルを指定します。fq=qb1.sparql fx=myxslt1.xslt
-
SPARQL問合せとXSL変換をWebサイトからアクセス可能にします。
デフォルトでは、次の
<init-param>
設定に示すとおり、そのWebサイト・ディレクトリはhttp://127.0.0.1/queries/
に設定されています。<init-param> <param-name>sparql_gateway_repository_url</param-name> <param-value>http://127.0.0.1/queries/</param-value> </init-param>
このディレクトリは、SPARQL Gatewayをデプロイする前にカスタマイズします。Webサイト設定を変更するには、
<param-value>
タグと</param-value>
タグの間のテキストを編集します。次の例では、
sparql_gateway_repository_url
の<init-param>
要素で指定されたURLのSPARQL問合せファイルとXSL変換ファイルを指定します。uq=qb1.sparql ux=myxslt1.xslt
SPARQL Gatewayの内部では、適切で完全なURLを計算し、内容をフェッチして、問合せ実行を開始し、問合せのレスポンスXMLにXSL変換を適用します。
-
SPARQL問合せとXSL変換をOracle Databaseに格納します。
この方法では、J2EEデータソース
OracleSGDS
を定義しておく必要があります。SPARQL GatewayがOracleSGDSデータソースからデータベース接続を取得すると、データベース表ORACLE_ORARDF_SG_QUERYから指定された整数IDを使用してSPARQL問合せが読み取られます。Oracle DatabaseからSPARQL問合せをフェッチするための構文は
dq=
<integer-id>
、Oracle DatabaseからXSL変換をフェッチするための構文はdx=
<integer-id>
です。サーブレットの初期化時に、次の表がまだ存在しない場合は、自動的に作成されます(手動で作成する必要はありません)。
-
主キーがQID (整数型)のORACLE_ORARDF_SG_QUERY
-
主キーがXID (整数型)のORACLE_ORARDF_SG_XSLT
-
親トピック: RDFデータに対するSPARQL Gatewayの使用
7.17.3.2 タイムアウト値の指定
実行時間が長くなる可能性のある問合せを「セマンティク・データを使用したSPARQL Gatewayの使用」で説明されているURL形式を使用して送信する場合、タイムアウト値をミリ秒で指定して、実行時間を制限することができます。たとえば、SPARQL Gatewayから開始したSPARQL問合せの実行が、1000ミリ秒(1秒)後に終了されるというURL形式とタイムアウトの指定を次に示します。
http://host:port/sparqlgateway/sg?<SPARQL_ENDPOINT>&<SPARQL_QUERY>&<XSLT>&t=1000
タイムアウトが発生したときに問合せが終了していない場合、空のSPARQLレスポンスがSPARQL Gatewayによって構築されます。
SPARQL GatewayがHTTP接続レベルで問合せ実行をタイムアウトしても、サーバー側では問合せの実行が続く場合もあることに注意してください。実際の動作はベンダーによって異なります。
親トピック: RDFデータに対するSPARQL Gatewayの使用
7.17.3.3 ベスト・エフォート型問合せ実行の指定
ノート:
ベスト・エフォート型問合せ実行は、タイムアウト値も指定する場合にのみ指定できます(「タイムアウト値の指定」を参照)。
実行時間が長くなる可能性のある問合せを「セマンティク・データを使用したSPARQL Gatewayの使用」で説明されているURL形式を使用して送信する場合、タイムアウト値を指定することで、その問合せにベスト・エフォート型制限を指定することもできます。たとえば次に示すURL形式には、1000ミリ秒(1秒)のタイムアウト指定と、ベスト・エフォート型指定(& b=t
)があわせて示されています。
http://host:port/sparqlgateway/sg?<SPARQL_ENDPOINT>&<SPARQL_QUERY>&<XSLT>&t=1000&b=t
web.xmlファイルには、ベスト・エフォート型オプションの動作に影響する2つのパラメータ設定(sparql_gateway_besteffort_maxrounds
およびsparql_gateway_besteffort_maxthreads
)が含まれます。デフォルトの定義を次に示します。
<init-param> <param-name>sparql_gateway_besteffort_maxrounds</param-name> <param-value>10</param-value> </init-param> <init-param> <param-name>sparql_gateway_besteffort_maxthreads</param-name> <param-value>3</param-value> </init-param>
SPARQLのSELECT問合せがベスト・エフォート型方式で実行されるとき、一連の問合せはSPARQL問合せ本体のLIMIT値を増加させた設定で実行されます。(中心的な考え方は、LIMIT設定をより小さくすることで、SPARQL問合せはより高速に実行されるという見解に基づいています。)SPARQL Gatewayは、LIMIT 1設定で問合せ実行を開始します。タイムアウトの前に、この問合せを完了できることが理想です。この場合、次の問合せでLIMIT制限が増加し、後続の問合せではより高い制限があるとします。問合せ実行の最大数は、sparql_gateway_besteffort_maxrounds
パラメータによって制御されます。
一連の問合せをパラレルで実行可能な場合、sparql_gateway_besteffort_maxthreads
パラメータで並列度を制御します。
親トピック: RDFデータに対するSPARQL Gatewayの使用
7.17.3.4 text/xml以外のコンテンツ・タイプの指定
デフォルトでは、SPARQL GatewayはXSL変換がXMLを生成することを前提としているため、HTTPレスポンスに設定されているデフォルトのコンテンツ・タイプはtext/xml
です。ただし、アプリケーションでXML以外のレスポンス形式が必要である場合は、次の書式でその形式を追加のURLパラメータ(構文&rt=
を使用)に指定することができます。
http://host:port/sparqlgateway/sg?<SPARQL_ENDPOINT>&<SPARQL_QUERY>&<XSLT>&rt=<content_type>
<content_type>はURLエンコードされている必要があることに注意します。
親トピック: RDFデータに対するSPARQL Gatewayの使用
7.17.4 デフォルトのXSLTファイルのカスタマイズ
デフォルトのXSL変換ファイル(wx=default.xslt
を使用して参照される)をカスタマイズすることができます。この項では、いくつかのカスタマイズ例を示します。
次の例では、ある変数のバインドがhttp://purl.org/goodrelations/v1#
で始まるURIを戻したときは、その部分をgr:
に置換し、http://www.w3.org/2000/01/rdf-schema#
で始まるURIを戻したときは、その部分をrdfs:
に置換する、というネームスペース接頭辞置換ロジックを実装します。
<xsl:when test="starts-with(text(),'http://purl.org/goodrelations/v1#')"> <xsl:value-of select="concat('gr:',substring-after(text(),'http://purl.org/goodrelations/v1#'))"/> </xsl:when> ... <xsl:when test="starts-with(text(),'http://www.w3.org/2000/01/rdf-schema#')"> <xsl:value-of select="concat('rdfs:',substring-after(text(),'http://www.w3.org/2000/01/rdf-schema#'))"/> </xsl:when>
次の例では、先頭のhttp://localhost/
または先頭のhttp://127.0.0.1/
を切り捨てるロジックを実装します。
<xsl:when test="starts-with(text(),'http://localhost/')"> <xsl:value-of select="substring-after(text(),'http://localhost/')"/> </xsl:when> <xsl:when test="starts-with(text(),'http://127.0.0.1/')"> <xsl:value-of select="substring-after(text(),'http://127.0.0.1/')"/> </xsl:when>
親トピック: SPARQL GatewayとRDFデータ
7.17.5 SPARQL GatewayのJava APIの使用
Webインタフェースに加え、SPARQL Gateway管理サービスには、SPARQL問合せと関連するXSL変換を管理するための便利なJavaアプリケーション・プログラミング・インタフェース(API)があります。Java APIは、RDF Graph support for Apache Jenaライブラリsdordfclient.jar
に含まれます。
Java APIリファレンス情報は、SPARQL Gatewayの.zipファイルに含まれるjavadoc_sparqlgateway.zip
ファイルで入手できます(未入手の場合、RDF Graph Support for Apache Jena .zipファイルのダウンロードを参照してください)。
このAPIのメイン・エントリ・ポイントはoracle.spatial.rdf.client.jena.SGDBHandler
クラス(SPARQL Gatewayデータベース・ハンドラ)で、問合せと変換を管理するために次のような静的メソッドを提供します。
-
deleteSparqlQuery(Connection, int)
-
deleteXslt(Connection, int)
-
insertSparqlQuery(Connection, int, String, String, boolean)
-
insertXslt(Connection, int, String, String, boolean)
-
getSparqlQuery(Connection, int, StringBuilder, StringBuilder)
-
getXslt(Connection, int, StringBuilder, StringBuilder)
これらのメソッドは、Oracle Databaseインスタンスに格納されているSPARQL Gateway関連の表のエントリを操作し、取得します。これらのメソッドを使用するには、必要な関連表がすでに存在している必要があります。表が存在しない場合は、SPARQL GatewayをWebサーバーにデプロイし、次の形式でURLにアクセスします。
http://<host>:<port>/sparqlgateway/sg?
<host>はWebサーバーのホスト名で、<port>はWebサーバーのリスニング・ポートです。表がまだ存在しない場合、このURLにアクセスすると、必要な表が自動的に作成されます。
Java APIを介して行われた変更は、管理Webインタフェースを介して行われた変更と同様に、SPARQL GatewayのWebサービスに影響を及ぼします。これにより、最も都合のよいインタフェースを使用して柔軟に問合せと変換を管理できます。
Java APIにより提供される挿入メソッドでは、表に格納されている既存の問合せや変換を置き換えることができない点に注意してください。既存の問合せまたは変換を置換しようとすると失敗します。問合せまたは変換を置き換えるには、削除メソッドの1つを使用して表にある既存のエントリを削除した後に、挿入メソッドの1つを使用して新しい問合せまたは変換を挿入する必要があります。
次の例に、Java APIを使用して一般的な管理タスクを実行する方法を示します。この例では、SPARQL Gatewayの基盤である、基礎となるOracle Databaseインスタンスへの接続がすでに確立されていることを前提としています。
例7-33 SPARQL問合せとXSL変換の格納
例7-33では、SPARQL Gatewayを使用したデータベースに、問合せとXSL変換を追加します。問合せと変換が追加された後、他のプログラムでは、リクエストURLで適切な問合せID (qid
)とXSL変換ID (xid
)を指定することで、ゲートウェイを介して問合せと変換を使用することができます。
なお、例7-33では、問合せと変換の両方が挿入されていますが、問合せと変換には必ずしも関連はなく、SPARQL Gatewayにアクセスするときに同時に使用される必要もありません。SPARQL Gatewayにリクエストを送信するときは、データベースの任意の問合せをデータベースの任意の変換とともに使用することができます。
String query = "PREFIX ... SELECT ..."; // full SPARQL query text String xslt = "<?xml ...> ..."; // full XSLT transformation text String queryDesc = "Conference attendee information"; // description of SPARQL query String xsltDesc = "BIEE table widget transformation"; // description of XSLT transformation int queryId = queryIdCounter++; // assign a unique ID to this query int xsltId = xsltIdCounter++; // assign a unique ID to this transformation // Inserting a query or transformation will fail if the table already contains // an entry with the same ID. Setting this boolean to true will ignore these // exceptions (but the table will remain unchanged). Here we specify that we // want an exception thrown if we encounter a duplicate ID. boolean ignoreDupException = false; // add the query try { // Delete query if one already exists with this ID (this will not throw an // error if no such entry exists) SGDBHandler.deleteSparqlQuery( connection, queryId ); SGDBHandler.insertSparqlQuery( connection, queryId, query, queryDesc, ignoreDupException ); } catch( SQLException sqle ) { // Handle exception } catch( QueryException qe ) { // Handle query syntax exception } // add the XSLT try { // Delete xslt if one already exists with this ID (this will not throw an // error if no such entry exists) SGDBHandler.deleteXslt( connection, xsltId ); SGDBHandler.insertXslt( connection, xsltId, xslt, xsltDesc, ignoreDupException ); } catch( SQLException sqle ) { // Handle database exception } catch( TransformerConfigurationException tce ) { // Handle XSLT syntax exception }
例7-34 問合せの変更
例7-34では、データベースから既存の問合せを取得し、それを変更した後、更新された問合せを再度データベースに格納します。これらのステップでは、問合せの編集と変更の保存をシミュレートします。(問合せが存在しない場合は、例外がスローされます。)
StringBuilder query; StringBuilder description; // Populate these with the query text and description from the database query = new StringBuilder( ); description = new StringBuilder( ); // Get the query from the database try { SGDBHandler.getSparqlQuery( connection, queryId, query, description ); } catch( SQLException sqle ) { // Handle exception // NOTE: exception is thrown if query with specified ID does not exist } // The query and description should be populated now // Modify the query String updatedQuery = query.toString( ).replaceAll("invite", "attendee"); // Insert the query back into the database boolean ignoreDup = false; try { // First must delete the old query SGDBHandler.deleteSparqlQuery( connection, queryId ); // Now we can add SGDBHandler.insertSparqlQuery( connection, queryId, updatedQuery, description.toString( ), ignoreDup ); } catch( SQLException sqle ) { // Handle exception } catch( QueryException qe ) { // Handle query syntax exception }
例7-35 XSL変換の取得および出力
例7-35では、既存のXSL変換を取得し、標準出力に出力します。(変換が存在しない場合は、例外がスローされます。)
StringBuilder xslt; StringBuilder description; // Populate these with the XSLT text and description from the database xslt = new StringBuilder( ); description = new StringBuilder( ); try { SGDBHandler.getXslt( connection, xsltId, xslt, description ); } catch( SQLException sqle ) { // Handle exception // NOTE: exception is thrown if transformation with specified ID does not exist } // Print it to standard output System.out.printf( "XSLT description: %s\n", description.toString( ) ); System.out.printf( "XSLT body:\n%s\n", xslt.toString( ) );
親トピック: SPARQL GatewayとRDFデータ
7.17.6 SPARQL GatewayのグラフィカルなWebインタフェースの使用
SPARQL Gatewayでは、問合せのテスト、RDFデータのナビゲート、SPQARQL問合せとXSLTファイルの管理に役立つブラウザベースのインタフェースがいくつか用意されています。
親トピック: SPARQL GatewayとRDFデータ
7.17.6.1 メイン・ページ(index.html)
http://
<host>:<port>
/sparqlgateway/index.html
は、SPARQL問合せを実行し、さらにdefault.xsltの変換を応答に対して適用するための、単純なインタフェースです。図7-2に、このインタフェースでの問合せの実行を示します。
「SPARQL Endpoint」を入力または選択し、「SPARQL SELECT Query Body」を指定して「Submit Query」を押します。
たとえばSPARQLエンドポイントにhttp://dbpedia.org/sparql
を指定し、図7-2のSPARQL問合せ本体を使用すると、そのレスポンスは図7-3と同様です。この図のXML出力には、デフォルトの変換(default.xslt
)が適用されています。
7.17.6.2 ナビゲーションとブラウジングのページ(browse.jsp)
http://<host>:<port>/sparqlgateway/browse.jsp
provides navigation and browsing capabilities for RDF data.標準に準拠したすべてのSPARQLエンドポイントに対して使用できます。図7-4に、このインタフェースでの問合せの実行を示します。
図7-4 グラフィカル・インタフェースによるナビゲーションとブラウジングのページ(browse.jsp)

「図7-4 グラフィカル・インタフェースによるナビゲーションとブラウジングのページ(browse.jsp)」の説明
「SPARQL Endpoint」を入力または選択し、「SPARQL SELECT Query Body」を指定し、オプションで「Timeout (ms)」値(ミリ秒)と「Best Effort」オプションを指定して、「Submit Query」を押します。
図7-5に示すとおり、SPARQLレスポンスが解析され、表形式で示されます。
図7-5で、URIはナビゲーションできるようにクリック可能であり、ユーザーがURI上でカーソルを移動すると、読みやすいように短縮されていたURIのツールチップ(図のhttp://purl.org.dc/elements/1.1/title
にdc:title
のツールチップが表示されています)が表示されます。
図7-5
に示されている出力のURIhttp://example.org/book/book5をクリックすると、新しいSPARQL問合せが自動的に生成され、実行されます。図7-6に示すとおり、この生成されたSPARQL問合せには、この特定のURIを、主語、述語および目的語として使用する、3つの問合せパターンがあります。このような問合せによって、このURIがどのように使用されるか、およびデータセットの他のリソースとどのように関連するかを理解することができます。
問合せに多数の一致があると、その結果がページに分類され、どのページでもクリックすることができます。デフォルトでは50個の結果が1ページに表示されます。ブラウジングとナビゲーションのページ(browse.jsp
)でのレスポンスを、ページ当たり50行よりも多く(あるいは少なく)表示するには、URLに&resultsPerPage
パラメータを指定します。たとえばページ当たり100行を表示できるようにするには、URLに次を含めます。
&resultsPerPage=100
7.17.6.3 XSLTの管理ページ(xslt.jsp)
http://
<host>:<port>
/sparqlgateway/admin/xslt.jsp
は、単純なXSLT管理インタフェースです。XSLT ID(整数)を入力して「XSLTの取得」をクリックすると、説明とXSLT本体を取得できます。XSLT本体のテキストを変更した後に「XSLTの保存」をクリックすることで、その変更を保存できます。使用可能なXSLT定義のナビゲートに役立つプレビューアがあります。
図7-7は、XSLTの管理ページを示しています。
7.17.6.4 SPARQLの管理ページ(sparql.jsp)
http://
<host>:<port>
/sparqlgateway/admin/xslt.jsp
は、単純なSPARQL管理インタフェースです。SPARQL ID(整数)を入力して「SPARQLの取得」をクリックすると、説明とSPARQL本体を取得できます。SPARQL本体のテキストを変更した後に「SPARQLの保存」をクリックすることで、その変更を保存できます。使用可能なSPARQL問合せのナビゲートに役立つプレビューアがあります。
図7-8は、SPARQLの管理ページを示しています。
7.17.7 OBIEEへのXMLデータソースとしてのSPARQL Gatewayの使用
この項では、SPARQL Gatewayをブリッジとして使用してOBIEEとRDFを統合することによって、Oracle Business Intelligence Enterprise Edition (OBIEE)で使用するXMLデータ・ソースを作成する方法について説明します。(具体的なステップおよび図は、Oracle BI管理ツールのバージョン11.1.1.3.0.100806.0408.000によるものです。)
親トピック: SPARQL GatewayとRDFデータ