D.5.3 SEM_APIS.REMOVE_DUPLICATES

書式

SEM_APIS.REMOVE_DUPLICATES(
     model_name           IN VARCHAR2, 
     threshold            IN FLOAT DEFAULT 0.3, 
     rebuild_apptab_index IN BOOLEAN DEFAULT TRUE,
     options              IN VARCHAR2 DEFAULT NULL,
     network_owner        IN VARCHAR2 DEFAULT NULL,
     network_name         IN VARCHAR2 DEFAULT NULL);

説明

モデルから重複トリプルを削除します。

パラメータ

model_name

モデルの名前。

threshold

削除操作が実行されるために、どれだけ多くのトリプルが必要かを決定する値。このプロシージャは、モデルのトリプルの数が次の計算式を上回る場合にのみ、トリプルを削除します(トリプルの合計 - 一意のトリプルの合計 + 0.01) / (一意のトリプルの合計 + 0.01)。デフォルト値の0.3とトリプルの合計1000 (重複を含む)を含むモデルの場合、重複の数がおよそ230を超える場合にのみ、重複トリプルが削除されます。

しきい値が低くなるほど、プロシージャが重複を削除するのに必要な重複の数は少なくなり、しきい値が高くなるほど、プロシージャが重複を削除するのに必要な重複の数は多くなります。

rebuild_apptab_index

TRUE (デフォルト)は、重複トリプルの削除後、この操作によって影響された表の使用可能なすべての索引を再作成し、FALSEは、索引を再作成しません。

options

(将来使用するために予約済)

network_owner

セマンティク・ネットワークの所有者。(表1-1を参照してください。)

network_name

セマンティク・ネットワークの名前。(表1-1を参照してください。)

使用上のノート

重複トリプルが削除されると、トリプル列以外の列の情報など、削除された行のすべての情報が失われます。

このプロシージャは、仮想モデル(「仮想モデル」を参照)ではサポートされません。

モデルが空の場合、または、重複トリプルが存在しないか(threshold値を使用して計算されるような)十分な重複トリプルが存在しない場合、このプロシージャはどのような削除操作も実行しません。

操作を実行するには(threshold値を使用して計算されるような)十分な重複がない場合、情報メッセージが表示されます。

使用不可な索引が含まれる場合、SKIP_UNUSABLE_INDEXESシステム・パラメータがTRUEに設定されているかどうかを確認してください。TRUEはこのパラメータのデフォルト値ですが、いくつかの本番データベースは値FALSEを使用することがあるため、これを変更する必要がある場合は、次を入力します。

SQL> alter session set skip_unusable_indexes=true;

1つ以上のユーザー定義のトリガーを持つアプリケーション表でこのプロシージャを使用するには、DBAユーザーとして接続する必要があり、次のように、ALTER ANY TRIGGER権限をMDSYSユーザーに付与する必要があります。

SQL> grant alter any trigger to MDSYS;

セマンティク・ネットワークのタイプおよびオプションの詳細は、「セマンティク・ネットワーク」を参照してください。

次の例では、familyという名前のモデルから重複したトリプルを削除します。デフォルトのしきい値0.3が適用され、重複が削除された後、索引が再構築されます(デフォルトの動作)。

EXECUTE SEM_APIS.REMOVE_DUPLICATES('family');