SEM_RDFSAパッケージには、仮想プライベート・データベース(VPD)またはOracle Label Security (OLS)を使用してRDFデータにファイングレイン・アクセス制御を提供するサブプログラム(ファンクションとプロシージャ)が含まれます。この章のサブプログラムを使用するには、「RDFセマンティク・グラフの概要」と「RDFデータのファイングレイン・アクセス制御」に記載されている概念および使用情報について理解しておく必要があります。
この章では、サブプログラムに関するリファレンス情報を示します(サブプログラムのリストはアルファベット順です)。
書式
SEM_RDFSA.ADD_VPD_CONSTRAINT( policy_name IN VARCHAR2, constr_name IN VARCHAR2, match_pattern IN VARCHAR2, apply_pattern IN VARCHAR2, constr_group IN VARCHAR2 DEFAULT NULL);
説明
VPDポリシーにデータ・アクセス制約を追加します。
パラメータ
使用上の注意
このプロシージャは、VPDポリシーにデータ・アクセス制約を追加します。VPDポリシーの所有者のみが、ポリシーに新しい制約を追加できます。新しく追加された制約はすぐに有効になり、VPDポリシーに関連付けられているすべてのRDFモデルで問合せのために実施されます。
制約グループが、アプリケーション・コンテキスト(「RDFデータのVPDポリシー」を参照)に基づいて実行時に選択的にアクティブ化または非アクティブ化できるように、ポリシーごとに指定される場合があります。制約グループのない制約は、常にアクティブです。このプロシージャに渡される一致および適用パターンの詳細は、「データ・アクセス制約」を参照してください。
MDSYS.RDFVPD_POLICY_CONSTRAINTSビュー(「RDFVPD_POLICY_CONSTRAINTSビュー」で説明)も参照してください。
VPDのサポートに関する説明は、「RDFセマンティク・グラフでの仮想プライベート・データベースのサポート」を参照してください。
例
次の例では、RDFクラスContractsへのデータ・アクセス制約をVPDポリシーに追加して、それに制約グループuser
を割り当てます。
begin sem_rdfsa.add_vpd_constraint( policy_name => 'contracts_policy', constr_name => 'andy_constraint_1', match_pattern =>'{?contract rdf:type <http://www.myorg.com/classes/Contract>}', apply_pattern => '{?contract pred:hasMember "sys_context('sa$appctx','app_user_uri'}"^^orardf:instruction }', constr_group => 'user'); end; /
前述の例では、セキュアなアプリケーション・コンテキストを使用して、問合せを発行しているユーザーを識別し、その値を適用パターンにバインディングしてユーザーが特定の契約にアクセスできるようにします。名前空間sa$appctx
を持つセキュアなアプリケーション・コンテキストでは、属性app_user_uri
の値をログインしているユーザーを識別するURIに初期化することが予測されます。
次の例では、同じVPDポリシーにRDFプロパティhasContractValue
のデータ・アクセス制約を追加して、それを制約グループvp
に割り当てます。
begin sem_rdfsa.add_vpd_constraint( policy_name => 'contracts_policy', constr_name => 'vp_access_to_contr_value', match_pattern => '{?contract pred:hasContractValue ?cvalue }', apply_pattern => '{?contract pred:drivenBy ?dept . ?dept pred:hasVP "sys_context('sa$appctx','app_user_uri'}"^^orardf:instruction }', constr_group => 'vp'); end; /
書式
SEM_RDFSA.APPLY_OLS_POLICY( policy_name IN VARCHAR2, rdfsa_options IN NUMBER DEFAULT SEM_RDFSA.SECURE_SUBJECT, table_options IN VARCHAR2 DEFAULT 'ALL_CONTROL', label_function IN VARCHAR2 DEFAULT NULL, predicate IN VARCHAR2 DEFAULT NULL);
説明
セマンティク・データ・ストアにOLSポリシーを適用します。
パラメータ
既存のOLSポリシーの名前。
RDFデータで有効にするファイングレイン・アクセス制御のモードを指定するオプション。RDFデータを保護するためのデフォルトのオプションは、トリプルの主語の位置に表示されるリソースに機密性ラベルを割り当てます。rdfsa_options
パラメータを使用して「使用方法」の表15-1で定義されている定数の1つを指定することで、デフォルトを上書きできます。
ポリシー実施オプション。デフォルト値(ALL_CONTROL
)は、このプロシージャでサポートされる唯一の値です。
デフォルトとして使用するラベル値を戻すファンクションを起動する文字列。
ラベルベースの述語と組み合せる追加の述語。
使用上の注意
このプロシージャで指定されるOLSポリシーは、列名をCTXT1として作成される必要があり、デフォルトのポリシー・オプションを使用する必要があります。ポリシー・オプションの詳細は、『Oracle Label Security管理者ガイド』を参照してください。
このプロシージャは、MDSYSスキーマで定義される複数の表でsa_policy_admin.apply_table_policy
プロシージャを起動します。SEM_RDFSA.APPLY_OLS_POLICYプロシージャのパラメータtable_options
、label_function
およびpredicate
は、sa_policy_admin.apply_table_policyプロシージャにある同じ名前のパラメータと同じセマンティクを持ちます。
rdfsa_options
パラメータの場合、パッケージ定数を必要なオプションに対して指定できます。表15-1に、これらの定数および説明を示します。
表15-1 rdfsa_optionsパラメータのSEM_RDFSAパッケージ定数
定数 | 説明 |
---|---|
SEM_RDFSA.SECURE_SUBJECT |
トリプルの主語の位置に表示されるリソースに機密性ラベルを割り当てます。 |
SEM_RDFSA.SECURE_PREDICATE |
トリプルの述語の位置に表示されるリソースに機密性ラベルを割り当てます。 |
SEM_RDFSA.SECURE_OBJECT |
トリプルの目的語の位置に表示されるリソースに機密性ラベルを割り当てます。 |
SEM_RDFSA.TRIPLE_LEVEL_ONLY |
トリプルレベル・セキュリティを適用します。適切なパフォーマンスを提供し、ラベルを個々のリソースに割り当てる必要をなくします。(My Oracle Supportから入手可能なパッチ9819833がインストールされている必要があります。) |
SEM_RDFSA.OPT_DEFINE_BEFORE_USE |
機密性ラベルがリソースに定義される前に、トリプルのRDFリソースの使用を制限します。このオプションが指定されない場合、ユーザーの最初の行のラベルは最初の使用でリソースのデフォルトのラベルとして使用されます。 |
SEM_RDFSA.OPT_RELAX_TRIPLE_LABEL |
トリプル・ラベルとそのすべてのコンポーネントに関連付けられているラベル間に存在する優位関係を緩和します。このオプションを使用すると、ユーザーがすべてのトリプル・コンポーネントに対するREADアクセス権を持ち、トリプル・ラベルがコンポーネント・ラベルと関係がない場合にトリプルを定義できます。このオプションを使用しない場合、トリプル・ラベルは、少なくともそのすべてのコンポーネントのラベルを網羅する必要があります。 |
新しく挿入されたトリプルのカスタム・ラベルを生成するには、label_function
パラメータで関数を指定できます。ラベル・ファンクションはMDSYS.RDF_LINK$表に関連付けられ、この表の列は、次の例に示すように、ラベル・ファンクションへのパラメータとして構成される場合があります。
fgac_admin.new_triple_label(:new.model_id, :new.start_node_id, :new.p_value_id, :new.canon_end_node_id)'
OLSポリシーは、異なる構造を持つ複数の表に適用されるため、predicate
パラメータに割り当てられる述語の唯一有効な列の参照は、ラベル列CTXT1の参照です。OLSが既存のデータのセマンティク・データ・ストアで有効にされる場合、アクセス制限なしでこのデータの使用を継続できるように、'OR CTXT1 is null'
の形式の述語を指定できます。
OLS対応セマンティク・データ・ストアは、複数のモデルで構成されるすべてのRDFトリプルで機密性ラベルを使用します。このようなトリプルへのユーザー・アクセスは、モデル・ビューおよびSEM_MATCH問合せを通して、OLSポリシーによって制限されます。さらに、アプリケーション表を所有しているユーザーとは無関係に、表の(タイプSDO_RDF_TRIPLE_Sの)トリプル列へのアクセスは、OLSポリシーによって完全なアクセス権限を持つユーザーに制限されます。
トリプルは、対応するアプリケーション表に対するINSERT権限を使用して特定のRDFモデルに挿入されます。新しいトリプルの機密性ラベルが、ユーザーのセッション・コンテキスト(最初の行のラベル)またはラベル・ファンクションを使用して生成されます。トリプルは、トリプル・コンポーネントに関連付けられているラベルを使用して、RDFポリシー違反に対して検証されます。トリプル情報にはアプリケーション表からアクセスできない場合がありますが、OLSポリシー制限を適用している間は、トリプルにアクセスするためにモデル・ビューに問い合せることができます。必要なポリシー権限(WRITEUP、WRITEACROSSなど)を持っていれば、モデル・ビューのCTXT1列を更新して、トリプルに割り当てられるラベルをリセットできます。新しいラベルは、トリプル・コンポーネントに関係するRDFポリシー違反に対して自動的に検証されます。モデル・ビューのCTXT1列に対するUPDATE権限はモデルの所有者に付与され、このユーザーはこの権限を他のユーザーに選択的に付与できます。
RDFモデルが完全なアクセス権を持つユーザー以外のスキーマで作成される場合は、モデル・オブジェクトに対する必要な権限(具体的には、アプリケーション表に対する読取り/書込みアクセス権、モデル・ビューへの読取りアクセス権、およびモデル・ビューのCTXT1列への書込みアクセス権)をメンテナンス操作のためにそれらのユーザーに付与できます。これらの操作には、モデルへのバルク・ロード、トリプルに割り当てられるすべての機密性ラベルのリセット、およびモデルを使用した伴意の作成が含まれます。
OLSポリシーを無効にするには、SEM_RDFSA.DISABLE_OLS_POLICYプロシージャを使用します。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、セキュアな主語およびセキュアな述語オプションを使用して、RDFデータへのセキュアなアクセスを有効にします。
begin sem_rdfsa.apply_ols_policy( policy_name => 'defense', rdfsa_options => sem_rdfsa.SECURE_SUBJECT+ sem_rdfsa.SECURE_PREDICATE); end; /
次の例では、(保護されているトリプル・コンポーネント(主語、述語または目的語)が、関連付けられている機密性ラベルで事前定義されている場合にのみユーザーがトリプルを定義できる) Define Before Useオプションを指定することによって、前述の例を拡張します。トリプルを挿入するユーザーがSEM_RDFSAパッケージに対する実行権限を持っていない場合に、この構成は有効です。
begin sem_rdfsa.apply_ols_policy( policy_name => 'defense', rdfsa_options => sem_rdfsa.SECURE_SUBJECT+ sem_rdfsa.SECURE_PREDICATE+ sem_rdfsa.OPT_DEFINE_BEFORE_USE); end; /
書式
SEM_RDFSA.APPLY_VPD_POLICY( policy_name IN VARCHAR2, model_name IN VARCHAR2);
説明
RDFモデルにVPDポリシーを適用します。
使用上の注意
このプロシージャは、RDFモデルにVPDポリシーを適用します。VPDポリシーの所有者は、データベース・インスタンスのすべてのモデルにこれを適用できます。所有者は、SYS.DBMS_RLSパッケージに対するEXECUTE権限も持つ必要があります。
ポリシーがRDFモデルに適用された後、モデルに格納されているデータおよびこのモデルから推論されるデータには、SEM_MATCH操作でSPARQL問合せパターンを使用することでのみアクセスできます。データ・アクセスのその他の形式(モデル・ビューを通して、またはSEM_MATCH問合せの従来のグラフ・パターン構文を使用してなど)は使用できません。
VPDポリシーは、仮想モデルに参加しているモデルに適用されない場合があります。同様に、仮想モデルは、VPD対応モデルを含めるように定義されない場合があります。
MDSYS.RDFVPD_POLICIESビュー(「RDFVPD_POLICIESビュー」)も参照してください。
VPDのサポートに関する説明は、「RDFセマンティク・グラフでの仮想プライベート・データベースのサポート」を参照してください。
例
次の例では、RDFモデルにVPDポリシーを適用します。
begin sem_rdfsa.apply_vpd_policy( policy_name => 'contracts_policy', model_name => 'contracts'); end; /
書式
SEM_RDFSA.CREATE_VPD_POLICY( policy_name IN VARCHAR2, namespace_map IN RDF_ALIASES DEFAULT NULL, policy_context IN VARCHAR2 DEFAULT NULL);
説明
ユーザー・スキーマに新しいVPDポリシーを作成します。
パラメータ
使用上の注意
SYS.DBMS_RLSパッケージに対するEXECUTE権限を持つ必要があります。
ポリシーに関連付けられる名前空間マップは、SEM_RDFSA.MAINT_VPD_METADATAプロシージャを使用して追加されるポリシーのメタデータ文、およびSEM_RDFSA.ADD_VPD_CONSTRAINTプロシージャを使用して定義されるポリシーのデータ・アクセス制約で、その後使用される名前空間の接頭辞を定義するために使用される場合があります。
policy_context
パラメータに割り当てられるアプリケーション・コンテキストの名前は、実行時に制約グループを動的に管理するために使用されます。このようなコンテキストは、VPDポリシーと関連付ける前に、CREATE CONTEXTコマンドを使用して作成する必要があります。VPDポリシーで定義される各データ・アクセス制約は、属する制約グループの名前を指定する場合があります。実行時に、制約グループの名前は、グループを選択的にアクティブにするためにpolicy_context
値の名前と照合されます。(詳細は「RDFデータのVPDポリシー」を参照してください)。
MDSYS.RDFVPD_POLICIESビュー(「RDFVPD_POLICIESビュー」)も参照してください。
VPDのサポートに関する説明は、「RDFセマンティク・グラフでの仮想プライベート・データベースのサポート」を参照してください。
例
次の例では、名前空間マップでVPDポリシーを作成し、制約グループを管理するポリシー・コンテキストを関連付けます。
create context contracts_appctx using sec_admin.contracts_appctx; begin sem_rdfsa.create_vpd_policy( policy_name => 'contracts_policy', namespace_map => mdsys.rdf_aliases( mdsys.rdf_alias('','http://www.myorg.com/classes/'), mdsys.rdf_alias('pred','http://www.myorg.com/pred/'), mdsys.rdf_alias('emp','http://www.myorg.com/employee/')), policy_context => 'contracts_appctx'); end; /
書式
SEM_RDFSA.DELETE_VPD_CONSTRAINT( policy_name IN VARCHAR2, constr_name IN VARCHAR2);
説明
VPDポリシーからデータ・アクセス制約を削除します。
使用上の注意
このプロシージャは、VPDポリシーからデータ・アクセス制約を削除します。VPDポリシーの所有者のみが、ポリシーから制約を削除できます。
MDSYS.RDFVPD_POLICY_CONSTRAINTSビュー(「RDFVPD_POLICY_CONSTRAINTSビュー」で説明)も参照してください。
VPDのサポートに関する説明は、「RDFセマンティク・グラフでの仮想プライベート・データベースのサポート」を参照してください。
例
次の例では、VPDポリシーcontracts_policy
から、データ・アクセス制約vp_access_to_contr_value
を追加します。
begin sem_rdfsa.delete_vpd_constraint( policy_name => 'contracts_policy', constr_name => 'vp_access_to_contr_value'); end; /
書式
SEM_RDFSA.DISABLE_OLS_POLICY;
説明
すでにセマンティク・データ・ストアに適用されている、または有効にされているOLSポリシーを無効にします。
パラメータ
(なし)
使用上の注意
このプロシージャを使用すると、セマンティク・データ・ストアに適用されている、または有効にされているOLSポリシーを一時的に無効にできます。ポリシーを無効にするユーザーは、OLSポリシーを管理するために必要な権限を持つ必要があり、また、RDFデータに適用されるOLSポリシーにアクセスする必要もあります。
様々なRDFリソースおよびトリプルに割り当てられる機密性ラベルは保持され、OLSポリシーはこれらを実施するために再有効化される場合があります。OLSポリシーが無効である場合、特定のラベルを持つ新しいリソースを追加したり、既存のトリプルおよびリソースのラベルを更新することができます。
OLSポリシーを適用するには、SEM_RDFSA.APPLY_OLS_POLICYプロシージャを使用し、無効になっていたOLSポリシーを有効にするには、SEM_RDFSA.ENABLE_OLS_POLICYプロシージャを使用します。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、セマンティク・データ・ストアのOLSポリシーを無効にします。
begin sem_rdfsa.disable_ols_policy; end; /
書式
SEM_RDFSA.DROP_VPD_POLICY( policy_name IN VARCHAR2);
説明
使用していないVPDポリシーを削除します。
使用上の注意
このプロシージャは、使用していないVPDポリシーを、そのメタデータおよび制約とともに永続的に削除します。VPDポリシーの所有者またはこの操作を実行するDBAロールを持つユーザーである必要があります。
VPDのサポートに関する説明は、「RDFセマンティク・グラフでの仮想プライベート・データベースのサポート」を参照してください。
例
次の例では、VPDポリシーcontracts_policy
から、データ・アクセス制約vp_access_to_contr_value
を追加します。
begin sem_rdfsa.drop_vpd_policy( policy_name => 'contracts_policy', constr_name => 'vp_access_to_contr_value'); end; /
書式
SEM_RDFSA.ENABLE_OLS_POLICY;
説明
すでに無効にされているOLSポリシーを有効にします。
パラメータ
(なし)
使用上の注意
このプロシージャを使用すると、セマンティク・データ・ストアに対して無効にされているOLSポリシーを有効にできます。ポリシーを有効にするユーザーは、OLSポリシーを管理するために必要な権限を持つ必要があり、また、RDFデータに適用されるOLSポリシーにアクセスする必要もあります。
OLSポリシーを無効にするには、SEM_RDFSA.DISABLE_OLS_POLICYプロシージャを使用します。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、セマンティク・データ・ストアのOLSポリシーを有効にします。
begin sem_rdfsa.enable_ols_policy; end; /
書式
SEM_RDFSA.MAINT_VPD_METADATA( policy_name IN VARCHAR2, t_subject IN VARCHAR2, t_predicate IN VARCHAR2, t_object IN VARCHAR2, action IN VARCHAR2 DEFAULT 'ADD');
説明
主語、述語および目的語を持つRDFスキーマ文を受け入れることによって、VPDメタデータを保持します。
パラメータ
使用上の注意
このプロシージャは、RDFスキーマ文を受け入れ、そのディクショナリで適切なアクションを実行することによって、VPDポリシーに関連付けられているメタデータを保持します。VPDポリシーの所有者またはVPDポリシーへの完全なアクセス権を持つユーザーのみが、そのメタデータを保持できます。
このプロシージャを使用して追加できるメタデータ文のタイプは、t_predicate
パラメータに割り当てられる用語によって決定されます。このパラメータで受け入れられる値は、次のとおりです。
http://www.w3.org/2000/01/rdf-schema#domain http://www.w3.org/2000/01/rdf-schema#range http://www.w3.org/2000/01/rdf-schema#subClassOf http://www.w3.org/2000/01/rdf-schema#subPropertyOf http://www.w3.org/2002/07/owl#equivalentProperty
MDSYS.RDFVPD_PREDICATE_MDATAおよびMDSYS.RDFVPD_RESOURCE_RELビューについては、それぞれ「RDFVPD_PREDICATE_MDATAビュー」と「RDFVPD_RESOURCE_RELビュー」を参照してください。
VPDのサポートに関する説明は、「RDFセマンティク・グラフでの仮想プライベート・データベースのサポート」を参照してください。
例
次の例では、Project
のサブクラスとしてContract
を指定し、hasContractValue
プロパティにドメイン情報を追加します。
begin sem_rdfsa.maint_vpd_metadata( policy_name => 'contracts_policy', t_subject => '<http://www.myorg.com/classes/Project>', t_predicate => '<http://www.w3.org/2000/01/rdf-schema#subClassOf>', t_object => '<http://www.myorg.com/classes/Contract>', action => 'add'); end; begin sem_rdfsa.maint_vpd_metadata( policy_name => 'contracts_policy', t_subject => '<http://www.myorg.com/property/hasConfValue>', t_predicate => 'rdfs:domain', t_object => '<http://www.myorg.com/classes/Contract>'); end;
書式
SEM_RDFSA.REMOVE_OLS_POLICY;
説明
セマンティク・データ・ストアからOLSポリシーを永続的に削除または分離します。
パラメータ
(なし)
使用上の注意
OLSポリシーを管理するために必要な権限を持つ必要があり、また、RDFデータに適用されるOLSポリシーにアクセスする必要もあります。OLSポリシーがセマンティク・データ・ストアから分離されると、すでにトリプルおよびリソースに割り当てられているすべての機密性ラベルが失われます。
この操作は、特にRDFセキュリティ・ポリシーを保持するために作成されるオブジェクトを削除します。
OLSポリシーを適用するには、SEM_RDFSA.APPLY_OLS_POLICYプロシージャを使用します。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、すでにセマンティク・データ・ストアに適用されているOLSポリシーを削除します。
begin sem_rdfsa.remove_ols_policy; end; /
書式
SEM_RDFSA.REMOVE_VPD_POLICY( policy_name IN VARCHAR2, model_name IN VARCHAR2);
説明
RDFモデルからVPDポリシーを削除(分離)します。
使用上の注意
このプロシージャは、RDFモデルからVPDポリシーを永続的に削除または分離します。VPDポリシーの所有者またはこの操作を実行するDBAロールを持つユーザーである必要があります。
VPDポリシーが削除された後、特定のモデルのファイングレイン・アクセス制御はオフにされ、モデル・ビューに対するSELECT権限を持つユーザーはモデルのすべてのデータにアクセスできます。
VPDのサポートに関する説明は、「RDFセマンティク・グラフでの仮想プライベート・データベースのサポート」を参照してください。
例
次の例では、RDFモデルからVPDポリシーを削除します。
begin sem_rdfsa.remove_vpd_policy( policy_name => 'contracts_policy', model_name => 'contracts'); end; /
書式
SEM_RDFSA.RESET_MODEL_LABELS( model_name IN VARCHAR2);
説明
モデルまたはグローバル・リソースに関連付けられているラベルをリセットします(関連付けられている1つ以上のモデルは空である必要があります)。
使用上の注意
モデル名を指定する場合、モデルは空である必要があります。RDF$GLOBAL
を指定する場合、すべてのモデルは空である必要があります(つまり、RDFリポジトリにトリプルは存在しません)。
セマンティク・データ・ストアに適用されるOLSポリシーに関して完全なアクセス権限を持っている必要があります。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、Contracts
モデルに関連付けられているすべてのリソースおよびそのラベルを削除します。
begin sem_rdfsa.reset_model_labels(model_name => 'Contracts'); end; /
書式
SEM_RDFSA.SET_PREDICATE_LABEL( model_name IN VARCHAR2, predicate IN VARCHAR2, label_string IN VARCHAR2);
説明
モデル・レベルの述語に、またはリポジトリ全体に機密性ラベルを設定します。
パラメータ
使用上の注意
モデル名を指定する場合、この操作を実行するには、モデルへの読取りアクセス権およびSEM_RDFSAパッケージに対する実行権限が必要です。RDF$GLOBAL
を指定する場合、RDFデータに適用されるOLSポリシーに関して完全なアクセス権限が必要です。
ラベルが述語にすでに存在する場合、既存のラベルを上書きするには指定されたラベルへのアクセス権およびOLSポリシー権限が必要です。SECURE_PREDICATEオプションは、RDFデータに対して有効にする必要があります。
既存の述語ラベルがこの操作で更新される場合、この述語を使用するトリプルのラベルは新しい述語ラベルよりもすべて優位である必要があります。唯一の例外は、OPT_RELAX_TRIPLE_LABELオプションがOLS対応RDFデータで選択されている場合です。
RDF$GLOBAL
を指定する場合、モデル全体にわたる一意の機密性ラベルを持つグローバル述語が作成されます。同じ述語がすでに1つ以上のモデルで定義されている場合、グローバル・ラベルはそのようなラベルすべてよりも優位であり、モデル固有のラベルは特定の述語用に置き換えられます。
述語のラベルが設定された後、この述語を持つ新しいトリプルは、トリプル・ラベル(ユーザーの最初の行のラベルから、またはラベル関数を使用して初期化される場合があります)が、述語の機密性ラベルよりも優位である場合にのみ追加できます。この優位関係はOPT_RELAX_TRIPLE_LABELオプションで緩和できますが、その場合には、ユーザーは述語を使用して新しいトリプルを定義できるように述語への読取りアクセス権を少なくとも持っている必要があります。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、Contracts
モデルに述語ラベル、およびデータベース・インスタンスのすべてのモデルに別の述語ラベルを設定します。
begin sem_rdfsa.set_predicate_label( model_name => 'contracts', predicate => '<http://www.myorg.com/pred/hasContractValue>', label_string => 'TS:US_SPCL'); end; / begin sem_rdfsa.set_predicate_label( model_name => 'rdf$global', predicate => '<http://www.myorg.com/pred/hasStatus>', label_string => 'SE:US_SPCL:US'); end; /
書式
SEM_RDFSA.SET_RDFS_LABEL( label_string IN VARCHAR2, inf_override IN VARCHAR2);
説明
RDFSスキーマ要素に機密性ラベルを設定します。
パラメータ
使用上の注意
このプロシージャは、RDFスキーマ・リソース(通常、URIのhttp://www.w3.org/1999/02/22-rdf-syntax-ns#
およびhttp://www.w3.org/2000/01/rdf-schema#
接頭辞によって認識されます)に関連付けられている機密性ラベルを設定またはリセットします。これらのリソースへの制限付きアクセス権を使用して機密性ラベルを割り当てることができるため、新しいRDFクラスの作成や新規プロパティの追加などの操作は、より高い権限を持つユーザーに制限できます。
RDFデータに適用されるポリシーに関して完全なアクセス権限を持っている必要があります。
RDFスキーマ要素は、緩和されたトリプル・ラベル・オプションを暗黙的に使用するため、主語、述語または目的語にRDFSおよびOWLの構成要素を使用するトリプルが、スキーマ構成要素に関連付けられているラベルよりも優位である機密性ラベルを持つことは強制されません。したがって、新しいRDFクラスおよびプロパティを定義できるユーザーは、少なくともスキーマ要素への読取りアクセス権を持っている必要があります。
RDFスキーマ要素が推論されたトリプルで参照される場合、システム定義およびカスタムのラベル・ジェネレータは、推論されたトリプルの適切なラベルを決定する際に、推論オーバーライド・ラベルを検討します。カスタム・ラベル・ジェネレータが使用される場合、RDFスキーマ要素が関係していると、このオーバーライド・ラベルが実際のラベルのかわりに渡されます。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、すべてのRDFスキーマ要素に、一意のコンパートメントを持つラベルを設定します。新しいRDFクラスおよびプロパティを定義できるユーザーは、コンパートメントへの独占的なメンバーシップを持つことが求められます。
begin sem_rdfsa.set_rdfs_label( label_string => 'SE:RDFS:', inf_override => 'SE:US_SPCL:US'); end; /
書式
SEM_RDFSA.SET_RESOURCE_LABEL( model_name IN VARCHAR2, resource_uri IN VARCHAR2, label_string IN VARCHAR2, resource_pos IN VARCHAR2 DEFAULT 'S');
説明
トリプルの主語や目的語の位置で使用される場合があるリソースに機密性ラベルを設定します。
パラメータ
リソースが属するモデルの名前、または同じラベルがすべてのモデルのリソースの使用に適用される必要がある場合は文字列RDF$GLOBAL
。
1つ以上のトリプルの主語または目的語として使用される場合があるリソースのURI。
文字列表現のOLS行ラベル。
トリプル内のリソースの位置。S
、O
またはS,O
。同じリソースに対して、最大2つの別々のラベル(リソースがトリプルの主語の位置で使用される場合に考慮するラベルおよび目的語の位置に表示される場合に考慮するラベル)を指定できます。値'S
'、'O
'、または'S,O
' は、それぞれ、主語、目的語、または主語および目的語の両方の位置のリソースにラベルを設定します。
使用上の注意
モデル名を指定する場合、この操作を実行するには、モデルへの読取りアクセス権およびSEM_RDFSAパッケージに対する実行権限が必要です。RDF$GLOBAL
を指定する場合、RDFデータに適用されるOLSポリシーに関して完全なアクセス権限が必要です。
ラベルが述語にすでに存在する場合、既存のラベルを上書きするには指定されたラベルへのアクセス権およびOLSポリシー権限が必要です。SECURE_PREDICATEオプションは、RDFデータに対して有効にする必要があります。
既存のリソース・ラベルがこの操作で更新される場合、指定された位置でこのリソースを使用するトリプルのラベルは新しいリソース・ラベルよりもすべて優位である必要があります。唯一の例外は、OPT_RELAX_TRIPLE_LABELオプションがOLS対応RDFデータで選択されている場合です。
RDF$GLOBAL
を指定する場合、モデル全体にわたる一意の機密性ラベルを持つグローバル・リソースが作成されます。同じリソースがすでに1つ以上のモデルの同じトリプルの位置で定義されている場合、グローバル・ラベルはそのようなラベルすべてよりも優位であり、モデル固有のラベルはその位置にある特定のリソース用に置き換えられます。
述語のラベルが設定された後、指定された位置のリソースを使用する新しいトリプルは、トリプル・ラベルがリソースの機密性ラベルよりも優位である場合にのみ追加できます。この優位関係はOPT_RELAX_TRIPLE_LABELオプションで緩和できますが、その場合には、ユーザーはリソースへの読取りアクセス権を少なくとも持っている必要があります。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、複数のリソースにその位置に基づいて機密性ラベルを設定します。
begin sem_rdfsa.set_resource_label( model_name => 'contracts', resource_uri => '<http://www.myorg.com/contract/projectHLS>', label_string => 'SE:US_SPCL:US', resource_pos => 'S,O'); end; / begin sem_rdfsa.set_resource_label( model_name => 'rdf$global', resource_uri => '<http://www.myorg.com/contract/status/Complete>', label_string => 'SE:US_SPCL:US', resource_pos => 'O'); end; /
書式
SEM_RDFSA.SET_RULE_LABEL( rule_base IN VARCHAR2, rule_name IN VARCHAR2, label_string IN VARCHAR2);
説明
ルールベースに属するルールに機密性ラベルを設定します。
使用上の注意
ルールに割り当てられる機密性ラベルは、適切なラベル・ジェネレータ・オプションが選択されている場合に、推論されたトリプルにラベルを生成するために使用されます。
ルールベースへのアクセス権を持っている必要があり、また、RDFSルールベースのシステム定義のルールにラベルを割り当てることができるOLSポリシーに関して完全なアクセス権限を持っている必要があります。
ユーザー定義のルールに割り当てられるラベルのサポートはありません。
OLSのサポートの詳細は、「RDFデータのファイングレイン・アクセス制御」を参照してください。
例
次の例では、RDFSルールに機密性ラベルを割り当てます。
begin sem_rdfsa.set_rule_label (rule_base => 'RDFS', rule_name => 'RDF-AXIOMS', label_string => 'SE:US_SPCL:'); end; /