Thanks Rob for very nice explanation. Do you somehow know the answer for first 
question?
Is putting them in separate query like example below the only workaround?

DELETE
{
  ?email ?emailPredicate ?emailObject .
}
WHERE
{
   ?person abc:name "foobar" .
   ?person abc:hasContactInfo ?contactInfo .
   ?contactInfo abc:hasEmail ?email .
   ?email ?emailPredicate ?emailObject .
};
DELETE
{
  ?contactInfo abc:hasEmail ?email .
}
WHERE
{
   ?person abc:name "foobar" .
   ?person abc:hasContactInfo ?contactInfo .
   ?contactInfo abc:hasEmail ?email .
};


Thanks,
Z
________________________________________
From: Rob Vesse <[email protected]>
Sent: Thursday, October 8, 2015 9:20 AM
To: [email protected]
Subject: Re: DELETE with WHERE clause

On 08/10/2015 13:48, "Zen 98052" <[email protected]> wrote:

>Second question, I notice that update operation is instance of
>UpdateModify. Do you know why it is not UpdateDeleteWhere?

UpdateDeleteWhere is a special case for the following:

DELETE WHERE {
  # Some patterns
}

I.e. a DELETE where the template is also treated as the WHERE clause

http://www.w3.org/TR/sparql11-update/#deleteWhere

This is more limited than a general DELETE/INSERT operation because you
can only have quad patterns I.e. can't use FILTERs, BINDs, sub-queries etc
that you could use in the WHERE clause of the longer form

Your update is the full form (separate template and WHERE clause) so is an
UpdateModify

Rob




Reply via email to