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

ターゲット RDF グラフ

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

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

6.1.8 ターゲット RDF グラフ

この例では、http://example.org/bob/foaf.rdfグラフ内のデータセットを検索するため に、SPARQLクエリが

XQuery

でラップされています。

xquery version "1.0-ml";

import module namespace sem = "http://marklogic.com/semantics"

at "/MarkLogic/semantics.xqy";

sem:sparql('

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

SELECT ?g ?name

WHERE {graph ?g { ?alum foaf:schoolHomepage <http://www.ucsb.edu/> .

?alum foaf:knows ?person .

?person foaf:name ?name } }

' ()

("default-graph-uri=http://example.org/bob/foaf.rdf”)

SPARQL

クエリのFROMはdefault-graph-uriと同様に機能し、FROM NAMEDは

named-graph-uriと同様に機能します。これら

2

つの節は、SPARQLクエリの一部として

同様に機能しますが、一方はクエリ内に記述する(クエリ内にラップする)のに対し、

他方はクエリの外側で指定します。

このセクションでは、次の内容を取り上げます。

FROMキーワード

FROM NAMEDキーワード

GRAPHキーワード

6.1.8.1 FROM

キーワード

SPARQL

クエリのFROM節では、クエリ対象データの取得場所や、クエリ対象グラフを

指定します。クエリの一部としてFROMを使用するには、FROM節に名前付きのグラフが 記述されている必要があります。MarkLogicではグラフ名はコレクションになってお

り、

Query Console

Explore

を使用して表示できます。

次の

SPARQL

クエリでは、FROMキーワードを使用してinfo:govtrack/peopleグラフ内の

データを検索します。

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

SELECT ?name

FROM <http://marklogic.com/semantics#info:govtrack/people/>

WHERE { ?x foaf:name ?name } LIMIT 10

GovTrack

データセットについては、「例を実行する準備」(

115

ページ)を参照してくだ

さい。

デフォルトグラフは、1つあるいは複数のFROM節内で参照されているグラフの

RDF

マージ(グラフの和集合)の結果です。各FROM節には、デフォルトグラフを形成する ために使用されているグラフを示す

IRI

が含まれます。

例えば、graph1および

graph2

がマージされて、デフォルトグラフを形成します。

FROM graph1 FROM graph2

注:

この意味で、デフォルトグラフはデフォルトコレクション

http://marklogic.com/semantics#default-graphと同じではありません。

次の例は、「

Alice

」が目的語の位置にあるすべてのトリプルを返す

SPARQL

SELECT クエリを示したものです。RDFデータセットには、単一のデフォルトグラフが含まれ、

名前付きグラフは含まれません。

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

SELECT ?s ?p ?o

FROM <http://example.org/foaf/alice>

WHERE {?s foaf:name "Alice";

?p ?o .}

注:

FROMキーワードは、WHERE節よりも前に配置する必要があります。FROM

キーワードをWHERE節よりも後ろに配置すると、シンタックスエラーが発 生します。

6.1.8.2 FROM NAMED

キーワード

クエリでは、FROM NAMED節を使用してデータセット内の名前付きグラフの

IRI

を指定で きます。各

IRI

は、データセット内の名前付きグラフ

1

つを指定するために使用されま す。複数のFROM NAMED節を記述すると、複数のグラフがデータセットに追加されます。

FROM NAMEDでは、クエリで使用するグラフ名が、その節で提供されているグラフのみに

マッチします。

graph1

graph2

デフォルトグラフ

named-graphは、ロード時に

mlcp

でコレクションパラメータ-output_collections http://www.example.org/my_graphを使用して設定できます。「コレクションおよびディレ クトリの指定」(

46

ページ)を参照してください。また、

REST

クライアントで

PUT:/v1/graphsを使用してnamed-graphを設定することもできます。

注:

名前付きグラフは、一般に

RDF

データをロードするときに作成されます。

「トリプルのロード」(

34

ページ)を参照してください。

クエリのFROM NAMEDでは、GRAPHキーワードを使用してWHERE節からクエリされる名前

付きグラフを識別します。

次に例を示します。

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

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

SELECT ?who ?g ?mbox

FROM <http://example.org/foaf/aliceFoaf>

FROM NAMED <http://example.org/alice>

FROM NAMED <http://example.org/bob>

WHERE {

?g dc:publisher ?who .

GRAPH ?g { ?x foaf:mbox ?mbox } }

この例では、FROMとFROM NAMEDキーワードが同時に使用されています。FROM NAMEDは、

クエリの評価時に考慮されるグラフの範囲を設定するために使用されています。また、

GRAPHコンストラクトでは、いずれかの名前付きグラフを指定しています。

注:

FROMまたはFROM NAMEDキーワードを使用すると、GRAPH節で使用できるグ ラフが制限される場合があります。

6.1.8.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コンストラクトを使用する場合は、コレクション

レキシコンをオンにする必要があります。コレクションレキシコンは、

データベース設定ページまたは

Admin

画面からオンにできます。

明示的な

IRI

を含むGRAPH節(例えばGRAPH <....uri...> { ...graph pattern...})は、

GRAPH

節で指定された

IRI

を使用してデータセットにマッチします。

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