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

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の$permパラメータは適用されません。

例えば以下のようになります。

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 } }

COPYを使用してグラフをそのグラフ自身にコピーしても操作は実行されず、データは そのままの状態になります。

宛先グラフが存在しない場合に更新が失敗となるようにする場合は、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.com/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の$permパラメータは適用されません。

宛先グラフが存在しない場合に更新が失敗となるようにする場合は、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.com/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オプションを指定する必要があります。新しいグラフに コピーすると、その新しいグラフではコピー元のグラフのパーミッションが使用されま す。既存のグラフにコピーした場合、そのグラフのパーミッションは変更されません。