14:22:24 RRSAgent has joined #dawg 14:22:24 logging to http://www.w3.org/2007/03/06-dawg-irc 14:22:49 Admittedly, it's only the simplest demonstration of the difference. The problem becomes visible if you try to translate a result set into a logical expression. 14:24:21 Meeting: RDF DAWG Weekly 14:24:27 Chair: LeeF 14:24:57 Scribe: SimonR 14:25:00 Agenda: http://lists.w3.org/Archives/Public/public-rdf-dawg/2007JanMar/0129.html 14:25:10 Regrets: 14:25:20 agenda + convene, time zone change 14:25:30 agenda + review action items 14:25:51 agenda + unexpected/auto DISTINCT 14:25:58 agenda + Normative and informative, formal and informal parts of rq25 14:26:05 agenda + Test suite 14:26:14 agenda + rq25 status and reviews, last call timing 14:26:53 no zakim 14:27:03 as in...? 14:27:37 I phoned in and nothing heppneded here 14:27:46 zakim, this is dawg 14:27:46 ok, AndyS; that matches SW_DAWG()9:30AM 14:27:54 zakim, who is on the phone? 14:27:54 On the phone I see Andy_Seaborne, [IBMCambridge] 14:28:03 zakim, IBMCambridge is LeeF 14:28:03 +LeeF; got it 14:28:24 I limited to 60 minutes today 14:28:33 +??P4 14:28:42 Zakim, ??P4 is me 14:28:42 +SimonR; got it 14:29:31 +[MIT528] 14:29:41 hi ericP 14:29:44 Zakim, MIT528 is me 14:29:44 +ericP; got it 14:29:47 heya 14:29:48 MIT528 != Paris :-( 14:29:56 not so much, no 14:30:26 SteveH, curious if you happen to be around today? 14:30:40 LeeF, yes hi 14:31:04 Any chance you have the time to dial in for today's call? 14:31:11 LeeF, yes, I think so... 14:31:17 cgi-irc has joined #dawg 14:32:29 Well, we're going to get started in a couple of minutes - main topics are the auto-distinct issue and publishing last call, so whenever you can join would be great 14:32:34 +Souri_Das 14:33:00 + +0238055aaaa 14:33:22 Zakim, +0238055aaaa is SteveH 14:33:22 +SteveH; got it 14:33:25 Zakim, mute me 14:33:25 SteveH should now be muted 14:34:44 zakim, who's on the phone? 14:34:44 On the phone I see Andy_Seaborne, LeeF, SimonR, ericP, Souri_Das, SteveH (muted) 14:35:07 Minutes from the 20th Feb: http://lists.w3.org/Archives/Public/public-rdf-dawg/2007JanMar/att-0127/2007-02-20-dawg-minutes.html 14:35:20 SimonR seconds 14:35:21 approved 14:35:36 Minutes from 27th Feb, plus Jeen's regrets: 14:35:36 http://lists.w3.org/Archives/Public/public-rdf-dawg/2007JanMar/att-0123/27-dawg-minutes.html 14:37:10 seconded, ericP 14:37:11 approved 14:38:21 I like UTC. It stays put. (And a 0130 local time start will be punishing.) 14:42:07 9:30am US time is good for me 14:43:24 decision: stay at 14:30 UTC 14:43:28 zakim, take up agendum 2 14:43:28 agendum 2. "review action items" taken up [from LeeF] 14:43:45 ACTION: LeeF to talk to SteveH and JeenB about auto distinct behavior in implementations [DONE] 14:43:56 ACTION: AndyS to add text clarifying the prohibition on blank node labels in multiple BGPs to rq25 [CONTINUES] 14:44:03 ACTION: EricP to run the yacker tool over and annotate the existing tests [CONTINUES] 14:44:18 (Discussion with Steve and Jeen at: http://lists.w3.org/Archives/Public/public-rdf-dawg/2007JanMar/0128.html ) 14:44:18 AndyS's action is done. 14:44:21 ACTION: EricP to add text to spec noting that ORDER BY comparisons may use extended implementations of < that operate on types beyond what's given in the operator table [CONTINUES] 14:44:34 ACTION: LeeF to remember that the wee, lost filter tests should be put [CONTINUES] 14:44:41 action -2 14:44:48 ACTION: AndyS to add text clarifying the prohibition on blank node labels in multiple BGPs to rq25 [DONE] 14:44:56 ACTION: LeeF or EliasT to reply to Bjoern regarding (not) POSTing application/sparql-query documents [CONTINUES] 14:45:29 Souri has joined #dawg 14:45:44 zakim, Souri_Das is Souri 14:45:44 +Souri; got it 14:45:59 zakim, close agendum 1 14:45:59 agendum 1, convene, time zone change, closed 14:46:00 I see 5 items remaining on the agenda; the next one is 14:46:01 2. review action items [from LeeF] 14:46:05 zakim, close agendum 2 14:46:05 agendum 2, review action items, closed 14:46:06 I see 4 items remaining on the agenda; the next one is 14:46:07 3. unexpected/auto DISTINCT [from LeeF] 14:46:11 zakim, take up next agendum 14:46:11 agendum 3. "unexpected/auto DISTINCT" taken up [from LeeF] 14:47:34 -ericP 14:47:44 q+ 14:48:04 +[MIT528] 14:48:13 Zakim, MIT258 is me 14:48:13 sorry, ericP, I do not recognize a party named 'MIT258' 14:48:19 Zakim, MIT528 is me 14:48:19 +ericP; got it 14:49:02 LeeF: Last week's call tended to favor exact cardinality results. Dissenters were SimonR (during the call) and SteveH in subsequent communication to LeeF. Jeen said could work with either. 14:49:12 ack SimonR 14:49:40 EliasT has joined #dawg 14:50:16 patH has joined #dawg 14:50:41 SimonR: Why do we care about cardinality? What is its logical meaning? 14:50:55 EliasT_ has joined #dawg 14:51:25 +PatH 14:51:30 hi, Pat 14:51:36 EliasT_ has joined #dawg 14:51:37 EricP: FredZ told horrors stories about the history of SQL, in which migration to "non-capricious DISTINCT" happened painfully. 14:51:45 hi, sorry im late 14:52:35 Zakim, unmute me 14:52:35 SteveH should no longer be muted 14:53:19 There 3 positions: (1) auto DISTINCT (2) defined # duplicates (3) anything in between is OK (loose) 14:53:37 SteveH: Agrees with EricP's account of what FredZ said, but concerned that we're limiting possible indexing schemes. 14:55:22 SteveH: What happens if a triple occurs in two graphs? AndyS: One for each graph. 14:55:25

