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

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つあるかどうかを確認します。