Upload
james-jennings
View
213
Download
0
Embed Size (px)
Citation preview
1
4. Datalog Queries
Datalog query – a finite set of rules of the form:
R0(x1,…,xk) :– R1(x1,1,…, x1,k1),..., Rn(xn,1,…, xn,kn
)
where each Ri is either an input or a defined relation name.
including built-in relations such as +(x,y,z) which means
x + y = z. (We normally use the latter syntax.)
head of the rule – R0
body of the rule – R1,…,Rn
2
Example:
Find the SSN and the tax.
Tax_Due(s, t) :– Taxrecord(s, w, i, c), Taxtable(inc, t),
w+i+c = inc.
Find the streets that can be reached from (x0,y0).
Reach(n) :– Street(n, x0, y0).
Reach(n) :– Reach(m), Street(m, x, y), Street(n, x, y).
Find the time to travel from x to y.
Travel(x, y, t) :– Go(x, 0, y, t).
Travel(x, y, t) :– Travel(x, z, t2), Go(z, t2, y, t).
3
Example:
Find town points covered by a radio station
Covered(x2, y2) :– Broadcast(n, x, y), Town(t, x2, y2),
Parameters(n, s, blat, blong),
Parameters(t, s2, tlat, tlong),
x2 = x + (tlat – blat),
y2 = y + (tlong – blong). 2S
S
2S
S
4
4.2 Datalog with Sets
Example: Hamiltonian CycleInput:
• Vertices(S) where S is a set of vertices
• Edge ({c1}, {c2}) if there is an edge from c1 to c2
• Start({c}) where c is start city name
Output:• Path ({c}, B) if there is a path from c that uses
all vertices except those in B.
• Hamiltonian ({c}) if there is a Hamiltonian path.
5
Base case – Path is a single vertex. All vertices except the start vertex is unvisited.
Path(X1, B) :– Vertices(A), Start(X1), B = A \ X1.
Recursion –
a path to X1 with B unvisited
exists if there is
Path(X1, B) : – Path(X2, A), a path to X2 with A unvisited
Edge(X2, X1), and an edge from X2 to X1,
X1 A, which is unvisited, and
B = A \ X1. B is A minus X1
6
If there is a path from start to X2 that visits all
vertices and an edge from X2 to start, then there
is a Hamiltonian cycle.
Hamiltonian(X1) :– Path(X2, ),
Edge(X2, X1),
Start(X1).
7
4.4 Datalog with Abstract Data Types
Example:
Streets(Name, Extent) where extent is a set of 2D points. Let (x0, y0) be a start location.
Express the reach relation:
Reach(n) :– Street(n, Extent), {(x0,y0)} Extent.
Reach(n) :– Reach(m), Street(m, S1), Street(n, S2),
S1 S2
8
4.5 Semantics
Rule instantiation – substitution of variables by constants
⊢Q,I R(a1,…..ak) – R(a1,….ak) has a proof using query Q
and input database I, iff
• R represents input relation r and (a1,….ak) r , or
• There is some rule and instantiation
R(a1,…,ak):–R1(a1,1,…,a1,k1),…, Rn(an,1,…, an, kn
).
where ⊢Q,I Ri(ai,1,…,ai,ki) for each 1 i n .
9
Example:
Reach(Vine)
Reach(Vine) :– Street(Vine, 5, 2).
Reach(Bear)
Reach(Bear) :– Reach(Vine), Street(Vine, 5, 12),
Street(Bear, 5, 12).
Reach(Hare) Reach(Hare) :– Reach(Bear), Street(Bear, 8, 13),
Street(Hare, 8, 13).
10
Example: By the input database (Figure 1.2):
Go(Omaha, 0, Lincoln, 60)
Go(Lincoln, 60, Kansas_City, 210)
Go(Kansas_City, 210, Des_Moines, 390)
Go(Des_Moines, 390, Chicago, 990)
We also have:
Travel(Omaha, Lincoln, 60)
Travel(Omaha, Lincoln, 60):- Go(Omaha, 0, Lincoln, 60)
Travel(Omaha, Kansas_City, 210)
Travel(Omaha,Kansas_City,210):- Travel(Omaha,Lincoln,60),
Go(Lincoln,60,Kansas_City,210).
11
12
Proof-based semantics – derived relations are the set
of tuples that can be proven.
Fixed point semantics – an interpretation of the derived
relations such that nothing new
can be proven.
Least fixed point semantics – smallest possible FP semantics.
Proof-based semantics = Least fixed point semantics