15.41 SEM_APIS.CREATE_RDFVIEW_GRAPH

形式

SEM_APIS.CREATE_RDFVIEW_GRAPH(
     rdf_graph_name      IN VARCHAR2, 
     tables              IN SYS.ODCIVarchar2List, 
     prefix              IN VARCHAR2 DEFAULT NULL, 
     r2rml_table_owner   IN VARCHAR2 DEFAULT NULL, 
     r2rml_table_name    IN VARCHAR2 DEFAULT NULL, 
     schema_table_owner  IN VARCHAR2 DEFAULT NULL, 
     schema_table_name   IN VARCHAR2 DEFAULT NULL, 
     options             IN VARCHAR2 DEFAULT NULL,
     r2rml_string        IN CLOB     DEFAULT NULL,
     r2rml_string_fmt    IN VARCHAR2 DEFAULT NULL,
     network_owner       IN VARCHAR2 DEFAULT NULL,
     network_name        IN VARCHAR2 DEFAULT NULL);

説明

指定された表またはビューのリストの直接マッピングを使用して、または、R2RMLマッピングを使用してRDFビューを作成します。

パラメータ

rdf_graph_name

作成するRDFビューの名前。

tables

直接マッピングを使用して作成されるRDFビューのリレーショナル・データのソースである表またはビューのリスト。R2RMLマッピングを使用する場合、このパラメータはNULLである必要があります。

prefix

RDFビューでURIの先頭に追加される、ベースとなる接頭辞。

r2rml_table_owner

R2MLマッピングの場合、このパラメータは必須であり、RDFビューの作成に使用されるR2RMLマッピング(N-triple形式)を保持するステージング表を所有するスキーマの名前を指定します。

直接マッピングの場合、このパラメータはオプションで、直接マッピングから生成されるR2RMLマッピング(N-triple形式)が格納されるステージング表を所有するスキーマの名前を指定します。

r2rml_table_name

R2MLマッピングの場合、このパラメータは必須であり、RDFビューの作成に使用されるR2RMLマッピング(N-triple形式)を保持するステージング表の名前を指定します。

直接マッピングの場合、このパラメータはオプションで、直接マッピングから生成されるR2RMLマッピング(N-triple形式)が格納されるステージング表の名前を指定します。

schema_table_owner

RDFビューのために生成されたRDFスキーマが格納されるステージング表を所有するスキーマの名前。

schema_table_name

RDFビューのために生成されたRDFスキーマが格納されるステージング表の名前。

options

直接マッピングでは、次の任意の組合せ(何も含めない場合を含む)をオプションで指定できます。

  • CONFORMANCE=Tは、RDFの述語名を構築するためのデータベース制約名およびスキーマ修飾された表名またはビュー名など、デフォルトでは含まれない一部の情報を抑止します。

  • GENERATE_ONLY=Tは、指定された表のためにR2RMLマッピングを生成して、指定されたr2rml_table_nameに格納するのみで、基礎となるRDFビュー・グラフは作成されません。このオプションを指定する場合、r2rml_table_nameパラメータはNULL以外である必要があります。

  • KEY_BASED_REF_PROPERTY=Tは、外部キー列名を使用してRDFの述語名を構築します。このオプションが指定されない場合は、データベース制約名がRDFの述語名を構築するために使用されます。

    直接マッピングの場合、RDFの述語名は対応するデータベース名から導出されるため、外部キー制約のために名前を保持することはデフォルトの動作です。

    KEY_BASED_REF_PROPERTY=Tの使用例については、「直接マッピングによるRDFビューの作成」例10-1を参照してください。

  • SCALAR_COLUMNS_ONLY=Tは、指定された表またはビューのスカラー列にのみR2RMLマッピングを生成します。表またはビューの他の非スカラー列は、無視されます。このオプションを指定しない場合、ユーザー定義型またはLOBの列がある表に直接マッピングを作成しようとすると、エラーが発生します。

r2rml_string

RDFビューを作成するために使用できるTurtleまたはN-Triple形式のR2RMLマッピング文字列。

r2rml_string_fmt

r2rml_stringで指定されるR2RMLマッピング文字列の形式。指定できる値は、TURTLEおよびN-TRIPLEです。

