6.1 SPARQL を使用したトリプルのクエリ
6.1.9 結果節
dc:date ?date .
GRAPH ?g { ?person foaf:name ?name ; foaf:mbox ?mbox }
}
注:
SPARQL
クエリでGRAPHコンストラクトを使用する場合は、コレクションレキシコンをオンにする必要があります。コレクションレキシコンは、
データベース設定ページまたは
Admin
画面からオンにできます。明示的な
IRI
を含むGRAPH節(例えばGRAPH <....uri...> { ...graph pattern...})は、GRAPH
節で指定されたIRI
を使用してデータセットにマッチします。次に例を示します。
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT *
WHERE{ ?s foaf:givenName ?fn .
?s foaf:surname ?ln . }
注:
単一のトリプルパターンでは、末尾のピリオドはオプションです。また複 数のトリプルパターンを持つクエリパターンでは、最後のトリプルの末尾 のピリオドはオプションです。
この例では、SELECTクエリは主語変数(?s)の
IRI
と、データセット内のリソースの名(?fn)および姓(?ln)で構成されたシーケンスを返します。
SPARQL
のSELECTクエリの結果は、XMLまたはJSON
でシリアライズされるか、別の関数にマップとして渡されます。SELECTクエリの結果は、必ずしもトリプルになるとは 限りません。
6.1.9.2 CONSTRUCT
クエリSPARQL
のCONSTRUCTクエリを使用すると、既存のトリプルから新しいトリプルを作成できます。
CONSTRUCT
クエリを実行すると、結果としてsem:triple値のシーケンス がトリプルとして返されます。次の例は、データベース内の既存のトリプルから
Albert Einstein
に関するトリプルを作 成します。PREFIX foaf: <http://xmlns.com/foaf/0.1/>
CONSTRUCT
{?person ?p ?o .}
WHERE {?person foaf:givenName "Albert"@en ; foaf:surname "Einstein"@en ;
?p ?o .}
注:
「
@en
」言語タグは、それが英語の単語であり、他の言語タグとは異なる マッチになることを意味します。CONSTRUCTクエリは、クエリパターン内の変数から作成された
RDF
グラフを返します。次に示すトリプルは、
Albert Einstein
について、データセット内の既存のトリプルから 作成されたものです。6.1.9.3 DESCRIBE
クエリSPARQL
のDESCRIBEクエリは、sem:triple値のシーケンスを返します。DESCRIBEクエリの結果は、1つあるいは複数の指定されたリソースについて記述された
RDF
グラフを 返します。結果は、非決定的です。つまり、返されるRDF
サブグラフの実際の構造は、クエリプロセッサが決定します。
次のクエリは、「
Conservationists
」と説明されている人々のリストを検索します。PREFIX dc: <http://purl.org/dc/elements/1.1/>
DESCRIBE ?person
WHERE {?person dc:description "Conservationist"@en .}
注:
「@en」言語タグは、それが英語の単語であり、他の言語タグとは異なる マッチになることを意味します。
クエリパターンから返される
IRI
を記述するサブグラフは次のようになります。6.1.9.4 ASK
クエリSPARQL
のASKクエリは、単一のxs:boolean値を返します。クエリパターンがデータセット内で何らかのマッチを持つ場合、ASK節はtrueを返します。パターンマッチがな い場合は、falseを返します。
例えば、ケネディ家の
2
人、キャロリン・ベセット・ケネディとユーニス・ケネディ・シュライバーに関して、persondataデータセットに次のファクトがあるとします。
•
スペシャルオリンピックスの前身となるイベントの創設者であり、ジョン・F
・ ケネディの妹であるユーニス・ケネディ・シュライバーは、1921 年7 月 10 日に
誕生した。•
広報担当者であり、JFKジュニアの妻であるキャロリン・ベセット・ケネディ は、1966
年1
月7
日に誕生した。次のクエリは、キャロリンがユーニスの後に誕生したかどうかを尋ねています。
PREFIX db: <http://dbpedia.org/resource/>
PREFIX onto: <http://dbpedia.org/ontology/>
ASK {
db:Carolyn_Bessette-Kennedy onto:birthDate ?by . db:Eunice_Kennedy_Shriver onto:birthDate ?bd . FILTER (?by>?bd).
}
=>
true
応答はtrueです。
注: