D.5 リファレンス情報(MDSYS_Ownedセマンティック・ネットワークのみ)

この項では、MDSYS所有のセマンティク・ネットワークにのみ適用されるRDFセマンティク・グラフ・サブプログラムのリファレンス情報を示します。

D.5.1 SEM_OLSパッケージのサブプログラム

SEM_OLSパッケージには、Oracle Label Security (OLS)を使用した、RDFデータに対するトリプルレベル・セキュリティに関連するサブプログラム(関数とプロシージャ)が含まれます。

この章のサブプログラムを使用するには、RDFセマンティク・グラフの概要RDFデータのファイングレイン・アクセス制御に記載されている概念および使用情報について理解しておく必要があります。

この章では、サブプログラムに関するリファレンス情報を示します(サブプログラムのリストはアルファベット順です)。

D.5.1.1 SEM_OLS.APPLY_POLICY_TO_APP_TAB

形式

SEM_OLS.APPLY_POLICY_TO_APP_TAB(
     policy_name   IN VARCHAR2, 
     schema_name   IN VARCHAR2, 
     table_name    IN VARCHAR2, 
     predicate     IN VARCHAR2 DEFAULT NULL);

説明

MDSYS所有ネットワークのアプリケーション表にOLSポリシーを適用します。

パラメータ

policy_name

既存のOLSポリシーの名前。

schema_name

アプリケーション表を含むスキーマの名前。

table_name

アプリケーション表の名前。

predicate

ラベルベースの述語と組み合せる追加の述語。

使用に関するノート

トリプルレベル・セキュリティを使用する場合、ネットワークの各セマンティク・モデルにはOLSが適用されます。つまり、関連する内部表とすべてのアプリケーション表にラベル・セキュリティが適用されるため、既存のセマンティク・モデルのアプリケーション表に手動でポリシーを適用する必要はありません。ただし、OLSポリシーの適用後に追加のモデルを作成する必要がある場合、モデルを作成する前に、SEM_OLS.APPLY_POLICY_TO_APP_TABプロシージャを使用してアプリケーション表にOLSを適用する必要があります。

このプロシージャを実行するには、SA_POLICY_ADMINパッケージのEXECUTE権限およびpolicy_DBAロールを持っている必要があります。

このプロシージャを実行する前に、rdfsa_optionsパラメータにSEM_RDFSA.TRIPLE_LEVEL_ONLYを指定するSEM_RDFSA.APPLY_OLS_POLICYプロシージャを実行しておく必要があります。

アプリケーション表からOLSポリシーを削除するには、SEM_OLS.REMOVE_POLICY_FROM_APP_TABプロシージャを使用します。

OLSのサポートの詳細は、RDFデータのファイングレイン・アクセス制御を参照してください。

このプロシージャは、スキーマプライベート・ネットワークではなく、MDSYS所有ネットワークにのみ適用されます。(この手順をスキーマ・プライベート・ネットワークに適用しようとすると、エラー「Ora -20000: スキーマ・プライベート・ネットワークにアプリケーション表がありません」が戻されます。)セマンティク・ネットワークのタイプおよびオプションの詳細は、「RDFネットワーク」を参照してください。

次の例では、MY_SCHEMA.MY_APP_TABLEアプリケーション表にOLSポリシーdefenseを適用します。

begin
  sem_ols.apply_policy_to_app_table(
        policy_name => 'defense',
        schema_name => 'my_schema',
        table_name  => 'my_app_table');
end;
/

D.5.1.2 SEM_OLS.REMOVE_POLICY_FROM_APP_TAB

形式

SEM_OLS.REMOVE_POLICY_FROM_APP_TAB(
     policy_name   IN VARCHAR2, 
     schema_name   IN VARCHAR2, 
     table_name    IN VARCHAR2,
     check_model   IN BOOLEAN DEFAULT TRUE);

説明

MDSYS所有ネットワークのアプリケーション表からOLSポリシーを永続的に削除または分離します。

パラメータ

policy_name

既存のOLSポリシーの名前。

schema_name

アプリケーション表を含むスキーマの名前。

table_name

アプリケーション表の名前。

check_model

TRUE (デフォルト)に設定すると、アプリケーション表に関連付けられているモデルが存在するかどうかをチェックします(モデルが存在する場合は例外を生成します)。FALSEに設定すると、モデルが存在するかどうかをチェックせずに操作を実行します。

使用に関するノート

セマンティク・モデルをすでに削除していて、アプリケーション表を保護する必要がなくなった場合、このプロシージャを使用できます。

このプロシージャを実行するには、SA_POLICY_ADMINパッケージのEXECUTE権限およびpolicy_DBAロールを持っている必要があります。

このプロシージャを実行する前に、rdfsa_optionsパラメータにSEM_RDFSA.TRIPLE_LEVEL_ONLYを指定するSEM_RDFSA.APPLY_OLS_POLICYプロシージャを実行しておく必要があります。

check_modelTRUE (デフォルト)に設定すると、関連付けられているモデルが存在する場合は例外が生成されます。この場合、このプロシージャを実行するには、最初にモデルを削除する必要があります。

OLSのサポートの詳細は、RDFデータのファイングレイン・アクセス制御を参照してください。

このプロシージャは、スキーマプライベート・ネットワークではなく、MDSYS所有ネットワークにのみ適用されます。(この手順をスキーマ・プライベート・ネットワークに適用しようとすると、エラー「Ora -20000: スキーマ・プライベート・ネットワークにアプリケーション表がありません」が戻されます。)セマンティク・ネットワークのタイプおよびオプションの詳細は、「RDFネットワーク」を参照してください。

次の例では、MY_SCHEMA.MY_APP_TABLEアプリケーション表からOLSポリシーdefenseを削除します。

begin
  sem_ols.remove_policy_from_app_table(
        policy_name => 'defense',
        schema_name => 'my_schema',
        table_name  => 'my_app_table');
end;
/

D.5.2 SEM_APIS.PRIVILEGE_ON_APP_TABLES

形式

SEM_APIS.PRIVILEGE_ON_APP_TABLES(
     command       IN VARCHAR2 DEFAULT 'GRANT',
     privilege     IN VARCHAR2 DEFAULT 'SELECT',
     network_owner IN VARCHAR2 DEFAULT NULL,
     network_name  IN VARCHAR2 DEFAULT NULL);

説明

MDSYSに対して、起動側が所有する全RDFモデルに対応するアプリケーション表へのSELECT権限またはINSERT権限の付与(または取消し)を実行します。

パラメータ

command

使用可能な値GRANT (デフォルト)またはREVOKEを含むSQL文(大/小文字の区別はありません)。

privilege

使用可能な値SELECT (デフォルト)またはINSERTを含む権限名(大/小文字の区別はありません)。

network_owner

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

network_name

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

使用に関するノート

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

次の例では、MDSYSに、起動側が所有する全RDFモデルに対応するアプリケーション表へのSELECT権限を付与します。

EXECUTE SEM_APIS.PRIVILEGE_ON_APP_TABLES('grant', 'select');

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-2を参照してください。)

network_name

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

使用に関するノート

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

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

モデルが空の場合、または、重複トリプルが存在しないか(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;

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

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

EXECUTE SEM_APIS.REMOVE_DUPLICATES('family');