---++DB2 Sample Linked Data Views Script to set up your own instance -- $Id: $ -- Setup script for Linked Data View of portions of DB2 SAMPLE database included -- in DB2 Express Edition v9.5 -- -- The script assumes external DB2 tables are linked into Virtuoso using -- local schema name db2sample. DB..vd_remote_data_source ('db2ma-smpl', '', '','); ATTACH TABLE "DB2ADMIN"."ACT" PRIMARY KEY ("ACTNO") AS "DB"."db2sample"."ACT" FROM 'db2ma-smpl'; ATTACH TABLE "DB2ADMIN"."DEPARTMENT" PRIMARY KEY ("DEPTNO") AS "DB"."db2sample"."DEPARTMENT" FROM 'db2ma-smpl'; ATTACH TABLE "DB2ADMIN"."EMPLOYEE" PRIMARY KEY ("EMPNO") AS "DB"."db2sample"."EMPLOYEE" FROM 'db2ma-smpl'; ATTACH TABLE "DB2ADMIN"."EMPPROJACT" PRIMARY KEY ("EMPNO", "PROJNO", "ACTNO", "EMSTDATE") AS "DB"."db2sample"."EMPPROJACT" FROM 'db2ma-smpl'; ATTACH TABLE "DB2ADMIN"."EMP_RESUME" PRIMARY KEY ("EMPNO", "RESUME_FORMAT") AS "DB"."db2sample"."EMP_RESUME" FROM 'db2ma-smpl'; ATTACH TABLE "DB2ADMIN"."PROJACT" PRIMARY KEY ("PROJNO", "ACTNO", "ACSTDATE") AS "DB"."db2sample"."PROJACT" FROM 'db2ma-smpl'; ATTACH TABLE "DB2ADMIN"."PROJECT" PRIMARY KEY ("PROJNO") AS "DB"."db2sample"."PROJECT" FROM 'db2ma-smpl'; COMMIT WORK; GRANT SELECT ON DB.db2sample.ACT TO "SPARQL", "SPARQL_UPDATE"; GRANT SELECT ON DB.db2sample.DEPARTMENT TO "SPARQL", "SPARQL_UPDATE"; GRANT SELECT ON DB.db2sample.EMPLOYEE TO "SPARQL", "SPARQL_UPDATE"; GRANT SELECT ON DB.db2sample.EMPPROJACT TO "SPARQL", "SPARQL_UPDATE"; GRANT SELECT ON DB.db2sample.EMP_RESUME TO "SPARQL", "SPARQL_UPDATE"; GRANT SELECT ON DB.db2sample.PROJACT TO "SPARQL", "SPARQL_UPDATE"; GRANT SELECT ON DB.db2sample.PROJECT TO "SPARQL", "SPARQL_UPDATE"; create function DB.DBA.PROJ_ACT_IRI ( in proj_no varchar, in act_no integer, in ac_st_date date ) returns varchar { declare _act_no, _datetime, _date any; _act_no := cast(act_no as varchar); _datetime := cast(ac_st_date as varchar); _date := left(_datetime, 10); return sprintf('http://localhost:8890/db2sample/proj_act/%s_%s_%s#this', proj_no, _act_no, _date); }; create function DB.DBA.PROJ_ACT_IRI_INV_1 (in proj_act_iri varchar) returns varchar { declare exit handler for sqlstate '*' { return NULL; }; declare parts any; parts := sprintf_inverse (proj_act_iri, 'http://localhost:8890/db2sample/proj_act/%s_%s_%s#this', 1); if (parts is not null) { return parts[0]; } return NULL; }; create function DB.DBA.PROJ_ACT_IRI_INV_2 (in proj_act_iri varchar) returns integer { declare exit handler for sqlstate '*' { return NULL; }; declare parts any; parts := sprintf_inverse (proj_act_iri, 'http://localhost:8890/db2sample/proj_act/%s_%s_%s#this', 1); if (parts is not null) { return cast(parts[1] as integer); } return NULL; }; create function DB.DBA.PROJ_ACT_IRI_INV_3 (in proj_act_iri varchar) returns date { declare exit handler for sqlstate '*' { return NULL; }; declare parts any; parts := sprintf_inverse (proj_act_iri, 'http://localhost:8890/db2sample/proj_act/%s_%s_%s#this', 1); if (parts is not null) { return cast(parts[2] as date); } return NULL; }; create function DB.DBA.EMP_PROJ_ACT_IRI ( in emp_no varchar, in proj_no varchar, in act_no integer, in emp_start_date date ) returns varchar { declare _act_no, _datetime, _date any; _act_no := cast(act_no as varchar); _datetime := cast(emp_start_date as varchar); _date := left(_datetime, 10); return sprintf( 'http://localhost:8890/db2sample/emp_proj_act/%s_%s_%s_%s#this', emp_no, proj_no, _act_no, _date); }; create function DB.DBA.EMP_PROJ_ACT_IRI_INV_1 (in emp_proj_act_iri varchar) returns varchar { declare exit handler for sqlstate '*' { return NULL; }; declare parts any; parts := sprintf_inverse (emp_proj_act_iri, 'http://localhost:8890/db2sample/emp_proj_act/%s_%s_%s_%s#this', 1); if (parts is not null) { return parts[0]; } return NULL; }; create function DB.DBA.EMP_PROJ_ACT_IRI_INV_2 (in emp_proj_act_iri varchar) returns varchar { declare exit handler for sqlstate '*' { return NULL; }; declare parts any; parts := sprintf_inverse (emp_proj_act_iri, 'http://localhost:8890/db2sample/emp_proj_act/%s_%s_%s_%s#this', 1); if (parts is not null) { return parts[1]; } return NULL; }; create function DB.DBA.EMP_PROJ_ACT_IRI_INV_3 (in emp_proj_act_iri varchar) returns integer { declare exit handler for sqlstate '*' { return NULL; }; declare parts any; parts := sprintf_inverse (emp_proj_act_iri, 'http://localhost:8890/db2sample/emp_proj_act/%s_%s_%s_%s#this', 1); if (parts is not null) { return cast(parts[2] as integer); } return NULL; }; create function DB.DBA.EMP_PROJ_ACT_IRI_INV_4 (in emp_proj_act_iri varchar) returns date { declare exit handler for sqlstate '*' { return NULL; }; declare parts any; parts := sprintf_inverse (emp_proj_act_iri, 'http://localhost:8890/db2sample/emp_proj_act/%s_%s_%s_%s#this', 1); if (parts is not null) { return cast(parts[3] as date); } return NULL; }; grant execute on DB.DBA.PROJ_ACT_IRI to "SPARQL", "SPARQL_UPDATE"; grant execute on DB.DBA.PROJ_ACT_IRI_INV_1 to "SPARQL", "SPARQL_UPDATE"; grant execute on DB.DBA.PROJ_ACT_IRI_INV_2 to "SPARQL", "SPARQL_UPDATE"; grant execute on DB.DBA.PROJ_ACT_IRI_INV_3 to "SPARQL", "SPARQL_UPDATE"; grant execute on DB.DBA.EMP_PROJ_ACT_IRI to "SPARQL", "SPARQL_UPDATE"; grant execute on DB.DBA.EMP_PROJ_ACT_IRI_INV_1 to "SPARQL", "SPARQL_UPDATE"; grant execute on DB.DBA.EMP_PROJ_ACT_IRI_INV_2 to "SPARQL", "SPARQL_UPDATE"; grant execute on DB.DBA.EMP_PROJ_ACT_IRI_INV_3 to "SPARQL", "SPARQL_UPDATE"; grant execute on DB.DBA.EMP_PROJ_ACT_IRI_INV_4 to "SPARQL", "SPARQL_UPDATE"; sparql drop graph ; sparql drop graph ; sparql drop quad map virtrdf:db2sample ; -------------------------- -- RDFS class definitions ttlp ( ' @prefix rdf: . @prefix rdfs: . @prefix xsd: . @prefix opl: . opl:Act a rdfs:Class ; rdfs:isDefinedBy ; rdfs:label "Act" ; rdfs:comment "Activity" . # ACTNO SMALLINT PRIMARY KEY opl:act_no a rdf:Property ; rdfs:domain opl:Act ; rdfs:range xsd:integer ; rdfs:label "Activity number" . # ACTKWD VARCHAR(6) opl:act_kwd a rdf:Property ; rdfs:domain opl:Act ; rdfs:range xsd:string ; rdfs:label "Activity keyword" . # ACTDESC VARCHAR(20) opl:act_desc a rdf:Property ; rdfs:domain opl:Act ; rdfs:range xsd:string ; rdfs:label "Activity description" . ##### opl:Department a rdfs:Class ; rdfs:isDefinedBy ; rdfs:label "Department" ; rdfs:comment "Department" . # DEPTNO VARCHAR(3) PRIMARY KEY opl:dept_no a rdf:Property ; rdfs:domain opl:Department ; rdfs:range xsd:string ; rdfs:label "Department number" . # DEPTNAME VARCHAR(36) opl:dept_name a rdf:Property ; rdfs:domain opl:Department ; rdfs:range xsd:string ; rdfs:label "Department name" . # MGRNO CHAR(6) opl:dept_manager a rdf:Property ; rdfs:domain opl:Department ; rdfs:range xsd:Employee ; rdfs:label "Department manager" . # ADMRDEPT CHAR(3) opl:supervising_dept a rdf:Property ; rdfs:domain opl:Department ; rdfs:range opl:Department ; rdfs:label "Department reported to" . # LOCATION CHAR(6) opl:location a rdf:Property ; rdfs:domain opl:Department ; rdfs:range xsd:string ; rdfs:label "Location" . opl:employee_collection a rdf:Property ; rdfs:domain opl:Department ; rdfs:range opl:Employee ; rdfs:label "Department employees" . opl:dept_project_collection a rdf:Property ; rdfs:domain opl:Department ; rdfs:range opl:Project ; rdfs:label "Department projects" . ##### opl:Employee a rdfs:Class ; rdfs:isDefinedBy ; rdfs:label "Employee" ; rdfs:comment "Employee" . # EMPNO VARCHAR(6) PRIMARY KEY opl:emp_no a rdf:Property ; rdfs:domain opl:Employee; rdfs:range xsd:string ; rdfs:label "Employee number" . # FIRSTNME VARCHAR(12) opl:first_name a rdf:Property ; rdfs:domain opl:Employee ; rdfs:range xsd:string ; rdfs:label "First name" . # MIDINIT VARCHAR(1) opl:middle_initial a rdf:Property ; rdfs:domain opl:Employee ; rdfs:range xsd:string ; rdfs:label "Middle initial" . # LASTNAME VARCHAR(15) opl:last_name a rdf:Property ; rdfs:domain opl:Employee ; rdfs:range xsd:string ; rdfs:label "Last name" . # WORKDEPT VARCHAR(3) opl:work_dept a rdf:Property ; rdfs:domain opl:Employee ; rdfs:range opl:Department ; rdfs:label "Work department" . # PHONENO VARCHAR(4) opl:phone_no a rdf:Property ; rdfs:domain opl:Employee ; rdfs:range xsd:string ; rdfs:label "Phone number" . # HIREDATE DATE opl:hire_date a rdf:Property ; rdfs:domain opl:Employee ; rdfs:range xsd:date; rdfs:label "Hire date" . # JOB VARCHAR(8) opl:job a rdf:Property ; rdfs:domain opl:Employee ; rdfs:range xsd:string ; rdfs:label "Job" . # EDLEVEL SMALLINT opl:education_level a rdf:Property ; rdfs:domain opl:Employee ; rdfs:range xsd:integer ; rdfs:label "Education level" . # SEX VARCHAR(1) opl:gender a rdf:Property ; rdfs:domain opl:Employee ; rdfs:range xsd:string ; rdfs:label "Gender" . # BIRTHDATE DATE opl:date_of_birth a rdf:Property ; rdfs:domain opl:Employee ; rdfs:range xsd:date ; rdfs:label "Date of birth" . # SALARY DECIMAL(9,2) opl:salary a rdf:Property ; rdfs:domain opl:Employee ; rdfs:range xsd:decimal ; rdfs:label "Salary" . # BONUS DECIMAL(9,2) opl:bonus a rdf:Property ; rdfs:domain opl:Employee ; rdfs:range xsd:decimal ; rdfs:label "Bonus" . # COMM DECIMAL(9,2) opl:commission a rdf:Property ; rdfs:domain opl:Employee ; rdfs:range xsd:decimal ; rdfs:label "Commission" . opl:resume_collection a rdf:Property ; rdfs:domain opl:Employee ; rdfs:range opl:EmployeeResume ; rdfs:label "Employee resumes" . opl:projects_responsible_for_collection a rdf:Property ; rdfs:domain opl:Employee ; rdfs:range opl:Project ; rdfs:label "reponsible for project" . opl:activity_collection a rdf:Property ; rdfs:domain opl:Employee ; rdfs:range opl:EmpProjAct ; rdfs:label "project activities" . ##### opl:EmpProjAct a rdfs:Class ; rdfs:isDefinedBy ; rdfs:label "EmpProjAct" ; rdfs:comment "Employee project activity" . # EMPNO VARCHAR(6) PRIMARY KEY opl:epa_emp_no a rdf:Property ; rdfs:domain opl:EmpProjAct ; rdfs:range xsd:string ; rdfs:label "Employee number" . # PROJNO VARCHAR(6) PRIMARY KEY opl:epa_proj_no a rdf:Property ; rdfs:domain opl:EmpProjAct ; rdfs:range xsd:string ; rdfs:label "Project number" . # ACTNO SMALLINT PRIMARY KEY opl:epa_act_no a rdf:Property ; rdfs:domain opl:EmpProjAct ; rdfs:range xsd:string ; rdfs:label "Activity number" . # EMSTDATE DATE PRIMARY KEY opl:emp_start_date a rdf:Property ; rdfs:domain opl:EmpProjAct ; rdfs:range xsd:date ; rdfs:label "Employee activity start date" . # EMPTIME DECIMAL(5,2) opl:emp_time a rdf:Property ; rdfs:domain opl:EmpProjAct ; rdfs:range xsd:decimal ; rdfs:label "Employee time" . # EMENDATE DATE PRIMARY KEY opl:emp_end_date a rdf:Property ; rdfs:domain opl:EmpProjAct ; rdfs:range xsd:date ; rdfs:label "Employee activity end date" . opl:assigned_to a rdf:Property ; rdfs:domain opl:EmpProjAct ; rdfs:range opl:Employee ; rdfs:label "Assigned to" . opl:project_activity a rdf:Property ; rdfs:domain opl:EmpProjAct ; rdfs:range opl:ProjAct ; rdfs:label "Project activity" . ##### opl:EmployeeResume a rdfs:Class ; rdfs:isDefinedBy ; rdfs:label "EmployeeResume" ; rdfs:comment "Employee resume" . # EMPNO VARCHAR(6) PRIMARY KEY opl:er_emp_no a rdf:Property ; rdfs:domain opl:EmployeeResume ; rdfs:range xsd:string ; rdfs:label "Employee number" . # RESUME_FORMAT VARCHAR(10) PRIMARY KEY opl:resume_format a rdf:Property ; rdfs:domain opl:EmployeeResume ; rdfs:range xsd:string ; rdfs:label "Resume format" . # RESUME VARCHAR(5120) opl:resume a rdf:Property ; rdfs:domain opl:EmployeeResume ; rdfs:range xsd:string ; rdfs:label "Resume" . opl:resume_of a rdf:Property ; rdfs:domain opl:EmployeeResume ; rdfs:range opl:Employee ; rdfs:label "Resume subject" . ##### opl:ProjAct a rdfs:Class ; rdfs:isDefinedBy ; rdfs:label "ProjAct" ; rdfs:comment "Project activity" . # PROJNO VARCHAR(6) PRIMARY KEY opl:pa_proj_no a rdf:Property ; rdfs:domain opl:ProjAct ; rdfs:range xsd:string ; rdfs:label "Project number" . # ACTNO SMALLINT PRIMARY KEY opl:pa_act_no a rdf:Property ; rdfs:domain opl:ProjAct ; rdfs:range xsd:string ; rdfs:label "Activity number" . # ACSTDATE DATE PRIMARY KEY opl:ac_st_date a rdf:Property ; rdfs:domain opl:ProjAct ; rdfs:range xsd:date ; rdfs:label "Activity start date" . # ACSTAFF DECIMAL(5,2) opl:ac_staff a rdf:Property ; rdfs:domain opl:ProjAct ; rdfs:range xsd:decimal ; rdfs:label "Acstaff" . # ACENDATE DATE opl:ac_en_date a rdf:Property ; rdfs:domain opl:ProjAct ; rdfs:range xsd:date ; rdfs:label "Activity end date" . opl:project a rdf:Property ; rdfs:domain opl:ProjAct ; rdfs:range opl:Project ; rdfs:label "Project" . opl:activity a rdf:Property ; rdfs:domain opl:ProjAct ; rdfs:range opl:Act ; rdfs:label "Activity" . opl:employee_activity_collection a rdf:Property ; rdfs:domain opl:ProjAct ; rdfs:range opl:EmpProjAct ; rdfs:label "Employee activity collection" . ##### opl:Project a rdfs:Class ; rdfs:isDefinedBy ; rdfs:label "Project" ; rdfs:comment "Project" . # PROJNO VARCHAR(6) PRIMARY KEY opl:proj_no a rdf:Property ; rdfs:domain opl:Project ; rdfs:range xsd:string ; rdfs:label "Project number" . # PROJNAME VARCHAR(24) opl:proj_name a rdf:Property ; rdfs:domain opl:Project ; rdfs:range xsd:string ; rdfs:label "Project name" . # DEPTNO CHAR(3) opl:is_project_of_department a rdf:Property ; rdfs:domain opl:Project ; rdfs:range opl:Department ; rdfs:label "is project of department" . # RESPEMP VARCHAR(6) opl:resp_emp a rdf:Property ; rdfs:domain opl:Project ; rdfs:range opl:Employee ; rdfs:label "Employee responsible" . # PRSTAFF DECIMAL(5,2) opl:pr_staff a rdf:Property ; rdfs:domain opl:Project ; rdfs:range xsd:decimal ; rdfs:label "PrStaff" . # PRSTDATE DATE opl:pr_st_date a rdf:Property ; rdfs:domain opl:Project ; rdfs:range xsd:date ; rdfs:label "Project start date" . # PRENDATE DATE opl:pr_en_date a rdf:Property ; rdfs:domain opl:Project ; rdfs:range xsd:date ; rdfs:label "Project end date" . # MAJPROJ VARCHAR(6) opl:maj_proj a rdf:Property ; rdfs:domain opl:Project ; rdfs:range xsd:string ; rdfs:label "MajProj" . opl:proj_activity_collection a rdf:Property ; rdfs:domain opl:Project ; rdfs:range opl:ProjAct ; rdfs:label "Project activities" . ', '', 'http://localhost:8890/schemas/db2sample', 0); -------------------------- sparql prefix opl: create iri class "http://localhost:8890/db2sample/act/%d#this" ( in act_no integer not null ) . create iri class "http://localhost:8890/db2sample/department/%s#this" ( in dept_no varchar not null ) . create iri class "http://localhost:8890/db2sample/employee/%s#this" ( in emp_no varchar not null ) . create iri class opl:emp_proj_act_iri using function DB.DBA.EMP_PROJ_ACT_IRI ( in emp_no varchar, in proj_no varchar, in act_no integer, in emp_start_date date ) returns varchar, function DB.DBA.EMP_PROJ_ACT_IRI_INV_1 (in emp_proj_act_iri varchar) returns varchar , function DB.DBA.EMP_PROJ_ACT_IRI_INV_2 (in emp_proj_act_iri varchar) returns varchar , function DB.DBA.EMP_PROJ_ACT_IRI_INV_3 (in emp_proj_act_iri varchar) returns integer , function DB.DBA.EMP_PROJ_ACT_IRI_INV_4 (in emp_proj_act_iri varchar) returns date option (bijection, returns "http://localhost:8890/db2sample/emp_proj_act/%s_%s_%s_%s#this") . create iri class "http://localhost:8890/db2sample/employee_resume/%s_%s#this" ( in emp_no varchar not null, in resume_format varchar not null ) . create iri class opl:proj_act_iri using function DB.DBA.PROJ_ACT_IRI ( in proj_no varchar, in act_no integer, in ac_st_date date ) returns varchar, function DB.DBA.PROJ_ACT_IRI_INV_1 (in proj_act_iri varchar) returns varchar , function DB.DBA.PROJ_ACT_IRI_INV_2 (in proj_act_iri varchar) returns integer , function DB.DBA.PROJ_ACT_IRI_INV_3 (in proj_act_iri varchar) returns date option (bijection, returns "http://localhost:8890/db2sample/proj_act/%s_%s_%s#this") . create iri class "http://localhost:8890/db2sample/project/%s#this" ( in proj_no varchar not null ) . ; sparql prefix opl: alter quad storage virtrdf:DefaultQuadStorage from DB.db2sample.ACT as act_tbl from DB.db2sample.DEPARTMENT as dept_tbl from DB.db2sample.EMPLOYEE as emp_tbl from DB.db2sample.EMPPROJACT as emp_proj_act_tbl from DB.db2sample.EMP_RESUME as emp_resume_tbl from DB.db2sample.PROJACT as proj_act_tbl from DB.db2sample.PROJECT as project_tbl { create virtrdf:db2sample as graph { opl:act_iri(act_tbl.ACTNO) a opl:Act as virtrdf:act_id ; opl:act_no act_tbl.ACTNO as virtrdf:act_act_no ; opl:act_kwd act_tbl.ACTKWD as virtrdf:act_act_kwd ; opl:act_desc act_tbl.ACTDESC as virtrdf:act_act_desc . opl:department_iri(dept_tbl.DEPTNO) a opl:Department as virtrdf:dept_id ; opl:dept_no dept_tbl.DEPTNO as virtrdf:dept_dept_no ; opl:dept_name dept_tbl.DEPTNAME as virtrdf:dept_dept_name ; opl:dept_manager opl:employee_iri(dept_tbl.MGRNO) as virtrdf:dept_mgr_no ; opl:supervising_dept opl:department_iri(dept_tbl.ADMRDEPT) as virtrdf:dept_supervising_dept ; opl:location dept_tbl.LOCATION as virtrdf:dept_location ; opl:employee_collection opl:employee_iri(emp_tbl.EMPNO) where (^{emp_tbl.}^.WORKDEPT = ^{dept_tbl.}^.DEPTNO) as virtrdf:dept_employee_collection ; opl:dept_project_collection opl:project_iri(project_tbl.PROJNO) where (^{project_tbl.}^.DEPTNO = ^{dept_tbl.}^.DEPTNO) as virtrdf:dept_project_collection . opl:employee_iri(emp_tbl.EMPNO) a opl:Employee as virtrdf:employee_id ; opl:emp_no emp_tbl.EMPNO as virtrdf:employee_emp_no ; opl:first_name emp_tbl.FIRSTNME as virtrdf:employee_first_name ; opl:middle_initial emp_tbl.MIDINIT as virtrdf:employee_middle_initial ; opl:last_name emp_tbl.LASTNAME as virtrdf:employee_last_name ; opl:work_dept opl:department_iri(emp_tbl.WORKDEPT) as virtrdf:employee_work_dept ; opl:phone_no emp_tbl.PHONENO as virtrdf:employee_phone_no ; opl:hire_date emp_tbl.HIREDATE as virtrdf:employee_hire_date ; opl:job emp_tbl.JOB as virtrdf:employee_job ; opl:education_level emp_tbl.EDLEVEL as virtrdf:employee_education_level ; opl:gender emp_tbl.SEX as virtrdf:employee_gender ; opl:date_of_birth emp_tbl.BIRTHDATE as virtrdf:employee_date_of_birth ; opl:salary emp_tbl.SALARY as virtrdf:employee_salary ; opl:bonus emp_tbl.BONUS as virtrdf:employee_bonus ; opl:commission emp_tbl.COMM as virtrdf:employee_commission ; opl:resume_collection opl:employee_resume_iri( emp_resume_tbl.EMPNO, emp_resume_tbl.RESUME_FORMAT ) where (^{emp_tbl.}^.EMPNO = ^{emp_resume_tbl.}^.EMPNO) as virtrdf:employee_resume_collection ; opl:projects_responsible_for_collection opl:project_iri(project_tbl.PROJNO) where (^{project_tbl.}^.RESPEMP = ^{emp_tbl.}^.EMPNO) as virtrdf:employee_projects_responsible_for_collection ; opl:activity_collection opl:emp_proj_act_iri( emp_proj_act_tbl.EMPNO, emp_proj_act_tbl.PROJNO, emp_proj_act_tbl.ACTNO, emp_proj_act_tbl.EMSTDATE ) where (^{emp_tbl.}^.EMPNO = ^{emp_proj_act_tbl.}^.EMPNO) as virtrdf:employee_activity_collection . opl:emp_proj_act_iri( emp_proj_act_tbl.EMPNO, emp_proj_act_tbl.PROJNO, emp_proj_act_tbl.ACTNO, emp_proj_act_tbl.EMSTDATE ) a opl:EmpProjAct as virtrdf:empprojact_id ; opl:epa_emp_no emp_proj_act_tbl.EMPNO as virtrdf:empprojact_emp_no ; opl:epa_proj_no emp_proj_act_tbl.PROJNO as virtrdf:empprojact_proj_no ; opl:epa_act_no emp_proj_act_tbl.ACTNO as virtrdf:empprojact_act_no ; opl:emp_start_date emp_proj_act_tbl.EMSTDATE as virtrdf:empprojact_emp_start_date ; opl:emp_time emp_proj_act_tbl.EMPTIME as virtrdf:empprojact_emp_time ; opl:emp_end_date emp_proj_act_tbl.EMENDATE as virtrdf:empprojact_emp_end_date ; opl:assigned_to opl:employee_iri(emp_proj_act_tbl.EMPNO) as virtrdf:empprojact_assigned_to ; opl:project_activity opl:proj_act_iri( emp_proj_act_tbl.PROJNO, emp_proj_act_tbl.ACTNO, emp_proj_act_tbl.EMSTDATE ) as virtrdf:empprojact_project_activity . opl:employee_resume_iri( emp_resume_tbl.EMPNO, emp_resume_tbl.RESUME_FORMAT ) a opl:EmployeeResume as virtrdf:employee_resume_id ; opl:er_emp_no emp_resume_tbl.EMPNO as virtrdf:employee_resume_emp_no ; opl:resume_format emp_resume_tbl.RESUME_FORMAT as virtrdf:employee_resume_resume_format ; opl:resume emp_resume_tbl.RESUME as virtrdf:employee_resume_resume ; opl:resume_of opl:employee_iri(emp_resume_tbl.EMPNO) as virtrdf:employee_resume_resume_of . opl:proj_act_iri( proj_act_tbl.PROJNO, proj_act_tbl.ACTNO, proj_act_tbl.ACSTDATE ) a opl:ProjAct as virtrdf:projact_id; opl:pa_proj_no proj_act_tbl.PROJNO as virtrdf:projact_proj_no ; opl:pa_act_no proj_act_tbl.ACTNO as virtrdf:projact_act_no ; opl:ac_st_date proj_act_tbl.ACSTDATE as virtrdf:projact_ac_st_date ; opl:ac_staff proj_act_tbl.ACSTAFF as virtrdf:projact_ac_staff ; opl:ac_en_date proj_act_tbl.ACENDATE as virtrdf:projact_ac_en_date ; opl:project opl:project_iri(proj_act_tbl.PROJNO) as virtrdf:projact_project ; opl:activity opl:act_iri(proj_act_tbl.ACTNO) as virtrdf:projact_activity ; opl:employee_activity_collection opl:emp_proj_act_iri( emp_proj_act_tbl.EMPNO, emp_proj_act_tbl.PROJNO, emp_proj_act_tbl.ACTNO, emp_proj_act_tbl.EMSTDATE ) where ( ^{proj_act_tbl.}^.PROJNO = ^{emp_proj_act_tbl.}^.PROJNO AND ^{proj_act_tbl.}^.ACTNO = ^{emp_proj_act_tbl.}^.ACTNO AND ^{proj_act_tbl.}^.ACSTDATE = ^{emp_proj_act_tbl.}^.EMSTDATE ) as virtrdf:project_employee_activity_collection . opl:project_iri(project_tbl.PROJNO) a opl:Project as virtrdf:project_id ; opl:proj_no project_tbl.PROJNO as virtrdf:project_proj_no ; opl:proj_name project_tbl.PROJNAME as virtrdf:project_proj_name ; opl:is_project_of_department opl:department_iri(project_tbl.DEPTNO) as virtrdf:project_is_project_of_department ; opl:resp_emp opl:employee_iri(project_tbl.RESPEMP) as virtrdf:project_resp_emp ; opl:pr_staff project_tbl.PRSTAFF as virtrdf:project_pr_staff ; opl:pr_st_date project_tbl.PRSTDATE as virtrdf:project_pr_st_date ; opl:pr_en_date project_tbl.PRENDATE as virtrdf:project_pr_en_date ; opl:maj_proj project_tbl.MAJPROJ as virtrdf:project_maj_proj ; opl:proj_activity_collection opl:proj_act_iri( proj_act_tbl.PROJNO, proj_act_tbl.ACTNO, proj_act_tbl.ACSTDATE ) where (^{project_tbl.}^.PROJNO = ^{proj_act_tbl.}^.PROJNO) as virtrdf:project_activity_collection . } . } . ; delete from db.dba.url_rewrite_rule_list where urrl_list like 'db2sample_rule%'; delete from db.dba.url_rewrite_rule where urr_rule like 'db2sample_rule%'; DB.DBA.URLREWRITE_CREATE_REGEX_RULE ( 'db2sample_rule1', 1, '(/[^#]*)', vector('path'), 1, '/about/html/http://localhost:8890%s', vector('path'), null, '(text/html)|(\\*/\\*)', 0, 303 ); DB.DBA.URLREWRITE_CREATE_REGEX_RULE ( 'db2sample_rule2', 1, '(/[^#]*)', vector('path'), 1, '/sparql?query=DESCRIBE+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+FROM+%%3Chttp%%3A//localhost%%3A8890/db2sample%%3E&format=%U', vector('path','path','*accept*'), null, '(text/rdf.n3)|(application/rdf.xml)', 0, null ); DB.DBA.URLREWRITE_CREATE_RULELIST ( 'db2sample_rule_list1', 1, vector ( 'db2sample_rule1', 'db2sample_rule2' )); -- ensure a VD for the IRIs which begins with / VHOST_REMOVE (lpath=>'/db2sample'); VHOST_DEFINE ( lpath=>'/db2sample', ppath=>'/DAV/db2sample/', vsp_user=>'dba', is_dav=>1, is_brws=>0, opts=>vector ('url_rewrite', 'db2sample_rule_list1') ); delete from db.dba.url_rewrite_rule_list where urrl_list like 'db2sample_schema_rule%'; delete from db.dba.url_rewrite_rule where urr_rule like 'db2sample_schema_rule%'; DB.DBA.URLREWRITE_CREATE_REGEX_RULE ( 'db2sample_schema_rule1', 1, '(/[^#]*)', vector('path'), 1, '/about/html/http://localhost:8890%U', vector('path'), null, '(text/html)|(\\*/\\*)', 0, 303 ); DB.DBA.URLREWRITE_CREATE_REGEX_RULE ( 'db2sample_schema_rule2', 1, '(/[^#]*)', vector('path'), 1, '/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}%%0D%%0AFROM+%%3Chttp%%3A//localhost%%3A8890/schemas/db2sample%%3E+%%0D%%0AWHERE+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}&format=%U', vector('path','path','*accept*'), null, '(text/rdf.n3)|(application/rdf.xml)', 0, null ); DB.DBA.URLREWRITE_CREATE_RULELIST ( 'db2sample_schema_rule_list1', 1, vector ( 'db2sample_schema_rule1', 'db2sample_schema_rule2' )); -- ensure a VD for the IRIs which begins with / VHOST_REMOVE (lpath=>'/schemas/db2sample'); VHOST_DEFINE ( lpath=>'/schemas/db2sample', ppath=>'/DAV/schemas_db2sample/', vsp_user=>'dba', is_dav=>1, is_brws=>0, opts=>vector ('url_rewrite', 'db2sample_schema_rule_list1') );