3.8.3 リレーションのプロパティ

ここでは,リレーションのプロパティについて説明します。

<この項の構成>
(1) リレーションに対するプロパティの設定
(2) リレーションのプロパティを使用した検索

(1) リレーションに対するプロパティの設定

リレーションには,プロパティが設定できます。リレーションのプロパティは,リレーション元文書やリレーション先文書を分類したり,リレーション元文書やリレーション先文書のプロパティと組み合わせた管理に使用したりできます。

リレーションのプロパティは,リレーション元文書に接続した状態で設定します。

プロパティを設定した文書間リレーションの例を次の図に示します。

図3-36 プロパティを設定した文書間リレーションの例

[図データ]

この例では,リレーションにユーザ定義プロパティとして,「Type」と「参照日」を設定しています。例えば,プロパティ「Type」によって,リレーション先文書を「参照」と「引用」に分類したりできます。また,プロパティ「参照日」とリレーション先文書のプロパティ「更新日」を比較して,参照した以降に参照先文書が更新されたかどうかを確認したりできます。

リレーションにプロパティを設定する場合は,PutRelationPropertyValuesメソッドを使用します。リレーションを設定する時に同時に設定することもできます。リレーションのプロパティを取得する場合は,GetRelationListAndLockメソッドまたはGetRelationListメソッドを使用します。

(2) リレーションのプロパティを使用した検索

文書間リレーションのプロパティは検索に使用できます。検索では,ユーザが定義したプロパティのほか,リレーションを表すRelationshipオブジェクトのプロパティとして設定されている,DMAが規定したプロパティ(dmaProp_またはedmProp_で始まるプロパティ)も使用できます。

ここでは,リレーションのプロパティによってリレーション元クラスとリレーション先クラスを内部結合(INNER JOIN)した検索の方法について,次の図を例にして説明します。

図3-37 リレーションを使用した検索に使用する文書の例

[図データ]

この例では,「論文X」,「論文Y」および「引用元論文」はdmaClass_DocVersionクラスのサブクラスを「論文クラス」を構成要素として作成されたバージョンなし文書(CdbrDocumentオブジェクト)です。また,「参考文献1」および「参考文献2」はdmaClass_DocVersionクラスのサブクラス「参考文献クラス」を構成要素として作成されたバージョンなし文書(CdbrDocumentオブジェクト)です。

この例の場合に実行できる検索の例を次に示します。

[例]作成者が『Suzuki』である論文のうち,参照先(リレーション先)の文書名が『参考文献2』である論文を検索して,その論文のOIIDと文書名を取得する。
この検索を実現するには,論文クラスと参考文献クラスを結合して実行する必要があります。このとき,それぞれの文書およびリレーションの次に示すDMAオブジェクトプロパティを使用します。
リレーションのプロパティ
  • dmaProp_Headプロパティ(リレーション先オブジェクトを表すプロパティ)
  • dmaProp_Tailプロパティ(リレーション元オブジェクトを表すプロパティ)
論文および参考文献のプロパティ
  • dmaProp_Thisプロパティ(オブジェクト自身を表すプロパティ)
リレーションのプロパティであるdmaProp_HeadプロパティとdmaProp_Tailプロパティを使用して次のような内部結合ができます。
指定例

SELECT 論文クラス.dmaProp_OIID, 論文クラス.文書名
FROM   ((論文クラス INNER JOIN リレーションクラス
ON 論文クラス.dmaProp_This = リレーションクラス.dmaProp_Tail)
INNER_JOIN 参考文献クラス
ON リレーションクラス.dmaProp_Head = 参考文献クラス.dmaProp_This)
WHERE 論文クラス.作成者 = "Suzuki"
AND 参考文献クラス.文書名 = "参考文献2"

注:
実際にedmSQL検索で指定する場合は,「論文クラス」,「参考文献クラス」および「リレーション」には,該当するクラスのクラス識別子を指定します。また,「文書名」および「作成者」には,該当するプロパティのプロパティ識別子を指定します。
edmSQL検索の詳細については,「4. オブジェクトの検索」を参照してください。
DMAオブジェクトのプロパティの詳細については,マニュアル「DocumentBroker Version 3 クラスライブラリ C++ リファレンス 基本機能編」を参照してください。