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

トリプルインデックス:概要と使い方

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

トリプルデータが必要になると(例えば参照時)、関連性のあるブロックがトリプル キャッシュまたはトリプル値キャッシュにキャッシュされます。他の

MarkLogic

キャッ シュとは異なり、トリプルキャッシュやトリプル値キャッシュは拡大したり縮小したり するため、メモリを消費するのはキャッシュへの追加が必要なときだけです。

注:

トリプルストアのホスト用のトリプルキャッシュおよびトリプル値キャッ シュのサイズは、「キャッシュのサイズ設定」(

64

ページ)の説明に従っ て設定できます。

4.1.2

トリプル値とタイプ情報

値は、ディスク上の別の値ストアに「値の等価性」のソート順で格納されます。つま り、ある特定スタンドにおいて、値

ID

の順序は値の等価性の順序と同等ということに なります。

値の中の文字列は、レンジインデックスの文字列ストレージに格納されます。タイム ゾーンや生成されたタイプ情報など、値の等価性と関係のない部分は格納される値から 削除されます。

タイプ情報は別に格納されるため、トリプルはトリプルインデックスから直接返すこと ができます。この情報は、

SPARQL

の単純含意で必要な

RDF

固有の「

sameTerm

」比較 に使用することもできます。

4.1.3

トリプルポジション

トリプルポジションインデックスは、cts:triplesのcts:triple-range-queryおよび

item-frequencyオプションを使用するクエリを正確に解決するために使用されます。ま

た、トリプルポジションインデックスは、cts:near-queryおよびcts:element-queryコン ストラクタを使用する検索を正確に解決する目的でも使用されます。トリプルポジショ ンインデックスは、フラグメント内でのトリプルの相対位置をそのフラグメント内に格 納します(通常、フラグメントはドキュメントです)。トリプルポジションインデック スを有効にするとインデックスのサイズが大きくなり、ドキュメントの読み込み速度が 低下しますが、ポジション情報を必要とするクエリの精度は向上します。

次に例を示します。

xquery version "1.0-ml";

cts:search(doc(), cts:near-query((

cts:triple-range-query(sem:iri("http://www.rdfabout.com/rdf/

usgov/sec/id/cik0001075285"), (), ()),

cts:triple-range-query(sem:iri("http://www.rdfabout.com/rdf/

usgov/sec/id/cik0001317036"), (), ()) ),11), "unfiltered")

cts:near-queryは、指定された距離内でマッチしているクエリのシーケンスを返します。

ここで指定する距離は、2つのマッチングクエリの間の単語数です。

フィルタリングされていない検索では、指定されたcts:queryを満たす候補であるイン デックスからフラグメントを選択し、ドキュメントを返します。

4.1.4

インデックスファイル

メモリを効率的に使用するため、トリプルおよび値ストアのインデックスファイルは、メ モリに直接マッピングされます。タイプストアは、全体がメモリにマッピングされます。

トリプルおよび値ストアのどちらも、64バイトのセグメントで構成されたインデック スファイルを持ちます。それぞれの最初のセグメントは、チェックサム、バージョン番 号、および(トリプルまたは値の)件数が含まれたヘッダです。その後は次の要素が続 きます。

トリプルインデックス:ヘッダセグメントの後に続くトリプルインデックスに は、最初の

2

つの値のインデックスと、各ブロック内の最初のトリプルの異なる 並び順(順列)のインデックスが、64バイトのセグメントに編成されて格納さ れます。これは、トリプルからの値に基づいて指定された参照の回答を返すため に必要なブロックを検索する目的で使用されます。現在、トリプルは序数でアク セスできないため、序数インデックスは必須ではありません。

値インデックス:ヘッダセグメントの後に続く値インデックスには、各ブロック の最初の値のインデックスが、

64

バイトのセグメントに編成されて格納されます。

値インデックスは、値に基づいて指定された参照の回答を返すために必要なブ ロックを検索する目的で使用されます。値インデックスの後には、各ブロックの 開始序数のインデックスが続きます。このインデックスは、値

ID

に基づいて指定 された参照の回答を返すために必要なブロックを検索する目的で使用されます。

注:

トリプルインデックスは、triple positionsがオンの場合にポジションを 格納します。「トリプルインデックスの有効化」(

62

ページ)を参照して ください。

タイプストアには、格納されるタイプごとにタイプデータファイルに対するオフセット を格納するインデックスファイルが含まれています。これもメモリにマップされます。

次の表は、トリプルインデックスおよび値ストアで使用する情報を格納し、メモリに マップされるインデックスファイルについて説明したものです。

4.1.5

順列

順列として、元のトリプル内の値を異なる並び順で保持します。異なるソート順で、ま たトリプルの各部分を効率的に参照できるように、3つの順列(並び順)で格納してい ます。順列は、

3

つの

RDF

要素(主語(

Subject

)、述語(

Predicate

)、目的語(

Object

)) のイニシャルから構成された略語として表現され、例えば

{

SOP, PSO, OPS

}

のようにな ります。

オプションで次のいずれかのソート順を指定するには、cts:triples関数を使用します。

order-pso:述語、主語、目的語の順に並んだ結果を返します。

order-sop:主語、目的語、述語の順に並んだ結果を返します。

order-ops:目的語、述語、主語の順に並んだ結果を返します。

インデックスファイル 説明

TripleIndex

TripleValueIndex

TripleData

および

TripleValueData

のブロックインデックス

TripleTypeData

TripleTypeIndex トリプル値のタイプ情報

StringData StringIndex AtomData AtomIndex

文字列ベースのレンジインデックスでも使用されます。

TripleValueFreqs

TripleValueFreqsIndex トリプルに関する統計情報。トリプルインデックスは、

データベースに保持されている各値のトリプルに関する 統計情報を保持します。

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