<<

Logical Query Languages

Motivatio n:

1. Logical rules extend more naturally to

recursive queries than do es .

✦ Used in SQL .

2. Logical rules form the basis for many

information-integration systems and

applications. 1

Datalog Example

, beer  Likesdrinker

Sellsbar , beer , price

Frequentsdrinker , bar

Happyd <-

Frequentsd,bar AND

Likesd,beer AND

Sellsbar,beer,p 

 Ab oveisarule.

 Left side = head.

 Right side = body = AND of subgoals.

 Head and subgoals are atoms.

✦ Atom = predicate and arguments.

✦ Predicate = relation name or arithmetic

predicate, e.g. <.

✦ Arguments are variables or constants.

 Subgoals not head may optionally b e

negated by NOT. 2

Meaning of Rules

Head is true of its arguments if there exist values

for local variables those in b o dy, not in head that

make all of the subgoals true.

 If no or arithmetic comparisons, just

natural join the subgoals and pro ject onto the

head variables.

Example

Ab ove rule equivalenttoHappyd =

 Frequents ./ Likes ./ Sells

dr ink er 3

Evaluation of Rules

Two, dual, approaches:

1. Variable-based : Consider all p ossible

assignments of values to variables. If all

subgoals are true, add the head to the result

relation.

2. Tuple-based : Consider all assignments of

tuples to subgoals that make each subgoal

true. If the variables are assigned consistent

values, add the head to the result.

Example: Variable-Based Assignment

Sx,y <- Rx,z AND Rz,y

AND NOT Rx,y

R =

B A

1 2

2 3 4

 Only assignments that make rst subgoal true:

1. x ! 1, z ! 2.

2. x ! 2, z ! 3.

 In case 1, y ! 3 makes second subgoal true.

Since 1; 3 is not in R , the third subgoal is

also true.

✦ Thus, add x; y =1; 3 to relation S .

 In case 2, no value of y makes the second

subgoal true. Thus, S =

B A

1 3 5

Example: Tuple-Based Assignment

Trick: start with the p ositive not negated,

relational not arithmetic subgoals only.

Sx,y <- Rx,z AND Rz,y

AND NOT Rx,y

R =

B A

1 2

2 3

 Four assignments of tuples to subgoals:

R x; z  R z; y

1; 2 1; 2

1; 2 2; 3

2; 3 1; 2

2; 3 2; 3

 Only the second gives a consistentvalue to z .

 That assignment also makes NOT Rx,y true.

 Thus, 1; 3 is the only tuple for the head. 6

Safety

A rule can make no sense if variables app ear in

funnyways.

Examples

 Sx <- Ry

 Sx <- NOT Rx

 Sx <- Ry AND x < y

In each of these cases, the result is in nite, even if

the relation R is nite.

 To make sense as a op eration, we

need to require three things of a variable x =

de nition of safety. If x app ears in either

1. The head,

2. A negated subgoal, or

3. An arithmetic comparison,

then x must also app ear in a nonnegated,

\ordinary" relational subgoal of the b o dy.

 We insist that rules b e safe, henceforth. 7

Datalog Programs

 A collect i on of rules is a Datalogprogram.

 Predicates/relati ons divide into two classes:

✦ EDB = extensional database = relation

stored in DB.

✦ IDB = intensional database = relation

de ned by one or more rules.

 A predicate must b e IDB or EDB, not b oth.

✦ Thus, an IDB predicate can app ear in the

b o dy or head of a rule; EDB only in the

body. 8

Example

Convert the following SQL Find the

manufacturers of the b eers Jo e sells:

, manf Beersname

Sellsbar , beer , price

SELECT manf

FROM Beers

WHERE name IN

SELECT beer

FROM Sells

WHERE bar = 'Joe''s Bar'

;

to a Datalog program.

JoeSellsb <-

Sells'Joe''s Bar', b, p

Answerm <-

JoeSellsb AND Beersb,m

 Note: Beers, Sells = EDB; JoeSells,

Answer = IDB. 9

ExpressivePower of Datalog

 Nonrecursive Datalog = classical  relational

algebra.

✦ See discussion in text.

 Datalog simulates SQL select-from-where

