D.5 リファレンス情報(MDSYS_Ownedセマンティック・ネットワークのみ)
この項では、MDSYS所有のセマンティク・ネットワークにのみ適用されるRDFセマンティク・グラフ・サブプログラムのリファレンス情報を示します。
- SEM_OLSパッケージのサブプログラム
SEM_OLSパッケージには、Oracle Label Security (OLS)を使用した、RDFデータに対するトリプルレベル・セキュリティに関連するサブプログラム(関数とプロシージャ)が含まれます。 - SEM_APIS.PRIVILEGE_ON_APP_TABLES
- SEM_APIS.REMOVE_DUPLICATES
親トピック: MDSYS所有セマンティク・ネットワーク
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ポリシーを適用します。
パラメータ
使用に関するノート
トリプルレベル・セキュリティを使用する場合、ネットワークの各セマンティク・モデルには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; /
親トピック: SEM_OLSパッケージのサブプログラム
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ポリシーを永続的に削除または分離します。
パラメータ
使用に関するノート
セマンティク・モデルをすでに削除していて、アプリケーション表を保護する必要がなくなった場合、このプロシージャを使用できます。
このプロシージャを実行するには、SA_POLICY_ADMINパッケージのEXECUTE
権限およびpolicy_DBA
ロールを持っている必要があります。
このプロシージャを実行する前に、rdfsa_options
パラメータにSEM_RDFSA.TRIPLE_LEVEL_ONLY
を指定するSEM_RDFSA.APPLY_OLS_POLICYプロシージャを実行しておく必要があります。
check_model
をTRUE
(デフォルト)に設定すると、関連付けられているモデルが存在する場合は例外が生成されます。この場合、このプロシージャを実行するには、最初にモデルを削除する必要があります。
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; /
親トピック: SEM_OLSパッケージのサブプログラム
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権限の付与(または取消し)を実行します。
パラメータ
使用に関するノート
セマンティク・ネットワークのタイプおよびオプションの詳細は、「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');