10.3 例: 直接マッピングによるRDFビュー・グラフの使用
この項では、直接マッピングによるRDFビュー・グラフの使用例を示します。
直接マッピングによるRDFビュー・グラフを作成および使用するには、次のステップを実行します。
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;
- 表にデータを挿入します。
-- 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);
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; /
- 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
親トピック: RDFビュー: RDFとしてのリレーショナル・データ