- From: Axel Polleres <axel.polleres@deri.org>
- Date: Thu, 10 May 2007 13:59:58 -0600
- To: Lee Feigenbaum <feigenbl@us.ibm.com>
- CC: public-rdf-dawg-comments@w3.org
All, I got the chance to discuss the comments directly with Eric here at WWW. I see that the WG wants to close this and will try to not cause more trouble ... :-) hope still the comments were helpful and let me emphasize agein what I already said to Eric: If there's a follow-up after the first Rec on issues like aggregates, etc. I 'd be very glad to join the WG (at the moment I guess I'm busy enough with RIF)! best, Axel Lee Feigenbaum wrote: > Axel Polleres <axel.polleres@deri.org> wrote on 05/03/2007 07:55:51 PM: > > >>Where asked back, replies inline. > > > Hello Axel, > > Thanks for a timely reply. We've responded to the points that remain > unaddressed below inline (and have cut the remaining text for brevity). > Please let us know if this response satisfies you. If it does, you can > help our comment tracking by replying to this message and adding [CLOSED] > in the subject line. Again, in the interests of our schedule, we'd like to > ask that you get back to us as soon as possible, and if we do not hear > from you in 10 days we will consider these comments closed. > > Lee > > >>Lee Feigenbaum wrote: >> >>>Axel Poleres wrote on 04/17/2007 12:53:55 PM: >>> >>> >>>>Dear all, >>>> >>>>below my review on the current SPARQL draft from >>>> >>>>http://www.w3.org/TR/rdf-sparql-query/ >>>> >>>>on behalf of W3C member organization DERI Galway. > > > ... > > >>>>Section 5 >>>> >>>>Section 5 is called Graph patterns and has only subsections >>>>5.1 and 5.2 for basic and group patterns, whereas the other types are >>>>devoted separate top level sections.. this structuring seems a bit >>>>unlogical. >>> >>> >>>In the interest of keeping the document numbering as is, we've decided > > to > >>>keep this section as is. If you have a better suggestion for the name > > of > >>>the section, we'd be glad to hear it. ("Basic Graph Patterns and Group > > >>>Graph Patterns" does not seem particularly helpful to a reader.) >> >> >>I'd suggest to have two separate top level sections. >>"In the interest of keeping the document numbering as is" >>is not an argument which seems very logical to me, to be honest. > > > We've added a line in the introduction explaining the relationship of the > two topics covered in Section 5: > > """ > In this section we describe the two forms that combine patterns by > conjunction: basic graph patterns, which combine triples patterns, and > group graph patterns, which combine all other graph patterns. > """ > > There is a close-but-different relationship between the two types of graph > patterns and we feel that keeping one section helps keep this clear. The > editors are not motivated to split Section 5 into two top-level sections. > (Do note, however, that editorial changes are permitted during CR, and > anyone submitting proposed changes will of course be given due > consideration.) > > ... > >>>>Another one about FILTERs: What about this one, ie. a FILTER which >>>>refers to the outside scope: >>>> >>>>?x p o OPTIONAL { FILTER (?x != s) } >>>> >>>>concrete example: >>>> >>>>SELECT ?n ?m >>>>{ ?x a foaf:Person . ?x foaf:name ?n . >>>> OPTIONAL { ?x foaf:mbox ?m FILTER (?n != "John Doe") } } > > > Call this query [X]. > > >>>>Supresses the email address for John Doe in the output! >>>>Note: This one is interesting, since the OPTIONAL part may NOT be >>>>evaluated separately!, but carries over a binding from the >>>>super-pattern! >>> >>> >>>A filter in the optional part of an OPTIONAL construct applies to the >>>solutions from the required part as (possibly) extended by the > > optional > >>>part. In the algebra, the example above becomes: >>> >>>LeftJoin( >>> BGP(?x a foaf:Person . ?x foaf:name ?n), >>> BGP(?x foaf:mbox ?m), >>> (?n != "John Doe") >>>) >> >>Hmmm, does this mean, that the query would simple be the same as writing >> >>SELECT ?n ?m >>{ ?x a foaf:Person . ?x foaf:name ?n . FILTER (?n != "John Doe") >> OPTIONAL { ?x foaf:mbox ?m } } > > > Call this query [Y]. > > >>in this case? > > > No. This latter query, [Y], is: > > Filter(?n != "John Doe", > LeftJoin( > BGP(?x a foaf:Person . ?x foaf:name ?n), > BGP(?x foaf:mbox ?m), > true > ) > ) > > >>(How) would it be possible then to encode my intended meaning of the >>query, ie. that I want to give all names, but supress the email address >>of John Doe? > > > The original query, [X], has these semantics. The second query, [Y], does > not. > > ... > >>>>Would it make sense to add some non-well-defined OPTIONAL patterns, >>>>following [Perez et al. 2006] in the document? As mentioned before, I >>>>didn't yet check section 12, maybe these corner case examples are >>>>there.. >> >> > We're not motivated to add these >> > examples to the document. >> >>Why? I would object here, but not being part of the WG, I have to leave >>this decision to you of course. > > > The editors do not believe that such an example would add to the quality > of the specification. > > ... > >>>>Section 9: >>>> >>>>What is "reduced" good for? I personally would tend to make reduced >>>>the default, and instead put a modifier "STRICT" or "WITHDUPLICATES" >>>>which enforces that ALL non-unique solutions are displayed. >>> >>>REDUCED can be used to permit certain optimizations by the SPARQL > > query > >>>engine. The WG discussed various design options in this space > > including > >>>the design you are suggesting, and decided to add the REDUCED keyword > > and > >>>mark the feature at-risk. More information: >>> >>>http://lists.w3.org/Archives/Public/public-rdf- >> >>dawg/2007JanMar/att-0194/20-dawg-minutes.html#item02 >> > http://lists.w3.org/Archives/Public/public-rdf-dawg/2007JanMar/0162.html > > http://lists.w3.org/Archives/Public/public-rdf-dawg/2007JanMar/0128.html > >>>...and surrounding. >> >>By making REDUCED the exception and all tuples with duplicates the >>default, you somewhat implicitly single out implementations which use >>per-set rather than per-tuple strategy with that, in my opinion. I find >>this limiting. > > > This was an intentional choice by the WG, considering all of the > information you have mentioned. I do not see any new information here at > this time to ask the WG to reconsider this decision. > > ... > >>>>Section 9.1 >>>> >>>>The ORDER BY construct allows arbitrary constraints/expressions as >>>>parameter...ie. you could give an arbitrary constraint condition here, >>>>right? What is the order of that? TRUE > FALSE? Would be good to add >>>>a remark on that. >>> >>> >>>This is for generality because semantic web data is not as structured > > (and > >>>typed) as a database. It allows the query to proceed without an error > > >>>condition so it generates some defined outcome. >>> >>>SPARQL doesn't provide total ordering, but the example you asked about > > is > >>>specified. >>> >>>[[ >>>The "<" operator (see the Operator Mapping) defines the relative order > > of > >>>pairs of numerics, simple literals, xsd:strings, xsd:booleans and >>>xsd:dateTimes. >>>]] >>> >>>"<" operator in the Operator Mapping table has an entry for >>> A < B xsd:boolean xsd:boolean op:boolean-less-than(A, B) >>>op:boolean-less-than is defined in XPath Functions and Operators >>> http://www.w3.org/TR/xpath-functions/#func-boolean-less-than >>> >>>[[ >>>Summary: Returns true if $arg1 is false and $arg2 is true. Otherwise, >>>returns false. >>>]] >>> >>>I think the LC document specifies all the orderings intended by the > > DAWG, > >>>but am certainly open to counter-example. >> >>What I meant to say was that a short clarifying remark would keep >>readers from having to look through the separate spec. > > > I believe that the intuitive interpretation of < is enough to give people > a good understanding. As SPARQL specifically uses XPath functions and > operators (for user familiarity, library re-use, and to leverage reviewed > specifications), we can't replace them with our own definitions. > Bulk-including those sections of the XPath spec would be costly and > confusing. > > As frustrating as it may appear, I think this is optimized. > > ... > >>>ASK doesn't permit a SolutionModifier. Adding ASK there could imply > > that > >>>it was allowed and even had some effect (other than syntax error). >> >>wouldn't that be worth a footnote then, maybe? > > > I reluctantly added a sentence to the end: > [[ > Using ORDER BY on a solution sequence for a CONSTRUCT or DESCRIBE query > has no direct effect because only SELECT returns a sequence of results. > Used in combination with LIMIT and OFFSET, ORDER BY can be used to return > results generated from a different slice of the solution sequence. An ASK > query does not include ORDER BY, LIMIT or OFFSET. > ]] > ... > > >>>>Sec 9.2: >>>> >>>>Add somewhere in the prose: "using the SELECT result form"... >>>> >>>>It is actually a bit weird that you mix select into the solution >>>>modifiers, IMO, it would be better to mention SELECT first in section >>>>9 >>>>and then introducing the solution modifiers. >>> >>> >>> >>>SELECT is both an indicator of the query result form and also contains > > the > >>>projection. >> >>yes, that's my point. > > > We see no reason to make a change. This has been part of the SPARQL > specification for a long time, and the experience of the community seems > to indicate that it is comprehensible. > > ... > >>>>Sec 9.5/9.6: >>>> >>>>OFFSET 0 has no effect, LIMIT 0 obviously makes no sense since the >>>>answer is always the empty solution set... So why for both not simply >>>>only allowing positive integers? I see no benefit in allowing 0 at >>>>all. >>> >>> >>>The WG believes that allowing 0 eases the burden on programmatically >>>generated queries. >> >>What is the justification for this belief if I may ask? > > > The belief arises from implementation experience by various members of the > workgroup. > > (For example: > > query = sprintf("SELECT ... LIMIT %d OFFSET %d", limit, offset); > is easier than > if (offset == 0) { > query = sprintf("SELECT ... "); > } else { > query = sprintf("SELECT ... LIMIT %d OFFSET %d", limit, offset); > } > ) > > Google, for another instance, serves from offset 0: > http://www.google.com/search?q=search&hl=en&start=0&sa=N > > >>>>Section 10.2 >>>> >>>>CONSTRUCT combines triples "by set union"? >>>>So, I need to eliminate duplicate triples if I want to implement >>>>CONSTRUCT in my SPARQL engine? >>>>Is this really what you wanted? In case of doubt, I'd suggest to >>>>remove "by set union", or respectively, analogously to SELECT, >>>>introduce a DISTINCT (or alternatively a WITHDUPLICATES) >>>>modifier for CONSTRUCT... >>> >>> >>>A set represented with duplicate triples is identical to a > > representation > >>>without any duplicates, >> >>no, it is not identical if viewed as dataset for another query: if I >>apply another (SELECT) query on the output of the CONSTRUCT - which >>again is RDF, so why not? - then ther is potentially a difference (see >>the distinct/reduced issue) > > > See below. > > >>>so I believe the text is correct as written. That >>>is, the following are representations of the same graph: >>> >>><x> <y> <z> . >>> >>>and >>> >>><x> <y> <z> . >>><x> <y> <z> . >> >>if I ask aquery with solution modifiers on these two graphs, then it is >>not the same! Attention! > > > No, the above are two representations of the same RDF graph. (A graph with > a single triple.) Any SPARQL query against either of these two > representations of the same graph will have the same solutions. > > >>>>BTW, I miss the semantics for CONSTRUCT given formally in Section 12. >>> >>> >>>We do not right now intend to include CONSTRUCT in Section 12. > > CONSTRUCT > >>>is defined normatively in section 10.2. ( >>>http://www.w3.org/TR/rdf-sparql-query/#construct ). >> >>I fail to find a definition of the formal semantics of CONSTRUCT there. >> >>CONSTRUCT is likely one of the things which people will pick up very >>fast...so it would be good to have this more formal, I think. > > > The group has decided not to pursue a rigorous treatment of CONSTRUCT in > Section 12 at this time. To do so would require a great deal of new work > and review, and would put our schedule in serious jeopardy. We believe > that the semantics specified in Section 10.2 sufficiently specify > CONSTRUCT and will lead to interoperable implementations. > > ... > >>>>In the definition of compatible mappings, you might want to change >>>> >>>>"every variable v in dom(μ1) and in dom(μ2)" >>>>to >>>>"every variable v ∈ dom(μ1) ∩ dom(μ2)" >>>> >>>>"Write merge(μ1, μ2) for μ1 set-union μ2" >>>> >>>>Why not use the symbol ∪ here? >>> >>> >>>As noted above the reliance on some symbols being available is not > > safe > >>>across enough brower and locale setups. We are striking a balance > > here. > >>and μ is safe? > > > μ is safer. Correct display of, say, ∪ is less common than than > μ > The W3C document style does not set the font family for display. > > ... > >>>>12.5 >>>> >>>>The operator List(P) is nowhere defined. >>>>I still don't have totally clear why you need to introduce the ToList >>>>operator. >>> >>> >>>Already discussed. >> >>Also that "List(P)" is not defined? > > > This is already fixed in the editors' working draft. > > ... > >>>>A general comment: >>>> >>>>I miss a section defining the *Semantics of a query* and of different >>>>result forms. The Evaluation semantics given here rather is a mix of >>>>functions having partly multisets of solution mappings and sequences >>>>thereof as result, >>>>but all are called "eval()". >>>> E.g. eval for BGP returns a multiset, whereas eval returns a list >>>>for ToList, etc. >>>> >>>>The semantics of a *query* is not really clearly defined yet, it >>>>seems. This needs another revision, I guess. >> >>no response here? > > > > Sec. 12 intro says: > > """ > This section defines the correct behavior for evaluation of graph patterns > and > solution modifiers, given a query string and an RDF dataset. It does not > imply > a SPARQL implementation must use the process defined here. > """ > > >>>>In the "Notes", item (d): >>>> >>>>"the current state of the art in OWL-DL querying focusses on the case >>>>where answer bindings to blank nodes are prohibited." >>>> >>>>It would be helpful to give references here. >>> >>> >>>The notes highlight the working assumptions. I don't think references > > >>>would change that. This is a diference between an acedemic paper and > > a > >>>specification. >> >>You mean that a specification shouldn't follow general rules of style >>which make the reader more comfortable (such as for instance >>references)? disagree, to be honest. > > > Technology specifications do not follow the same style rules as academic > papers, largely because the two have different goals. The editors do not > believe that references to OWL-DL querying work would improve the > specification. > > thanks again, > Lee > > > -- Dr. Axel Polleres email: axel@polleres.net url: http://www.polleres.net/
Received on Thursday, 10 May 2007 20:00:14 UTC