- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Thu, 02 Dec 2004 12:18:38 +0000
- To: Kevin Wilkinson <wilkinson@hpl.hp.com>
- CC: public-rdf-dawg@w3.org
Kevin Wilkinson wrote: > andy, > thanks for the quick turn-around on my comments. > attached are my comments on your changes. > > kevin > > > ------------------------------------------------------------------------ > > comments on your changes (now referring to version 1.142 > of the SPARQL Mdraft). > > "Seaborne, Andy" wrote: > >>Kevin, >> >>Thank you for such a detailed set of comments, and thank you marking up the text. >> >>Changes logged below. >> >>Kevin Wilkinson wrote: >> >>>attached are my comments on v1.139 of the SPARQL spec. >> > ... > >>Changes in v1.141 until noted otherwise. >> >> >>> 1 Introduction >>> >>>An RDF graph is a set of triples, each consisting of a /+subject+/, an >>>+object+, and +/predicate/ that specifies+ a property relationship >>>between them+,+ as defined in RDF Concepts and Abstract syntax >>><http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Datatypes-intro>. >> >>A/ Can't see the change in subject and object. > > > the suggested change was to italicize subject, predicate and object. > your convention in other places in the document is to italicize > terms when they are first introduced (or for emphasis). i > thought it was appropriate to italicize subj, pred, obj. OK - I see now. > > as for predicate vs. property, consistency is important. but, > it might be good to imply here that predicate and property are > synonyms because property crops up in other places, e.g., > rdf:Property, InverseFunctionalProperty, etc. > > > >>> 2 Making Simple Queries > > ... > >>Leave this to Eric. > > > re: graph1, graphPattern1, don't neglect to change the headers > in the result table, i.e., referrer, reference, author are all > wrong. i forgot to mention this in my pervious message. > > >>> 2.1 Writing a Simple Query > > ... > >>>The terms delimited by "<>" are URI References [13] <#ref13> (URIRefs); >>>URIRefs can also abbreviated with an XML QName-like form [14] <#ref14>; >>>this is syntactic assistance and is translated to the full URIRef. >>>-Other RDF terms-+The terms delimited by double quotes+ are literals >>>which, following N-Triples syntax [7] <#ref7>, are a string and >>>-optional language tag (introduced with '@') and datatype URIRef >>>(introduced by '^^')-+optionally, either a language tag (indicated by >>>'@') or a datatype URIRef (indicated by '^^')+. >> >>Changed to: >>""" >>The RDF terms delimited by double quotes ("") are literals which, following >>N-Triples syntax [7], are a string, in quotes, an optional language tag, >>introduced with '@', and optional datatype URIRef, introduced by '^^'. >>""" > > > but your phrasing admits the possibility of a literal having > a language tag and a datatype. that's why i prefer my original > wording, "...in quotes, optionally followed by either a > language tag ... or a datatype ...". s/and/or/ But I don't see thr role of this document to define things defined elsewhere Such text is illustrative. > > > >>> 2.2 Triple Patterns > > ... > >>>-In SPARQL, a triple pattern is an RDF triple but with the addition that >>>components can be a query variable instead.- >>> >>>+In SPARQL, a triple pattern is an RDF triple in which any component can >>>be a query variable.+ >> >>A triple pattern is not an RDF triple if it has different contents. Text left >>as is. > > > but your phrasing also makes it sounds like a triple pattern is an > RDF triple. how about "... triple pattern is +similar to+ an RDF > triple but with the addition ..." Done - but I didn't read the old text that way! > > >>>*Definition:* Substitution >>> >>>A substitution S is a partial functional relation from variables to RDF >>>terms or variables. We write S[v] for the RDF term that S pairs with the >>>variable v and define S[v] to be v where there is no such pairing. >>>Â >>> >>>*Definition:* Triple Pattern Matching >>> >>>For +substitution+ S and Triple Pattern T, S(T) is -the-+a+ triple >>>pattern +formed+ by replacing any variable v in T with S[v]. (KW >>>Comment: there may be more than one such triple pattern, correct?) >> >>No - a substitution is a function and is well-defined. Applied to a triple >>pattern there is only one triple pattern produced. > > > i found the notation S(T) confusing since S is a function > from variables; i don't know what S(T) is. a different > function? can't a variable be bond to multiple terms? that's > why i thought S(T) would produce multiple triples. There are induced functions S:T->T, S:GP->GP which all naturally arise from the idea of substitution. It's usual to use the same name for this (polymorphic) function. As S is a function, one variable can only be bound to one term. Otherwise its not a function, just a relation. > > >>>Triple Pattern T matches RDF graph G with substitution S, if S(T) is a >>>triple of G. >>> >>>(KW Comment: the above definition (of Triple Pattern T match G) is a >>>second definition of triple pattern matching. Previously, at the start >>>of section 2.2, you say that a pattern matches all triples with >>>"identical" RDF terms. Is it obvious that these two definitions are >>>identical? Maybe prefix the first definition by saying it is an informal >>>definition.) >> >>I hope the use of the boxes does that informal/formal. Will consider - theer is >>also a comment outstanmding from Yoshio about putting all definitions before the >>nararrative text. Probably not possible at the very start of the doc. > > > i agree with yoshio. i prefer that definitions precede the examples. Will try - but after publication. > > >>>For example, the query: >>> >>>SELECT * WHERE ( ?x ?x ?v ) > > > perhaps "SELECT ?x, ?y, ?z" is better than "SELECT *" > since the '*' form of Select is not defined until section 10. Good point. Done. No comma though! > > > >>> 2.3 Graph Patterns >>> >>>-The keyword WHERE is followed by a /Graph Pattern/ which is made of one >>>or more /Triple Patterns/. These Triple Patterns are "and"ed together. >>>More formally, the Graph Pattern is the conjunction of the Triple >>>Patterns. In each query solution, all the triple patterns must be >>>satisfied with the same binding of variables to values.- >>> >>>+A /Graph Pattern/ is one or more /Triple Patterns /"and"ed together, >>>i.e., a conjunction of Triple Patterns. In a match, all the triple >>>patterns must be satisfied with the same binding of variables to values.+ >> >>Trying to, informally, explain the syntax at this point, hence the keyword >>WHERE. Avoid solution though. > > > i still prefer my wording since the objective of 2.3 is to explain > graph patterns. graph patterns do not need to have "WHERE" in front > of them. if you want to mention the WHERE word, i suggest doing that > in section 2.1 where you introduce querying. > Leave as is - the early sections can become full of definitions and no progress for the reader who is reading examples. Will review in another draft. > > >>>Data: >>> >>>@prefix foaf: <http://xmlns.com/foaf/0.1/> . >>> >>>_:a foaf:name "Johnny Lee Outlaw" . >>>_:a foaf:mbox <mailto:jlow@example.com> . >>> >> >>""" >>There is a bNode [12] in this dataset, identified by _:a. The label is only used >>with the file for encoding purposes. The label information is not in the RDF >>graph. No query will be able to identify that bNode by the label used in the >>serialization. >>""" > > > i would suggest dropping the above paragraph. there is no need > to introduce the concept of bnode labels at this point. it's > distracting from the discussion of graph patterns. bnode > labels/serialization are covered just fine in 2.5. I think we need to explain _:a at this point. Exzplaingin the handling of bNodes in queries has been a constant issue and so I'd like to face it head-on. > > > >>>*Definition:* Graph Pattern (Partial Definition) â?? Conjunction >>> >> >>The defintion of "matching" is being built up through the document. Each >>definition has a qualifier - here the defintion is "Graph Pattern Matching". > > > except that the definition of triple matching skirts the > issue by defining match in terms of "contains". perhaps > that's intentional. but, issues like plain literals being > equivalent to xsd:string-typed literals and issues with > bnodes are not mentioned. > > > >>And what's more, on reflection, I don't think "simply entails" is necessary. >>Subgraph would be clearer and *at this point* the definitions don't rely on >>entailment. The binding really does have the bNode as its value. It's later, >>on encoding results, that this is broken. It must be the same bNode to match >>again later. > > > good. i agree that subgraph would be clearer. Awaiting WG discussion - if the theorists point out anything that it misses we will stick with "entails" (and that needs a nunber of changes elsewhere). But query is over eth symbols of the graph, not individuals in the domain of discourse. > > >>> 2.4 Multiple Matches >>> > > ... > >>> _:a foaf:name "Johnny Lee Outlaw" . >>> _:a foaf:box <mailto:jlow@example.com> . >>> >>> _:b foaf:name "Peter Goodguy" . >>> _:b foaf:box <mailto:peter@example.org> . >>> >>>(KW Comment: I don't like the above example because it illustrates two >>>concepts. First, it shows that a query may have multiple solutions. >>>That's fine. But, it also illustrates the results can be a projection of >>>the query variables. This raises additional questions, specifically, how >>>are duplicates handled. I'd feel better if this example included >>>variable 'x' in the result list.). >> >>Point taken. However, (1) this isn't the first time projection has happened and >>(2) avoiding bNodes in results is desirable for clarity. The only option would >>be to not use FOAF but then we wouldn't have that is familiar to at least some >>people. Having synthetic data is rather dry. In this example, there aren't >>duplicates. > > > would it be too bizarre to have URIRef's in place of the bnodes, e.g., > ex:a foaf:name "Johnny Lee Outlaw" . ... Yes - it would. FOAF uses bNodes for people usually. I'd rather stick to be realistic. > > > >>>*Definition:* Query Solution >>> >>>A Query Solution is a Pattern Solution where the pattern is the whole >>>pattern of the query. >>> >>>*Definition:* Query Results >>> >>>The Query Results, for a given graph pattern GP on G, is written >>>R(GP,G), and is the set of all query solutions such that GP matches G. >>> >>>R(GP, G) may be the empty set. >>> >>> >>> 2.5 Blank Nodes >>> >>> >>> Blank Nodes and Queries >>> >> >>""" >>BNodes can't appear in a SPARQL query. There is no standard representation of >>bNodes in RDF and the syntax of SPARQL queries does not allow them. >> >>They do take part in the pattern matching process. > > > perhaps add "take part in the pattern matching process +by being > bound to variables in triple patterns+". > > >>""" >>Committed version 1.141 Committed version 1.143 > > > > i also had feedback on sections 3-6 and 10. i assume > you got that feedback in my original message and are > still processing those changes. if not, please let > me know and i can resend them. Later ... > > kevin
Received on Thursday, 2 December 2004 12:19:19 UTC