without aggregation and grouping.

 Recursive Datalog expresses queries that

cannot b e expressed in SQL.

 But none of these languages have full

expressivepower . 10

Recursion

 IDB predicate P depends on predicate Q if

there is a rule with P in the head and Q in a

subgoal.

 Draw a graph: no des = IDB predicates, arc

P ! Q means P dep ends on Q.

 Cycles i recursive.

Recursive Example

Sibx,y <- Parx,p AND Pary,p

ANDx<>y

Cousinx,y <- Sibx,y

Cousinx,y <- Parx,xp

AND Pary,yp

AND Cousinxp,yp 11

Iterative Fixed-PointEvaluates Recursive

Rules

Start

IDB = ;

Apply rules

to IDB, EDB

Change

done

to IDB?

yes no 12

Example

EDB Par =

a d

b e

f g h

j k i

 Note, b ecause of symmetry, Sib and Cousin

facts app ear in pairs, so we shall mention only

x; y  when b oth x; y  and y; x are meant. 13

Sib Cousin

Initial ; ;

Round 1 b; c; c; e ;

add: g; h; j; k 

Round 2 b; c; c; e

add: g; h; j; k 

Round 3 f; g; f; h

add: g; i; h; i

i; k 

Round 4 k; k

add: i; j  14

Strati ed Negation

 Negation wrapp ed inside a recursion makes no

sense.

 Even when negation and recursion are

separated, there can b e ambiguity ab out what

the rules mean, and some one meaning must

b e selected.

 Strati ednegation is an additional restrainton

recursive rules like safety that solves b oth

problems:

1. It rules out negation wrapp ed in

recursion.

2. When negation is separate from recursion,

it yields the intuitivel y correct meaning of

rules the strati edmodel. 15

Problem with Recursive Negation

Consider:

Px <- Qx AND NOT Px

 Q = EDB = f1; 2g.

 Compute IDB P iterativel y?

✦ Initial ly, P = ;.

✦ Round 1: P = f1; 2g.

✦ Round 2: P = ;, etc., etc. 16

Strata

Intuitively : stratum of an IDB predicate =

maximum numb er of you can pass

through on the way to an EDB predicate.

 Must not b e 1 in \strati ed" rules.

 De ne stratum graph:

✦ No des = IDB predicates.

✦ Arc P ! Q if Q app ears in the b o dy of a

rule with head P .

✦ Lab el that arc if Q is in a negated

subgoal.

Example

Px <- Qx AND NOT Px

P 17

Example

Which target no des cannot b e reached from any

source no de?

Reachx <- Sourcex

Reachx <- Reachy AND Arcy,x

NoReachx <- Targetx

AND NOT Reachx

NoReach

Reach 18

Computing Strata

Stratum of an IDB predicate A = maximum

number of arcs on any path from A in the

stratum graph.

Examples

 For rst example, stratum of P is 1.

 For second example, stratum of Reach is 0;

stratum of NoReach is 1.

Strati ed Negation

A Datalog program is strati ed if every IDB

predicate has a nite stratum.

Strati ed Mo del

If a Datalog program is strati ed, we can compute

the relations for the IDB predicates lowest-

stratum- rst. 19

Example

Reachx <- Sourcex

Reachx <- Reachy AND Arcy,x

NoReachx <- Targetx

AND NOT Reachx

 EDB:

✦ Source = f1g.

✦ Arc = f1; 2; 3; 4; 4; 3g.

✦ Target = f2; 3g.

1 2 3 4

source target target

 First compute Reach = f1; 2g stratum 0.

 Next compute NoReach = f3g. 20

Is the Strati ed Solution \Obvious"?

Not really.

 There is another mo del that makes the rules

true no matter what values we substitute for

the variables.

✦ Reach = f1; 2; 3; 4g.

✦ NoReach = ;.

 Rememb er: the only way to make a Datalog

rule false is to nd values for the variables

that make the b o dy true and the head false.

✦ For this mo del, the heads of the rules

for Reach are true for all values, and

in the rule for NoReach the subgoal

NOT Reachx assures that the b o dy

cannot b e true. 21