Re: existential answers to queries (was: Re: on behalf of sandro)

From: Pat Hayes (
Date: 10/25/01

>  > >It seems to me that (b) and (c) are saying that we will allow an answer
>>  >to a query to contain a binding of a query variable to a constant
>>  >created to represent an existential variable.  As I think Pat is
>  > >pointing out, that makes sense only if the answer is constructed so that
>>  >it is clear which constants represent existential variables, and that
>>  >for query body instances to be entailed by the KB, the constants in the
>>  >answers that represent existential variables need to be appropriately
>>  >replaced by existential variables.
>>  I wouldn't phrase it quite that way. If the KB uses *constants* then
>>  they are perfectly OK as bindings to query variables, right? The
>>  issue is what to do if the KB has an existential *variable* in it (eg
>>  an anonNode in RDF, say) and the query-answering process would
>>  'succeed' only if it were able to bind this existential to an answer
>>  variable. Notice that it would be fine to bind it to a variable in
>>  the query that is not an answer variable, as Ian pointed out in the
>>  telecon; so its not that the binding itself is logically invalid,
>>  only that it wouldn't be correct to deliver that variable as an
>>  answer (bound to a query variable), because that delivery - from the
>>  KB to the query engine - would take the name outside its scope. So,
>>  if we were to block the delivery of the local name from the KB to the
>>  query engine, in effect what the KB would be saying would be
>>  something like : 'your query is true, and I have found something that
>>  satisfies it, but I'm not going to tell what it is.' At which point
>>  the 'sensible' thing for the query engine to do is to decide to
>>  believe an existential assertion, ie to make up its own local name
>>  for the thing that it now knows exists but hasn't been told a name
>>  for.
>I think we are in agreement here.  In my comment above that you were
>replying to, I was assuming that if existential variables were returned
>from the server (i.e., the query answering agent) as bindings to query
>variables that they would be in the form of constants that had been
>created by the server (i.e., as Skolem constants).

Well then don't call them variables. Skolemization is not a valid 
inference process; it can't just be done on the fly as though nothing 
had happened. If the KB uses skolem constants then they are just like 
other constants as far as the query engine is concerned. But if it 
uses existentials, the query engine has no licence to generate skolem 
constants in the KB's name.

>  I think the key
>point is that a binding of a query variable to what was an existential
>variable in the KB needs to be recognizable as such in the answer so
>that the client (i.e., the query asking agent) can interpret it


>>  >I am ok with that scheme, and so could agree to query variable bindings
>>  >in answers that are identified as being gensyms representing existential
>>  >variables.
>>  I'd say that a gensym was a skolem constant if it was generated by
>>  the KB, and that a skolem constant is a perfectly reasonable
>>  answer-binding. (The trouble with talking about gensyms in this
>>  context is that you have to say who has the licence to generate the
>>  sym.  Gensyms are local variables inside the scope 'owned' by the
>>  generator of the symbol, and in this discussion there are two
>>  different generators, using different sets of rules. )
>I think our focus here should be on what is returned by the server;
>i.e., on what the nature is of the answers to a query.  Whatever
>postprocessing is done on those answers seems to me to be a separable

I would agree, but that is not what I was talking about here. It 
would be logically invalid for the QE to change the names of the KB's 
existential variables. You have to bear in mind that there are no 
quantifiers 'outside' the KB and the QE, so handing a name across 
from one to the other is a very odd thing to do, speaking logically.

>>  That raises a more general issue, about how much information should
>>  be in an 'answer'. If the answer is just a set of bindings, I would
>>  say that in this case expecting to get two existentials back from a
>>  cardinality restriction is asking for too much.
>Then I don't understand under what conditions it is ok to return an
>existential as a binding to a query variable and under what conditions
>it isn't.  Please advise.

It is *never* logically valid to return an existential variable as a 
binding to a query variable. What is OK is to return an existential 
assertion (eg by putting 'blank' as a binding, or using some other 

>One of the points I think is important in the query language is for a
>query to include a component that says how many answers are being asked

OK, let me take that on another thread.

IHMC					(850)434 8903   home
40 South Alcaniz St.			(850)202 4416   office
Pensacola,  FL 32501			(850)202 4440   fax

This archive was generated by hypermail 2.1.4 : 04/02/02 EST