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
画面からオンにできます。明示的な