- From: Ivan Herman <ivan@w3.org>
- Date: Mon, 08 Nov 2004 09:59:39 +0100
- To: "Seaborne, Andy" <andy.seaborne@hp.com>
- Cc: public-rdf-dawg-comments@w3.org
- Message-ID: <418F357B.3030403@w3.org>
Seaborne, Andy wrote: > > > Ivan Herman wrote: > >> Andy, >> >> thanks for the reply. Some (small) answer/remarks below >> >> Seaborne, Andy wrote: >> > > > <snip/> >> >>> >>>> --------------- >>>> >>>> Nested Patterns. It is not clear in the draft how 'deep' nesting can >>>> go. I did only the simple one, ie, only a one level depth is managed: >>>> >>>> (?a,?b,c), {(?q,?w?,?r),(?s,t,?u)} >>>> >>>> It is not clear whether a nesting of the kind: >>>> >>>> (?a,?b,c), {(?q,?w?,?r),{(?s,t,?u),(?q,k,?o)}} >>>> >>>> is also allowed or not. Actually, if it is, it has to be defined what >>>> it really *means*. >>> >>> >>> >>> >>> In that example, it is all conjunction and the same as: >>> >>> (?a,?b,c) (?q,?w?,?r) (?s,t,?u) (?q,k,?o) >>> >>> >> >> >> Then I am lost.:-( My understanding was that (just referring to Ti-s >> for triples): >> >> [T1 {T2 T3}] means [T1 T2] OR [T1 T2] >> > > Clarification first - [] is optional matching. > My apologies. I wrote these comments on the plane, and I did not have the right document with me so I did not use the right syntax. What I wanted to have there is WHERE T1 ( T2 T3 ) and I used '{' because I remembered you had a remark in the document that '{' might be likeley to be used in future. Sorry about the confusion. >> so why would >> >> [T1 {T2 {T3 T4}}] mean [T1 T2 T3 T4] as you write? What is then the >> difference between >> >> [T1 {T2 {T3 T4}}] and [T1 {T2 T3 T4}] or indeed [T1 T2 T3 T4]? > > > Nothing because the {} is just a set of triple patterns and juxaposition > is conjunction so T1 {T2 {T3 T4}} is "T1 AND (T2 AND (T3 AND T4))" > which is the same as the other forms. > O.k., I understand now that this is how you define the nested pattern in the document, but then I am not sure I understand its real usefuleness. My *preference* would be to define nested patterns as: WHERE T1 ( T2 T3 ) would mean WHERE T1 and (T2 or T3) etc... Of course, if this is the interpretation of nested patterns then my original question (what is the exact rule for a second order nested pattern) applies, but it is irrelevant indeed if we consider the working group's interpretation. I let the WG decide on this... >>> > > > Not quite : [] is the optional block itself not merely statement grouping. > > OPTIONAL { T1 T2 } is the same as [ T1 T2 ] > >> >> but is the difference between that and >> >> PREFIX foaf: <http://xmlns.com/foaf/0.1/> >> SELECT ?name ?mbox ?hpage >> WHERE ( ?x c ?name ) >> OPTIONAL { ( ?x foaf:mbox ?mbox ) ( ?x foaf:homepage ?hpage ) } > > > Consider the dataset: > > _:a foaf:name "Sally" . > _:a foaf:mbox <mailto:ceo@example.org> . > > then > > PREFIX foaf: <http://xmlns.com/foaf/0.1/> > SELECT ?name ?mbox ?hpage > WHERE ( ?x foaf:name ?name ) > [ ( ?x foaf:mbox ?mbox ) ] > [ ( ?x foaf:homepage ?hpage ) ] > > has a solution: > > ?name = "Sally" ?mbox=<mailto:ceo@example.org> ?hpage unset > > whereas: > > OPTIONAL { ( ?x foaf:mbox ?mbox ) ( ?x foaf:homepage ?hpage ) } > > requires both triples to match in order to match so the solution is: > > ?name = "Sally" ?mbox unset ?hpage unset > > It would not have a solution with just ?mbox bound because to match > { T1 T2 } both T1 and T2 must match. > > I hope that is a bit clearer. > Yes, it is. I was influenced by *my* interpretation of the nested patterns that is not the same as the Working Group's. In the case of the current definition of nested patterns there is indeed a difference. > <snip/> > > Andy > Sorry to be so stubborn... Ivan -- Ivan Herman W3C Communications Team, Head of Offices C/o W3C Benelux Office at CWI, Kruislaan 413 1098SJ Amsterdam, The Netherlands tel: +31-20-5924163; mobile: +31-641044153; URL: http://www.w3.org/People/all?pictures=yes#ivan
Received on Monday, 8 November 2004 09:01:46 UTC