- From: Juan Sequeda <juanfederico@gmail.com>
- Date: Tue, 2 Mar 2010 10:24:17 -0600
- To: "Eric Prud'hommeaux" <eric@w3.org>
- Cc: public-rdb2rdf-wg@w3.org
- Message-ID: <f914914c1003020824t846676icc02baa7df2ac78@mail.gmail.com>
Eric, Really cool. The Triple View that you create, is the same one we create in Ultrawrap. Juan Sequeda +1-575-SEQ-UEDA www.juansequeda.com On Tue, Mar 2, 2010 at 9:23 AM, Eric Prud'hommeaux <eric@w3.org> wrote: > On Sunday, I taugh FeDeRate to generate views (one page of code). > > http://dvcs.w3.org/hg/FeDeRate/file/636ceb7f6d4d/src/main/scala/SparqlToSparqlToSql.scala#l14 > > An accompanying test demonstrates the efficacy. > > http://dvcs.w3.org/hg/FeDeRate/file/636ceb7f6d4d/src/test/scala/SparqlToSparqlToSqlTest.scala#l69 > > Given some DDL: > [[ > CREATE TABLE Employee (empid INT, PRIMARY KEY (empid), firstName STRING, > lastName STRING, birthday DATE, manager INT, FOREIGN KEY (manager) > REFERENCES Employee(empid)); > CREATE TABLE Tasks (taskid INT, PRIMARY KEY (taskid), name STRING, lead > INT, FOREIGN KEY (lead) REFERENCES Employee(empid)); > CREATE TABLE TaskAssignments (id INT PRIMARY KEY, PRIMARY KEY (id), task > INT, FOREIGN KEY (task) REFERENCES Tasks(taskid), employee INT, FOREIGN KEY > (employee) REFERENCES Employee(empid)); > ]] > and a configuration rule: > [[ > PREFIX foaf : <http://xmlns.com/foaf/0.1/> > PREFIX empP : <http://hr.example/DB/Employee#> > CONSTRUCT { ?who a foaf:Person . > ?who foaf:first_name ?fname . > ?who foaf:last_name ?lname } > WHERE { ?who empP:firstName ?fname . > ?who empP:lastName ?lname } > ]] > it emits an SQL triples view: > [[ > CREATE VIEW triples AS > SELECT "<http://xmlns.com/foaf/0.1/Person>" AS O, "< > http://www.w3.org/1999/02/22-rdf-syntax-ns#type>" AS P, > CONCAT("http://hr.example/DB/", "Employee", "/", "empid", ".", R_S.empid, > "#record") AS S > FROM Employee AS R_S > WHERE (R_S.firstName IS NOT NULL) > AND (R_S.lastName IS NOT NULL) > UNION > SELECT CONCAT("'", R_S.firstName, "'^^< > http://www.w3.org/2001/XMLSchema#string>") AS O, "< > http://xmlns.com/foaf/0.1/first_name>" AS P, CONCAT("http://hr.example/DB/", > "Employee", "/", "empid", ".", R_S.empid, "#record") AS S > FROM Employee AS R_S > WHERE (R_S.empid IS NOT NULL) > AND (R_S.firstName IS NOT NULL) > UNION > SELECT CONCAT("'", R_S.lastName, "'^^< > http://www.w3.org/2001/XMLSchema#string>") AS O, "< > http://xmlns.com/foaf/0.1/last_name>" AS P, CONCAT("http://hr.example/DB/", > "Employee", "/", "empid", ".", R_S.empid, "#record") AS S > FROM Employee AS R_S > WHERE (R_S.empid IS NOT NULL) > AND (R_S.lastName IS NOT NULL) > ]] > > -- > -ericP > >
Received on Tuesday, 2 March 2010 16:24:50 UTC