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

ソリューション修飾子

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

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

6.1.11 ソリューション修飾子

ソリューション修飾子は、SELECTクエリの結果セットを変更します。このセクションで は、次のソリューション修飾子を使用して、クエリから返される内容を変更する方法に ついて説明します。

DISTINCTキーワード

LIMITキーワード

ORDER BYキーワード

OFFSETキーワード

サブクエリ

射影式

注:

DISTINCT以外の修飾子は、WHERE節の後に記述します。

6.1.11.1 DISTINCT

キーワード

結果セットから重複した結果を取り除くときは、DISTINCTキーワードを使用します。

次に例を示します。

SELECT DISTINCT ?p WHERE {?s ?p ?o}

このクエリは、persondataデータセット内のすべてのトリプルについて、すべての述語 を

1

回だけ返します。

6.1.11.2 LIMIT

キーワード

表示される

SPARQL

クエリの結果をさらに制限する場合は、LIMITキーワードを使用し ます。例えば、

DBpedia

データセットには、次のクエリにマッチする数千もの著者が含 まれる可能性があります。

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

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

SELECT ?x ?fn ?ln

WHERE{?x dc:description "Author"@en ; foaf:name ?fn ;

foaf:surname ?ln.}

表示するマッチング結果の数を指定するには、WHERE節の波括弧の後にLIMITキーワー ドと整数(変数は不可)を追加します。

次に例を示します。

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

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

SELECT ?x ?fn ?ln

WHERE{?x dc:description "Author"@en ; foaf:name ?fn ;

foaf:surname ?ln.}

LIMIT 10

クエリの結果は、最初の

10

件のマッチに制限されます。

6.1.11.3 ORDER BY

キーワード

クエリ結果をソートする基準となる

1

つあるいは複数の変数の値を指定する場合は、

ORDER BY節を使用します。「SPARQL 1.1 Query Language」勧告で説明されているように、

バインドされていない変数、空白ノード、IRI、または

RDF

リテラルを順序付けするこ ともできます。

http://www.w3.org/TR/sparql11-query/#modOrderBy

デフォルトの順序は昇順です。

次に例を示します。

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

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

SELECT ?x ?fn ?ln

WHERE{?x dc:description "Author" ; foaf:name ?fn ;

foaf:surname ?ln.}

ORDER BY ?ln ?fn LIMIT 10

結果は、まず著者の姓(?ln)の順序、次に著者の名(?fn)の順序で並べられます。

結果の順序を降順に変更するには、DESCキーワードを使用し、返される値の変数を括弧 内に配置します。

次に例を示します。

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

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

SELECT ?x ?fn ?ln

WHERE{?x dc:description "Author"@en ; foaf:name ?fn ;

foaf:surname ?ln .}

ORDER BY DESC (?ln) LIMIT 10

6.1.11.4 OFFSET

キーワード

OFFSET修飾子は、ページネーション(マッチしたクエリ結果を指定された件数だけス

キップして残りの結果を返す)を行う場合に使用します。このキーワードをLIMITおよ

びORDER BYキーワードと組み合わせて使用することで、データセットからデータのさ

まざまな部分を取得できます。例えば、さまざまな開始箇所から結果のページを作成で

次の例では、Authorを昇順でクエリし、その結果のリストを位置

8

から開始した最初 の

10

件に制限します。

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

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

SELECT ?x ?fn ?ln

WHERE{?x dc:description "Author"@en ; foaf:name ?fn ;

foaf:surname ?ln.}

ORDER BY ?x OFFSET 8 LIMIT 10

結果が返され、最初の

8

件のマッチはスキップされます。

6.1.11.5

サブクエリ

サブクエリを使用すると、複数のクエリの結果を結合できます。また、1つあるいは複数 のクエリを別のクエリの中で入れ子にできます。サブクエリは、それぞれが波括弧の対 で囲まれています。通常、サブクエリは、ソリューション修飾子と併用します。次の例 では、誕生地が

London

である

Politician

をクエリし、結果を最初の

10

件に制限します。

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

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

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

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

SELECT ?name ?location ?date WHERE

{ ?person dc:description "Politician"@en . {SELECT ?location

WHERE{?person onto:birthPlace db:London .

?person onto:birthPlace ?location } }

{SELECT ?date

WHERE{?person onto:birthDate ?date . } }

{SELECT ?name

WHERE{ ?person foaf:name ?name } }

} LIMIT 10

6.1.11.6

射影式

SPARQL

のSELECTクエリ内で射影式を使用すると、バインドされた変数だけではなく、

任意の

SPARQL

式を射影できます。これにより、クエリ内で新しい値を作成できます。

このタイプのクエリでは、クエリの結果セットのカラムとして、変数、定数

IRI、定数

リテラル、関数呼び出し、またはその他の式から生成される値をSELECTで使用します。

注:

関数には、

SPARQL

のビルトイン関数と実装でサポートされている拡張 関数の両方を含めることができます。

射影式は、丸括弧で囲む必要があります。また、ASキーワードを使用してエイリアス を指定する必要があります。シンタックスは

(

expression AS ?var

)

です。

次に例を示します。

PREFIX ex: <http://example.org/>

SELECT ?Item (?price * ?qty AS ?total_price) WHERE {?Item ex:price ?price}

このクエリは、

RDF

データセットに含まれるグラフ内では発生していない?total_price

の値を返します。

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