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

SPARQL Update によるグラフの操作

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

SPARQL Update

を使用すると、RDFグラフを操作できます。グラフ管理操作は、

CREATE、DROP、COPY、MOVE、およびADDで構成されています。

SPARQL Update

の規格には、

RDF

グラフを操作するために次の各コマンドとオプショ

ンが用意されています。

複数のステートメントをセミコロン(

;

)で区切って

1

つの

SPARQL Update

操作内に記 述すると、同一トランザクションとして実行されます。また、同じリクエストに含める ことができます。各ステートメントは、前のステートメントの結果を参照できることに

コマンド オプション 説明

CREATE

SILENT、GRAPH IRIref

新しいグラフを作成します。グ

ラフの名前を指定するには

GRAPH

を使用します。

SILENT

は、グラフをサイレン

トに作成します。つまり、グラ フがすでに存在する場合でも、

エラーを返しません。

DROP

SILENT

GRAPH IRIref

DEFAULT、NAMED、ALL

グラフとそのコンテンツを削除 します。削除するグラフの名前 を指定するには

GRAPH

を使用 します。デフォルトグラフを削 除するには

DEFAULT

を使用し ます。

COPY

SILENT、GRAPH、

IRIref_from、DEFAULT、TO、

IRIref_to

ソースグラフを宛先グラフにコ ピーします。宛先グラフ内のす べてのコンテンツが上書き(削 除)されます。

MOVE

SILENT

GRAPH

IRIref_from、DEFAULT、TO、

IRIref_to

ソースグラフのコンテンツを宛 先グラフに移動し、ソースグラ フからコンテンツを削除しま す。宛先グラフ内のすべてのコ ンテンツが上書き(削除)され ます。

ADD

SILENT、GRAPH、

IRIref_from、DEFAULT、TO、

IRIref_to

ソースグラフのコンテンツを宛 先グラフに追加します。ADD 操作では、ソースグラフと宛先 グラフのどちらのコンテンツも 変更されません。

例えば、次のクエリのCOPY操作では、最初のステートメントで作成されたグラフ

<TEST>を参照できます。

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

