- From: Boris Villazon-Terrazas <bvillazon@fi.upm.es>
 - Date: Fri, 17 Aug 2012 00:18:19 +0200
 - To: Tomasz Pluskiewicz <tomasz.pluskiewicz@gmail.com>
 - Cc: public-rdb2rdf-comments@w3.org
 - Message-Id: <096B7D4C-F728-4345-A6B9-ABD468D9B7F2@fi.upm.es>
 
Hi Tomasz
Thanks for your interest.
I forward a previous email from Richard when he suggested the test.
Mail:
In the call we discussed what happens when templates produce relative IRIs. So imagine a table:
 CREATE TABLE STUDENT (NAME VARCHAR(50));
 INSERT INTO STUDENT VALUES ("http://company.com/Alice");
 INSERT INTO STUDENT VALUES ("Bob");
 INSERT INTO STUDENT VALUES ("Bob/Charles");
 INSERT INTO STUDENT VALUES ("path/../Danny)";
 INSERT INTO STUDENT VALUES ("Emily Smith");
With a mapping that has:
 rr:template "{NAME}"; rr:termType rr:IRI;
and we run this with a base URI of
 <http://example.com/base/>
For the three different values, this would produce the following IRIs:
 <http://example.com/base/http%3A%2F%2Fcompany.com%2FAlice>
 <http://example.com/base/Bob>
 <http://example.com/base/Bob%2FCharles>
 <http://example.com/base/path%2F..%2FDanny>
 <http://example.com/base/Emily%20Smith>
Note that first %-encoding is applied, and then base IRI resolution happens if the result of the %-encoding is not a valid IRI (in other words, always).
On the other hand, if we had a mapping that uses rr:column instead of rr:template:
 rr:column "NAME"; rr:termType rr:IRI;
then we'd get:
 <http://company.com/Alice>
 <http://example.com/base/Bob>
 <http://example.com/base/Bob/Charles>
 <http://example.com/base/path/../Danny>
 (data error)
So, no %-encoding is applied to the column value in this case, and the base IRI is *not* prepended if the column already contains a valid IRI. But since we don't do %-encoding, the result can be an invalid IRI, leading to data errors whenever any of these values would have to be returned in a query.
Both for rr:template and rr:column, base IRI resolution is simple concatenation with the base IRI. Stuff like "../" doesn't get resolved.
Maybe the examples above are useful for creating additional test cases?
Received on Thursday, 16 August 2012 22:18:55 UTC