# Communicating with Databases in Natural Language - Wallace M.

**Download**(direct link)

**:**

**51**> 52 53 54 55 56 57 .. 59 >> Next

Desc is a DESCRIPTION with result ResD, and ‘qual(V,Qual)’ is a Curried QUALIFIER with result ReSQ.

(c) A simple DESCRIPTION (which is just a constant) has the empty result.

(d) ‘Det-N-qual(V,Qual)’ referring to the group G, has result Res where

‘qual(V,Qual)’ is a Curried QUALIFIER which returns group G' equal to G with tb = same result, Res.

(e) ‘qual(V,Qual)’ returning G has result

[V = Gt: Resx,V = G2: Res2,, ... V = Gn: Resn] where G is the union of Gi,G2,....Gn, and

the QUALIFIER Qual is satisfied by VsGbX=Gx with result Resx

V=G2,X=Gx with result Res2

VsGn, X=Gx with result Resn.

2]

SPECIFICATION OF D&Qs 141

(f) ‘Desc! is funct(V,Desc2)’ has result

[Res! + [V=GVi:Res2i, V=GV2:Res22> ¦ V=GVn; Res2n] ] where the DESCRIPTION Desci refers to G with result Resb and G is the union of GbG2, ,Gnand the DESCRIPTION Desc2 is satisfied by

V=GV1, Y=Gy with result Res21, VsGV2,Y=GY with result Res22,

VsGVn,Y=GY with result Res2n,

where each GVi is equal to G;

(g) If Fb F2 are both QUALIFIERS or both DESCRIPTIONS, then

‘Fj & F2’ has result Resi union Res2 where Resx is the result of Fb and

Res2 is the result of F2.

‘Fx or F2’ has result Res where F! succeeds with result Res, or

F2 succeeds with result Res.

(h) ‘not Qual’ has the empty result when it succeeds.

3 6.3 Two examples of D&Qs results

Although ‘not Qual’ has the empty result, a negated query can still yield an answer Consider, for example the query “Which Berkshire customers do not buy P104’s?”

‘what-N-qual(X, customer (name=X,region= ‘berkshire’)) is qual(Y, not buy(buycust=Y,buyprod=‘P104’)) .

The relation ‘buy’ has only the following relevant tuple,

buy buycust buyprod

‘Good Co’ ‘PI 04’

The relation ‘customer’ has the same data as in previous examples,

customer name region

‘Good Co’ ‘berkshire’

‘Better Co’ ‘avon’

‘Best Co’ ‘berkshire’

The result is,

[ [ X=[‘Best Co’]: [ ] ] + Res ]

where Res is the result of ‘not buy(buycust=Y, buyprod=‘P104’)’

Although Res is the empty result, [ ], since negated QUALIFIERS always yield the empty result, the whole formula still yields a useful result

142 SPECIFICATION OF D&Qs

[Appendix 2]

One more example is the result of,

‘qual(V,any-N-qual(X, true) is qual(Y,customer(name=V,region=Y)))\

(This Curried QUALIFIER was previously shown to return the set, [‘Good Co’, ‘Better Co’,‘Best Co’], in section 2.6 above.) Its result is:

[

V = [‘Better Co’]: [ [X = [‘avon’]: [ ] ] + [Y = [‘avon’]: [ ] ] ],

V = [‘Good Co’, ‘Best Co’]: [ [X = [‘berkshire’] :[]] + [Ys

[‘berkshire.]: [ ] ] ]

Appendix 3

A PROLOG program for converting D&Qs to List Commands

1. COMPLEXITY

The progiam listed heie includes all the clauses desciibed in Chaptei 4, section .3, although some extia checks have been built in,

This program still cannot deal with the full range of D&Qs because the language is more powerful than these simplified List Commands. For example D&Qs formulae expressing queries with embedded counts (“Who placed two orders in June?”) cannot be translated into a single List Command.

(A D&Qs interpreter has been progiammed in PROLOG which deals with embedded functions and counts, but there are still D&Qs formulae, such as those involving relations with attributes ranging over oideied lists, which cannot be interpreted. The interpreter suffers from a perennial PROLOG problem of inefficiency, and work is still continuing on the implementation of an efficient D&Qs interpieter in PROLOG).

2. INPUT AND OUTPUT SPECIFICATION

2.1 Specification of D&Qs formula to be input to the converter

(1) Syntax of D&Qs formulae, Appendix 2, section 1 above

(2) The “Count”, as in ‘Determiner-Count-qual(V, Qualifiei)’, is either variable or 1.

(.3) No lelation is used twice in a formula.

144 A PROLOG PROGRAM FOR CONVERTING D&Qs

[Appendix

(4) If two DESCRIPTIONS are conjoined (‘Dl & D2’), then their references are in the same database domain (see section 2.3 below).

(5) The relations, apart from the built-in relations total, average, etc., have only atom-type attributes,

(6) All variable names are distinct

(7) The complete query has no free variables

(8) The results are all within the scope of the database relations (“range quantified”); this ensures that no variables occur in the result specification of the List Command.

2.2 Specification of simplified List Commands

List Command

Result-Spec

Rule

Rule

Term

Comparison

‘LIST’ Result-Spec ‘WHERE’ Rule

Term { ,Result-Spec I nil }

true | false | Rule & Rule | Rule or Rule | not Rule

Term Comparison Term

Constant I Relation,Column

>,>,<, <,=,Ô

2.3 Comments

The conjunction of two descriptions is treated disjunctively Thus “What orders were placed by customers ‘Cl’ and ‘C2’ ?” has D&Qs interpretation:

what-N-qual(Wl, true) is qual(W2,

‘C1’&‘C2’ is qual(X, place(custcode = X, ordercode = W2)))

(where ‘place’ is the database relation interpreting the verb “to place”, which was used in Chapter 4, section ,3),

On conversion to a list command this becomes:

**51**> 52 53 54 55 56 57 .. 59 >> Next