Re: Query Language Issues

From: Pat Hayes (
Date: 11/13/01

>It seems to me that the use of a single <blank> binding in query answers
>is inadequate.  What I would suggest is needed is a vocabulary of blank
>bindings, say <blank-1>, <blank-2>, ..., that can be used as bindings in
>query answers and that have the semantics of existentially quantified

I agree, that is needed for full generality. These are just 
existential variables, of course, but the reason for having a special 
'blank' term is to indicate that they are not to be understood as 
binding to anything inside the KB itself. In other words, the 'blank' 
is really an indicator of scope.

[Later, post-telcon: It is interesting to think what their scope 
actually is. Seems to me that it has to be something like the 
querying process itself, ie the querying and answering take place in 
a semantic region within which names can be scoped, and this 'common 
ground' of the querying conversation can have names that are private 
to it, just as the KB has names that are private to it and cannot be 
published. Then each of the protagonists has access to its own 
private scope and to the public common ground, and can keep track of 
the connections between terms used in both of them, but each does not 
have access to the other's private names. So the querier, in making a 
query, puts the query variables into the common ground; and the KB - 
the answerer - in responding with bindings, puts those bindings into 
the common ground. If the KB proves that (exists (?x)<query-1>) then 
it will choose a blank-n binding to ?x and put that into the common 
ground. The querying agent can then use that name in further queries, 
and (as long as the common ground still exists, ie as long as 
something is maintaining the state of the transaction) the KB will be 
able to retrieve its private bindings, so that if eg a further 
query-2 is made, the KB knows that the full query is [?x](<query-1> 
and <query-2>). ]

>Such a vocabulary would be used in our example as follows:
>A query answer of [x/Ian, y/blank-1] would mean that the following
>sentence is entailed by the query KB:
>    (exists b1) (P Ian & RC b1 & O Ian b1)
>A query result of [[x/blank-1 y/blank-2]] would mean that the following
>sentence is entailed by the query KB:
>    (exists b1 b2) (P b1 & RC b2 & O b1 b2)
>A query result of [[x/blank-1 y/blank-1]] would mean that the following
>sentence is entailed by the query KB:
>    (exists b1) (P b1 & RC b1 & O b1 b1)
>That answer doesn't make sense in the intended interpretation of our
>example query, but I assume it is clear that one could generate an
>example query where such an answer would make sense.
>What about a query result of [[x/blank-1 y/blank-2][x/blank-3
>y/blank-4]]?  Such a result seems to make sense only when the query asks
>for answers each of which is known to denote a distinct set of objects.

I disagree. That would be a non-monotonic reading. Say rather than 
the KB does not know them to be identical, not that it knows them to 
be distinct. I think this makes perfect sense in any case: it simple 
reports that two different sets of existential bindings have been 
found to satisfy the query. Whether or not those two sets of bindings 
are known to denote distinct entities is another query.

>(See my proposal in the attachment regarding "Uniqueness of Answers".)
>If the only requirement in the query is that each set of bindings is
>unique (rather than each set of objects denoted by the bindings), then
>the server could generate any number of answers by simply using
>different blank-i bindings.

No; the idea is that each blank in the answer is supposed to reflect 
a genuine (and distinct) existential binding in the KB's proof space, 
so this kind of behavior would be incorrect. In other words, getting 
a 'blank-n' answer is just like getting any other binding as an 
answer, in terms of what it means regarding provability and 
uniqueness of the bindings; it just says, in effect, I am not going 
to tell you the exact binding. So blank-n bindings should be 
interpreted exactly like other answer bindings as far as what is 
known (and not known) about their uniqueness is concerned.

>If the query does indeed ask for answers
>each of which is known to denote a distinct set of objects, then the
>query result means that the following sentence is (sentences are?)
>entailed by the query KB:
>    (exists b1 b2 b3 b4) (P b1 & RC b2 & O b1 b2)
>                         (P b3 & RC b4 & O b3 b4)
>and that not both "(equivalentTo b1 b3)" and "(equivalentTo b2 b4)" are
>entailed by the query KB.

I think you mean, both of these are not entailed, right? If so, I 
would agree, but would note that 'not being entailed' includes the 
trivial case where nothing is known about identity at all.

I would be willing to just say that the answer is noncommittal about 
identity, in fact. If someone wants to get more information about 
identity (or anything else) then they can ask another query, after 

>We might decide that results such as [[x/blank-1 y/blank-2][x/blank-3
>y/blank-4]] are beyond the scope of our query language.  However, there
>seem to be cases that are more compelling, such as [[x/Ian
>y/blank-1][x/Ian y/blank-2], meaning Ian owns two red cars, or
>[[x/blank-1 y/blank-2][x/blank-1 y/blank-3], meaning someone owns two
>red cars.
>What do you think of this proposal?

Modulo the above comments, fine.

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