- 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