5.5 SPARQL問合せパターンを使用したドキュメントの検索
セマンティクに索引付けされたドキュメント(mdsys.SemContext索引タイプを使用して索引付けされたドキュメント)は、標準のSQL問合せ内でSEM_CONTAINS演算子を使用して検索できます。
問合せで、SEM_CONTAINS演算子は2つ以上のパラメータを持つ必要があります(次の例のように、最初のパラメータはドキュメントが格納される列を指定するもので、2番目のパラメータはSPARQL問合せパターンとして表現されるドキュメント検索条件を指定するものです)。
SELECT docId FROM Newsfeed WHERE SEM_CONTAINS (article, '{ ?org rdf:type <http://www.example.com/classes/Organization> . ?org <http://example.com/pred/hasCategory> <http://www.example.com/category/BusinessFinance> }' )= 1;
SEM_CONTAINS演算子で指定するSPARQL問合せパターンは、各ドキュメントに対応する個々のグラフに対して照合され、対応するグラフからのトリプルがこの問合せパターンを満たす場合に、ドキュメントは検索条件と一致するとみなされます。前の例のSPARQL問合せパターンは、BusinessFinance
カテゴリに属するOrganization
を参照する個々のグラフ(つまりドキュメント)を識別します。このSQL問合せは、一致ドキュメントに対応する行を結果セットに戻します。前の例は、問合せで使用されるURIが基礎となるエクストラクタによって生成されること、(ドキュメントを検索しているユーザーが)使用中のエクストラクタによって生成されるプロパティおよび語句を把握していることを前提としています。
1つ以上のユーザー定義のRDFグラフを含む依存エクストラクタ・ポリシーを使用して索引を作成した場合、ユーザーRDFグラフで表明されるトリプルはすべてのドキュメントに共通であるとみなされます。このようなポリシーを含むドキュメント検索では、ドキュメントに対応する個々のグラフ内のトリプルに対して(ユーザーRDFグラフ内のトリプルと組み合せて)検索条件がテストされます。たとえば、次の問合せは、都市を州にマップする地理オントロジ(前の例のgeo_ontology
RDFグラフ)を使用してニューハンプシャー州の組織に関するすべての記事を特定します。
SELECT docId FROM Newsfeed WHERE SEM_CONTAINS (article, '{ ?org rdf:type class:Organization . ?org pred:hasLocation ?city . ?city geo:hasState state:NewHampshire }', 'SEM_EXTR_PLUS_GEOONT', sem_aliases( sem_alias('class', 'http://www.myorg.com/classes/'), sem_alias('pred', 'http://www.myorg.com/pred/'), sem_alias('geo', 'http://geoont.org/rel/'), sem_alias('state', 'http://geoont.org/state/'))) = 1;
前の問合せでは、エクストラクタ・ポリシーSEM_EXTR_PLUS_GEOONT (「エクストラクタ・ポリシー」の例で作成)への参照を使用して、索引付きドキュメントから抽出されたトリプルと、一致ドキュメントを検索するためのユーザーRDFグラフ内のトリプルを組み合せています。この例で、エクストラクタ・ポリシーの名前は、対応する索引がこのポリシーで作成されている場合、またはこれが索引のデフォルトのエクストラクタ・ポリシーの場合はオプションです。問合せパターンで修飾名を使用する場合、SEM_CONTAINS演算子のオプション・パラメータでは、修飾名を拡張するために使用する名前空間を指定できます。
SPARQLベースのドキュメント検索では、SEM_MATCH問合せを通じてサポートされるSPARQL構文を使用できます。
親トピック: ドキュメントのセマンティク索引付け