SEM_APIS.CREATE_RDFVIEW_GRAPH
Format
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);
Description
Creates an RDF view using direct mapping for the specified list of tables or views or using R2RML mapping.
Parameters
rdf_graph_name
Name of the RDF view to be created.
tables
List of tables or views that are the sources of relational data for the RDF view to be created using direct mapping. This parameter must be null if you want to use R2RML mapping.
prefix
Base prefix to be added at the beginning of the URIs in the RDF view.
r2rml_table_owner
For R2ML mapping, this parameter is required and specifies the name of the schema that owns the staging table that holds the R2RML mapping (in N-triple format) to be used for creating the RDF view.
For direct mapping, this parameter is optional and specifies the name of the schema that owns the staging table into which the R2RML mapping (in N-triple format) generated from the direct mapping will be stored.
r2rml_table_name
For R2ML mapping, this parameter is required and specifies the name of the staging table that holds the R2RML mapping (in N-triple format) to be used for creating the RDF view.
For direct mapping, this parameter is optional and specifies the name of the staging table into which the R2RML mapping (in N-triple format) generated from the direct mapping will be stored.
schema_table_owner
Name of the schema that owns the staging table where the RDF schema generated for the RDF view will be stored.
schema_table_name
Name of the staging table where the RDF schema generated for the RDF view will be stored.
options
For direct mapping, you can optionally specify any combination (including none) of the following:
-
CONFORMANCE=Tsuppresses some of the information that would otherwise get included by default, including use of database constraint names and schema-qualified table or view names for constructing RDF predicate names. -
GENERATE_ONLY=Tonly generates the R2RML mapping for the specified tables and stores it in the specifiedr2rml_table_name, but the underlying RDF view graph is not created. If you specify this option, ther2rml_table_nameparameter must not be null. -
KEY_BASED_REF_PROPERTY=Tuses the foreign key column names to construct the RDF predicate name. If this option is not specified, then the database constraint name is used for constructing the RDF predicate name.For direct mapping, RDF predicate names are derived from the corresponding database names; therefore, preserving the name for the foreign key constraint is the default behavior.
For an example that uses
KEY_BASED_REF_PROPERTY=T, see Example: Creating an RDF View Graph with Direct Mapping in a Schema-Private Network in Creating an RDF View with Direct Mapping. -
SCALAR_COLUMNS_ONLY=Tgenerates the R2RML mapping for only the scalar columns in the specified tables or views. Other non-scalar columns in the tables or views are ignored. Without this option, if you attempt to create a direct mapping on a table with user-defined types or LOB columns, an error is raised.
r2rml_string
An R2RML mapping string in Turtle or N-Triple format to be used for creating the RDF view.
r2rml_string_fmt
The format of the R2RML mapping string specified in r2rml_string. Possible values are TURTLE and N-TRIPLE.
network_owner
Owner of the RDF network. (See Table: network_owner and network_name Parameters.)
network_name
Name of the RDF network. (See Table: network_owner and network_name Parameters.)
Usage Notes
You must grant the SELECT and INSERT privileges on r2rml_table_name and schema_table_name to the network owner.
For more information about RDF views, see RDF Views: Relational Data as RDF.
For information about RDF network types and options, see RDF Networks.
Examples
The following example creates an RDF view using direct mapping for tables EMP and DEPT. The prefix used for the URIs is 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;
/
The following example creates an RDF view using R2RML mapping as specified by the RDF triples in the staging table SCOTT.R2RTAB.
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;
/
The following example creates an RDF view using an R2RML mapping specified directly as a string.
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;
/
The following example creates an RDF view using direct mapping as specified by the RDF triples in the tables EMP and DEPT in the schema-private network owned by RDFUSER. It also selects information about employees who work at the Boston location.
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'));