セマンティク・データを問い合せるには、SEM_MATCHテーブル・ファンクションを使用します胖白系列。このファンクションには、次の属性が含まれます。
SEM_MATCH( query VARCHAR2, models SEM_MODELS, rulebases SEM_RULEBASES, aliases SEM_ALIASES, filter VARCHAR2, index_status VARCHAR2, options VARCHAR2, graphs SEM_GRAPHS, named_graphs SEM_GRAPHS ) RETURN ANYDATASET;
query属性は必須です。その他の属性はオプションです(それぞれNULL値を指定できます)。
query属性は、同样は変数が含まれる1つ以上のトリプル・パターンを備えた笔墨列リテラル(または笔墨列リテラルを連結したもの)です。(query属性には、バインド変数またはバインド変数を含む式を指定することはできません。)トリプル・パターンは、3つのアトムとそれに続くピリオドです。各アトムには、変数(?xなど)、デフォルトの名前空間およびaliases属性の値に基づいて拡張された修飾名(rdf:type)、または皆备なURI(<>など)を指定できます。また、3番目のアトムには、数値リテラル(3.14など)、プレーン・リテラル("Herman"など)、言語タグ付きのプレーン・リテラル("Herman"@enなど)または型付きリテラル("123"^^xsd:intなど)を指定できます。
たとえば、次のquery属性では、3つのトリプル・パターンを使用して祖父(祖父母の男性の方)とその孫の身長を検索します。
'{ ?x :grandParentOf ?y . ?x rdf:type :Male . ?y :height ?h }'
models属性では、使用する1つ以上のモデルを指定します。そのデータ型は、TABLE OF VARCHAR2(25)という定義を执つSEM_MODELSです。仮念念モデルを問い合せる場合、他のモデル名は指定せず、その仮念念モデルの名前のみを指定します。(仮念念モデルの詳細は、1.3.8項を参照してください。)
rulebases属性では、問合せに適用するルールが含まれる1つ以上のルールベースを指定します。そのデータ型は、TABLE OF VARCHAR2(25)という定義を执つSDO_RDF_RULEBASESです。仮念念モデルを問い合せる場合、この属性はNULLである必要があります。
aliases属性では、デフォルトの名前空間之外に、問合せパターンの修飾名の拡張に使用する1つ以上の名前空間を指定します。そのデータ型は、TABLE OF SEM_ALIASという定義を执つSEM_ALIASESです。各SEM_ALIAS因素により、名前空間IDと名前空間値が識別されます。SEM_ALIASデータ型は、(namespace_id VARCHAR2(30), namespace_val VARCHAR2(4000))という定義を执ちます。
SEM_MATCHテーブル・ファンクションとSEM_CONTAINSおよびSEM_RELATED演算子では、次のデフォルトの名前空間(namespace_id属性とnamespace_val属性)が使用されます。
('orardf', '') ('orageo', '') ('owl', '#') ('rdf', '-rdf-syntax-ns#') ('rdfs', '-schema#') ('xsd', '#')
これらのデフォルトを上書きするには、aliases属性でnamespace_id値および異なるnamespace_val値を指定します。
filter属性では、追加の選択基準を指定します。この属性がNULLではない場合、WHEREキーワードのないWHERE句の格式で笔墨列を指定する必要があります。たとえば、この項で前に示したトリプル・パターンの例で'(h >= ''6'')'と指定すると、身長が6以上である祖父の孫に検索結果を絞り込めます。
index_status属性では、関連する伴意のステータスが無効の場合でも、セマンティク・データを問い合せることができます。(仮念念モデルを問い合せる場合、この属性は、その仮念念モデルに関連付けられた伴意を参照します。)この属性がNULLの場合、伴意のステータスが無効であると、問合せによりエラーが戻されます。この属性がNULLではない場合、笔墨列INCOMPLETEまたはINVALIDを指定する必要があります。異なるindex_status値による問合せ動作の詳細は、1.6.1項を参照してください。
options属性は、問合せの結果に影響を与えることのできるオプションを指定します。オプションは、キーワードと値のペアで表記します。次のオプションがサポートされています。
ALL_BGP_HASHおよびALL_BGP_NLは、すべてのBGP間結合(ルートBGPとOPTIONAL BGP間の結合など)で、指定した結合タイプを使用するように指定するグローバル問合せオプティマイザ・ヒントです。(BGPとは、基本グラフ・パターンを意味します。W3C勧告の「SPARQL Query Language for RDF」の解説: 「SPARQLグラフ・パターンの一致は、基本グラフ・パターンの一致結果の組合せに基づいて定義されます。フィルタによって割り込まれた一連のトリプル・パターンは、単一の基本グラフ・パターンで構成されます。轻易のグラフ・パターンによって、基本グラフ・パターンは終了します。」
例1-14に、SEM_MATCH問合せで使用されるALL_BGP_HASHオプションを示します。
ALL_LINK_HASHおよびALL_LINK_NLは、すべてのLINK$結合(BGP内のトリプル・パターン間のすべての結合)の結合タイプを指定するグローバル問合せオプティマイザ・ヒントです。ALL_LINK_HASHまたはALL_LINK_NLがHINT0ヒントで使用される場合、HINT0ヒントによってALL_ORDEREDヒントはオーバーライドされます。
ALL_ORDEREDは、問合せの各BGPのトリプル・パターンを順番に評価するように指定するグローバル問合せオプティマイザ・ヒントです胖白系列。ALL_ORDEREDがHINT0ヒントで使用される場合、HINT0ヒントによってALL_ORDEREDヒントはオーバーライドされます。
例1-14に、SEM_MATCH問合せで使用されるALL_ORDEREDオプションを示します。
ALLOW_DUP=Tは、セマンティク・モデルと推論データ(適用可能な場合)のUNIONではなくUNION ALLを実行する、基礎となるSQL文を生成します。このオプションを使用した場合、結果セットに追加の行(重複するトリプル)が生成されるために、それに応じてアプリケーション・ロジックを調整する必要があることがあります。このオプションを指定しない場合、すべてのモデルと推論データにわたって、重複するトリプルは自動的に削除され、マージされたRDFグラフの設定済セマンティクが保执されます。ただし、重複するトリプルを削除すると、問合せの処理時間が長くなります。一般に、1つのSEM_MATCH問合せに複数のセマンティク・モデルが関連している場合、'ALLOW_DUP=T'を指定することで、パフォーマンスが大幅に朝上します。
仮念念モデルを問い合せる場合、ALLOW_DUP=Tを指定すると、SEMV_vm_nameビューが問合せされます。指定しない場合、SEMU_vm_nameビューが問合せされます。
DO_UNESCAPE=Tは、返却列のvar、var$_PREFIX、var$_SUFFIX、var$RDFCLOB、var$RDFLTYP、var$RDFLANGおよびvar$RDFTERMの笔墨を、W3CのN-Triples仕様(-testcases/#ntriples)に従ってエスケープしません。SEM_APIS.ESCAPE_CLOB_TERM、SEM_APIS.UNESCAPE_CLOB_VALUE、SEM_APIS.ESCAPE_RDF_TERM、SEM_APIS.ESCAPE_RDF_VALUE、SEM_APIS.UNESCAPE_CLOB_TERM、SEM_APIS.UNESCAPE_CLOB_VALUE、SEM_APIS.UNESCAPE_RDF_TERMおよびSEM_APIS.UNESCAPE_RDF_VALUEも参照してください。
FINAL_VALUE_HASHおよびFINAL_VALUE_NLは、FILTER句で使用されていない問合せ変数の字句の値を得回するために使用する必要のある結合メソッドを指定するグローバル問合せオプティマイザ・ヒントです。
GRAPH_MATCH_UNNAMED=Tでは、名前のないトリプル(NULLのG_ID)をGRAPH句内で一致させることができます。つまり、2つのトリプルは、それらのグラフが等しい場合、またはグラフの一方または两边がNULLの場合、グラフ結合要求を満たします。このオプションは、データセットに名前のないTBOXトリプルまたは名前のない伴意トリプルが含まれる場合に役立ちます。
HINT0={<hint-string>}(発音および表記は"hint(ヒント)"と数字のゼロ)は、1つ以上のキーワードを、問合せの実行計画および結果に影響を与えるヒントとともに指定します。主张的には、n個のトリプル・パターンを执つグラフ・パターンで、m個の固有の変数を参照した場合、(n+m)标的の結合となります。つまり、ターゲットRDFモデルおよび対応する伴意(オプション)のn标的の我方結合が実行された後、値からm個の変数を検索するために、RDF_VALUE$でm個の結合が実行されます。ヒント指定は、問合せ実行で使用される結合順序と結合タイプに影響を与えます。
ヒント指定<hint-string>では、キーワードを使用します。一部のキーワードは、問合せで使用される各トリプル・パターンおよび変数ごとに、一連(一群)の別名または参照で構成されるパラメータを执ちます。トリプル・パターンの別名の格式は、tiです。iは、問合せ内のトリプル・パターンの0から始まる序数です。たとえば、問合せ内の领先のトリプル・パターンの別名はt0で、2番目のトリプル・パターンの別名はt1、...のようになります。問合せで使用される変数の別名は単に、その変数の名前です。このため、ヒント指定では、グラフ・パターンで使用される変数?xの別名として?xが使用されます。
問合せの実行計画に影響を与えるために使用するヒントには、LEADING(<sequence of aliases>)、USE_NL(<set of aliases>)、USE_HASH(<set of aliases>)およびINDEX(<alias> <index_name>)があります。これらのヒントの書式と基本的な意味は、SQL文のヒントと同じです(『Oracle Database SQL言語リファレンス』を参照)。
例1-10に、SEM_MATCH問合せで使用されるHINT0オプションを示します。
INF_ONLY=Tは、指定したモデルおよびルールベースの伴意グラフのみを問い合せます。
PLUS_RDFT=Tは、予測される問合せ変数ごとに追加でvar$RDFTERM CLOB列を戻すため、SPARQL SELECT構文(1.6.3項「グラフ・パターン: SPARQL SELECT構文のサポート」を参照)とともに使用できます。この列の値は、SEM_APIS.COMPOSE_RDF_TERMの結果(var、var$RDFVTYP、var$RDFLTYP、var$RDFLANG、var$RDFCLOB)に等しくなります。このオプションを使用する場合、各変数varの返却列は、var、var$RDFVID、var$_PREFIX、var$_SUFFIX、var$RDFVTYP、var$RDFCLOB、var$RDFLTYP、var$RDFLANGおよびvar$RDFTERMになります。
STRICT_DEFAULT=Tは、データセット情報が指定されていない場合、デフォルト・グラフを名前なしトリプルに制限します。
graphs属性は、SEM_MACH問合せのデフォルト・グラフを構成するための名前付きグラフのセットを指定します。そのデータ型は、TABLE OF VARCHAR2(4000)という定義を执つSEM_GRAPHSです。この属性のデフォルト値はNULLです。graphsがNULLの場合、デフォルト・グラフとして、問合せモデルのセットに含まれるすべてのグラフのUNION ALLが使用されます。
named_graphs属性は、GRAPH句によって一致させることができる名前付きグラフのセットを指定します。そのデータ型は、TABLE OF VARCHAR2(4000)という定義を执つSEM_GRAPHSです。この属性のデフォルト値はNULLです。named_graphsがNULLの場合、GRAPH句によって、問合せモデルのセットに含まれるすべての名前付きグラフを一致させることができます。
SEM_MATCHテーブル・ファンクションでは、入力変数に応じた因素とともにANYDATASET型のオブジェクトが戻されます。次の説明において、varは問合せで使用される変数名を示します。変数varごとに、結果因素にはvar、var$RDFVID、var$_PREFIX、var$_SUFFIX、var$RDFVTYP、var$RDFCLOB、var$RDFLTYPおよびvar$RDFLANGの各属性が含まれます。
このような場合、varは変数にバインドされた字句の値を保执し、var$RDFVIDは変数にバインドされた値のVALUE_IDを执ち、var$_PREFIXおよびvar$_SUFFIXは、変数にバインドされた値の接頭辞と接尾辞であり、var$RDFVTYPは、変数にバインドされた値のタイプ(URI、LIT [literal]またはBLN [blank node])を示し、var$RDFCLOBは、値がロング・リテラルの場合に変数にバインドされた字句の値を执ち、var$RDFLTYPは、リテラルがバインドされている場合にそのバインドされたリテラルのタイプを示し、var$RDFLANGは、言語タグ付きのリテラルがバインドされている場合に、そのバインドされたリテラルの言語タグを执ち、var$RDFCLOBはCLOB型ですが、他のすべての属性はVARCHAR2型です。
リテラル値または空缺ノードの場合、接頭辞は値そのものになり、接尾辞はNULLになります。URI値の場合、接頭辞は値の一番右側にある/(スラッシュ)、#(ポンド)または:(コロン)の3つのいずれかの笔墨から左側の部分となり、接尾辞はそれより右側の値部分となります。たとえば、URI値の場合、接頭辞は、接尾辞はgrandParentOfとなります。
変数値の列とともに、SPARQL SELECT構文を使用するSEM_MATCH問合せは、追加のNUMBER列であるSEM$ROWNUMを戻します(この列は、SPARQL ORDER BY句を含む問合せの正しい結果順序を保証するために使用できます)。
例1-9では、RDFSとfamily_rbの2つのルールベースによる推論を使用して、familyモデルからすべての祖父(祖父母の男性の方)とその孫を選択します。(この例は、1.11.2項の例1-44からの抜粋です。)
例1-10は例1-9と同じ機能ですが、HINT0オプションが追加されています。
例1-11では、Pathway/Genome BioPaxオントロジを使用して、ProteinsとComplexesの両方に属するすべての化学的複合タイプを得回します。
例1-11のとおり、SEM_MATCHテーブル・ファンクションの検索パターンは、変数が疑問符笔墨(?)で始まるSPARQLと同様の構文を使用して指定します。この例の場合、変数?rは、同じ語に一致する必要があるため、ProteinsとComplexesの両方のサブクラスである必要があります。
SEM_RELATED演算子を使用してOWLオントロジを問い合せる轨范の詳細は、2.3項を参照してください。
97自拍超频在线複数のモデルを問い合せる場合、または1つ以上のモデルおよびそれに対応する伴意を問い合せる場合、パフォーマンスの朝上のため、仮念念モデルを使用することを考慮してください(1.3.8項を参照)。
例1-13では、各祖父の进入する試合の名前(いずれの試合にも进入しない場合はNULL)が戻されるように、OPTIONAL構成因素を使用して例1-12を変更しています。
OPTIONALグラフ・パターンに複数のトリプル・パターンが存在する場合、OPTIONALグラフ・パターンの各トリプル・パターンに一致が検出された場合にのみ、オプション変数の値が戻されます。例1-14では、各祖父とその孫の両方が进入する試合の名前(祖父と孫が一緒に进入している試合がない場合はNULL)が戻されるように、例1-13を変更しています。また、各BGP内でトリプル・パターンを順番に評価し、ルートBGPとOPTIONAL BGPを結合するためにハッシュ結合を使用するように指定するグローバル問合せオプティマイザ・ヒントも使用しています。
単一の問合せには、ネストするかパラレルに設定できる複数のOPTIONALグラフ・パターンを含めることができます。例1-15では、ネストしたOPTIONALグラフ・パターンを使用して例1-14を変更しています。この例では、各祖父について、(1)祖父の进入する試合(いずれの試合にも进入しない場合はNULL)、および(2)祖父が試合に进入する場合は同じ試合に进入している孫の年齢(孫と一緒に进入している試合がない場合はNULL)が戻されます。例1-15では、ネストしたOPTIONALグラフ・パターンの?y :plays ?game . ?y :age ?ageに一致していなくても、?gameに値が戻されることに防御してください。
例1-16では、パラレルのOPTIONALグラフ・パターンを使用して例1-14を変更しています。この例では、各祖父について、(1)祖父の进入する試合(いずれの試合にも进入しない場合はNULL)、および(2)祖父の電子メール・アドレス(電子メール・アドレスがない場合はNULL)が戻されます。ネストしたOPTIONALグラフ・パターンとは異なり、パラレルのOPTIONALグラフ・パターンはそれぞれ個別に処理されます。つまり、電子メール・アドレスが見つかると、それは試合が見つかったかどうかにかかわらず戻され、試合が見つかると、それは電子メール・アドレスが見つかったかどうかにかかわらず戻されます。
例1-17では、NYまたはCAに居住している祖父のみの孫の情報が戻されるように、FILTER構成因素を使用して例1-12を変更しています。
FILTER句では、算術演算子(+、-、*、/)、ブール演算子、論理結合子(胖白系列
下一篇:没有了