W3C home > Mailing lists > Public > www-rdf-interest@w3.org > November 2003

Re: Semantic Web Phase 2 Activity - Protocol - Query Language

From: Jeen Broekstra <jeen@aduna.biz>
Date: Wed, 12 Nov 2003 16:40:16 +0100
Message-ID: <3FB25460.1000607@aduna.biz>
To: "Seaborne, Andy" <Andy_Seaborne@hplb.hpl.hp.com>
Cc: 'Steve Harris' <S.W.Harris@ecs.soton.ac.uk>, www-rdf-interest@w3.org, sesame-devel@lists.sourceforge.net


[Cc also sent to sesame-devel, since we discussed this problem there
  today]

Seaborne, Andy wrote:

> Hi there - I have an example query with optional triples and I wondered what
> the various systems do with it:
> 
> Thanks to Jeremy Carroll for this example.
> 
> Consider the data:
> 
> <x> <p> <y> .
> <x> <q> <z> .
> 
> and the query:
> 
> [ <x> <p> ?a ]
> [ <x> <q> ?a ]
> 
> where [] is an optional match.
> 
> ?? Does the query match the data?

I have earlier sent a reply on this to Andy alone, on how SeRQL 
currently handles it, but I've spent some time thinking about this 
and discussed it on the sesame-devel list a bit further.

I think the example query is ill-defined: regardless of the actual 
dataset being queried it is not possible to assign an unambiguous 
semantics to it. The problem is that a variable is shared across 
several optional path matches, neither of which definitely assign 
the variable a value.

> ?? What does it return?

I'm heavily leaning towards saying that the query engine should 
return a "malformed query" error.

In the discussion on sesame-devel, Jacco van Ossenbruggen came up 
with a constraint on optional path expressions: reuse of a variable 
across optional paths is allowed if and only if the variable is also 
used in a non-optional path in the same query. This disambiguates 
the use of the shared variable in optionals, since optional paths 
will no longer have to instantiate the shared variable, they will 
only have to validate the current instantiation.

In the example case, the query could be reformulated in several 
ways, but the most obvious one would be:

[<x> <p> ?y]
[<x> <q> ?z]
?y = ?z

(which would unambiguously return no results)

As far as I can tell, this constraint does not limit expressivity of 
the language, but then again, I can't really tell for sure since I 
am not quite certain what the original query was supposed to express 
in the first place :)

Jeen
-- 
jeen@aduna.biz
Aduna (formerly Aidministrator b.v.) - http://www.aduna.biz
Julianaplein 14b, 3817 CS Amersfoort, The Netherlands
tel. +31-(0)33-4659987, fax. +31-(0)33-4659987
Received on Wednesday, 12 November 2003 10:40:13 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:52:03 GMT