- From: Jorge Pérez <jperez@utalca.cl>
- Date: Mon, 24 Apr 2006 16:07:29 -0400
- To: andy.seaborne@hp.com
- Cc: public-rdf-dawg-comments@w3.org
Mensaje citado por "Seaborne, Andy" <andy.seaborne@hp.com>:
> Jorge Pérez wrote:
> > Hi! In the last draft, little attention is put on group graph patterns
> > and "combinations" of group graph patterns. The draft says nothing about
> how
> > the solution of
> >
> > WHERE {
> > { A . }
> > { B . }
> > }
> >
> > is. There is just an example in where A and B are triple patterns, in which
>
> > case the above WHERE clause is the same as
> >
> > WHERE {
> > A .
> > B .
> > }
>
> This two queries are not necessarily the same, assuming A and B are triple
> patterns. { A . B } is a single basic graph pattern, in a group of one. {
> {A}
> {B} } is two basic graph patterns, each of one triple pattern, in a group of
> 2.
>
> This makes a difference depending on what entailment is being used. There is
>
> also the matter that is A and B have a blank node with the same label, it
> will
> not be the same blank node in the { {A} {B} } case.
>
> With ARQ, when querying a plain RDF graph, if the triple patterns do not use
>
> blank nodes, then the answers will be the same.
>
> >
> > but what if A or B are more complex graph patterns? It is not clear what
> the
> > example is trying to say:
> >
> > 1) does it say that {} (inside other {}) are useless and on can just omit
> > them? and then {{ A. } { B. }} is alway equal to { A. B. }
> > 2) Other possiblity of evaluation is to think that { A. } and { B. } are
> graph
> > patterns in the same group graph pattern, aplying the group graph pattern
> > formal definition, a solution to the pattern { { A. } { B. } } must
> > *independently* match the patterns A and B.
>
> A solution will be a solution to both.
>
> >
> > what is the right? When looking in some implementations (SPARQLer and
> others)
> > it seems that they are just omiting {}, i.e. using 1). following my example
> in
> >
> http://lists.w3.org/Archives/Public/public-rdf-dawg-
comments/2006Apr/0020.html
> > what would be the answer for
>
> Omitting the {} will get the same answers in ARQ when the query is being made
> against a plain RDF.
but there are cases in wich omitting the {} must result in different answers...
>
> >
> > WHERE {
> > { ?B :titlename ?N . }
> >
> > { ?B :year ?Y .
> > OPTIONAL { ?B :authorname ?N } }
> > }
> >
> > if one agree with 2) the solution must be the same as the solution for
> >
> > WHERE {
> > { ?B :year ?Y .
> > OPTIONAL { ?B :authorname ?N } }
> >
> > { ?B :titlename ?N . }
>
> This is an artifect of the ARQ execution strategy. It processes queries in
> the order the query has them - OPTIONAL acts like a left join in SQL (with
> all
> the same issues as regards optimizations and transformation of queries that
> that brings).
>
> rq23 says
> """
> A solution of Group Graph Pattern GP on graph G is any solution S such that,
>
> for every element GPi of GP, S is a solution of GPi.
> """
> so ARQ is failing to find some solutions.
Not only failing to find, it is finding solutions that do not exist!
I understand then that ARQ is following in a wrong way the specification in
the case of evaluation of group graph patterns.
> It should be treating OPTIONAL
> more like a full outer join.
>
> > }
> >
> > but implementations gave me differents results...
>
> Which implementations? You mentioned SPARQLer (which is running ARQ). It
> would be good to know what other implementations you are referring to so we
> can draw on implementation experience.
I have been trying SPARQLer and the one by XML ArmyKnife
http://xmlarmyknife.org/api/rdf/sparql/query
This two implementations are evaluating combinations of group graph patterns
in the wrong way. I think that this is in part because the SPARQL
specification is very short in this issue... the two implementations gave me
different aswers for the patterns { {A} {B} } and { {B} {A} } that must
result in the same.
- Jorge
>
> >
> > Note that there may be more complex forms of combinations, so this issues
> > deserves clarifications. If the editors agree with 1) then for simplicity
> the
> > {} must be refused inside other {}, this is the most simple way to avoid
> the
> > problem, for example
> >
> > { A. { B. { C. } { D. }} . OPTIONAL E. }} == { A. B. C. D. OPTIONAL E. }
> >
> > If they agree with 2) (not the most simple but seems to be the more
> "natural")
> > I think that some clarifications may be added to the draft.
> >
> > - Jorge
>
> Andy
>
-------------------------------------------------
Este mensaje fue enviado por: http://webmail.utalca.cl
Received on Monday, 24 April 2006 20:12:06 UTC