6.1 SPARQL を使用したトリプルのクエリ
6.1.8 結果節
6.1.7.3 GRAPHキーワード
GRAPHキーワードは、データセット内の名前付きグラフに対するクエリの一部を評価
するようにクエリエンジンに対して指示します。GRAPH節で使用される変数は、別の
GRAPH節内、またはデータセットのデフォルトグラフにマッチするグラフパターンで
使用することもできます。
例えば以下のようになります。
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?name ?mbox ?date
WHERE { ?g dc:publisher ?name ; dc:date ?date .
GRAPH ?g { ?person foaf:name ?name ; foaf:mbox ?mbox }
}
注: SPARQLクエリでGRAPHコンストラクトを使用する場合は、コレクショ
ンレキシコンをオンにする必要があります。コレクションレキシコンは、
データベース設定ページまたは管理画面からオンにできます。
明示的なIRIを含むGRAPH節(例えばGRAPH <....uri...> { ...graph pattern...})は、GRAPH節で指定されたIRIを使用してデータセットにマッチし ます。
クエリパターンで識別されるすべての変数を選択する場合の省略表記として、SPARQL
のSELECTではアスタリスクのワイルドカード記号(*)を使用できます。
例えば以下のようになります。
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.8.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 .}
CONSTRUCTクエリは、クエリパターン内の変数から作成されたRDFグラフを返します。
次に示すトリプルは、Albert Einsteinについて、データセット内の既存のトリプルから 作成されたものです。
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Albert_Einstein>
<http://dbpedia.org/ontology/birthPlace>
<http://dbpedia.org/resource/Baden-Württemberg> .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Albert_Einstein>
<http://dbpedia.org/ontology/birthPlace>
<http://dbpedia.org/resource/German_Empire> .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Albert_Einstein>
<http://dbpedia.org/ontology/deathPlace>
<http://dbpedia.org/resource/Princeton,_New_Jersey> .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Albert_Einstein>
<http://dbpedia.org/ontology/birthPlace>
<http://dbpedia.org/resource/Ulm> .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Albert_Einstein>
<http://dbpedia.org/ontology/deathPlace>
<http://dbpedia.org/resource/United_States> .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Albert_Einstein>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://xmlns.com/foaf/0.1/Person> .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Albert_Einstein>
<http://xmlns.com/foaf/0.1/givenName> "Albert"@en .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Albert_Einstein>
<http://xmlns.com/foaf/0.1/name> "Albert Einstein"@en .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Albert_Einstein>
<http://xmlns.com/foaf/0.1/surname> "Einstein"@en .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Albert_Einstein>
<http://purl.org/dc/elements/1.1/description>
"Physicist"@en .
これらのトリプルは、インメモリで構築され、データベースには追加されません。
注: 「@en」言語タグは、それが英語の単語であり、他の言語タグとは異なる マッチになることを意味します。
6.1.8.3 DESCRIBEクエリ
SPARQLのDESCRIBEクエリは、sem:triple値のシーケンスを返します。
DESCRIBEクエリの結果は、1つあるいは複数の指定されたリソースについて記述され
たRDFグラフを返します。W3C規格では、詳細は実装依存とされています。
MarkLogicでは、識別されたIRIの「Concise Bounded Desciption」を返します。
これには、主語としてそのIRIを持つすべてのトリプル、および(目的語として空白 ノードを持つトリプルそれぞれについて)主語としてそれらの空白ノードを持つすべて のトリプルが含まれます。この実装では、具体化されたステートメントは提供されない ため、最大で9999個のトリプルを返します。
例えば、次のクエリは「Pascal Bedrossian」を含んでいるトリプルを探します。
DESCRIBE <http://dbpedia.org/resource/Pascal_Bedrossian>
DESCRIBEクエリで探されたトリプルは、Turtle形式で返されます。形式として、
JSONやテキストを選択することもできます。
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Pascal_Bedrossian>
<http://dbpedia.org/ontology/birthPlace>
<http://dbpedia.org/resource/France> .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Pascal_Bedrossian>
<http://dbpedia.org/ontology/birthPlace>
<http://dbpedia.org/resource/Marseille> .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Pascal_Bedrossian>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://xmlns.com/foaf/0.1/Person> .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Pascal_Bedrossian>
<http://xmlns.com/foaf/0.1/surname> "Bedrossian"@en .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Pascal_Bedrossian>
<http://xmlns.com/foaf/0.1/givenName> "Pascal"@en .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Pascal_Bedrossian>
<http://xmlns.com/foaf/0.1/name> "Pascal Bedrossian"@en .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Pascal_Bedrossian>
<http://purl.org/dc/elements/1.1/description>
"footballer"@en .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
<http://dbpedia.org/resource/Pascal_Bedrossian>
<http://dbpedia.org/ontology/birthDate> "1974-11-28"
^^xs:date .
注: サーバーでは、DESCRIBE節に9999個までというトリプル数制限があり ます。つまり、クエリに1つまたは複数のIRIを持つDESCRIBE節が含 まれ、これらのIRIを合計してトリプルが9999個を超える場合、トリプ ルが結果から切り詰められます。切り詰められた場合でも、サーバーから の警告やメッセージは表示されません。
6.1.8.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/>
{
db:Carolyn_Bessette-Kennedy onto:birthDate ?by . db:Eunice_Kennedy_Shriver onto:birthDate ?bd . FILTER (?by>?bd).
}
=>
true 応答はtrueです。
注: ASKクエリは、結果が少なくとも1つあるかどうかを確認します。