5.3 ドキュメントのセマンティク索引付け

リレーショナル表のCLOBまたはVARCHAR2列に格納されたテキスト・ドキュメントは、セマンティクに意味のある検索を容易にするため、MDSYS.SEMCONTEXT索引タイプを使用して索引付けできます。

索引の作成時に指定されたエクストラクタ・ポリシーによって、ドキュメントのセマンティク索引付けに使用される情報エクストラクタが決定されます。ドキュメントごとにRDFトリプルのセットとして取得された抽出情報は、RDFデータ・ストアで管理されます。セマンティク索引の各インスタンスは、対応するドキュメントから抽出されたRDFトリプルを保持するシステム生成のRDFグラフに関連付けられます。

次の例は、SEM_EXTRという名前のエクストラクタ・ポリシーを使用して、NEWSFEED表のARTICLE列のテキスト・ドキュメントでArticleIndexという名前のセマンティク索引を作成します。

CREATE INDEX ArticleIndex on Newsfeed (article)
   INDEXTYPE IS mdsys.SemContext PARAMETERS ('SEM_EXTR');

索引に対して作成されたRDFグラフは、内部的に管理され、アプリケーション表には関連付けられません。このようなRDFグラフに格納されているトリプルは、表の列に格納されたドキュメントを変更(更新、挿入、削除など)するために自動的に管理されます。1つのRDFグラフを使用して、表の列に格納されたすべてのドキュメントが索引付けされますが、RDFグラフに格納されたトリプルは、抽出元のドキュメントに対する参照を管理するため、特定のドキュメントから抽出されたすべてのトリプルによって、RDFグラフ内の個々のグラフが構成されます。セマンティクに索引付けされたドキュメントは、ドキュメントから抽出されたトリプルを処理するSPARQL問合せパターンを使用して検索できます。

ドキュメントのセマンティク索引を作成する場合、1つ以上のユーザー定義のRDFグラフを含むことが可能な基本エクストラクタ・ポリシーまたは依存ポリシーを使用できます。依存エクストラクタ・ポリシーで索引を作成する場合、SPARQLを使用して指定されたドキュメント検索パターンは、ドキュメントから抽出されたトリプルとユーザー定義RDFグラフで定義されたトリプルを対象とすることができます。

複数のエクストラクタ・ポリシーを使用して1つの索引を作成できますが、その場合は、対応するエクストラクタによって抽出されたトリプルが異なるRDFグラフに別々に保持されます。このような索引を使用したドキュメント検索問合せでは、問合せへの応答に使用する特定のポリシーを選択することができます。たとえば、指定されたドキュメントから都市の名前を抽出する場合にCITY_EXTRという名前のエクストラクタ・ポリシーを作成し、次の例に示すように、このエクストラクタ・ポリシーをSEM_EXTRポリシーと組み合せて使用して、セマンティク索引を作成することができます。

CREATE INDEX ArticleIndex on Newsfeed (article)
   INDEXTYPE IS mdsys.SemContext PARAMETERS ('SEM_EXTR CITY_EXTR');

PARAMETERSリストの最初のエクストラクタ・ポリシーは、問合せが特定のポリシーを参照していない場合、デフォルト・ポリシーとみなされますが、次の例のようにSEM_RDFCTX.SET_DEFAULT_POLICYプロシージャを使用することでセマンティク索引のデフォルトのエクストラクタ・ポリシーを変更できます。

begin
  sem_rdfctx.set_default_policy (index_name => 'ArticleIndex',
                                 policy_name => 'CITY_EXTR');
end;
/