10.3 例: 直接マッピングによるRDFビュー・グラフの使用

この項では、直接マッピングによるRDFビュー・グラフの使用例を示します。

直接マッピングによるRDFビュー・グラフを作成および使用するには、次のステップを実行します。

  1. TESTUSERスキーマにEMPおよびDEPTという2つのリレーショナル表を作成し、これらの2つの表に対するREAD権限をRDFUSERに付与します。
    -- Use the following relational tables.
    CREATE TABLE TESTUSER.dept (
      deptno NUMBER CONSTRAINT pk_DeptTab_deptno PRIMARY KEY,
      dname VARCHAR2(30),
      loc VARCHAR2(30)
    );
     
    CREATE TABLE TESTUSER.emp ( 
      empno NUMBER PRIMARY KEY,
      ename VARCHAR2(30),
      job VARCHAR2(20),
      deptno NUMBER REFERENCES dept (deptno)
    );
    
    GRANT READ ON TESTUSER.dept TO RDFUSER;
    
    GRANT READ ON TESTUSER.emp TO RDFUSER;
  2. 表にデータを挿入します。
    -- Insert some data.
     
    INSERT INTO TESTUSER.dept (deptno, dname, loc)
      VALUES (1, 'Sales', 'Boston');
    INSERT INTO TESTUSER.dept (deptno, dname, loc)
      VALUES (2, 'Manufacturing', 'Chicago');
    INSERT INTO TESTUSER.dept (deptno, dname, loc)
      VALUES (3, 'Marketing', 'Boston');
     
    INSERT INTO TESTUSER.emp (empno, ename, job, deptno)
      VALUES (1, 'Alvarez', 'SalesRep', 1);
    INSERT INTO TESTUSER.emp (empno, ename, job, deptno)
      VALUES (2, 'Baxter', 'Supervisor', 2);
    INSERT INTO TESTUSER.emp (empno, ename, job, deptno)
      VALUES (3, 'Chen', 'Writer', 3);
    INSERT INTO TESTUSER.emp (empno, ename, job, deptno)
      VALUES (4, 'Davis', 'Technician', 2);
  3. RDFUSERとして接続し、前のステップで作成および移入された2つの表の直接マッピングを使用して、RDFビュー・グラフempdb_modelを作成します。
    -- Create an RDF view graph using direct mapping of two tables, EMP and DEPT, 
    -- with a base prefix of http://empdb/.
    -- Specify KEY_BASED_REF_PROPERTY=T for the options parameter.
    
    
    BEGIN
      sem_apis.create_rdfview_graph(
        rdf_graph_name => 'empdb_model',
        tables => SYS.ODCIVarchar2List('"TESTUSER"."EMP"', '"TESTUSER"."DEPT"'),
        prefix => 'http://empdb/',
        options => 'KEY_BASED_REF_PROPERTY=T'
        network_owner=>'RDFUSER',
        network_name=>'NET1'
      );
    END;
    /
  4. SEM_MATCHベースのSQL問合せを使用して、新しく作成したRDFビュー・グラフを問い合せます。
    SELECT emp
      FROM TABLE(SEM_MATCH(
        'PREFIX dept: <http://empdb/TESTUSER.DEPT#>
         PREFIX emp: <http://empdb/TESTUSER.EMP#>
         SELECT ?emp {?emp emp:ref-DEPTNO ?dept . ?dept dept:LOC "Boston"}',
        SEM_Models('empdb_model'),
        NULL,
        NULL,
        NULL, NULL,NULL, NULL,NULL, 'RDFUSER', 'NET1'));
    
    EMP
    --------------------------------------------------------------------------------
    http://empdb/TESTUSER.EMP/EMPNO=1
    http://empdb/TESTUSER.EMP/EMPNO=3

    このステップに示されている問合せは、機能的に次のものと同等です。

    SQL> SELECT e.empno FROM emp e, dept d WHERE e.deptno = d.deptno AND d.loc = 'Boston';
    
         EMPNO
    ----------
             1
             3