15.49 SEM_APIS.CREATE_VIRTUAL_MODEL

形式

SEM_APIS.CREATE_VIRTUAL_MODEL(
     vm_name       IN VARCHAR2, 
     models        IN SEM_MODELS, 
     rulebases     IN SEM_RULEBASES DEFAULT NULL, 
     options       IN VARCHAR2 DEFAULT NULL, 
     entailments   IN SEM_ENTAILMENTS DEFAULT NULL,
     network_owner IN VARCHAR2 DEFAULT NULL,
     network_name  IN VARCHAR2 DEFAULT NULL);

ノート:

このサブプログラムは、今後のリリースで非推奨になります。かわりにSEM_APIS.CREATE_RDF_GRAPH_COLLECTIONサブプログラムを使用することをお薦めします。

説明

指定されたセマンティク・モデルや伴意を含む仮想モデルを作成します。伴意は、次のいずれかの方法で指定できます。

  • 1つ以上のモデルおよび1つ以上のルールベースを指定する。この場合、仮想モデルは、指定されたモデルおよびルールベースの正確な組合せに対応する単一の伴意を使用して作成されます。このような伴意が存在しない場合はエラーが発生します。

  • 0 (ゼロ)以上のモデルおよび1つ以上の伴意を指定する。この場合、モデルと伴意の関係にかかわらず、モデルと伴意の内容が組み合されます。

最初のメソッドを使用すると、確実に適切で完全なデータセットになり、2つ目のメソッドを使用すると、適切で完全な制約が緩和され、より柔軟になります。

パラメータ

vm_name

作成する仮想モデルの名前。

models

1つ以上のセマンティク・モデル名。そのデータ型は、TABLE OF VARCHAR2(25)という定義を持つSEM_MODELSです。このパラメータがNULLの場合、仮想モデル定義にモデルは含まれません。

rulebases

1つ以上のルールベース名。そのデータ型は、TABLE OF VARCHAR2(25)という定義を持つSEM_RULEBASESです。このパラメータがNULLの場合、仮想モデル定義にルールベースは含まれません。ルールおよびルールベースの詳細は、「推論: ルールとルールベース」を参照してください。

このパラメータを指定する場合、entailmentsパラメータも指定することはできません。

options

作成のオプションは次のとおりです。

  • PXN=Tは、仮想モデルのUNION ALLベースのビュー定義を強制します。これは、16個以下のコンポーネントを持つ仮想モデルのデフォルトです。

  • PXN=Fは、仮想モデルのIN LISTベースのビュー定義を強制します。これは、16個を超えるコンポーネントを持つ仮想モデルのデフォルトです。

  • PXN=F INMEMORY=T (組み合せて使用)を指定すると、インメモリー仮想モデルを作成できます。

    INMEMORY=Tを指定し、PXN=Fは指定しなかった場合、インメモリー仮想列は作成されますが、パフォーマンスが損なわれます。INMEMORY=Tを指定しない場合は、インメモリー仮想列が作成されません。(「RDFでのインメモリー仮想列の使用」も参照してください。)

  • REPLACE=Tを指定すると、仮想モデルを、削除することなく置き換えます。(このオプションを使用することは、ビューでCREATE OR REPLACE VIEWを使用することと似ています。)

entailments

1つ以上の伴意名。そのデータ型は、TABLE OF VARCHAR2(25)という定義を持つSEM_ENTAILMENTSです。このパラメータがNULLの場合、仮想モデル定義に伴意は含まれません。伴意の詳細は、「OWL推論の使用方法」を参照してください。

このパラメータを指定する場合、rulebasesパラメータも指定することはできません。

network_owner

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

network_name

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

使用に関するノート

仮想モデルの説明(使用方法の情報を含む)は、「仮想モデル」を参照してください。

指定されたセマンティク・モデルとルールベースの組合せごとに、伴意が存在する必要があります。

仮想モデルを作成するには、(A)指定された各モデルおよび対応する伴意の所有者、または(B) DBA権限を持つユーザーである必要があります。

仮想モデルを置き換えるには、仮想モデルの所有者またはDBA権限を持つユーザーである必要があります。

オプションINMEMORY=Tは、適切なライセンスがある場合にのみ使用してください。

このプロシージャは、次の書式の名前を持つビューを作成します。

  • SEMV_vm_name。これは、各モデルおよび伴意内のトリプルのUNION ALLに対応します。このビューには重複が含まれることがあります。

  • SEMU_vm_nameは、各モデルおよび伴意内のトリプルのUNIONに対応します。このビューには重複は含まれません(このため、SEMUのUunique(一意)を表します)。

モデルm1、m2、m3から作成された仮想モデルvm1の「仮想モデル」の例を、モデルm1、m2、m3用にOWLPrimeルールベースを使用して作成した伴意で使用するために、このプロシージャは次の2つのビューを作成します(m1、m2、m3およびOWLPRIME伴意が内部のmodel_id値1、2、3、4を保持すると想定しています)。

CREATE VIEW RDFUSER.NET1#.SEMV_VM1 AS
  SELECT p_value_id, start_node_id, canon_end_node_id, end_node_id, g_id, model_id
  FROM RDFUSER.NET1#.rdf_link$ partition (MODEL_1)
UNION ALL
  SELECT p_value_id, start_node_id, canon_end_node_id, end_node_id, g_id, model_id
  FROM RDFUSER.NET1#.rdf_link$ partition (MODEL_2)
UNION ALL
  SELECT p_value_id, start_node_id, canon_end_node_id, end_node_id, g_id, model_id
  FROM RDFUSER.NET1#.rdf_link$ partition (MODEL_3)
UNION ALL
  SELECT p_value_id, start_node_id, canon_end_node_id, end_node_id, g_id, model_id
  FROM RDFUSER.NET1#.rdf_link$ partition (MODEL_4);

CREATE VIEW RDFUSER.NET1#.SEMU_VM1 AS
  SELECT p_value_id, start_node_id, canon_end_node_id, MIN(end_node_id) end_node_id, g_id, MIN(model_id) model_id 
  FROM RDFUSER.NET1#.rdf_link$ 
  WHERE model_id in (1, 2, 3, 4)
  GROUP BY p_value_id, start_node_id, canon_end_node_id, g_id;

このプロシージャを起動するユーザーは、仮想モデルの所有者となり、SEMU_vm_nameおよびSEMV_vm_nameビューに対するSELECT WITH GRANT権限を持ちます。対応する仮想モデルを問い合せるには、ユーザーはこれらのビューに対するselect権限を持っている必要があります。

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

次の例では、仮想モデルVM1を作成します。

EXECUTE sem_apis.create_virtual_model('VM1',
                                          sem_models('model_1', 'model_2'),
                                          sem_rulebases('OWLPRIME'),
                                          network_owner=>'RDFUSER',
                                          network_name=>'NET1');

次の例では、緩和された伴意の指定を使用して、仮想モデルVM1を作成します。

EXECUTE sem_apis.create_virtual_model('VM1',
                                          models=>sem_models('model_1', 'model_2'),
                                          entailments=>sem_entailments('entailment1','entailment2'),
                                          network_owner=>'RDFUSER',
                                          network_name=>'NET1');

次の例では、REPLACE=Tオプションを使用して、仮想モデルVM1を効果的に再定義します。

EXECUTE sem_apis.create_virtual_model('VM1',
                                          models=>sem_models('model_1', 'model_2'),
                                          entailments=>sem_entailments('entailment1'),
                                          options=>'REPLACE=T',
                                          network_owner=>'RDFUSER',
                                          network_name=>'NET1');