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