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]部分から簡単にコピーできるようになって います。