RDFデータに対するSPARQL Gatewayの使用

SPARQL問合せとXSL変換の格納
タイムアウト値の指定
ベスト・エフォート問合せ実行の指定
text/xml以外のコンテンツ・タイプの指定

アプリケーションがSPARQL Gatewayと対話する主なインタフェースは、次の形式のURLです。

http://host:port/sparqlgateway/sg?<SPARQL_ENDPOINT>
&<SPARQL_QUERY>&<XSLT>

上の形式の意味は次のとおりです。

関連項目:

SPARQL問合せとXSL変換の格納

アプリケーションがあまり長いURLを受け入れられない場合には、「RDFデータに対するSPARQL Gatewayの使用」で説明されているURL形式のうち<SPARQL_QUERY> and <XSLT>の部分で、SPARQL問合せとXSL変換の場所を指定できます。このとき、次のいずれかの方法を使用します。

  • 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アプリケーションからそのディレクトリにアクセスできるようにする方法。

    デフォルトでは、このディレクトリは/tmpに設定されており、次の例のように<init-param>設定の中に指定されています。

    <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サイトからアクセスできるようにします。

    デフォルトでは、このディレクトリはhttp://127.0.0.1/queries/に設定されており、次の例のように<init-param>設定の中に指定されています。

    <init-param>
    <param-name>sparql_gateway_repository_url</param-name>
    </param-name>http://127.0.0.1/queries/</param-name>
    </init-param> 

    SPARQL Gatewayをデプロイする前にこのディレクトリをカスタマイズしてください。Webサイト設定を変更するには、</param-name>タグと</param-name>タグの間のテキストを編集します。

    次の例では、sparql_gateway_repository_url<init-param>要素で指定されているURLにあるSPARQL問合せファイルとXSL変換ファイルを指定しています。

    uq=qb1.sparql
    ux=myxslt1.xslt 

    内部的には、SPARQL Gatewayは適切な完全URLを計算し、その内容をフェッチして問合せの実行を開始してから、XSL変換を問合せ応答のXMLに適用します。

OracleSGDSデータ・ソースの構成

SPARQL GatewayのSPARQL問合せとXSL変換の格納とアクセスにOracleデータベースを使用する場合は、OracleSGDSという名前のデータ・ソースを構成する必要があります。

このデータ・ソースを作成するには、「Oracle WebLogic Serverの使用方法」の説明に従いますが、データ・ソース名としてOracleSemDSではなくOracleSGDSを指定します。

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

タイムアウト値の指定

「RDFデータに対するSPARQL Gatewayの使用」で説明しているURL形式を使用して送信する問合せの実行時間が長くなりそうな場合には、タイムアウト値をミリ秒単位で指定して実行時間を制限できます。たとえば次の例では、SPARQL Gatewayから開始されたSPARQL問合せの実行が、1000ミリ秒(1秒)後に終了するようにURL形式とタイムアウト値を指定しています。

http://host:port/sparqlgateway/sg?<SPARQL_ENDPOINT>&<
SPARQL_QUERY>&<XSLT>&t=1000

タイムアウト発生までに問合せが終了しない場合には、SPARQL Gatewayによって空のSPARQL応答が作成されます。

SPARQL GatewayがHTTP接続レベルで問合せの実行をタイムアウトしても、サーバー側では問合せの実行が続く場合もあります。実際の動作はベンダーによって異なります。

ベスト・エフォート問合せ実行の指定

注意

ベスト・エフォート問合せ実行を指定できるのは、タイムアウト値(前項の「タイムアウト値の指定」を参照)も指定している場合のみです。

「RDFデータに対する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_maxroundssparql_gateway_besteffort_maxthreadsです。デフォルト定義は次のとおりです。

<init-param>
<param-name>sparql_gateway_besteffort_maxrounds</param-name>
</param-name>10</param-name>
</init-param> 
<init-param>
<param-name>sparql_gateway_besteffort_maxthreads</param-name>
</param-name>3</param-name>
</init-param> 

SPARQL SELECT問合せがベスト・エフォート方式で実行されると、一連の問合せが実行され、SPARQL問合せ本体のLIMIT値設定が大きくなります。(根本的な概念としては、LIMIT設定を小さくするほどSPARQL問合せの実行は速くなるという事実に基づいています。)SPARQL Gatewayは、LIMIT 1設定で問合せの実行を開始します。この問合せは、タイムアウトに達する前に完了するのが理想的です。そうなると仮定すると、次の問合せではLIMIT設定が大きくなり、後続の問合せでは制限が高くなります。問合せ実行の最大数を制御するのは、sparql_gateway_besteffort_maxroundsパラメータです。

一連の問合せを並行して実行できる場合には、sparql_gateway_besteffort_maxthreadsパラメータで並列度を制御します。

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エンコードする必要があります。