Prefix rr: <http://www.w3.org/ns/r2rml#>
Prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
Prefix ex: <http://example.com/ns#>
Prefix emp: <http://example.com/emp#>
Prefix dept: <http://example.com/dept#>
Prefix likes: <http://example.com/likes#>
Prefix xsd: <http://www.w3.org/2001/XMLSchema#>
//@base <http://example.com/base/> .

Create View TriplesMap1 As
  Construct {
    ?s
      dept:deptno ?dno ;
      dept:name ?dn ;
      dept:location ?dl ;
      dept:COMPANY "EXAMPLE Corporation"
  }
  With
    ?s = bNode(?deptId)
    ?dno = typedLiteral(?deptno, xsd:positiveInteger)
    ?dn = plainLiteral(?dname)
    ?dl = plainLiteral(?loc)
  From [[
       Select ('Department' || "deptno") AS "deptId"
            , "deptno"
            , "dname"
            , "loc"
         from "DEPT"
  ]]

/*
    rr:subjectMap [ rr:column "deptId"; rr:termType rr:BlankNode;
                    rr:inverseExpression "{\"deptno\"} = substr({deptId},length('Department')+1)"];
*/


Create View TriplesMap2 As
  Construct {
    ?s
      emp:jobtype ?j ;
      rdf:type ?j ;
      emp:emptype ?et ;
      rdf:type ?et ;
      emp:empno ?eno ;
      emp:name ?en ;
      emp:job ?job ;
      emp:deptNum ?dno ;
      emp:etype ?etn
  }
  With
    ?s = uri(concat("http://example.com/emp/", ?empno))
    ?j = uri(concat("http://example.com/emp/job/", ?job))
    ?et = uri(concat("http://example.com/emp/etype/", ?etype))
    ?eno = typedLiteral(?empno, xsd:integer)
    ?en = plainLiteral(?ename)
    ?job = plainLiteral(?job)
    ?dno = typedLiteral(?deptno, xsd:integer)
    ?etn = plainLiteral(?etype)
  From
    EMP

Create View TODO_Ref As
  Construct {
    ?s emp:c_ref_deptno ?o
  }
  With
  	?s = uri(concat("http://example.com/emp/", ?empno))
  	?o = bNode(?deptId)
  From [[
    SELECT "a"."empno", ('Department' || "b"."deptno") AS "deptId" FROM "EMP" "a" JOIN "DEPT" "b" ON ("b"."deptno" = "a"."deptno")
  ]]
