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

3.2 トリプルのロード

3.2.4 XQuery を使用したトリプルのロード

通常、トリプルはMarkLogicサーバーの外部で作成され、Query Consoleで次のsem:

関数を使用してロードされます。

• sem:rdf-insert

• sem:rdf-load

• sem:rdf-get

sem:rdf-insertおよびsem:rdf-load関数は更新用の関数です。sem:rdf-get 関数は値を返し、トリプルをインメモリにロードします。これらの関数は、XQueryラ イブラリモジュールとして実装されているXQueryセマンティックAPIに含まれてい ます。

XQueryでsem: 関数を使用するには、Query Consoleで次のXQueryプロローグステー

トメントを使用してモジュールをインポートします。

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

semantics" at "/MarkLogic/semantics.xqy";

XQueryのセマンティック関数の詳細については、『MarkLogic XQuery and XSLT Function

Reference』でセマンティック(sem:)のドキュメントを参照してください。

3.2.4.1 sem:rdf-insert

sem:rdf-insert関数は、トリプルをトリプルドキュメントとしてデータベースに挿

入します。トリプルは、sem:tripleおよびsem:iriコンストラクタを使用してイン メモリで作成されます。挿入されるドキュメントのIRIは、実行時に返されます。

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

xquery version "1.0-ml";

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

semantics" at "/MarkLogic/semantics.xqy";

sem:rdf-insert(

sem:triple(

sem:iri("http://example.org/people#m"),

sem:iri("http://example.com/person#firstName"),

"Michael"))

=>

(: Returns the document IRI :) /triplestore/70eb0b7139816fe3.xml

デフォルトでは、sem:rdf-insertはドキュメントをディレクトリ/triplestore/

に配置し、デフォルトグラフを割り当てます。名前付きグラフは、4番目のパラメータ でコレクションとして指定できます。

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

xquery version "1.0-ml";import module namespace sem =

"http://marklogic.com/semantics"

at "/MarkLogic/semantics.xqy";

sem:rdf-insert(sem:triple(

sem:iri("http://example.com/ns/directory#jp"), sem:iri("http://example.com/ns/person#firstName"),

"John-Paul"), (), (), "mygraph")

この例を実行すると、ドキュメントがデフォルトグラフとmygraphの両方に挿入され ます。

注: TriGシリアライゼーションでクアッドまたはトリプルを挿入する場合、

グラフ名はquads/trigファイルの「4番目の位置」にある値に基づきます。

3.2.4.2 sem:rdf-load

sem:rdf-load関数は、指定した場所にあるファイルからトリプルをロードし、パー

スしてデータベースに配置し、トリプルドキュメントのIRIを返します。トリプルのシ リアライゼーションは指定できます。例えばTurtleファイルの場合はturtle、RDF ファイルの場合はrdfxmlです。

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

sem:rdf-load('C:\rdfdata\example.rdf', "rdfxml")

=>

/triplestore/fbd28af1471b39e9.xml

sem:rdf-insertの場合と同様に、オプションでディレクトリまたは名前付きグラフ

が指定されていない限り、この関数もトリプルドキュメントをデフォルトグラフおよび

/triplestore/ディレクトリに配置します。この例では、パラメータで

mynewgraphを名前付きグラフとして指定しています。

xquery version "1.0-ml";

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

semantics"

at "/MarkLogic/semantics.xqy";

sem:rdf-load("C:\turtledata\example.ttl", "turtle", (), (),

"mynewgraph")

次のようにドキュメントが挿入されます。

注: sem:rdf-loadを使用するには、xdmp:document-get権限が必要 です。

3.2.4.3 sem:rdf-get

sem:rdf-get関数は、指定された場所からトリプルファイルのトリプルを返します。

以下の例では、Turtleシリアライゼーションでシリアライズされたトリプルをローカル のファイルシステムから取得します。

xquery version "1.0-ml";

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

semantics" at "/MarkLogic/semantics.xqy";

sem:rdf-get('C:\turtledata\people.ttl', "turtle")

トリプルは、Turtleシリアライゼーションのトリプルとして返され、行ごとに1つのト リプルが示されます。各トリプルはピリオドで終わります。

このQuery Consoleの表示形式は、[Result]部分から簡単にコピーできるようになって います。