VOS.VirtRDFViewsOracleHrDbScript

  • Topic
  • Discussion
  • VOS.VirtRDFViewsOracleHrDbScript(Last) -- DAVWikiAdmin? , 2017-06-29 07:39:52 Edit WebDAV System Administrator 2017-06-29 07:39:52

    -- Setup script for Linked Data Views of Oracle 10 Human Resources Sample Database --
    
    GRANT SELECT 
       ON HR.orama.COUNTRIES 
       TO "SPARQL", 
          "SPARQL_UPDATE"
       ;
    GRANT SELECT 
       ON HR.orama.REGIONS 
       TO "SPARQL", 
          "SPARQL_UPDATE"
       ;
    GRANT SELECT 
       ON HR.orama.DEPARTMENTS 
       TO "SPARQL", 
          "SPARQL_UPDATE"
       ;
    GRANT SELECT 
       ON HR.orama.LOCATIONS 
       TO "SPARQL", 
          "SPARQL_UPDATE"
       ;
    GRANT SELECT 
       ON HR.orama.EMPLOYEES 
       TO "SPARQL", 
          "SPARQL_UPDATE"
       ;
    GRANT SELECT 
       ON HR.orama.JOBS 
       TO "SPARQL", 
          "SPARQL_UPDATE"
       ;
    GRANT SELECT 
       ON HR.orama.JOB_HISTORY 
       TO "SPARQL", 
          "SPARQL_UPDATE"
       ;
    
    -------------------------------------------------------------------
    
    -------- Create rdfs:Class definitions ----------------------------
    
    ttlp (
    '
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
    @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
    
    @prefix hr: <http://localhost:8890/schemas/oraclehr/> .
    
    hr:countries a rdfs:Class ;
       rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
       rdfs:label "COUNTRIES" ;
       rdfs:comment "Oracle HR COUNTRIES table" .
    
    hr:country_id a rdf:Property ;
       rdfs:domain hr:countries ;
       rdfs:range xsd:string ;
       rdfs:label "COUNTRY ID" .
    
    hr:country_name a rdf:Property ;
       rdfs:domain hr:countries ;
       rdfs:range xsd:string ;
       rdfs:label "COUNTRY NAME" .
    
    hr:region_id a rdf:Property ;
       rdfs:domain hr:countries ;
       rdfs:range hr:regions ;
       rdfs:label "REGION ID" .
    
    hr:regions a rdfs:Class ;
       rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
       rdfs:label "REGIONS" ;
       rdfs:comment "Oracle HR REGIONS table" .
    
    hr:region_id a rdf:Property ;
       rdfs:domain hr:regions ;
       rdfs:range xsd:integer ;
       rdfs:label "REGION ID" .
    
    hr:region_name a rdf:Property ;
       rdfs:domain hr:regions ;
       rdfs:range xsd:string ;
       rdfs:label "REGION NAME" .
    
    hr:departments a rdfs:Class ;
       rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
       rdfs:label "DEPARTMENTS" ;
       rdfs:comment "Oracle HR DEPARTMENT table" .
    
    hr:department_id a rdf:Property ;
       rdfs:domain hr:departments ;
       rdfs:range xsd:integer ;
       rdfs:label "DEPARTMENT ID" .
    
    hr:department_name a rdf:Property ;
       rdfs:domain hr:departments ;
       rdfs:range xsd:string ;
       rdfs:comment "DEPARTMENT NAME" .
    
    hr:manager_id a rdf:Property ;
       rdfs:domain hr:departments ;
       rdfs:range hr:employees ;
       rdfs:comment "MANAGER ID" .
    
    hr:location_id a rdf:Property ;
       rdfs:domain hr:departments ;
       rdfs:range hr:locations ;
       rdfs:comment "LOCATION ID" .
    
    hr:employees a rdfs:Class ;
       rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
       rdfs:label "employees" ;
       rdfs:comment "Oracle HR EMPLOYEES table" .
    
    hr:employee_id a rdf:Property ;
       rdfs:domain hr:employees;
       rdfs:range xsd:integer ;
       rdfs:label "EMPLOYEE ID" .
    
    hr:first_name a rdf:Property ;
       rdfs:domain hr:employees;
       rdfs:range xsd:string ;
       rdfs:label "FIRST NAME" .
    
    hr:last_name a rdf:Property ;
       rdfs:domain hr:employees ;
       rdfs:range xsd:string ;
       rdfs:label "LAST NAME" .
    
    hr:email a rdf:Property ;
       rdfs:domain hr:employees;
       rdfs:range xsd:string ;
       rdfs:label "EMAIL" .
    
    hr:phone_number a rdf:Property ;
       rdfs:domain hr:employees ;
       rdfs:range xsd:string ;
       rdfs:label "PHONE NUMBER" .
    
    hr:hire_date a rdf:Property ;
       rdfs:domain hr:employees ;
       rdfs:range xsd:date ;
       rdfs:label "HIRE DATE" .
    
    hr:job_id a rdf:Property ;
       rdfs:domain hr:employees;
       rdfs:range hr:jobs ;
       rdfs:label "JOB ID" .
    
    hr:salary a rdf:Property ;
       rdfs:domain hr:employees ;
       rdfs:range xsd:integer ;
       rdfs:label "SALARY" .
    
    hr:commission_pct a rdf:Property ;
       rdfs:domain hr:employees ;
       rdfs:range xsd:integer ;
       rdfs:label "COMMISSION PCT" .
    
    hr:manager_id a rdf:Property ;
       rdfs:domain hr:employees ;
       rdfs:range xsd:string ;
       rdfs:label "MANAGER ID" .
    
    hr:department_id a rdf:Property ;
       rdfs:domain hr:employees ;
       rdfs:range hr:departments ;
       rdfs:label "DEPARTMENT ID" .
    
    hr:jobs a rdfs:Class ;
       rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
       rdfs:label "JOBS" ;
       rdfs:comment "Oracle HR JOBS table" .
    
    hr:job_id a rdf:Property ;
    
       rdfs:domain hr:jobs ;
       rdfs:range xsd:string ;
       rdfs:label "JOB ID" .
    
    hr:job_title a rdf:Property ;
       rdfs:domain hr:jobs ;
       rdfs:range xsd:string ;
       rdfs:label "JOB TITLE" .
    
    hr:min_salary a rdf:Property ;
       rdfs:domain hr:jobs ;
       rdfs:range xsd:number;
       rdfs:label "MIN SALARY" .
    
    hr:max_salary a rdf:Property ;
       rdfs:domain hr:jobs ;
       rdfs:range xsd:number;
       rdfs:label "MAXSALARY" .
    
    hr:job_history a rdfs:Class ;
       rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
       rdfs:label "JOB HISTORY" ;
       rdfs:comment "Oracle HR JOB HISTORY table" .
    
    hr:employee_id a rdf:Property ;
       rdfs:domain hr:job_history ;
       rdfs:range hr:employees ;
       rdfs:label "EMPLOYEE ID" .
    
    hr:start_date a rdf:Property ;
       rdfs:domain hr:job_history ;
       rdfs:range xsd:date ;
       rdfs:label "START DATE" .
    
    hr:end_date a rdf:Property ;
       rdfs:domain hr:job_history ;
       rdfs:range xsd:date ;
       rdfs:label "END DATE" .
    
    hr:job_id a rdf:Property ;
       rdfs:domain hr:job_history ;
       rdfs:range hr:jobs ;
       rdfs:label "JOB ID" .
    
    hr:department_id a rdf:Property ;
       rdfs:domain hr:job_history ;
       rdfs:range hr:departments ;
       rdfs:label "DEPARTMENT ID" .
    
    hr:locations a rdfs:Class ;
       rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
       rdfs:label "LOCATIONS" ;
       rdfs:comment "Oracle HR JOB LOCATIONS table" .
    
    hr:location_id a rdf:Property ;
       rdfs:domain hr:locations ;
       rdfs:range xsd:number ;
       rdfs:label "LOCATION ID" .
    
    hr:street_address a rdf:Property ;
       rdfs:domain hr:locations ;
       rdfs:range xsd:string ;
       rdfs:label "STREET ADDRESS" .
    
    hr:postal_code a rdf:Property ;
       rdfs:domain hr:locations ;
       rdfs:range xsd:string ;
       rdfs:label "POSTAL CODE" .
    
    hr:city a rdf:Property ;
       rdfs:domain hr:locations ;
       rdfs:range xsd:string ;
       rdfs:label "CITY" .
    
    hr:state_province a rdf:Property ;
       rdfs:domain hr:locations ;
       rdfs:range xsd:string ;
       rdfs:label "STATE PROVINCE" .
    
    hr:country_id a rdf:Property ;
       rdfs:domain hr:locations ;
       rdfs:range hr:countries ;
       rdfs:label "COUNTRY" .
    ', '', 'http://localhost:8890/schemas/oraclehr', 0);
    
    ---------------------------------------------------------------
    
    ----------- Create IRI Classes -------------
    
    CREATE FUNCTION DB.DBA.JOB_HISTORY 
       ( 
         IN  EMPLOYEE_ID  INTEGER, 
         IN  START_DATE   DATE
       ) 
       RETURNS VARCHAR
          {
            RETURN sprintf_or_null
               ( 'http://localhost:8890/oraclehr/job_history/%d_%s#this',
                 EMPLOYEE_ID, 
                 CAST (START_DATE AS VARCHAR) 
               )
            ;
          }
       ;
    
    CREATE FUNCTION DB.DBA.JOB_HISTORY_INV_1 
       ( 
         IN  id  VARCHAR 
       ) 
       RETURNS INTEGER
          {
            RETURN sprintf_inverse 
               ( 
                 id,
                 'http://localhost:8890/oraclehr/job_history/%d_%s#this',
                 2
               ) 
            [0];
          }
       ;
    
    CREATE FUNCTION DB.DBA.JOB_HISTORY_INV_2 
       (
         IN id VARCHAR
       ) 
       RETURNS DATE
          {
            DECLARE EXIT HANDLER FOR SQLSTATE '*' 
               { 
                 RETURN NULL; 
               }
            ;
            RETURN 
               CAST ( sprintf_inverse 
                        (
                          id,
                          'http://localhost:8890/oraclehr/job_history/%d_%s#this',
                          2
                        )
                      [1] AS DATE
                    )
               ;
          }
       ;
    
    
    GRANT EXECUTE 
       ON DB.DBA.JOB_HISTORY 
       TO "SPARQL", 
          "SPARQL_UPDATE" 
       ;
       
    GRANT EXECUTE 
       ON DB.DBA.JOB_HISTORY_URI_INV_1 
       TO "SPARQL", 
          "SPARQL_UPDATE" 
       ;
       
    GRANT EXECUTE 
       ON DB.DBA.JOB_HISTORY_URI_INV_2 
       TO "SPARQL", 
          "SPARQL_UPDATE" 
       ;
    
    sparql
    
       CREATE IRI CLASS 
          <http://localhost:8890/schemas/oraclehr/countries_iri> 
          "http://^{URIQADefaultHost}^/oraclehr/countries/%s#this"
          ( IN  COUNTRY_ID    VARCHAR NOT NULL ) 
          .
    
       CREATE IRI CLASS 
          <http://localhost:8890/schemas/oraclehr/regions_iri>
          "http://^{URIQADefaultHost}^/oraclehr/regions/%d#this"
          ( IN  REGION_ID     INTEGER NOT NULL ) 
          .
    
       CREATE IRI CLASS 
          <http://localhost:8890/schemas/oraclehr/departments_iri>
          "http://^{URIQADefaultHost}^/oraclehr/departments/%d#this"
          ( IN  DEPARTMENT_ID INTEGER NOT NULL ) 
          .
    
       CREATE IRI CLASS 
          <http://localhost:8890/schemas/oraclehr/employees_iri> 
          "http://^{URIQADefaultHost}^/oraclehr/employees/%d#this"
          ( IN  EMPLOYEE_ID   INTEGER NOT NULL ) 
          .
    
       CREATE IRI CLASS 
          <http://localhost:8890/schemas/oraclehr/jobs_iri>
          "http://^{URIQADefaultHost}^/oraclehr/jobs/%s#this"
          ( IN  JOB_ID        VARCHAR NOT NULL ) 
          .
    
       CREATE IRI CLASS 
          <http://localhost:8890/schemas/oraclehr/job_history_iri>
          USING 
             FUNCTION DB.DBA.JOB_HISTORY 
                (
                  IN  EMPLOYEE_ID  INTEGER NOT NULL, 
                  IN  START_DATE   DATE NOT NULL
                ) 
                RETURNS  VARCHAR NOT NULL,
             FUNCTION DB.DBA.JOB_HISTORY_INV_1 
                (
                  IN  id           VARCHAR
                ) 
                RETURNS  INTEGER,
             FUNCTION DB.DBA.JOB_HISTORY_INV_2 
                (
                  IN id VARCHAR
                ) 
                RETURNS  DATE 
                   OPTION 
                      ( 
                        bijection, 
                        RETURNS "http://localhost:8890/oraclehr/job_history/%d_%s#this"
                      ) 
          .
    
       CREATE IRI CLASS 
          <http://localhost:8890/schemas/oraclehr/locations_iri> 
          "http://^{URIQADefaultHost}^/oraclehr/locations/%d#this"
          ( IN  LOCATION_ID  INTEGER NOT NULL ) 
          .
       ;
    
    --------------------------------------------------------------------
    
    ------------- Create Quad Store ------------------------------------
    
    sparql
    
       PREFIX hr: <http://localhost:8890/schemas/oraclehr/>
    
       ALTER QUAD STORAGE virtrdf:DefaultQuadStorage 
          FROM  HR.orama.COUNTRIES    AS  countries_tbl 
          FROM  HR.orama.REGIONS      AS  regions_tbl
          FROM  HR.orama.DEPARTMENTS  AS  departments_tbl
          FROM  HR.orama.EMPLOYEES    AS  employees_tbl
          FROM  HR.orama.EMPLOYEES    AS  employees_tbl_1      ### alias required to represent recursive FK relationship ( hr: has_manager ) below.
          FROM  HR.orama.JOBS         AS  jobs_tbl
          FROM  HR.orama.JOB_HISTORY  AS  job_history_tbl
          FROM  HR.orama.LOCATIONS    AS  locations_tbl
          {
            CREATE virtrdf:oraclehr  
               AS GRAPH <http://localhost:8890/oraclehr>
               {
                 hr:countries_iri(countries_tbl.COUNTRY_ID)
                    a   hr:countries  
                    AS  virtrdf:countires_country_id 
                           ;
                        hr:country_name countries_tbl.COUNTRY_NAME  
                           AS virtrdf:countries_country_name 
                           ;
                        hr:region_id hr:regions_iri(regions_tbl.REGION_ID) 
                           WHERE ( ^{countries_tbl.}^.REGION_ID = ^{regions_tbl.}^.REGION_ID )  
                           AS virtrdf:countries_region_id 
                    .
    
                 hr:regions_iri(regions_tbl.REGION_ID)
                    a   hr:regions 
                    AS  virtrdf:regions_region_id 
                           ;
                        hr:region_name regions_tbl.REGION_NAME  
                           AS virtrdf:regions_region_name 
                    .
    
                 hr:departments_iri(departments_tbl.DEPARTMENT_ID)
                    a   hr:departments 
                    AS  virtrdf:departments_department_id 
                           ;
                        hr:department_name 
                           departments_tbl.DEPARTMENT_NAME 
                              AS virtrdf:departments_department_name 
                           ;
                        hr:location_id 
                           hr:locations_iri(locations_tbl.LOCATION_ID) 
                              WHERE (^{departments_tbl.}^.LOCATION_ID = ^{locations_tbl.}^.LOCATION_ID) 
                              AS virtrdf:departments_location_id 
                           ;
                        hr:manager_id 
                           hr:employees_iri(employees_tbl.EMPLOYEE_ID) 
                              WHERE (^{departments_tbl.}^.MANAGER_ID = ^{employees_tbl.}^.EMPLOYEE_ID) 
                              AS virtrdf:departments_manager_id 
                    .
    
                 hr:employees_iri(employees_tbl.EMPLOYEE_ID)        
                    a   hr:employees 
                    AS  virtrdf:employees_employee_id 
                           ;
                        hr:department_id 
                           hr:departments_iri(departments_tbl.DEPARTMENT_ID) 
                              WHERE (^{employees_tbl.}^.DEPARTMENT_ID = ^{departments_tbl.}^.DEPARTMENT_ID) 
                              AS virtrdf:employees_department_id 
                           ;
                        hr:job_id
                           hr:jobs_iri(jobs_tbl.JOB_ID) 
                              WHERE (^{employees_tbl.}^.JOB_ID = ^{jobs_tbl.}^.JOB_ID) 
                              AS virtrdf:employees_job_id 
                           ;
                        hr:manager_id 
                           employees_tbl.MANAGER_ID 
                              AS virtrdf:employees_manager_id 
                           ;
                        hr:commissin_pct
                           employees_tbl.COMMISSION_PCT 
                              AS virtrdf:employees_commission_pct 
                           ;
                        hr:email 
                           employees_tbl.EMAIL 
                              AS virtrdf:employees_email 
                           ;
                        hr:first_name
                           employees_tbl.FIRST_NAME 
                              AS virtrdf:employees_first_name 
                           ;
                        hr:hire_date
                           employees_tbl.HIRE_DATE 
                              AS virtrdf:employees_hire_date 
                           ;
                        hr:last_name
                           employees_tbl.LAST_NAME 
                              AS virtrdf:employees_last_name 
                           ;
                        hr:phone_number
                           employees_tbl.PHONE_NUMBER 
                              AS virtrdf:employees_phone_number 
                           ;
                        hr:salary
                           employees_tbl.SALARY 
                              AS virtrdf:employees_salary 
                           ;
                        hr:has_job_history
                           hr:job_history_iri 
                              ( 
                                job_history_tbl.EMPLOYEE_ID, 
                                job_history_tbl.START_DATE
                              ) 
                              WHERE (^{employees_tbl.}^.EMPLOYEE_ID = ^{job_history_tbl.}^.EMPLOYEE_ID) 
                              AS virtrdf:employees_has_job_history
                           ;
                        hr:has_manager
                           hr:employees_iri(employees_tbl_1.EMPLOYEE_ID) 
                              WHERE (^{employees_tbl.}^.MANAGER_ID = ^{employees_tbl_1.}^.EMPLOYEE_ID) 
                              AS virtrdf:employees_has_manager
                    .
    
                 hr:locations_iri(locations_tbl.LOCATION_ID) 
                    a   hr:locations 
                    AS  virtrdf:locations_location_id 
                           ;
                        hr:country_id 
                           hr:countries_iri(countries_tbl.COUNTRY_ID) 
                              WHERE (^{locations_tbl.}^.COUNTRY_ID = ^{countries_tbl.}^.COUNTRY_ID) 
                              AS virtrdf:locations_country_id 
                           ;
                        hr:city 
                           locations_tbl.CITY 
                              AS virtrdf:locations_city 
                           ;
                        hr:postal_code 
                           locations_tbl.POSTAL_CODE
                              AS virtrdf:locations_postal_code 
                           ;
                        hr:state_province 
                           locations_tbl.STATE_PROVINCE
                              AS virtrdf:locations_state_province 
                           ;
                        hr:street_address
                           locations_tbl.STREET_ADDRESS 
                              AS virtrdf:locations_street_address 
                    .
    
                 hr:jobs_iri(jobs_tbl.JOB_ID) 
                    a   hr:jobs 
                    AS  virtrdf:jobs_job_id 
                           ;
                        hr:job_title 
                           jobs_tbl.JOB_TITLE 
                              AS virtrdf:jobs_job_title 
                           ;
                        hr:max_salary 
                           jobs_tbl.MAX_SALARY
                              AS virtrdf:jobs_max_salary 
                           ;
                        hr:min_salary
                           jobs_tbl.MIN_SALARY
                              AS virtrdf:jobs_min_salary 
                    .
    
                 hr:job_history_iri(job_history_tbl.EMPLOYEE_ID, job_history_tbl.START_DATE) 
                    a   hr:job_history 
                    AS  virtrdf:job_history_pk 
                           ;
                        hr:employee_id 
                           hr:employees_iri(employees_tbl.EMPLOYEE_ID) 
                              WHERE (^{job_history_tbl.}^.EMPLOYEE_ID = ^{employees_tbl.}^.EMPLOYEE_ID) 
                              AS virtrdf:job_history_employee_id 
                           ;
                        hr:department_id
                           hr:departments_iri(departments_tbl.DEPARTMENT_ID) 
                              WHERE (^{job_history_tbl.}^.DEPARTMENT_ID = ^{departments_tbl.}^.DEPARTMENT_ID) 
                              AS virtrdf:job_history_department_id 
                           ;
                        hr:job_id
                           hr:jobs_iri(jobs_tbl.JOB_ID) 
                              WHERE (^{job_history_tbl.}^.JOB_ID = ^{jobs_tbl.}^.JOB_ID) 
                              AS virtrdf:job_history_job_id 
                           ;
                        hr:start_date
                           job_history_tbl.START_DATE 
                              AS virtrdf:job_history_start_date 
                           ;
                        hr:end_date
                           job_history_tbl.END_DATE 
                              AS virtrdf:job_history_end_date 
                    .
    
               } 
               .
          } 
          .
       ;
    
    DELETE
       FROM db.dba.url_rewrite_rule_list 
       WHERE urrl_list 
          LIKE 'oraclehr_rule%'
       ;
    DELETE
       FROM db.dba.url_rewrite_rule 
       WHERE urr_rule 
          LIKE 'oraclehr_rule%'
       ;
    
    DB.DBA.URLREWRITE_CREATE_REGEX_RULE 
       (
         'oraclehr_rule1',
         1,
         '(/[^#]*)',
         VECTOR('path'),
         1,
         '/about/html/http/^{URIQADefaultHost}^%s',
         VECTOR('path'),
         NULL,
         '(text/html)|(\\*/\\*)',
         0,
         303
       )
       ;
    
    
    DB.DBA.URLREWRITE_CREATE_REGEX_RULE 
       (
         'oraclehr_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/oraclehr%%3E&format=%U',
         VECTOR('path', 'path', '*accept*'),
         NULL,
         '(text/rdf.n3)|(application/rdf.xml)',
         0,
         NULL
       )
       ;
    
    DB.DBA.URLREWRITE_CREATE_RULELIST 
       (
         'oraclehr_rule_list1',
         1,
         VECTOR 
            (
              'oraclehr_rule1',
              'oraclehr_rule2'
            )
       )
       ;
    
    -- ensure a VD for the IRIs which begins with /
    VHOST_REMOVE (lpath=>'/oraclehr');
    
    VHOST_DEFINE 
       (
         lpath=>'/oraclehr',
         ppath=>'/DAV/oraclehr/', 
            is_dav=>1, 
         vsp_user=>'dba', 
         is_brws=>0, 
         opts=>VECTOR ('url_rewrite', 'oraclehr_rule_list1') 
       )
       ;
    
    DELETE 
       FROM db.dba.url_rewrite_rule_list 
       WHERE urrl_list 
          LIKE 'oracle_schemas_rule%'
       ;
    DELETE
       FROM db.dba.url_rewrite_rule 
       WHERE urr_rule 
          LIKE 'oracle_schemas_rule%'
       ;
    
    DB.DBA.URLREWRITE_CREATE_REGEX_RULE 
       (
         'oracle_schemas_rule1',
         1,
         '(/[^#]*)',
         VECTOR('path'),
         1,
         '/about/html/http/^{URIQADefaultHost}^%s',
         VECTOR('path'),
         NULL,
         '(text/html)|(\\*/\\*)',
         0,
         303
       )
       ;
    
    DB.DBA.URLREWRITE_CREATE_REGEX_RULE 
       (
         'oracle_schemas_rule2',
         1,
         '(/[^#]*)',
         VECTOR('path'),
         1,
         '/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}%%0D%%0AFROM+%%3Chttp%%3A//localhost%%3A8890/schemas/oraclehr%%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 
       (
         'oracle_schemas_rule_list1',
         1,
         VECTOR 
            (
              'oracle_schemas_rule1',
              'oracle_schemas_rule2'
            )
       )
       ;
    
    -- ensure a VD for the IRIs which begins with /
    VHOST_REMOVE (lpath=>'/schema/oraclehr');
    
    VHOST_DEFINE 
       (
         lpath=>'/schemas/oraclehr',
         ppath=>'/DAV/schemas/oraclehr/', 
            is_dav=>1, 
         vsp_user=>'dba', 
         is_brws=>0, 
         opts=>VECTOR ('url_rewrite', 'oracle_schemas_rule_list1') 
       )
       ;
    
    DB.DBA.XML_SET_NS_DECL 
       (
         'hr', 
         'http://^{URIQADefaultHost}^/schemas/oraclehr/', 
         2
       )
       ;