Re: Ambiguities in optional scope

Mensaje citado por "Seaborne, Andy" <andy.seaborne@hp.com>:

> 
> 
> Jorge Pérez wrote:
> > Hi! I think that the following query is problematic too. I tried it in 
> > SPARQLer and gave me strange results and in the SPARQL last draft I cannot
> 
> > find a precise answer:
> > 
> > The data is:
> > ++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > @prefix : <http://ing.utalca.cl/~jperez/research/rdf/> .
> > 
> > _:b1 :titlename  "book1" . 
> > _:b1 :authorname "author1" .
> > _:b1 :year       "2006" .
> > ++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > 
> > The query:
> > 
> > PREFIX : <http://ing.utalca.cl/~jperez/research/rdf/>
> > SELECT *
> > FROM :sample2.rdf
> > WHERE {
> >   ?B :titlename ?N .
> >   ?B :year ?Y .
> >   OPTIONAL { ?B :authorname ?N }
> > }
> > 
> > What is the answer? Again at least two possibilities according to the
> "scope" 
> > of optional
> > 
> > 1) B=_:b1, N="book1", if one assume that the optional "is applied to" the
> two 
> > triple patterns.
> > 2) nothing, if one assume that the optonal "is applied to" the second
> triple 
> > pattern.
> > 
> > The ambiguitie starts again in the formal definition of optional, it 
> > reads "...the second pattern modifies pattern solutions of the first 
> > pattern..." but here there is no clear what the "first pattern" is.
> SPARQLer 
> > gave me solution 1) but I cannot find a rule in the draft that validate
> this 
> > behavior. If one consider the following query (I put just the WHERE part)
> > 
> > WHERE {
> >   ?B :year ?Y .
> >   OPTIONAL { ?B :authorname ?N }
> >   ?B :titlename ?N .
> > }
> > 
> > the solution is not clear... one may assume here that the optional "is
> applied 
> > to" just the triple pattern above but again there is no formal validation
> of 
> > this in the draft. Here the left associativity rule of the optional keyword
> 
> > included in the last draft do not applied because it states that optional
> is 
> > left associative considering other optional patterns but nothing about
> triple 
> > patters. In this case SPARQLer gave me solution 2).
> > 
> > How can one solve the problem? 
> > * One posibility is to add a complete set of associative rules: "." keyword
> is 
> > left associative, "optional" keyword is left associative, etc. from my
> point 
> > of view it may make the specification less readable.
> > * Other posibility is to think that each complex graph pattern (group graph
> 
> > pattern) has a "mandatory part" and several "optional parts". A solution
> must 
> > match the complete manatory part, and optional parts only add "information"
> to 
> > the solution of the mandatory part if the information exists. The
> evaluation 
> > of optional parts is made resursively in the same way.
> > * Other?
> > 
> > - Jorge
> 
> Jorge,
> 
> The translation from syntax to conceptual query is given by the SPARQL
> grammar 
> in the document.
> 
> The key rules are
> [20]    	GraphPattern
> [21]    	FilteredBasicGraphPattern  	
> [19]    	GroupGraphPattern
> [23]    	GraphPatternNotTriples
> 
> 
> Rule [20] is the top level graph pattern rule.
> 
> Rule [21] causes sequences of triple patterns to be gathered together.  This
> 
> rule is the only path through the grammar to have triple patterns in a query.
> 
>   It is a basic graph pattern (BGP) with addition value constraints.  Being
> an 
> inner rules, it gives triples patterns, and '.' a high precedence.
> 
> Rule [19] is the rule for {} blocks.
> 
> Rule [23] enumerates the various pattern types, except for basic graph 
> pattern, and each pattern type uses rule [19].
> 
> Taking a query
> 
>  > PREFIX : <http://ing.utalca.cl/~jperez/research/rdf/>
>  > SELECT *
>  > FROM :sample2.rdf
>  > WHERE {
>  >   ?B :titlename ?N .
>  >   ?B :year ?Y .
>  >   OPTIONAL { ?B :authorname ?N }
>  > }
> 
> then
>    ?B :titlename ?N .
>    ?B :year ?Y .
> form a basic graph pattern by rule [19] and optional combines that BGP with 
> the "{ ?B :authorname ?N }". to form a single graph pattern.  The outer group
>   of the WHERE has one element.

Ok, I understand now... 

> 
> But this:
>  > WHERE {
>  >   ?B :year ?Y .
>  >   OPTIONAL { ?B :authorname ?N }
>  >   ?B :titlename ?N .
>  > }
> 
> is a different query - it has a different structure in the grammar (it's a 
> optional of a BGP (?B :year ?Y) and BGP (?B :authorname ?N) in a group with 
> BGP (?B :titlename ?N).  The outer group of the WHERE has two elements.
> 
> Your "possibility one" is already there - it's the grammar which gives the 
> mapping from syntax to conceptual form.

Ok, thanks again for your answer, I understand now that syntax 
rules the conceptual form. It would be nice to add some discussion in this 
respect in the draft because the grammar is included just as an Appendix. I 
think that specially care must be put in saying too that **this** grammar 
gives the mapping from syntax to conceptual form, because a lot of different 
grammars may produce the same language as result.

- Jorge

> 
> 	Andy
> 
> 

-------------------------------------------------
Este mensaje fue enviado por: http://webmail.utalca.cl

Received on Thursday, 20 April 2006 14:55:12 UTC