?o 14:55:25 occuring in multiple graphs - get 1 solution per graph (w/ the same ?o) 14:59:15 (3a) No way to say that auto-distinct is ok 14:59:15 (3b) A "distinctable" keyword to allow 1 < #solutions < n 14:59:56 CONDENSED 15:00:26 I'd prefer to provide defined output (for aggregates later). If impls choose to be indeterminate - fine but not in spec. 15:01:00 MIN, ALL, SOME 15:01:15 w.r.t cardinality 15:04:11 It certainly becomes harder to do testing, if we permit multiple correct answers -- but we already have that problem. (eg w/o ORDER BY, etc) 15:05:31 ericP: In favor of DISTINCT, ALL, and reducible as the default 15:05:41 AndyS: not in favor of that because most people will write the default case 15:05:41 EricP: Now in favor of having an ALL keyword, with the default being reducible. 15:06:56 Might this be handled by deft use of language? condesable is MUST but some clear option we choose is SHOULD, or somethng like that? 15:08:11 It affects testing and wouldn't we'd need conformance language? 15:09:12 zakim, mute me 15:09:12 SteveH should now be muted 15:09:52 zakim, unmute me 15:09:52 SteveH should no longer be muted 15:14:33 1) default is strict counting as per the algebra, no keyword to loosen the counting 15:14:33 2) default is strict counting as per the algebra, add a DISTINCTABLE keyword to loosen the counting 15:14:33 3) default is loose counting, no keyword to force strict counting 15:14:33 4) default is loose counting, add an ALL keyword to force strict counting 15:15:07 zakim, who's on the phone? 15:15:07 On the phone I see Andy_Seaborne, LeeF, SimonR, Souri, SteveH, ericP, PatH 15:15:45 5) always distinct 15:16:24 Andy: ARQ has external flag for "always distinct" - I think those sorts of issues are outside the language 15:17:04 Andy: +1 on #1 15:18:02 Simon: -1 on strict counting; +1 #5, +0.5 #3 15:18:23 Andy's example: SELECT sum(?salary) { ?x :hasSalary ?salary } 15:19:17 Souri: +1 #2 15:21:42 SteveH: +1 #4, +0.9 #2, -1 #5 #1 is acceptable 15:22:21 Response to Andy's query: SUM(?salary, SELECT ?person ?salary { ?person :salary ?salary }) 15:23:04 Simon: I wanted the minutes to record my example. 15:23:15 It's a good example. 15:24:01 You see the point of the response, though? I choose the properties that serve to distinguish the salary values, in this case the people drawing them. 15:25:04 And my response was that the burden is now on the app writer. This is for the minutes. 15:26:12 LeeF has joined #dawg 15:26:22 LeeF has left #dawg 15:26:29 LeeF has joined #dawg 15:28:11 LeeF: Unlikely to arrive at a decision before Andy needs to leave. Not quite sure how to proceed. EricP: Nothing that'll work in the next 10 minutes. :) 15:29:44 SteveH: What if we required "loose" counting to be either DISTINCT or ALL, but not in between? EricP: Doesn't really help implementers. 15:30:41 vote on 1-5: Pat: no very strong opinion, marginally like 2 best. 15:31:22 Hmm - can change the CONSTRUCT answers! 15:31:48 LeeF: Hoping to have QL document ready (minus perhaps just this issue) -- so reviews of rq25 must come in promptly. 15:31:53 vote: 1) +1, 2) +1, 3) -1, 4) +1 15:31:54 e.g. CONSTRUCT { [] :salary ?sal } WHERE { ?x :salary ?sal } 15:33:29 AndyS, as [] is a bNode, I don't think it changes anything 15:33:39 AndyS: What are we proposing for next week re: LC LeeF: Proposion that we make the decision of normative parts of document and DISTINCT issues. 15:34:02 I have to go for 5 mins, will leave the phone connected. 15:34:08 It does! A new one gets generated each template :-) So it, not lean, it counts the results! 15:34:37 AndyS, but leaning is perfectly acceptable 15:34:54 Zakim, mute me 15:34:54 Souri should now be muted 15:35:03 -> _:a :salary 100000 . _:b :salary 100000 . 15:36:06 Yep - leaning is good here. 15:38:52 SELECT sum(?salary) { ?x a :person . ?x :hasSalary ?salary } 15:42:02 -Andy_Seaborne 15:42:03 G1 { :salary 100000 } G2 { :salary 100000 } 15:48:34 G1 { [ :salary 100000 ; :id 12 ] } G2 { [ :salary 100000 ; :id 12 ] } 15:48:35 G1 { [ :employeeId 21; :salary 100000 ] } G2 { [ :employeeId 21; :salary 100000 ] } 15:48:49 by a scant second 15:50:30 SELECT ?g ?id ?salary WHERE { GRAPH ?g { :employeeId ?id; :salary ?salary ] } 15:50:34 SELECT ?g ?id ?salary WHERE { GRAPH ?g { :employeeId ?id; :salary ?salary } } 15:50:46 AndyS has left #dawg 15:51:02 SUM(?salary, SELECT ?co ?id ?salary WHERE { GRAPH ?co { ?e :employeeID ?id . ?e :salary ?salary }} 15:51:10 SELECT ?g ?id ?salary WHERE { GRAPH ?g { ?who :employeeId ?id; :salary ?salary } } 15:51:39 SELECT SUM(?salary) WHERE { GRAPH ?g { ?who :employeeId ?id; :salary ?salary } } 15:51:54 200000 15:53:24 SELECT ?x, SUM(?sal) { ?x a :Person . ?x :hasSalary ?salary } GROUP BY (?x) HAVING COUNT(*) > 1 15:53:34 :-) 15:54:21 ooo, HAVING COUNT... cool 15:54:34 are we all talking the same language? 15:54:38 SELECT SUM(?salary) WHERE { GRAPH ?g { ?who :employeeId ?id; :salary ?salary } } => 200000 15:54:59 SELECT SUM(?salary) WHERE { GRAPH { ?who :employeeId ?id; :salary ?salary } } => 100000 15:55:16 patH: We're all talking our different, slightly preferred languages and trying to subvert each other. :) 15:55:17 Seems to me this is a lot of hassle to solve a problem that shouldnt even arise in RDF anyway. 15:55:31 thanks, Simon. 15:55:40 G1 { [ :employeeId 21; :salary 100000; :worksFor :A ] } G2 { [ :employeeId 21; :salary 100000; :worksFor :B ] } 15:56:44 SELECT SUM(?salary) WHERE { GRAPH ?g { ?who :employeeId ?id; :salary ?salary; ?worksFor ?w } } => 200000 15:56:51 SELECT SUM(?salary) WHERE { GRAPH ?g { ?who :employeeId ?id; :salary ?salary; ?worksFor :B } } => 100000 15:59:57 G1 { [ :employeeId 21; :salary 100000; :worksFor :A ] } G2 { [ :employeeId 21; :salary 100000; :worksFor :B ] . [ :employeeId 21; :salary 100000; :worksFor :B ] } 16:01:01 pretty-printing that: 16:01:02 G1 { [ :employeeId 21; :salary 100000; :worksFor :A ] } 16:01:02 G2 { [ :employeeId 21; :salary 100000; :worksFor :B ] . 16:01:02 [ :employeeId 21; :salary 100000; :worksFor :B ] } 16:04:43 If G2 is put into RDF using bnodes as subjects (ccase 1) then you will likely have two different bnodes. If you use URIs as subjects (case 2) then the redundancy will not get into the graph. 16:05:52 rrsagent, draft minutes 16:05:52 I have made the request to generate http://www.w3.org/2007/03/06-dawg-minutes.html LeeF 16:05:56 rrsagent, make logs world-access 16:06:51 { [ :employeeId 21; :salary 100000; :worksFor :A; :from :G1 ] . [ :employeeId 21; :salary 100000; :worksFor :B; :from :G2 ] . [ :employeeId 21; :salary 16:07:01 +100000; :worksFor :B :from G2 ] } 16:09:09 case 1: G1{ _:1 :id :employeeID21 . _:1 :salary 10000 . _:1 :worksFor :A . } 16:09:37 The fact is that we as a WG have postponed counting/aggregates as an issue ( http://www.w3.org/2001/sw/DataAccess/issues#countAggregate ) . We shouldn't try to solve it without existing implementation experience, and I'm not convinced that we should let it unduly influence our decision on this issue now... 16:09:59 case 2 : { G1:employeeID21 :salary 10000 . G1:employeeID21 :worksFor :A .} 16:10:28 Comforting thought, Lee. 16:15:31 +! 16:15:33 +1 16:25:18 We do not allow bNode sharing between distinct graphs! Things get complex otherwise. 16:25:59 URI should be the only way to correlate nodes from distinct graphs. 16:28:25 -Souri 16:29:32 Have to go. You guys work it out and tell the rest of us what you decide, OK? 16:30:08 -PatH 16:30:58 -SimonR 16:33:41 did I hear the C word? 16:42:10 Default Graph: [ :name "Bob" ; :livesIn "Boston" ] .[ :name "Alice" ; :livesIn "Boston" ] . 16:42:48 SELECT ?city WHERE { [ :livesIn ?city ] } 16:43:34 vs. SELECT ?city WHERE { [ :livesIn ?city ; :name ?name ] } 16:43:41 -SteveH 16:43:41 vs. SELECT ?city ?name WHERE { [ :livesIn ?city ; :name ?name ] } 16:43:43 . 16:46:27 1. RDF is a ... [distinguish as a graph (not tree) data format] 16:46:27 2. what can an RDF query lang give you? 16:46:27 3. this is SPARQL, and it's cool, so there 16:46:30 . 16:48:25 The Resource Description Framework (RDF) is a framework for representing information in the Web. 16:49:55 1. RDF is a directed labeled graph language for representing information in the Web. 16:50:32 s/language/data format/ 16:51:45 structure 16:52:17 "A query language that uses the structure of XML intelligently can express queries across all these kinds of data, whether physically stored in XML or viewed as XML via middleware." 16:53:39 Zakim, who is here? 16:53:39 On the phone I see LeeF, ericP 16:53:40 On IRC I see LeeF, RRSAgent, Zakim, SimonR, SteveH, iv_an_ru, ericP 17:07:24 D'oh. LeeF, are you still there? What's the URL of the draft minutes? O_O 17:07:52 one sec 17:08:00 http://www.w3.org/2007/03/06-dawg-minutes.html 17:08:17 Got it, ta. 17:08:23 SimonR, you can mail me replacement text for that document and i'll commit it in place 17:08:30 + updating the situation on the today's distinct issue 17:08:43 EricP, sure. 17:08:53 + addressing Kendall's conformance comments, and other comments from kendall that have been marked with an "eric?" 17:09:11 + taking a look at occurrences of "error" and "warning" in SPARQL QL and either linking to protocol or rewording 17:09:40 + proposing a shortest path to closing the openWorldValueTesting issue 17:10:07 + The Eric-assigned @@s enumerated by Andy 17:10:51 + Settling on ORDER BY text with Andy that gives semantics of multiple order keys, etc. 17:12:50 Incidentally, did you catch anything from that discussion about the algebra of OPTIONAL I was having with Andy just before the meeting started? It's the main avenue through which I plan to cause trouble in the near future. :) 17:27:09 http://lists.w3.org/Archives/Public/public-rdf-dawg/2007JanMar/0111.html 17:31:03 http://www.w3.org/2001/sw/DataAccess/rq23/rq25#modOrderBy 17:34:01 -LeeF 17:34:02 -ericP 17:34:04 SW_DAWG()9:30AM has ended 17:34:05 Attendees were Andy_Seaborne, LeeF, SimonR, ericP, SteveH, Souri, PatH 19:08:32 AndyS has joined #dawg 19:18:51 EricP? You free to sync up now (if not too long!). Or we can set a meet time for later in the week. 19:32:19 oops, just started a meeting 19:32:59 So plan B then :-) 19:34:21 i was going to add a sentence to the ORDER BY proposed text and drop it in 19:37:10 basically, instead of saying that "an {order function} is made of an {expression} and an optional {order modifier}" say that "ORDER BY is followed by a series of {expressions} with optional {order modifiers}. This forms an order function..." 19:37:20 but i'm not sure how to finish that sentence 19:37:36 generally agreeable to you? 19:53:43 Sorry - my dad on the phone worrying about whether his PC has been compromised. 19:54:16 It hadn't - but he was right to be worried. Malware attack. 19:56:43 I'm happy for you to replace OrderBy section - looked better text. My comments were that "order function" was confused - is it the overall function or a comparator. 19:57:29 There is a problem as to whether it is a "function" and if so, what's its domain and range. 19:57:41 zakim, leave us 19:57:41 I don't understand 'leave us', AndyS 19:57:46 zakim, please leave us 19:57:46 I don't understand 'please leave us', AndyS 19:57:55 zakim, leave 19:57:55 Zakim has left #dawg 19:58:10 rrsagent, please leave 19:58:10 I see 6 open action items saved in http://www.w3.org/2007/03/06-dawg-actions.rdf : 19:58:10 ACTION: LeeF to talk to SteveH and JeenB about auto distinct behavior in implementations [DONE] [1] 19:58:10 recorded in http://www.w3.org/2007/03/06-dawg-irc#T14-43-45 19:58:10 ACTION: EricP to run the yacker tool over and annotate the existing tests [CONTINUES] [3] 19:58:10 recorded in http://www.w3.org/2007/03/06-dawg-irc#T14-44-03 19:58:10 ACTION: EricP to add text to spec noting that ORDER BY comparisons may use extended implementations of < that operate on types beyond what's given in the operator table [CONTINUES] [4] 19:58:10 recorded in http://www.w3.org/2007/03/06-dawg-irc#T14-44-21 19:58:10 ACTION: LeeF to remember that the wee, lost filter tests should be put [CONTINUES] [5] 19:58:10 recorded in http://www.w3.org/2007/03/06-dawg-irc#T14-44-34 19:58:10 ACTION: AndyS to add text clarifying the prohibition on blank node labels in multiple BGPs to rq25 [DONE] [6] 19:58:10 recorded in http://www.w3.org/2007/03/06-dawg-irc#T14-44-48 19:58:10 ACTION: LeeF or EliasT to reply to Bjoern regarding (not) POSTing application/sparql-query documents [CONTINUES] [7] 19:58:10 recorded in http://www.w3.org/2007/03/06-dawg-irc#T14-44-56