W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > July to September 2005

RE: SPARQL Query Results XML Format ready for review

From: Howard Katz <howardk@fatdog.com>
Date: Tue, 26 Jul 2005 08:17:16 -0700
Message-Id: <200507261517.j6QFHIgc012181@pyramid-02.kattare.com>
To: <public-rdf-dawg@w3.org>
Cc: "'Dave Beckett'" <dave.beckett@bristol.ac.uk>

I mistakenly sent this to the request list the first time around. Dave and I
have chatted a bit since.
Howard

 > -----Original Message-----
 > From: Howard Katz [mailto:howardk@fatdog.com] 
 > Sent: Monday, July 25, 2005 10:27 PM
 > To: 'Dave Beckett'
 > Cc: 'public-rdf-dawg-request@w3.org'
 > Subject: RE: SPARQL Query Results XML Format ready for review
 > 
 > Dave,
 > 
 > I've walked through your XQuery code in 
 > http://www.w3.org/2001/sw/DataAccess/rf1/result2-to-html.xq 
 > and have a few comments.
 > 
 > (1) It seems odd to me to have a query that doesn't specify 
 > a target document or input set in some fashion or other. I 
 > suspect you've been able to associate your query with your 
 > example results-set document via some out-of-band mechanism, 
 > such as the one provided by Saxon, but that type of 
 > mechanism is implementation-dependent.
 > 
 > I'd suggest you set a top-level document-node variable that 
 > points to your result-set document on the W3C site, as in:
 > 
 >      declare variable $results-doc := doc( 
 > "http://www.w3.org/2001/sw/DataAccess/rf1/output.xml" );
 > 
 > If you do that and then root all the xpaths in the query at 
 > the above document node, users will be able to see a direct 
 > reference to the document being queried, and more 
 > importantly the query will actually work as is in any XQuery 
 > environment. This would require changing this xpath, for example:
 > 
 >     <p>Ordered: { let $v := //res:results/@ordered return 
 > text { $v } } </p>
 > 
 > to this:
 > 
 >     <p>Ordered: { let $v := 
 > $results-doc//res:results/@ordered return text { $v } } </p>
 > 
 > (2) While I'm looking at it, the above statement can be 
 > simplified a bit to
 > 
 >      <p>Ordered: { $results-doc//res:results/@ordered/string() } </p>
 > 
 > (The above use of string() is the "context-sensitive" 
 > variant; you can also pass the entire expression into an 
 > fn:string() function, as in:
 > 
 >      <p>Ordered: { string( 
 > $results-doc//res:results/@ordered ) } </p> )
 > 
 > with the same results.
 > 
 > (3) This is much more in nit territory, but I'd recommend 
 > changing all self-or-descendant operators (//) to child 
 > steps and actually specifying each component in the path 
 > explicitly. In other words:
 > 
 >      <p>Ordered: { $results-doc//res:results/@ordered/string() } </p>
 > 
 > becomes this:
 > 
 >       <p>Ordered: { 
 > $results-doc/res:sparql/res:results/@ordered/string() } </p>
 > 
 > This is both good pedagogy (the xpath recaps the actual 
 > structure of the document), and most query engines (tho not 
 > my own!) will probably be more efficient at resolving the 
 > path -- tho it hardly matters in this case, given the small 
 > size of the document. As I said, nit territory.
 > 
 > (4) You can make your code conformant with the latest, April 
 > 2005 version of the working draft by changing your existing 
 > variable declaration from this:
 > 
 > declare variable $variableNames {
 >    for $element in //res:sparql/res:head/res:variable
 >      return string($element/@name)
 > };
 > 
 > to this:
 > 
 > declare variable $variableNames :=
 >    for $element in //res:sparql/res:head/res:variable
 >      return string($element/@name)
 > ;
 > 
 > (5) I don't know if this came from a prior version of the 
 > grammar, but your namespace declaration at the top of the document:
 > 
 >        declare namespace default="http://www.w3.org/1999/xhtml";
 > 
 > isn't doing what I think you think it is. It should actually 
 > be changed to this to conform to the latest version of the wd:
 > 
 >        declare default element namespace 
 > "http://www.w3.org/1999/xhtml";
 > 
 > Your declaration as given says that there's a namespace 
 > being used in the query where the prefix "default:" is 
 > standing in for the url "http://www.w3.org/1999/xhtml". That 
 > prefix of course isn't being used, so this declaration is a 
 > no-op: The query works quite fine without it. (That might be 
 > of course because there's already a 
 > xmlns="http://www.w3.org/1999/xhtml" decarlation on the 
 > <html> element.)
 > 
 > (6) My only other nits concern some of the clauses in the 
 > if-then-else structure that dispatches on the specific variable type.
 > 
 > This isn't incorrect:
 > 
 > 	  if ($item/res:bnode) then
 > 	     (: blank node value :)
 > 	     text { "nodeID", string($item/res:bnode/text()) }
 > 
 > but you don't actually need the string() function on the 
 > final item, since .../text() itself produces a string value. 
 > In other words,
 > 
 > 	  if ($item/res:bnode) then
 > 	     (: blank node value :)
 > 	     text { "nodeID", $item/res:bnode/text() }
 > 
 > produces the same result, and even more commonly and concisely:
 > 
 > 	  if ($item/res:bnode) then
 > 	     (: blank node value :)
 > 	     ( "nodeID ", $item/res:bnode/text() )    (: a 
 > sequence of two string items; note the extra space in "nodeID ":)
 > 
 > and sometimes:
 > 
 > 	  if ($item/res:bnode) then
 > 	     (: blank node value :)
 > 	   fn:concat( "nodeID ", $item/res:bnode/text() )
 > 
 > and finally, I believe the latter doesn't even need the 
 > final .../text() dereference, since concat() itself causes 
 > each of its arguments to be atomized, in this case to 
 > strings. So this would suffice:
 > 
 > 	  if ($item/res:bnode) then
 > 	     (: blank node value :)
 > 	   fn:concat( "nodeID ", $item/res:bnode )
 > 
 > (Damn, those nits are getting itchy! :-)
 > 
 > Howard
 > 
 >  > -----Original Message-----
 >  > From: public-rdf-dawg-request@w3.org  > 
 > [mailto:public-rdf-dawg-request@w3.org] On Behalf Of Dave 
 > Beckett  > Sent: Thursday, July 21, 2005 6:56 AM  > To: RDF 
 > Data Access Working Group  > Subject: SPARQL Query Results 
 > XML Format ready for review  >  >  > I've updated the 
 > editor's draft to add both @ordered and  > @distinct 
 > attributes to the <results> element.
 >  >
 >  > http://www.w3.org/2001/sw/DataAccess/rf1/
 >  > $Revision: 1.33 $ of $Date: 2005/07/21 13:51:05 $  >  > 
 > See  > http://www.w3.org/2001/sw/DataAccess/rf1/#changes
 >  > for full changelog.
 >  >
 >  > Reviewers: I'd be interested on any suggested wordings 
 > about  > how to record my confidence in the XML schemas.  
 > See the  > words in red in section 4.
 >  >
 >  > There remain the usual publication todos: spellcheck,  > 
 > linkcheck, pubrules.  As there are attached schema files  > 
 > refered to in the html, xsd, rng, and so on they also need  
 > > to be edited by the webmaster before publication, i've 
 > left  > an @@FIXME@@ to remind about that.
 >  >
 >  > Dave
 >  >
 >  > 
 > 
Received on Tuesday, 26 July 2005 15:17:31 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 16:15:23 GMT