- From: Howard Katz <howardk@fatdog.com>
- Date: Tue, 26 Jul 2005 08:17:16 -0700
- 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 UTC