- From: Andy Seaborne <andy.seaborne@talis.com>
- Date: Tue, 06 Apr 2010 10:36:28 +0100
- To: Steve Harris <steve.harris@garlik.com>
- CC: Lee Feigenbaum <lee@thefigtrees.net>, SPARQL Working Group <public-rdf-dawg@w3.org>
On 06/04/2010 10:19 AM, Steve Harris wrote:
> On 2010-04-06, at 09:59, Andy Seaborne wrote:
>> On 06/04/2010 9:20 AM, Steve Harris wrote:
>>> On 2010-04-06, at 09:07, Andy Seaborne wrote:
>>>>
>>>> On 05/04/2010 10:16 PM, Steve Harris wrote:
>>>>> Indeed, SQL has the MINUS table operation, and NOT EXISTS in the WHERE/FILTER operation as well.
>>>>
>>>> In SQL, MINUS goes outside SELECT, making it outside GROUP BY and separate from the join condition part of the SQL query.
>>>
>>> Yup, but so do the other table operations, UNION and friends.
>>
>> SPARQL UNION does not need the column compatibility rules. We don't have INTERSECTION directly ... yet.
>
> Well, SQL UNION has rules that there must be the same number of columns, and of the same type - SPARQL's UNION is much laxer. This is a good thing IMHO, though I wasn't convinced of that during the previous WG :)
>
> SQL doesn't really have a notion of "compatibility" beyond that.
SQL MINUS has to match as well.
Really, SPARQL MINUS should be in a FILTER - as an operation, the result
can only be the same as the LHS with possibly some rows removed, which
is what FILTER does.
Minus(Ω1, Ω2) =
{ μ | μ in Ω1 such that for all μ' in Ω2,
either μ and μ' are not compatible or dom(μ) and dom(μ') are disjoint }
Filter(expr, Ω) = { μ | μ in Ω and expr(μ) is an expression that has an
effective boolean value of true }
Both are of the form:
{ μ | μ in LHS-Ω such that .... }
and cardinality determined solely by the LHS.
Andy
Received on Tuesday, 6 April 2010 09:36:55 UTC