• 検索結果がありません。

クエリパターン

ドキュメント内 Semantics Developer’s Guide (ページ 80-84)

6.1 SPARQL を使用したトリプルのクエリ

6.1.7 クエリパターン

SPARQL

クエリの中核は、グラフパターンと呼ばれるトリプルパターンの集まりです。

トリプルパターンは

RDF

トリプルに似ていますが、主語、述語、および目的語の各 ノードが変数である点が異なります。

グラフパターンは、RDFデータのサブグラフの

RDF

タームがこれらの変数と代替可能 な場合に、そのサブグラフとマッチします。また、その結果はサブグラフと同等の

RDF

グラフです。

グラフパターンは、波括弧({ })内に含まれる

1

つあるいは複数のトリプルパターン です。この章では、クエリパターンに対応する次のタイプのグラフパターンについて説 明します。

基本グラフパターン:トリプルパターンの集まりは、トリプルストア内のトリプ ルにマッチする必要があります。

グループグラフパターン:グラフパターンの集まりは、同じ変数置換を使用して すべてマッチする必要があります。

オプショングラフパターン:追加のパターンによってソリューションを拡張でき ます。

和集合グラフパターン:考えられる

2

つ以上のパターンについて試行されます。

グラフグラフパターン:パターンは名前付きグラフにマッチされます。

SPARQL

変数は、疑問符(?)またはドル記号($)付きで表記されます。変数は、任意

の主語、述語、または目的語ノードにマッチさせたり、その位置の任意の値にマッチさ せたりするように配置できます。つまり、変数は

IRI

またはリテラル(文字列、ブール 型、日付など)にバインドできます。トリプルパターンは、トリプルストア内のトリプ ルにマッチするたびに、各変数ごとにバインディングを生成します。

この例は、基本グラフパターンを示したものです。変数がトリプルの主語(?s)と述語

(?p)にマッチし、目的語は「Paris」(パリ)です。このクエリは

2

つの部分で構成され ています。SELECT節はクエリ結果に含まれる内容を指定し、WHERE節はデータグラフに マッチさせる基本グラフパターンを提供します。

PREFIX db: <http://dbpedia.org/resource/>

PREFIX onto: <http://dbpedia.org/ontology/>

SELECT ?s ?p

WHERE {?s ?p db:Paris }

このクエリは、パリで誕生または死亡した、データセットに含まれるすべての人物を返 します。結果の数は、クエリの末尾に「

LIMIT 10

」を追加することで制限できます。詳 細については、「LIMITキーワード」(100ページ)を参照してください。

注:

変数は

1

回だけバインドできます。SELECT節の?sおよび?pは、WHERE節内 と同じ変数です。

クエリの結果には、目的語の位置に「

Paris

」がある(

birthPlace

および

deathPlace

につ いて)主語および述語の

IRI

が含まれます。

SPARQL

のSELECTクエリは、ソリューションを返します。ソリューションは、変数と 値のバインディングの集まりです。デフォルトでは、SELECTクエリの結果は

Auto

形式 で返されます。これは確認しやすいように整形されたビューです。出力表示は変更でき ます。詳細については、「クエリ結果オプションの指定」(76ページ)を参照してくだ さい。

前の例は、単一トリプルのパターンマッチ(基本グラフパターン)です。SPARQLで は、複数トリプルのパターンマッチングを使用してクエリすることもできます。

SPARQL

では、

Turtle

に似たシンタックスを使用してクエリパターンを表現します。そ

れぞれのトリプルパターンはピリオドで終わります。

SQL

クエリのAND節と同様に、クエリパターン内の各トリプルは完全にマッチする必要 があります。例えば、

Paris, Texas

(テキサス州にあるパリ)と

Paris, France

(フランス にあるパリ)のように、データセット内に別の国で見つかる可能性のある場所名がある とします。次の例は、フランスのパリで誕生し、「フットボール選手」(Footballer)と 説明されているすべてのリソースの

IRI

を返します。

PREFIX db: <http://dbpedia.org/resource/>

PREFIX onto: <http://dbpedia.org/ontology/>

PREFIX dc: <http://purl.org/dc/elements/1.1/>

SELECT ?s

WHERE {?s onto:birthPlace db:Paris .

?s onto:birthPlace db:France .

?s dc:description "Footballer"@en . }

上記のクエリパターンを記述する別の方法として、WHERE句でセミコロン(;)を使用し て、同じ主語を共有するトリプルパターンを区切る方法が挙げられます。

次に例を示します。

PREFIX db: <http://dbpedia.org/resource/>

PREFIX onto: <http://dbpedia.org/ontology/>

PREFIX dc: <http://purl.org/dc/elements/1.1/>

SELECT ?s

WHERE {?s onto:birthPlace db:Paris ; onto:birthPlace db:France ; dc:description "Footballer"@en . }

SPARQL

規格では、クエリのトリプルパターンの主語および目的語として空白ノードを

使用することが認められています。

次に例を示します。

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>

PREFIX foaf: <http://xmlns.com/foaf/0.1/>

PREFIX dc: <http://purl.org/dc/elements/1.1/>

SELECT ?desc

WHERE { _:p rdf:type foaf:Person ; dc:description ?desc . }

このクエリは、データセットのトリプルで定義されたとおりにリソースの役割または肩 書を返します。

注:

クエリされたグラフに空白ノードがある場合、結果では空白のノードの識 別子が返されることがあります。

ドキュメント内 Semantics Developer’s Guide (ページ 80-84)