W3C home > Mailing lists > Public > public-rdf-dawg-comments@w3.org > June 2006

[Fwd: FredZ draft comments] General comments

From: Jorge Pérez <jperez@ing.puc.cl>
Date: Thu, 22 Jun 2006 10:49:18 -0400 (CLT)
Message-ID: <60336.>
To: "public-rdf-dawg-comments@w3.org" <public-rdf-dawg-comments@w3.org>
Cc: jperez@ing.puc.cl

This is a mail about general comments to Fred Zemke's draft of
formalization of SPARQL semantics (June 16).

- jorge

---------------------------- Mensaje original ----------------------------
Asunto: draft comments
De:     Jorge  Pérez <jperez@ing.puc.cl>
Fecha:  Vie, 16 de Junio de 2006, 8:19 pm
Para:   "Fred Zemke" <fred.zemke@oracle.com>


I think that your treatment of blank nodes in queries simplify a lot the
treatment that is given in the current SPARQL spec. This helps a lot the
ones that (including me) still do not understand well the meaning of a
blank in query bodies. Do you have an example in wich blanks in a query
cannot be replaced by a simple use of variables?

I see some issues in the paper but in general they have to do more with
the intended meaning of the language than with your definitions.

The following are some specific comments. They are arranged in two groups:
simple comments (about typos and such minor things), and possible problems
or conflictive issues (from my  point of view) in definitions. Some of
this last comments are personal points of view or some conflicts with what
I understand about the current SPARQL spec.

    simple comments:

3.6.1 when defining S(TP) it says "... S(TP) is an RDF graph ..."
it would say "... S(TP) is an RDF triple ..." (or not?)

I think there is an inconsistent treatment for S(TP) and S(BGP). In 3.6
the definition says that S(TP) replace each blank node identifier in TP by
the blank node that it denotes. In 3.8 the definition of BGP supposes that
every blank node identifier is already replaced by the corresponding blank
node, and then one cannot apply the definition of S(TP) to define S(BGP).
I think this is a very little problem.

3.8.1 in the example there is a ':obj1' that dissapear in
the translation, and a ':obj2' appears.

3.8.1 in the basic graph pattern (the set) there are missings
'(' in the triples.

3.9.3 it says "G E-entails (G union S(BGP'))" i think that
BGP' mut be BGP (without ')

I was confused in some parts in the paper when using
english wording to denote things and its correpondence string
in the BNF grammar, for example TriplePattern vs triple pattern, etc.

    conflictive issues:

1) unbounded vs domain:
In 3.3.1 when defining a mapping i think that it would be
good to stablish the relationship between a variable not
being in the domain of a mapping and a variable being "unbounded"
in a mapping. what is the relationship? I supposed when reading
your paper that a variable is not in the domain iff it is
unbounded (is that right?). In  3.18.1 when defining OPTIONAL
matching it says "and S is undefined on all variables that ...",
do you mean "and S is unbounded in all variables that ..."? or may
be (if it is not equivalent) "and all variables that ... do not belong
to the domain of S"?

2) variables in solutions:
In 3.9 when defining pattern solution S for
BGP, the definition reads "The domian of S includes all variables
occuring in BGP", what about the variables not ocurring in BGP?
must they not belong to the domain of S (must be unbounded or
undefined)? or may be they could have arbitrary values? It is extremely
important to be specific in this case in order to define solutions
for more complex patterns. If they could have arbitary values then a query
like SELECT ?x ?y WHERE { ?x a b } would have a lot of solutions
at least one for every term in the dataset bounded to ?y every time
(?x,a,b) matches the dataset. In the other hand, i think that if
one force the solutions to bound only the variables that appear in
BGP then i think that your definition for the solution for GraphPattern
doesn't work properly....

3) General Framework vs simple entailment:
The mail about simple entailment that I send to you shows an issue
that appears when constructing solutions for simple querys following
the "General Framework"

4) Variables in Value Constraints:
In 3.14.3 when defining solutions for FileteredBasicGraphPattern
what happened if some of the variables in one of the Constaint_j
do not appear in any of the BlockOfTriples_k? is it defined in
section 11? (i must confess that i have not read in detail
section 11). What if a variable is unbounded? (i think in your
definition this case could not happen because constraints are
applied only to BlockOfTriples).

5) Solutions for empty pattern:
I think that defining the solutions for {} to be all mappings
is dangerous in a lot of ways. A simple example, for the query
{} UNION { TP } where TP is a triple pattern, then there are a
lot of solutions for the whole pattern and every solution that
matches TP will have cardinality 2 !! (by the definition of
cardinality of UNION and because every solution for {TP} is also
a solution for {}). Is this the definition of {} in the spec of
SPARQL? (I personally (as a user) hope from every
query language that 'empty' UNION A results in the same as if
I query simply A, whatever 'empty' means in the language)

6) GraphPattern vs OptionalPattern:
I think (I may be wrong) there is a
conflictive definition for OPTIONALs patterns. If one follows
the definition in 3.15 for GraphPattern, then S is a solution for
if S is a solution for FBGP, and S is a solution for 'OPTIONAL GGP'
because from [20] GP ::= FBGP ( GPNT '.'? GP )? one obtain
'OPTIONAL GGP' from GPNT, but there is no definition in the document
for the solutions of 'OPTIONAL GGP' (!). On the other hand, in section 3.18
you define the solutions for FBGP OPTIONAL GGP in a different way.

7) Optional Pattern solutions and undefined variables:
When you define solution for FBGP OPTIONAL GGP, suppose S is
a solution that satisfies condition 1) and 2a), then this prevents
S to be a solution for any FBGP2 that shares a variable with GGP but
not with FBGP. A concrete example, for a pattern like
{ ?x a b . OPTIONAL { ?x c ?y }} . ?z d ?y
Suppose that S is a solution for the OPTIONAL pattern that satisfies 2a)
then it cannot be a solution for ?z d ?y because by definition
S must be undefined on ?y, and then any solution for the OPTIONAL
pattern that satisfies 2a) is not a solution for the whole pattern...
is that correct? if i am not making a mistake, are the solutions
for this pattern compatible with the current SPARQL spec?

8) Semantics vs Sintax:
(a very personal point of view)
I think it is a little dangerous to stay so close to the grammar when
defining semantics. A lot of grammars may result
in the same language, indeed, suppose that the WG decide to
change completely the grammar... it would result in a disaster for the
semantics!!! I agree with you that every syntactic construction
must have a clear meaning (semantics), but I prefeer to mantain the
definitions in an abstract level. In some parts of your paper you
left the grammar and go up to an abstract level, for example when
defining OPTIONAL and UNION, and the result (definitions) are very
clear. Consider too the comment 6) above...

If you could clarify any of my questions in the comments above I could
give you more feedback.

- jorge
Received on Thursday, 22 June 2006 14:49:39 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 8 January 2008 14:14:50 GMT