10.3 Example: Using an RDF View Graph with Direct Mapping
This section shows an example of using an RDF view graph with direct mapping.
Perform the following steps for creating and using an RDF view graph with direct mapping.
- Create two relational tables,
EMP
andDEPT
, in theTESTUSER
schema and grantREAD
privilege on these two tables toRDFUSER
.-- 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 data into the
tables.
-- 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);
- Connect as
RDFUSER
and create an RDF view graph,empdb_model
, using direct mapping of the two tables created and populated in the preceding steps.-- 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; /
- Query the newly created RDF view graph using a SEM_MATCH-based SQL
query.
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
The query shown in this step is functionally comparable to:
SQL> SELECT e.empno FROM emp e, dept d WHERE e.deptno = d.deptno AND d.loc = 'Boston'; EMPNO ---------- 1 3
Parent topic: RDF Views: Relational Data as RDF