Re: DELETE and blank nodes

We are getting on a tangential track here, I know, but nevertheless...

On 2010-3-3 18:45 , Birte Glimm wrote:
> On 3 March 2010 17:22, Ivan Herman <ivan@w3.org> wrote:
>> Birte,
>>
>> although we agree on our choice on the original issue at hand, I have a
>> clarification question... Is your mental model such that once the
>> variable binding is done, based on the WHERE clause, the semantics of
>> DELETE is that all triples are deleted that can be inferred by the
>> DELETE template's triples?
>>
>> This is not defined and section 9 of the entailment document leaves that
>> option open. That being said I agree (if this is indeed what you have in
>> mind) that we should not make this approach impossible via syntactic
>> means...
> 
> Yes, it is not defined how UPDATE would work with entailment regimes
> yet. My main point is that I wouldn't like reasonable options to be
> closed now, so that when we come to define UPDATE under non-simple
> entailment, the reasonable options are excluded or UPDATE/DELETE must
> be defined quite differently for non-simple entailment from how it is
> defined for simple entailment.
> A natural way of defining DELETE with non-simple entailment is to
> apply the WHERE clause as usual (with whatever semantics the
> entailment regime in use provides) and then instantiate the template
> part and delete exactly the ground triples that you get from the
> instantiation (no entailment for the template). Here's an example (not
> very realistic): assume we have
> DELETE { ex:D rdfs:subClassOf ?x } WHERE { ?x rdfs:subClassOf ex:C }
> under RDFS entailment over the triples:
> ex:A rdfs:subClassOf ex:B .
> ex:B rdfs:subClassOf ex:C .
> ex:D rdfs:subClassOf ex:B .
> This would give you ?x/ex:A and ?x/ex:B from evaluation the WHERE
> clause with RDFS entailment. Then the template part is instantiated
> once to
> ex:D rdfs:subClassOf ex:A
> which is not in the data, so nothing is deleted, and once into
> ex:D rdfs:subClassOf ex:B
> which is in the data and gets deleted. If using OWL Direct Semantics,
> the BGP might contain bnodes just to represent some OWL structures and
> these bnodes cannot just be replaced by variables if I want to use OWL
> Direct Semantics for evaluating the WHERE clause.
>

I still miss something in your explanation. The Bnodes in the WHERE
clause would, in any case, be different than the ones in the DELETE
template (remember that the scope of these nice animals are limited) so
that still seems to be irrelevant...

Anyway. We can envisage a more complex DELETE semantics _in future_ and
we should not make it impossible now. And the simpler example of mine,
ie, to manipulate owl knowledge bases via sparql, still holds regardless
of entailment regimes...

Ivan



> I don't suggest to define the actual semantics of updates for
> non-simple entailment right now and one could also say that one uses
> simple entailment to evaluate the WHERE clause no matter which
> entailment regime is normally used. In the latter case, one can just
> replace the bnodes with variables as Andy suggested. My main concern
> is that if we forbid bnodes now, then the first possible semantics
> that I described with the example above is kind of ruled out upfront
> at least for OWL Direct Semantics.
> 
> I hope that clarifies my thoughts at least a bit.
> 
> Birte
> 
>> Ivan
>>
>>
>>
>> On 2010-3-3 18:04 , Birte Glimm wrote:
>>> On 3 March 2010 15:40, Andy Seaborne <andy.seaborne@talis.com> wrote:
>>>>
>>>>
>>>> On 03/03/2010 3:32 PM, Birte Glimm wrote:
>>>>>
>>>>> Thanks a lot Lee for the great summary!
>>>>>
>>>>> On 3 March 2010 06:16, Lee Feigenbaum<lee@thefigtrees.net>  wrote:
>>>>>
>>>>> [snip]
>>>>>
>>>>>>>  == The Proposals ==
>>>>>>>
>>>>>>>  I see only two realistic proposals emerging from this.
>>>>>>>
>>>>>>>  1/ We prohibit blank nodes in the DELETE template completely.
>>>>>
>>>>> This might work nicely for simple entailment, but will not work for
>>>>> OWL (maybe RIF too). E.g., if I have a statement that Peter has some
>>>>> parent who's a Lawyer, I can say that in OWL functional-style syntax
>>>>> with:
>>>>> ClassAssertion(ObjectSomeValuesFrom(ex:hasParent ex:Lawyer) ex:Peter)
>>>>> For this, the (normative) mapping to triples gives:
>>>>> ex:Peter a _:x.
>>>>> _:x a owl:restriction .
>>>>> _:x owl:onProperty ex:hasParent .
>>>>> _:x owl:someValuesFrom ex:Person .
>>>>
>>>> ex:Lawyer?
>>>
>>> Ups, yes.
>>>
>>>>> for a fresh bnode _:x. There is no way to represent this OWL statement
>>>>> without bnodes, but it is always possible to use a square bracker
>>>>> form.
>>>>
>>>> I think Lee is referring to syntactic use of bnodes in a delete template,
>>>> not bnodes that might be found by a query pattern and bound to a variable.
>>>> So _:x is a new bnode not the bnode with that label in the data.
>>>>
>>>> It would be deleted by:
>>>>
>>>> DELETE WHERE
>>>> {
>>>>  ex:Peter a ?var.
>>>>  ?var a owl:restriction .
>>>>  ?var owl:onProperty ex:hasParent .
>>>>  ?var owl:someValuesFrom ex:Lawyer .
>>>> }
>>>>
>>>> using variables with ?var binding to exactly the bnode that was syntactical
>>>> _:x in the data.
>>>
>>> Unfortunately not, because such a bnode binding will be filtered out
>>> from the results by the conditions on answers. If it were not filtered
>>> out, you could get infinite results because replacing _:x with :_xx or
>>> _:xxx or ... would equally be entailed. Since we use entailment, using
>>> the same sub-graph criterion that simple entailment uses to limit
>>> answers with just different bnode labels does not really work for
>>> entailments. For anonymous individuals in OWL (bnodes in individual
>>> positions) we use skolemisation, but the bnodes that are just used to
>>> represent some concepts are invisible to the reasoner and skolemising
>>> them is quite strange for Direct Semantics. Such a BGP would, actually
>>> not even be legal under Direct Semantics because it cannot really be
>>> turned into an OWL structural object.
>>>
>>> Birte
>>>
>>>
>>>>        Andy
>>>>
>>>>
>>>
>>>
>>>
>>
>> --
>>
>> Ivan Herman, W3C Semantic Web Activity Lead
>> Home: http://www.w3.org/People/Ivan/
>> mobile: +31-641044153
>> PGP Key: http://www.ivan-herman.net/pgpkey.html
>> FOAF   : http://www.ivan-herman.net/foaf.rdf
>> vCard  : http://www.ivan-herman.net/HermanIvan.vcf
>>
>>
> 
> 
> 

-- 

Ivan Herman, W3C Semantic Web Activity Lead
Home: http://www.w3.org/People/Ivan/
mobile: +31-641044153
PGP Key: http://www.ivan-herman.net/pgpkey.html
FOAF   : http://www.ivan-herman.net/foaf.rdf
vCard  : http://www.ivan-herman.net/HermanIvan.vcf

Received on Wednesday, 3 March 2010 18:01:08 UTC