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

Re: review of rq23 1.377

From: Seaborne, Andy <andy.seaborne@hp.com>
Date: Fri, 10 Jun 2005 13:22:12 +0100
Message-ID: <42A985F4.7070302@hp.com>
To: kendall@monkeyfist.com, DAWG Mailing List <public-rdf-dawg@w3.org>

To end section 2.
cc: www-archive removed.  This list is archived.

Comments accepted unless noted below:

See CVS log for things accepted that aren't purely editorial.


Kendall Clark wrote:
> Andy & Eric,
> I'm attaching my review of 1.377 of rq23. It's an annotated copy of the spec
> itself. That seemed a bit easier for me and, hopefully, for you guys to
> process. I'm hoping that the W3 list archiver turns HTML attachments into
> links.
> Anyway, I'm happy to discuss any of the comments in the review. FYI, I
> stopped the review around section 11.1. I made nearly 300 <strike> or <ins>
> annotations, and then I got really tired of doing that. :>
> All in all, good show on the spec!
> Kendall Clark


> This document describes the query language part of [Where's the 
> "S"?]


Protocol And RDF Query Language (SPARQL) [I think the acronym for
> the query language and protocol shouldn't be overloaded in this document 
> to refer to the query language alone. It's potentially confusing and bad 
> marketing to boot.] for easy access to RDF stores. It is designed to 
> meet the requirements and design objectives described in RDF Data Access 
> Use Cases and Requirements <http://www.w3.org/TR/rdf-dawg-uc/>

There isn't a separe name for the query language.  It already says "query 
language part of".

>     1 Introduction
> An RDF graph is a set of triples, e. Each triple consistings of a 
> /subject/, a /predicate/ and an /object/, as defined in RDF Concepts and 
> Abstract sSyntax <http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/>. 

Done by making the abstract syntax clause a sentence.

> These triples can come from a variety of sources. For instance, they may 
> come directly from an RDF document. They may be inferred from other RDF 
> triples. They may be the RDF expression of data stored in other formats, 
> such as XML or relational databases.
> SPARQL is a query language for getting information from such RDF graphs. 
> It provides facilities to:
>     * extract information in the form of URIs, blank nodes, plain and
>       typed literals.
>     * extract RDF subgraphs.
>     * construct new RDF graphs based on information in the queried graphs.

>     * Why not say something here about ASK too?

I regard that covered by point one : I can't think of suitable other wording.

(Point 2 is specifically picking out a charter requirement.)

> As a data access language, it is suitable for both local and remote use. 
> When used across networks, the companion SPARQL Protocol for RDF 
> <http://www.w3.org/TR/rdf-sparql-protocol/> document [11 <#ref11>] 
> describes a remote access protocol.The companion SPARQL Protocol for RDF 
> <http://www.w3.org/TR/rdf-sparql-protocol/> document [11 <#ref11>] 
> describes a remote access protocol suitable for use across networks.

As a data access language, it is suitable for both local and remote use. The 
companion SPARQL Protocol for RDF document [11] describes the remote access 

>     2 Making Simple Queries
. . .

> Later sections of this document describe how other graph patterns can be 
> built using the graph operators |OPTIONAL <#optionals>| and |UNION 
> <#alternatives>|,; how they may be grouped <#GroupPatterns> together; 
> and also how queries can extract information from more than one graph 
> <#queryDataset>; and how It is also possible to restrict the values 
> allowed in matching a pattern.

Kept the last part as-is because it emphaises the combination of triples patterns.

> Variables in SPARQL queries have global scope; [This is really awkward: 
> it is the same variable everywhere in the query that the name is used. 
> How about something like this instead: "Each syntactically identical 
> occurrence of the same variable string is semantically the same 
> variable" That's no good, but something in that direction is more clear 
> that the present text. IMO.]

Changed "the same name is used"
Don't know what "semantic" was intended to convey here.

  Variables are indicated by '?'; the '?'
> does not form part of the variable. '$' is an alternative to '?' to help 
> where systems use '?' as a substitution character. In a query, |$abc| 
> and |?abc| are the same variable.
. . .

> Triple Patterns <#defn_TriplePattern> are written as a list of subject, 
> predicate, object; -there are abbreviated ways <#syntaxMisc> of writing 
> some common triple pattern constructs.

Left in.

