Webアプリ開発エンジニアのための技術情報サイト「テックスコア」

3. 問い合わせ言語 SPARQL

セマンティック Web 実現を目指す理由のひとつとしてよく例に出されるのが、検索の精度の問題です。これはコンピュータが Web ページの内容を理解していないために起こるもので、これに対する解決策として考えられたのが RDF によるメタデータです。そのメタデータを検索するときに利用されるのが、ここで紹介する問い合わせ言語です。

SPARQL

SPARQLは、2004年10月12日に RDF DAWG(Data Access Working Group) により W3C のワーキングドラフトとして発表されました。SPARQL(「スパークル」と発音します) はもともと Simple Protocol And RDF Query Language の略でしたが、現在は SPARQL Protocol and RDF Query Language の略とされています。ここでは SPARQL の概要を示します。

SPARQLでは、次の4種類のクエリが定義されています。

Query Form 説明
SELECT 条件に合うクエリ変数の一部、またはすべてを返します。
CONSTRUCT 条件に合うRDFグラフを返します。
DESCRIBE 条件に合うリソースについて記述しているRDFグラフを返します。
ASK 条件に合う結果があるかないかを返します。

ここでは SELECT を使った例を示します。

例えば、RDF文書("http://tech.4dd.co.jp/yojigen/homePage/" で参照されるとする。)の中に、

"http://tech.4dd.co.jp"の作者(dc:creator)は四次元太郎(Taro,Yojigen)です。

という記述があるとして、「RDF文書の中から、"http://tech.4dd.co.jp/yojigen/homePage/" の作者は誰かを見つけ出す」ためのクエリを記述します。

例1
PREFIX dc:  <http://purl.org/dc/elements/1.1/>
PREFIX 4dd: <http://tech.4dd.co.jp/yojigen/homePage/>
SELECT ?creator
WHERE  ( "http://tech.4dd.co.jp/yojigen/homePage/" dc:creator ?creator )

SELECT クエリに対する結果は、クエリで指定した変数の値の組み合わせの集合として返されます。値としては、RDFデータモデルに出現するあらゆる要素を取りえます。クエリ変数に対するひとつの値の組み合わせをバインディングと呼びます。上記のクエリに対する問い合わせ結果を表形式で表現すると、以下のようになります。この表の1行がひとつのバインディングです。

creator
Taro,Yojigen

SPARQL Variable Binding Results XML Format

SPARQLに関する2つ目のワーキングドラフトとして2004年12月21日、「SPARQL Variable Binding Results XML Format」が発表されました。これは、SPARQLのクエリによって得られた結果セットを、アプリケーションで利用できるようXML形式で表現するためのフォーマットを定義したものです。

問い合わせ結果のXML 表現の例を以下に示します。

例2
<?xml version="1.0" ?>
   <sparql
       xmls=http://www.w3.org/2001/sw/DataAccess/rf1/result>
          <head>
              <variable name="x" />
              <variable name="homePage" />
              <variable name="name" />
              <variable name="mailAddress" />
              <variable name="age" />
          </head>
          <results>
              <result>
                <x bnodeid="hum1" />
                <homePage uri="http://tech.4dd.co.jp" />
                <name>Taro,Yojigen</name>
                <mailAddress uri="mailto:yojigen@4dd.co.jp" />
                <age datatype="http://www.w3.org/2001/XMLSchema#integer">32</age>
              </result>
          </results>
   </sparql>

sparql 要素はルート要素であり、その中に head 要素と results 要素があります。head 要素はクエリ変数の名前を表しています。results要素は問い合わせ結果のバインディングの集合を表し、複数の result 要素を内包します。result要素はひとつのバインディングを表します。result 要素では、head要素で指定したクエリ変数と同じ名前をもつ要素で値が表現されます。値の表現方法は、その値の種類によりいくつか異なるものがあります。



前のページへ TECHSCOREのTOPページへ  
techscore(トップページへ)
TECHSCORE書店
TECHSCOREトップページJavaSQLXMLリッチクライアントモデリングセマンティックWebその他技術Tuigwaa