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データの使用に関して、不確実性がある程度は効果的に排除されます。(「タイムアウト値の指定」「ベスト・エフォート型の問合せ実行の指定」を参照してください。)

7.17.2 SPARQL Gatewayのインストールおよび構成

SPARQL Gatewayをインストールして構成するには、次の主要なステップを実行します(それぞれの項を参照してください)。

  1. RDF Graph support for Apache Jena .zipファイルをダウンロードする(まだダウンロードしていない場合)

  2. WebLogic ServerでのSPARQL Gatewayのデプロイ

  3. 必要に応じてプロキシ設定を変更する

  4. 必要に応じてOracleSGDSデータソースを構成する

  5. 必要に応じてSparqlGatewayAdminGroupグループを追加し、構成する

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の使用」を参照)。

7.17.2.2 WebLogic ServerでのSPARQL Gatewayのデプロイ

Oracle WebLogic Serverで、次のようにSPARQL Gatewayをデプロイします。

  1. 次のとおり、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.xsltnoop.xsltおよびqb1.sparqlがあります。default.xsltファイルは、SPARQL問合せレスポンス(XML)を、主にOracleで利用可能な形式に変換するためのものです。

      (これらのファイルについては「SPARQL問合せとXSL変換の格納」を、SPARQL GatewayでのOBIEEの使用については「SPARQL GatewayのOBIEEへのXMLデータソースとしての使用」を参照してください。)

  2. Webブラウザを使用して、次の書式のURLに接続し、デプロイメントを確認します(Webアプリケーションはポート7001でデプロイされているとします)。

    http://<hostname>:7001/sparqlgateway

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スクリプトに指定することができます。

7.17.2.4 OracleSGDSデータ・ソースの構成(必要な場合)

SPARQL GatewayのSPARQL問合せとXSL変換を格納してアクセスするためにOracle Databaseを使用する場合は、OracleSGDSという名前のデータソースが使用可能である必要があります。

OracleSGDSデータソースが構成されていて使用可能な場合、SPARQL Gatewayサーブレットは、すべての必要な表と索引を初期化時に自動作成します。

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という名前のグループを追加し、新しいユーザーを作成するか、または既存ユーザーをこのグループに割り当てる必要があります。

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で使用可能にすることができます。

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

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接続レベルで問合せ実行をタイムアウトしても、サーバー側では問合せの実行が続く場合もあることに注意してください。実際の動作はベンダーによって異なります。

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パラメータで並列度を制御します。

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エンコードされている必要があることに注意します。

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>

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( ) );

7.17.6 SPARQL GatewayのグラフィカルなWebインタフェースの使用

SPARQL Gatewayでは、問合せのテスト、RDFデータのナビゲート、SPQARQL問合せとXSLTファイルの管理に役立つブラウザベースのインタフェースがいくつか用意されています。

7.17.6.1 メイン・ページ(index.html)

http://<host>:<port>/sparqlgateway/index.htmlは、SPARQL問合せを実行し、さらにdefault.xsltの変換を応答に対して適用するための、単純なインタフェースです。図7-2に、このインタフェースでの問合せの実行を示します。

図7-2 グラフィカル・インタフェースのメイン・ぺージ(index.html)

図7-2の説明が続きます
「図7-2 グラフィカル・インタフェースのメイン・ページ(index.html)」の説明

「SPARQL Endpoint」を入力または選択し、「SPARQL SELECT Query Body」を指定して「Submit Query」を押します。

たとえばSPARQLエンドポイントにhttp://dbpedia.org/sparqlを指定し、図7-2のSPARQL問合せ本体を使用すると、そのレスポンスは図7-3と同様です。この図のXML出力には、デフォルトの変換(default.xslt)が適用されています。

図7-3 SPARQL問合せメイン・ぺージのレスポンス

図7-3の説明が続きます
「図7-3 SPARQL問合せメイン・ページのレスポンス」の説明

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の説明が続きます
「図7-4 グラフィカル・インタフェースによるナビゲーションとブラウジングのページ(browse.jsp)」の説明

「SPARQL Endpoint」を入力または選択し、「SPARQL SELECT Query Body」を指定し、オプションで「Timeout (ms)」値(ミリ秒)と「Best Effort」オプションを指定して、「Submit Query」を押します。

図7-5に示すとおり、SPARQLレスポンスが解析され、表形式で示されます。

図7-5 ブラウジングとナビゲーションのページ: レスポンス

図7-5の説明が続きます
「図7-5 ブラウジングとナビゲーションのページ: レスポンス」の説明

図7-5で、URIはナビゲーションできるようにクリック可能であり、ユーザーがURI上でカーソルを移動すると、読みやすいように短縮されていたURIのツールチップ(図のhttp://purl.org.dc/elements/1.1/titledc:titleのツールチップが表示されています)が表示されます。

図7-5に示されている出力のURIhttp://example.org/book/book5をクリックすると、新しいSPARQL問合せが自動的に生成され、実行されます。図7-6に示すとおり、この生成されたSPARQL問合せには、この特定のURIを、主語、述語および目的語として使用する、3つの問合せパターンがあります。このような問合せによって、このURIがどのように使用されるか、およびデータセットの他のリソースとどのように関連するかを理解することができます。

図7-6 URIリンクのクリックによる問合せとレスポンス

図7-6の説明が続きます
「図7-6 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-7 XSLTの管理ページ

図7-7の説明が続きます
「図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-8 SPARQLの管理ページ

図7-8の説明が続きます
「図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によるものです。)

  1. Oracle BI管理ツールを起動します。
  2. 「ファイル」「メタデータのインポート」を順次クリックします。図7-9に示すとおり、メタデータのインポート・ウィザードの最初のページが表示されます。

    図7-9 「メタデータのインポート」 - 「データ・ソースの選択」

    図7-9の説明が続きます
    「図7-9 メタデータのインポート - データ・ソースの選択」の説明

    接続タイプ: XMLを選択します。

    URL: SPARQL Gateway(「セマンティク・データを使用したSPARQL Gatewayの使用」を参照)と対話するアプリケーションのURL。タイムアウト・オプションおよびベスト・エフォート型オプションを含めることもできます。

    「ユーザー名」フィールドと「パスワード」フィールドは無視します。

  3. 「次へ」をクリックします。図7-10に示すとおり、メタデータのインポート・ウィザードの2番目のページが表示されます。

    図7-10 「メタデータのインポート」 - 「メタデータ型の選択」

    図7-10の説明が続きます
    「図7-10 メタデータのインポート - メタデータ型の選択」の説明

    インポートする必要なメタデータ型を選択します。選択したタイプに「表」が含まれていることを確認します。

  4. 「次へ」をクリックします。図7-11に示すとおり、メタデータのインポート・ウィザードの3番目のページが表示されます。

    図7-11 「メタデータのインポート」 - 「メタデータ・オブジェクトの選択」

    図7-11の説明が続きます
    「図7-11 メタデータのインポート - メタデータ・オブジェクトの選択」の説明

    「データソース・ビュー」で、表アイコンを持つノードを展開し、(SPARQL SELECT構文に定義した投影変数からマップされた)列名を選択して右矢印(>)ボタンをクリックし、選択した列を「リポジトリ・ビュー」に移動します。

  5. 「終了」をクリックします。
  6. (SPARQL GatewayまたはRDFデータに固有ではない)通常のBIビジネス・モデルの作業およびマッピングと表現定義の作業について、残りのステップを実行します。