INSERT DATA {

<http://example/book0> dc:title "A default book"

GRAPH <TEST> {<http://example/book1> dc:title "A new book" } GRAPH <TEST> {<http://example/book2> dc:title "A second book" } GRAPH <TEST> {<http://example/book3> dc:title "A third book" } };

COPY <TEST> TO <BOOKS1>

注:

SPARQL Update

の操作は、空のシーケンスを返します。

8.2.1 CREATE

この操作を実行すると、グラフが作成されます。グラフがすでに存在する場合は、

SILENTオプションを使用していない限り、エラーが返されます。すでに存在するグラフ

のコンテンツは変更されません。グラフを作成するパーミッションがない場合は、エ ラーが返されます(SILENTオプションを使用している場合を除く)。

CREATE操作のシンタックスは、次のとおりです。

CREATE ( SILENT )? GRAPH IRIref

SILENTオプションを使用すると、エラーは返されません。GRAPH IRIrefオプションでは、

新しいグラフの

IRI

を指定します。

次に例を示します。

CREATE GRAPH <http://marklogic.com/semantics/tutorial/update> ;

指定した宛先グラフが存在しない場合は、そのグラフが作成されます。CREATE操作に よって作成されるグラフのパーミッションは、sem:sparql-updateで指定したものになり ます。また、パーミッションを指定していない場合は、そのユーザーのデフォルトパー ミッションになります。

8.2.2 DROP

DROP操作を実行すると、指定したグラフがグラフストアから削除されます。DROP操作の シンタックスは、次のとおりです。

DROP ( SILENT )? GRAPH IRIref | DEFAULT |NAMED | ALL )

GRAPHキーワードは、IRIrefで指定したグラフを削除する場合に使用し、DEFAULTキー ワードオプションは、デフォルトグラフをグラフストアから削除する場合に使用しま す。また、NAMEDキーワードオプションは、すべての名前付きグラフをグラフストアか ら削除する場合に使用します。ALLキーワードを指定すると、すべてのグラフがグラフ ストアから削除されます。これは、グラフストアをリセットした場合と同じ結果です。

次に例を示します。

DROP SILENT GRAPH <http://marklogic.com/semantics/tutorial/intro> ;

この操作が正常に完了すると、指定したグラフは以降のグラフ更新操作で使用できなく なります。指定した名前付きグラフが存在しない場合は、エラーが返されます。SILENT

を指定している場合、操作の結果は常に成功になります。

注:

グラフストアのデフォルトグラフを削除すると、ユーザーのデフォルト パーミッションを持つ空のデフォルトグラフが新規に作成されます。

8.2.3 COPY

COPY操作は、ソースグラフのすべてのトリプルを宛先グラフに挿入する目的で使用しま す。ソースグラフのトリプルは影響を受けませんが、宛先グラフにトリプルが存在する 場合は、新しいトリプルが挿入される前に削除されます。

COPY操作のシンタックスは、次のとおりです。

COPY ( SILENT )? ( ( GRAPH )? IRIref_from | DEFAULT) TO ( ( GRAPH )?

IRIref_to | DEFAULT )

COPY操作では、パーミッションがソースグラフから宛先グラフにコピーされます。パー ミッション情報はソースグラフが持っているため、COPY操作にはsem:sparql-updateの

$default-permissionsパラメータは適用されません。

次に例を示します。

COPY <http://marklogic.com/semantics/tutorial/intro> TO

<http://marklogic.com/semantics/tutorial/start> ;

宛先グラフが存在しない場合は作成されます。ソースグラフが存在しない場合は、エ ラーが返されます。SILENTオプションを使用すると、操作の結果は常に成功になります。

COPY操作は、グラフを削除して新しいグラフを挿入する操作と同様の操作です。

DROP SILENT (GRAPH IRIref_to | DEFAULT); INSERT { ( GRAPH IRIref_to )?

{ ?s ?p ?o } } WHERE { ( GRAPH IRIref_from )? { ?s ?p ?o } }

宛先グラフが存在しない場合に更新が失敗となるようにする場合は、sem:sparql-update

のexisting-graphオプションを指定する必要があります。新しいグラフにコピーする

と、その新しいグラフではコピー元のグラフのパーミッションが使用されます。既存の グラフにコピーしても、そのグラフのパーミッションは変更されません。

8.2.4 MOVE

MOVE操作は、ソースグラフのすべてのトリプルを宛先グラフへ移動する目的で使用しま す。MOVE操作のシンタックスは、次のとおりです。

MOVE (SILENT)? ( ( GRAPH )? IRIref_from | DEFAULT) TO ( ( GRAPH )?

IRIref_to | DEFAULT)

ソースグラフは、挿入後に削除されます。宛先グラフにトリプルが存在する場合は、宛 先トリプルが挿入される前に削除されます。

次に例を示します。

MOVE <http://marklogic/semantics/tutorial/queries> TO

<http://marklogic.com/semantics/tutorialSearches> ;

グラフ<http://marklogic.com/semantics/queries>は、そのトリプルが

<http://marklogic.com/semantics/searches>に挿入された後で削除されます。グラフ

<http://marklogic.com/semantics/searches>内のすべてのトリプルは、その他のトリプル が挿入される前に削除されます。

注:

MOVEを使用してグラフをそのグラフ自身に移動しても操作は実行されず、

データはそのままの状態になります。

宛先グラフが存在しない場合は作成されます。ソースグラフが存在しない場合、MOVE操 作からはエラーが返されます。SILENTオプションを使用すると、操作の結果は常に成功 になります。

MOVE操作は、次のようになります。

DROP SILENT (GRAPH IRIref_to | DEFAULT); INSERT { ( GRAPH IRIref_to )?

{ ?s ?p ?o } } WHERE { ( GRAPH IRIref_from )? { ?s ?p ?o } };

DROP ( GRAPH IRIref_from | DEFAULT)

MOVE操作では、パーミッションがソースグラフから宛先グラフに移動されます。パー ミッション情報はソースグラフが持っているため、この操作にはsem:sparql-updateの

$default-permissionsパラメータは適用されません。

宛先グラフが存在しない場合に更新が失敗となるようにする場合は、sem:sparql-update

のexisting-graphオプションを指定する必要があります。新しいグラフにコピーする

と、その新しいグラフではコピー元のグラフのパーミッションが使用されます。既存の グラフにコピーしても、そのグラフのパーミッションは変更されません。

8.2.5 ADD

ADD操作は、ソースグラフのすべてのトリプルを宛先グラフへ挿入する目的で使用しま す。ソースグラフのトリプルは影響を受けず、宛先グラフに既存のトリプルが存在する 場合も変更されません。

ADD操作のシンタックスは、次のとおりです。

ADD ( SILENT )? ( ( GRAPH )? IRIref_from | DEFAULT) TO ( ( GRAPH )?

IRIref_to | DEFAULT)

次に例を示します。

ADD <http://marklogic/semantics/tutorial/queries> TO

<http://marklogic.com/semantics/searches> ;

ADDを使用してグラフをそのグラフ自身に追加しても操作は実行されず、データはその ままの状態になります。宛先グラフが存在しない場合は作成されます。ソースグラフが 存在しない場合、ADD操作からはエラーが返されます。SILENTオプションを使用すると、

操作の結果は常に成功になります。

トリプルを新しいグラフに追加する場合は、sem:sparql-updateを使用して新しいグラフ のパーミッションを設定できます。パーミッションを指定していない場合は、デフォル トグラフのパーミッションがそのグラフに適用されます。

ADD操作は、次のようになります。

INSERT { ( GRAPH IRIref_to )? { ?s ?p ?o } } WHERE { ( GRAPH IRIref_from )? { ?s ?p ?o } }

宛先グラフが存在しない場合に更新を失敗させる場合は、sem:sparql-updateの

existing-graphオプションを指定する必要があります。新しいグラフにコピーすると、

その新しいグラフではコピー元のグラフのパーミッションが使用されます。既存のグラ フにコピーしても、そのグラフのパーミッションは変更されません。

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