>       2.2 Initial Definitions
> *Definition:* RDF Term
> let I be the set of all IRIs.
> let RDF-L be the set of all RDF Literals 
> <http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-literal>
> let RDF-B be the set of all blank nodes 
> <http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node>
> The set of RDF Terms, RDF-T, is I union RDF-L union RDF-B.
> This definition of RDF Term collects together several basic notions from 
> the RDF data model 
> <http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-data-model>.[This 
> adds nothing to the spec, IMO.]

Left in - emphasising that this defn wouldn't be a defn if RDF had defined this.

>       2.4 Matching of Basic Graph Patterns
> *Definition:* Pattern Solution
> A pattern solution is a function from a subset of the set of variables 
> to the set of RDF terms, RDF-T.
> The result of replacing every v in a graph pattern P by S(v) is written 
> S(P).
> "Pattern Solution" is abbreviated to "Solution" where it is clear to do 
> so. [Are "query result" and "solution" also synonyms? They are used 
> interchangeable herein. Further, this comment really only confuses me. 
> Now every time I see "solution", I wonder if you mean "pattern solution" 
> or are you speaking generically? Shurely it's not worth saving 7 
> characters a few times?]

Not really.  I've removed the formal definition of "results" (it was no longer 
used elsewhere) and so "results" is a more informal term.

Solution is only a pattern solution, possibly

{Side effect: the definitions donot have a notion of completeness so allowing 
inference graphs to be better handled).

>       2.7 Blank Nodes
>         Blank Nodes and Queries
> A blank node <http://www.w3.org/TR/rdf-concepts/#section-blank-nodes> 
> can appear in a query pattern. It behaves as a variable, although it can 
> not cannot

left "can not"

> be mentioned in the query result form or anyplace else in any 
> part of the query other than outside a graph pattern.

Removed the "outside graph pattern" - left over from pre-modifiers days.

> Blank nodes in queries are distinct from all blank nodes in the data. A 
> blank node in a graph pattern does not match a blank node in the data by 
> blank node label.
>         Blank Nodes and Query Results
> In the results of queries, tThe presence of blank nodes can be indicated 
> in query results by labels in the serializations of those results. An 
> application or client receiving the results of a queryA consumer of 
> query results

Kept as is : To me, "consumer" is no better than "client" or "application" (we 
don't talk about "producers").

>       2.8 Other Syntactic Forms
> The SPARQL uses a "Turtle-like" syntax for writing syntax for 
> representing basic graph patterns, is Turtle plus with the addition of 
> named variables.

Dropped first sentenance.

>         Blank Nodes
> Blank nodes have labels which are scoped to the query. They are written 
> as "|_:a|" for a blank node with label "|a|".
> A blank node that is used in only one place in the query syntax [Does 
> this mean used in only one place in the string that represents a 
> particular query?] can be abbreviated with "[]". A unique blank node 
> will be created and used to form the triple pattern.

Yes - example "[] :p :q ; :x : y ."

> The "[:p :v]" construct can be used to form a triple patterns with a 
> blank node for its subject.

Or more than one triple as per later example - left as is.

> The following two forms:
> [ :p "v" ] .
> [] :p "v" .
> allocate a unique blank node label (here "|b57|") and are equivalent to 
> writing:
> _:b57 :p "v" .
> Abbreviated blank node syntax can be combined with other abbreviations 
> for common predicates and common objects.
>   [ foaf:name  ?name ;
>     foaf:mbox  <alice@example.org> ]
> This is the same as writing the following basic graph pattern for some 
> uniquely allocated blank node:
>   _:b18  foaf:name  ?name .
>   _:b18  foaf:mbox  <alice@example.org> .
>         RDF Collections
> RDF collections can be written in triple patterns using the syntax "(  
> )". The form "()" is short for an abbreviatio of resource |rdf:nil| or 
> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> 
> <http://www.w3.org/TR/rdf-schema/#ch_nil>.
> (1 ?x 3)
> is short for:
>   _:b0  rdf:first  1 .
>   _:b0  rdf:rest   _:b1 .
>   _:b1  rdf:first  ?x .
>   _:b1  rdf:rest   _:b2 .
>   _:b2  rdf:first  3 .
>   _:b2  rdf:rest   rdf:nil .
>         Other
> The keyword "|a|" can be used as a predicate in a triple pattern and is 
> short foran abbreviation of |rdf:type|.
>   ?x  a  :Class1 .
>   [ a :myClass ] :p "v" .
>   ?x    rdf:type  :Class1 .
>   _:b0  rdf:type  :myClass .
>   _:b0  :p        "v" .
Received on Friday, 10 June 2005 12:22:26 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 15:00:47 UTC