network_owner

RDFネットワークの所有者。(表1-2を参照してください。)

network_name

RDFネットワークの名前。(表1-2を参照してください。)

使用に関するノート

ネットワーク所有者に、r2rml_table_nameおよびschema_table_nameに対するSELECTおよびINSERT権限を付与する必要があります。

RDFビューの詳細は、RDFビュー: RDFとしてのリレーショナル・データを参照してください。

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

次の例では、表EMPおよびDEPTに直接マッピングを使用してRDFビューを作成します。URIに使用した接頭辞はhttp://empdb/です。

BEGIN
  sem_apis.create_rdfview_graph(
    rdf_graph_name => 'empdb_model_direct',
    tables => sem_models('EMP', 'DEPT'),
    prefix => 'http://empdb/',
    network_owner=>'RDFUSER',
    network_name=>'NET1'
  );
END;
/

次の例では、ステージング表SCOTT.R2RTABのRDFトリプルによって指定されるように、R2RMLマッピングを使用してRDFビューを作成します。

BEGIN
  sem_apis.create_rdfview_graph(
    rdf_graph_name => 'empdb_model_R2RML',
    tables => NULL,
    r2rml_table_owner => 'SCOTT',
    r2rml_table_name => 'R2RTAB',
    network_owner=>'RDFUSER',
    network_name=>'NET1'
  );
END;
/

次の例では、文字列として直接指定されるR2RMLマッピングを使用してRDFビューを作成します。

DECLARE
  r2rmlStr CLOB;
BEGIN

  r2rmlStr := 
   '@prefix rr: <http://www.w3.org/ns/r2rml#>. '||
   '@prefix xsd: <http://www.w3.org/2001/XMLSchema#>. '||
   '@prefix ex: <http://example.com/ns#>. '||'
    
    ex:TriplesMap_Emp
        rr:logicalTable [ rr:tableName "EMP" ];
        rr:subjectMap [
            rr:template "http://data.example.com/employee/{EMPNO}";
            rr:class ex:Employee;
        ];
        rr:predicateObjectMap [
            rr:predicate ex:empNum;
            rr:objectMap [ rr:column "EMPNO" ; rr:datatype xsd:integer ];
        ];
        rr:predicateObjectMap [
            rr:predicate ex:empName;
            rr:objectMap [ rr:column "ENAME" ];
        ];
        rr:predicateObjectMap [
            rr:predicate ex:jobType;
            rr:objectMap [ rr:column "JOB" ];
        ];
        rr:predicateObjectMap [
            rr:predicate ex:worksForDeptNum;
            rr:objectMap [ rr:column "DEPTNO" ; rr:dataType xsd:integer ];
        ].';

  sem_apis.create_rdfview_graph(
    rdf_graph_name => 'empdb_model_R2RML',
    tables => NULL,
    r2rml_string => r2rmlStr,
    r2rml_string_fmt => 'TURTLE',
    network_owner=>'RDFUSER',
    network_name=>'NET1'
  );

END;
/

次の例では、RDFUSERが所有するスキーマプライベート・ネットワーク内のEMP表およびDEPT表のRDFトリプルで指定されているダイレクト・マッピングを使用してRDFビューを作成します。ボストンの場所で働いている従業員に関する情報も選択します。

BEGIN
  sem_apis.create_rdfview_graph(
  rdf_graph_name => 'empdb_model',
  tables => SYS.ODCIVarchar2List('EMP', 'DEPT'),
  prefix => 'http://empdb/',
  options => 'KEY_BASED_REF_PROPERTY=T',
  network_owner=>'RDFUSER',
  network_name=>'NET1'
  );
END;
/

SELECT e.empno FROM emp e, dept d WHERE e.deptno = d.deptno AND d.loc = 'Boston';

SELECT emp
FROM TABLE(SEM_MATCH('{?emp emp:ref-DEPTNO ?dept . ?dept dept:LOC "Boston"}',SEM_Models('empdb_model'),NULL,SEM_ALIASES(
SEM_ALIAS('dept','http://empdb/RDFUSER.DEPT#'),SEM_ALIAS('emp','http://empdb/RDFUSER.EMP#')),null,null,null,null,null,'RDF_USER','NET1'));