16:58:30 RRSAgent has joined #RDB2RDF 16:58:30 logging to http://www.w3.org/2009/12/08-RDB2RDF-irc 16:58:32 RRSAgent, make logs world 16:58:32 Zakim has joined #RDB2RDF 16:58:34 Zakim, this will be 7322733 16:58:34 ok, trackbot; I see SW_RDB2RDF()12:00PM scheduled to start in 2 minutes 16:58:35 Meeting: RDB2RDF Working Group Teleconference 16:58:35 Date: 08 December 2009 16:58:38 batla has joined #rdb2rdf 16:58:40 Marcelo has joined #rdb2rdf 16:59:29 batla has joined #rdb2rdf 16:59:54 Zakim, who's here? 16:59:54 SW_RDB2RDF()12:00PM has not yet started, mhausenblas 16:59:55 On IRC I see batla, Marcelo, Zakim, RRSAgent, LeeF, li_ma, Souri, hhalpin, Ahmed, BenSzekely, jsequeda, nunolopes, MacTed, mhausenblas, iv_an_ru, trackbot, ericP 17:00:58 Zakim, please dial ericP-office 17:00:58 ok, ericP; the call is being made 17:01:11 soeren has joined #RDB2RDF 17:01:11 http://lists.w3.org/Archives/Public/public-rdb2rdf-wg/2009Dec/ 17:02:15 Zakim, who's here? 17:02:15 SW_RDB2RDF()12:00PM has not yet started, MacTed 17:02:16 On IRC I see soeren, batla, Marcelo, Zakim, RRSAgent, LeeF, li_ma, Souri, hhalpin, Ahmed, BenSzekely, jsequeda, nunolopes, MacTed, mhausenblas, iv_an_ru, trackbot, ericP 17:02:23 Zakim, this is 7322733 17:02:23 ok, MacTed; that matches SW_RDB2RDF()12:00PM 17:02:27 Zakim, who's here? 17:02:27 On the phone I see [IPcaller], ??P1, +1.781.907.aaaa, [IPcaller.a], Souri, mhausenblas, +1.562.249.aabb, EricP, OpenLink_Software, +44.131.208.aacc 17:02:30 On IRC I see soeren, batla, Marcelo, Zakim, RRSAgent, LeeF, li_ma, Souri, hhalpin, Ahmed, BenSzekely, jsequeda, nunolopes, MacTed, mhausenblas, iv_an_ru, trackbot, ericP 17:02:33 +[IPcaller.aa] 17:02:43 Zakim, aa is hhalpin 17:02:43 sorry, hhalpin, I do not recognize a party named 'aa' 17:02:44 Zakim, OpenLink_Software is temporarily MacTed 17:02:44 +MacTed; got it 17:02:47 Zakim, mute me 17:02:47 MacTed should now be muted 17:02:52 Zakim, ??aa is hhalpin 17:02:52 sorry, hhalpin, I do not recognize a party named '??aa' 17:02:58 Zakim, nunolopes is with mhausenblas 17:02:58 +nunolopes; got it 17:03:22 batla are you scribing? 17:03:37 If no one else can do it, I can scribe. 17:04:03 cygri has joined #rdb2rdf 17:04:07 Zakim, mute me 17:04:07 sorry, hhalpin, I do not know which phone connection belongs to you 17:04:16 I can not dial in today, but will observe proceedings here via IRC 17:05:02 Zakim, [IP call.aa] is hhalpin 17:05:02 I don't understand '[IP call.aa] is hhalpin', hhalpin 17:05:10 Zakim, [IP caller.aa] is hhalpin 17:05:10 I don't understand '[IP caller.aa] is hhalpin', hhalpin 17:05:16 +jsequeda 17:05:30 +Seema 17:06:38 scribenick: batla 17:06:39 Seema has joined #RDB2RDF 17:06:44 Agenda: http://lists.w3.org/Archives/Public/public-rdb2rdf-wg/2009Dec/0005.html 17:06:54 Topic: Admin 17:07:06 batla will scribe 17:07:59 do you have the url? 17:08:00 it's this one, right? http://www.w3.org/2009/Talks/1215-SWObjects-egp/#(1) 17:08:45 RESOLVED: http://www.w3.org/2009/12/01-RDB2RDF-minutes.html accepted 17:08:56 Topic: Presentation of SWObjects (Eric Prud'hommeaux) 17:09:16 http://www.w3.org/2009/Talks/1215-SWObjects-egp 17:09:36 ericP: this is work on SWObjects with HCLS IG 17:09:45 ... main problem is sociopathic names in RDF 17:09:48 ... so we have two graphs 17:09:51 ... a stem graph 17:10:00 ... and an interface graph that is actually queried. 17:10:18 ... 3 approaches 17:10:31 ... 1) We use DDL to create a triple view... 17:10:37 (slide 4 typo -- s/preciate/predicate/) 17:10:49 2) RDF Schema 17:10:57 3) Normative RDF Representation 17:11:30 So what we do is use a stem graph representation and then create using SPARQL constructs we create representation data. 17:11:36 Table and columns to types of predicates 17:11:47 SQL to create interface views vs. SPARQL to create interface views. 17:12:23 Goal: What we want is clear algebra for the production of a stem graph, and a clear algebra for a SPARQL to SQL translation, and a clear algebra from the SQL results to RDF notes. 17:12:29 s/notes/nodes 17:13:02 ericP: Slide 6: SPARQL to SQL results 17:13:13 ... a set of algebra functions 17:13:19 ... a SQL algebra subset 17:13:41 ... here is the subet of SQL that we can use for SPARQL. 17:14:17 ... there are some issues, i.e. in particular when we are going to different data sources, how to express that in SQL? 17:14:39 ... ASK and CONSTRUCT are a bit tricky, is ASK exists? What is the name of it, what is its relationship? 17:14:48 ... we could easily do it, is it useful? 17:15:20 ... Slide 7: Here is an algebra for the stem mapping 17:15:36 ... the stem mapping is called that due to the fact that you have to provide a stem URI 17:15:45 ... we need to create a stem graph that meets the same use cases as relational data 17:15:54 ... if you view t he log 17:16:13 ... what queries could be easily transformed? 17:16:35 DanMiranker: Would like to investigate these mappings in detail 17:17:20 Orri: If you are part of SPARQL 1.0 you cant transform everything, but with 1.1 features like aggregate, it should be possible to map all of SQL. 17:17:38 ericP: Lets try to do 1.0 first, and then we can do the later versions later. 17:18:07 ericP: Slide 8 how do we take this relational data and map it coherently 17:18:11 ... can we get the naming right 17:18:21 ... re linked data principles 17:18:59 ... the same answers received by SPARQL should match SQL 17:19:05 ... this algebra is very typical 17:19:14 ... for any query language, projections and graph pattern s 17:19:24 ... union, disjunction, conjunctions, and optionals 17:19:32 ... unlimted graph patterns 17:20:18 ... majority of work is the same as queries over a triple view of SQL 17:21:01 ... basic premise: table algebra is a set of constraints coupled with a subject, that identifies a table alias. 17:21:40 ... .I have done this in pel a while ago 17:21:48 s/pel/perl 17:21:55 ericP: Now in SQL 17:22:04 .. slide 9 17:22:19 ericP: the way you handle the graph patterns are pretty consistent 17:22:31 ... what is in algebra? 17:22:37 ... bgp mapping 17:22:44 ... mapping between sparql and sql 17:24:01 ... big difference is whether or not for triple stores we add a new table for new graph patterns 17:24:11 ... null guards are completely different in sparql will get to that later 17:24:20 ... in my implementation, I disallowed variable predicates 17:24:25 ... I think its doable 17:25:15 ... but if you disallow wildcard predicates you get something you can implement the SPARQL in about the same time as SQL re compile time and identical time for query. 17:25:21 ... runtime 17:25:52 Orri: Allowing variables in SPARQL, we allow them in Virtuoso 17:26:05 ... but we extend SQL in order to avoid complicated unions 17:26:24 ... however, what ericP said is true, that without that we can get more or less same overhead 17:26:30 ... we can compile complex unions 17:26:45 ... but if your system knows its looking at virtuoso 17:27:07 ... then we can define the mapping in terms of algebra we can now we have done in correctly. 17:27:26 ... conjunction is going to be the same 17:27:31 ... but nulls are different 17:27:37 ... a null in SPARQL is a missing triple 17:27:50 ... in SQL, its a special value thats not equal to itself. 17:28:11 ... curlies inside of query. 17:28:19 ... I wrote one down in terms if graph constraints 17:28:32 ... since I want to eventually hint at what we could do with query constraints. 17:28:40 Orri: You know that maps to unbound in SQL 17:28:53 ericP: When I do a query for a first name and last name 17:29:05 ... got a value for that 17:29:28 ... sql you would not get a result 17:29:33 ... sparql you would get an answer 17:30:10 orri: unbound is equal to anything, null is equal to nothing 17:30:18 ericP: Slide 12 17:30:47 ... we want to make sure with options that the entire optional graph is transparent 17:30:57 ... the temptation is to a left outer join on just one nested table 17:31:12 ... but really you want to get all the tables joined. 17:31:34 ... otherwise you get cardinality problems (see my paper) 17:31:43 ... the other problem is leading optionals in SPARQL 17:31:59 ... so we have to do a bit of trickery 17:32:09 ... i.e. a one column table 17:32:21 ... just make sure upstream processing throws that column away 17:32:34 Slide 13: Things that are unbound in SPARQL 17:32:49 ericP: again, we have to do a little trick 17:33:15 ... a SQL query executes the same as a SPARQL query, a potentially null attribute 17:33:29 ... have to make it explicit that it is not null 17:33:34 ... its just tedious but doable 17:33:40 ... Slide 14 17:33:49 ... all the algebraic operators in SPARQL 17:34:04 ... like string URI all of these can be handled by schema if you have RDF schema 17:34:25 ... data types we can just handle ISO ones 17:34:55 ... when I asked for somebodys name, we dont use xsd:strings 17:35:17 ... which way is world better lang tags or data types from XSD 17:35:34 ... now that we can query this kinda sociopathic representation of a RDB store 17:35:51 ... how can we allow access using commonly known URIs like foaf:name 17:36:14 ... nice thing is interface graph can entirely change shape 17:36:23 ... can do anything, extra joins etc. 17:36:35 ... as long as we can map it to stem graph via SPARQL construct 17:36:48 ... magic stems 17:37:27 ... creates virtual tables 17:37:40 ... that can mix with concrete tables and result in more virtual tables 17:37:49 ... but we can eventually resolve it to queries over concrete tables 17:37:59 ... same approach re concrete constructs 17:38:09 q+ 17:38:22 q+ 17:38:35 ... push query over virtual interface table to a query that can then be calculated over sociopathic original representation 17:38:50 Souri: We have query rewriting systems in Oracle, very important technique 17:39:04 ericP: Similar to goal flattening in rules 17:39:43 DanielMiranker: No use of magic sets 17:39:48 ack jsequeda 17:39:53 DanielMiranker: in literature yet 17:40:05 ... we use this in Ultrawrap 17:41:21 Souri: We support this, but just differently 17:41:33 That was not me 17:41:43 ack Souri 17:41:55 s/Souri/Orri 17:42:08 Souri: What is the power of that approach as regards mapping SQL 17:42:14 ... for example, with analytical functions 17:42:27 ... how could that be done with SPARQL, could this part of SQL be expresssed? 17:42:45 ericP: My goal was to stick to SPARQL 1.0 and eventually SPARQL 1.1 17:43:22 Souri: Possible to transmit that as regards rewriting it over SQL, we can map that easy, the main issue is expressive power 17:43:38 ... I am not interested in SQL tables as a RDF consumer 17:43:56 ... so analytical funtions would just get some overall aggregates that we could look at as RDF 17:44:04 ... and we would just query that view looking at SQL view definitions 17:45:24 Souri: We can aggregate relational views that are results of analytical f unctions 17:46:26 ... the main difference between our approach and your approach 17:46:26 ... is that your body is the SPARQL query 17:46:40 ... again, my main question is power 17:47:10 ... we want to look at view definition is completely in SQL; and then on top we map 17:47:17 ... just to map the columns into predicates 17:47:25 ... and defining some constraints 17:47:35 ... the main difference is the expressive power of SQL vs. SPARQL 17:47:40 ... for creating the views 17:48:01 Orri: Minus a few small differences, we can make them more or less equivalent 17:48:09 Souri: Is it SPARQL we are talking about? 17:48:16 ... or relational data? 17:49:11 Ahmed: If you do the work in SQL that is easier, and if you do it outside you need to be careful 17:49:26 ericP: But this approach should work over anything you can express in SQL 17:50:03 ... we have to be careful with arbitrary number of extensions 17:50:18 ... my approach hopes to be portable 17:50:24 ... spreadsheets, nlp, etc. 17:51:52 Souri: Read only approach, we can only create views on some kinds of tables, 17:51:52 ... when we are talking about spreadsheets and etc. 17:51:52 ... we are not as deep as part of relational data. 17:51:52 ... the complexity of the domains are different, so I was thinking RDB2RDF should take into account complexity of relational data. 17:51:55 ericP: performance 17:52:43 ... LLR(1) with SPARQL and SQL 17:52:55 ... slide 17 17:52:59 integrtiy constraints 17:53:42 ... we can push them into sql into two ways 17:53:52 ... every column that was mentioned in antecedent graph 17:54:08 ... slide 18 17:54:21 I hav ea conference call @10:00am sharp, I will split @9:59 - thanks. 17:54:24 ... we may want to put an antecedent contruct on everything in our attributes 17:55:09 ... (goes through example) 17:55:34 slide 19 17:55:41 ericP: Integrity constraint options 17:55:44 ... anything with a constraint 17:55:57 ... shortest path through all those variables, the magic set view for graph connections 17:56:05 ... all the paths for everything that is connected 17:56:13 ... I have used syntactic hints 17:56:20 ... had no integrity constraints 17:57:11 ... it didnt matter what it was coming from 17:57:22 ... so we did virtual views of constructs and role flattening 17:57:37 ... slide 21 17:57:42 ... hcls requirements 17:59:08 ... sparql 1.0 term rewriting, everything is done in interface graph... 17:59:08 ... rdf construct 17:59:08 ... turn uris of one form into another re regular expressions of named patterns 17:59:08 ... come through membership, see wiki for more details 17:59:28 - +1.781.907.aaaa 17:59:34 ericP: thats it for me. 18:00:10 DanielMiranker: We are interested in this algebra, since we wanted to compile DDL as well 18:00:18 ... we did that all that of DataLog 18:00:25 ... looking at Datalog to relational algebra work. 18:00:42 -??P1 18:00:49 -[IPcaller.a] 18:00:50 ericP: Would that handle everything like leading optionals, i.e. in Datalog 18:00:59 RRSAgent, draft minutes 18:00:59 I have made the request to generate http://www.w3.org/2009/12/08-RDB2RDF-minutes.html mhausenblas 18:01:00 DanielMiranker: Yes, I think it would 18:01:10 RRSAgent, make logs public 18:01:12 Meeting Adjourned 18:01:13 -[IPcaller.aa] 18:01:41 Zakim, list attendees 18:01:41 As of this point the attendees have been [IPcaller], +1.781.907.aaaa, mhausenblas, Souri, +1.562.249.aabb, EricP, +44.131.208.aacc, MacTed, nunolopes, jsequeda, Seema 18:01:51 RRSAgent, draft minutes 18:01:51 I have made the request to generate http://www.w3.org/2009/12/08-RDB2RDF-minutes.html mhausenblas 18:01:52 -Souri 18:01:53 hopes to see this conversation keep up on the listserv! 18:01:55 take care! 18:01:57 -jsequeda 18:01:59 -Seema 18:02:01 - +44.131.208.aacc 18:02:02 -mhausenblas 18:02:02 -MacTed 18:02:07 - +1.562.249.aabb 18:02:14 Marcelo has left #rdb2rdf 18:03:13 -[IPcaller] 18:29:42 hhalpin has left #rdb2rdf 19:01:19 cygri has joined #rdb2rdf 19:01:28 cygri_ has joined #rdb2rdf 19:05:00 disconnecting the lone participant, EricP, in SW_RDB2RDF()12:00PM 19:05:02 SW_RDB2RDF()12:00PM has ended 19:05:04 Attendees were [IPcaller], +1.781.907.aaaa, mhausenblas, Souri, +1.562.249.aabb, EricP, +44.131.208.aacc, MacTed, nunolopes, jsequeda, Seema 19:34:43 nunolopes has joined #RDB2RDF 20:28:13 Zakim has left #RDB2RDF 20:58:29 nunolopes has joined #RDB2RDF 21:02:28 jsequeda has joined #rdb2rdf 21:37:15 cygri_ has joined #rdb2rdf 22:36:13 LeeF has joined #rdb2rdf 22:57:27 cygri has joined #rdb2rdf 23:03:43 jsequeda has joined #rdb2rdf 23:14:52 cygri_ has joined #rdb2rdf