Aggregation in Disjunctive Deductive Databases
Dietmar Seipel
University of Wurzburg, Dept. of Computer Science
Am Hubland, D { 97074 Wurzburg, Germany
[email protected]
Tel. +49 931 888 5026, Fax. +49 931 888 4600
Abstract
1 Introduction
Practical applications of deductive databases
often require the use of extended features like
disjunctive information , aggregation operators
or default negation . But it has been unclear
how one could deal with aggregation in the
presense of recursion and disjunction . Usually, there is the requirement that deductive
databases must be strati ed w.r.t. aggregation ,
i.e. a predicate q that is de ned using aggregation based on some other predicate p may not
be used for deriving this other predicate p.
Disjunctive deductive databases extend the
classical Datalog language by disjunction, default negation, and function symbols.1 There
are practical examples that require non{
strati ed aggregation in disjunctive deductive
databases.
We will present a clear declarative set semantics for disjunctive deductive databases P with
aggregation. The semantics is based on a special program transformation , which replaces an
aggregation by a suitable construct using default negation and the function symbol for lists.
The transformed database Pagg is free of aggregation, and it can be evaluated based on the
well{known concept of stable models .
Many practical applications of relational or deductive databases require the use of aggregation
operators . For instance a study of data mining and decision support applications ([15, 9])
shows that aggregation is used heavily { often even user{de ned aggregates are required {
and moreover aggregation is frequently used in
forms that cannot be supported well or eciently by the current Sql{standard ([15]). In
Sql3, aggregates and default negation can only
be used in strati ed queries, and in relational or
deductive databases so far there is no support
for uncertain, disjunctive information.
Typical and well{known forms of aggregation are the following: temporal aggregation
in spatio{temporal databases ([8, 14]), aggregation in online{analytic processing (OLAP,
[9]), computing a bill{of{materials, nding the
shortest path in a graph, market analysis for
transitive ownership and control of corporations
for nding trusts ([1, 15]).
In the DisLog{project ([11, 12]) a system for
reasoning with disjunctive information in deductive databases has been developed. DisLog
has been used for diagnostic reasoning , reasoning in spatial databases , or for solving con guration problems. So far, aggregation had not been
considered in disjunctive deductive databases.
Keywords
disjunctive logic programming, aggregation,
strati cation, non{monotonic reasoning, stable
models
1 In this paper we will use the term disjunctive deductive database as an equivalent to disjunctive logic
program.
1.1 An Example with Non{Strati ed
Aggregation
The following example of packing a knapsack
requires disjunctive deductive databases with
non{strati ed aggregation. There are similar
con guration examples in other domains.
Example 1.1 (Packing a Knapsack)
The problem is to pack a knapsack with items
from a relation
item(Item; Weight );
such that the following conditions are satis ed:
(i) the total weight of the knapsack does not
exceed a limit given by
weight limit (LimitW );
(ii) if the total weight `Total Weight ' of the
knapsack exceeds a limit given by
energy limit (LimitE );
then the knapsack must contain an
`Energy Drink ';
(iii) if `Total Weight ' does not exceed this
limit, then the knapsack may not contain
an `Energy Drink ';
(iv) the knapsack must contain either an `Umbrella' or a `Trenchcoat', or both.
The problem can be solved using the following disjunctive deductive database Pkn with aggregation. An atom knapsack(Item; Weight )
indicates that the knapsack contains the item
`Item' with the corresponding weight `Weight '.
The total weight of the knapsack is computed
by the aggregation rule r0 . In Pkn disjunction
is used in rule r4 for formulating the choice (iv)
on the fact level. Furthermore, the integrity
constraints given in (i) and (iii) are formulated
as disjunctive rules r1 and r3 with zero head
atoms.
r0 = knapsack weight(< Weight >sum )
knapsack(Item; Weight )
r1 =
weight limit(LimitW ) ^
knapsack weight(Total Weight ) ^
Total Weight > LimitW
r2 = knapsack('Energy Drink'; Weight )
item('Energy Drink'; Weight ) ^
energy limit (LimitE ) ^
knapsack weight(Total Weight ) ^
Total Weight > LimitE
r3 =
knapsack('Energy Drink'; Weight ) ^
energy limit (LimitE ) ^
knapsack weight(Total Weight ) ^
Total Weight LimitE
r4 = knapsack('Umbrella'; Weight 1 ) _
knapsack('Trenchcoat'; Weight 2 )
item('Umbrella'; Weight 1 ) ^
item('Trenchcoat'; Weight 2 )
1.2 The Transformation Approach
In our new approach, a disjunctive deductive
database P with aggregation will be evaluated by transforming it into another disjunctive
deductive database Pagg without aggregation,
which then can be evaluated using the well{
known semantics of stable models.
Even though the database P can be disjunctive, aggregation in P will be treated in a definite manner based on the individual stable
models of Pagg . This means that the aggregation condition will hold within each of the
stable models (which can be considered as ordinary relational databases, possibly with function symbols).
The aggregation operator agg can be dened by arbitrary (disjunctive) rules for a corresponding binary predicate agg , which are
added to Pagg : a call `agg (Vs; V )' must compute the value V of the aggregation operator
agg on the set corresponding to the list Vs.
Thus, in our approach arbitrary user{de ned
aggregation operators are possible.
The transformation adds a binary function
symbol for lists to P . If P did not contain any
function symbols, then Pagg only contains this
restricted use of the list function symbol, which
is used for collecting the values to be aggregated.
If the original database P was strati ed w.r.t.
negation and aggregation, then Pagg is stratied w.r.t. negation, too. Then the semantics of
perfect models can be used.2
2 Perfect models coincide with stable models on
databases that are strati ed w.r.t. negation, but they
are conceptually simpler and they can be computed
more eciently.
The rest of the paper is organized as follows: In Section 2 we present the syntax of
disjunctive deductive databases with aggregation, and their predicate dependency graph. In
Section 3 we recapitulate the well{known stable model semantics of disjunctive deductive
databases (without aggregation). In Section 4
the declarative semantics of disjunctive deductive databases with aggregation is de ned based
on a special program transformation. In Section 5 we give some concluding remarks.
2 Disjunctive Deductive Databases
with Aggregation
Given a rst order language , a disjunctive
deductive database (cf. [5]) consists of logical
inference rules of the form
r = A1 : : : A k
(1)
L
P
_
_
B1 : : : Bm
not C1 : : : not Cn ;
1; k , Bi , i
1; m , and
^
^
^
^
^
where Ai , i
Ci , i
1; n , are atoms in the language
, k; m; n IN0 , and not is the negation{
2
2
h
L
h
i
2
h
i
i
2
by{default operator.3 A rule is called a fact
if m = n = 0. The set of all ground instances of the rules and facts in is denoted
by gnd ( ). A rule (or database) is called
positive{disjunctive if it does not contain default negation (i.e. n = 0). It is called normal
if k = 1, and de nite if k = 1 and n = 0. A
rule r of the form (1) is denoted for short as
r=
not ; where = A1 : : : Ak ,
= B1 : : : Bm , and = C1 : : : Cn .4
is called the head , is called the positive body ,
and not is called the negative body of r.
P
P
^
^
_
^
_
_
_
Aggregation
A disjunctive rule r with aggregation is given
by a rule of the form (1) above, such that the
head atoms Ai = ai (Xi1; : : : ; Xin ) may have aggregation arguments Xij of the form
Xij = < V >agg ;
i
3 By IN+ we denote the set f 1; 2; 3; : : : g of positive natural numbers, whereas IN0 denotes the set
0; 1; 2; : : : of all natural numbers. n; m denotes the
interval n; n + 1; : : : ; m of natural numbers.
4 Note that is a disjunction, and, according to De
Morgan's law, not is taken to be a conjunction.
f
g
h
f
g
i
where `agg' can be one of the common aggregation operators `sum', `max', `min', `count',
`avg' (average), `set' (cf. [8]), and `V ' is a
variable symbol that also occurs in some positive body atom Bj . A disjunctive deductive
database with aggregation is given by a set
of disjunctive rules with aggregation. In our approach even user{de ned aggregation operators
are possible, which can be de ned by arbitrary
(disjunctive) rules.
Note that we allow for aggregation arguments
only in rule heads. This is not really a restriction, since an aggregation in the body of a rule
can be simulated by introducing a new rule {
with this aggregation in the head { de ning a
new predicate, which is then used in the body
of the original rule.
For example, the following rule joins two relations p and a, groups the result by X , and then
computes the sum of the di erent V {values
r = q(X; < V >sum ) p(X; Y; V ) a(Y ):
The following Sql{statement corresponds to
the rule r:
INSERT INTO q
SELECT p:attr(1); sum(p:attr(3))
FROM p; a
WHERE p:attr(2) = a:attr(1)
GROUP BY p:attr(1)
P
^
When we compare the expressive power of disjunctive rules with aggregation and of Sql{
statements with aggregation, then the question arises, whether we can also represent a
HAVING{clause in the form of a logical inference rule. Roughly speaking, this can be done
by rst de ning a new predicate without using
the selection condition of the HAVING{clause
and by then applying the selection condition to
the resulting predicate.
The Predicate Dependency Graph
The predicate dependency graph GP =
NP ; EP of a disjunctive deductive database
with aggregation is given by a set NP =
r2P Nr of nodes and a set EP = r2P Er of
labeled edges, where each rule r
results
in a set of nodes and edges. For a rule r of the
h
i
P
[
[
2 P
form (1) above, let the predicate symbols in the
atoms Ai = ai (X ), Bj = bj (Y ), Cl = cl (X ) be
ai , bj , cl , respectively. Then
Nr = f ai j i 2 h 1; k i g[
f bj j j 2 h 1; m i g [ f cl j l 2 h 1; n i g;
+ a ) j i; j 2 h 1; k i; i 6= j g[
Er = f (ai ?!
j
+
f (ai ?! bj ) j i 2 h 1; k i; j 2 h 1; m i;
Ai contains no aggregation g [
agg
bj ) j i 2 h 1; k i; j 2 h 1; m i;
f (ai ?!
Ai contains an aggregation < V >agg g [
? c ) j i 2 h 1; k i; j 2 h 1; n i g:
f (ai ?!
j
A cycle for a predicate symbol p in GP is given
by a sequence
i
j
l
l p ))
Cp = ((pi ?!
i+1 1ih
i
of labeled edges, such that p = p1 = ph+1.
(i) P is called strati ed w.r.t. negation (or just
strati ed ), if there exists no cycle Cp in GP ,
l p ) is
such that one of the edges (pi ?!
i+1
labeled by `li = ?'.
(ii) P is called strati ed w.r.t. aggregation , if
there exists no cycle Cp in GP , such that
l p ) is labeled by
one of the edges (pi ?!
i+1
an aggregation operator `li = agg'.
i
i
For example, both of the following disjunctive
deductive databases are strati ed w.r.t. negation:
(i) The disjunctive deductive database P =
f r g consisting of the rule
r = q(X; < V >sum )
p(X; Y; V ) ^ a(Y ) ^
not b(X; V )
is also strati ed w.r.t. aggregation, and its
predicate dependency graph is given by:
q
(ii) The knapsack packing example Pkn of the
introduction is non{strati ed w.r.t. aggregation, since there exits the following cycle
through aggregation:
sum knapsack );
(knapsack weight ?!
+
(knapsack ?! knapsack weight):
3 Stable Models for Disjunctive
Deductive Databases
The Herbrand base HBP of a disjunctive deductive database P contains all ground atoms over
the language of P . An Herbrand interpretation
of P is given by a subset I HBP . It de nes a
mapping I : HBP ! f t; f g that assigns a truth
value \t" (true ) or \f" (false ) to each atom in
HBP : I (A) = t , A 2 I: 5 I is an Herbrand
model of a ground rule r =
^ not if
I ( ) ^ :I ( ) = t ) I ( ) = t:
I is an Herbrand model of P if I is an Herbrand
model of all ground instances r 2 gnd (P ) of the
elements of P . I is a minimal model of P if I is
an Herbrand model of P and there is no other
Herbrand model J of P such that J ( I . The
set of all minimal models of P is denoted by
MM(P ).
For positive{disjunctive deductive databases
P , the semantics is given by MM(P ), and a
formula is considered to be a consequence of
P under the minimal model semantics if holds
in all minimal models of P .
The declarative semantics of disjunctive deductive databases in general is de ned based
on a more general class of Herbrand models,
the stable models , which are de ned in terms
of the minimal models of the Gelfond{Lifschitz
transformation (GL{transformation, [2, 6]) of
P . The GL{transformation of P w.r.t. an Herbrand interpretation M is obtained from the
ground instance gnd (P ) of P by replacing in
every rule the negative body by its truth value:6
For Ai HBP , i
1; k , and a connective
we de ne I ( A1 : : : Ak ) = I (A1 ) : : : I (Ak ):
For k = 0, the empty disjunction (i.e. = ) evaluates to f, whereas the empty conjunction (i.e. = )
evaluates to t.
6 It holds M (not ) = :M ( ): If this truth value is
\t", then \t" can be deleted from the body. If it is \f",
then the whole rule can be deleted from M .
5
;
2
2 h
i
2
f _ ^ g
sum
p
sum
?
a
_
?
R
^
b
P
(i) For r =
rM =
not 2 gnd (P ) we de ne
^ :M ( ):
^
(ii) The GL{transformation of
M = rM r gnd ( ) :
P
P
f
j
2
P
P
w.r.t. M is
M:
get the following GL{transformation win
P
P
M =
win
g
with the truth values t and f as additional
atoms,7 where rules with f in the body can be
deleted from M .
P
M ).
Obviously it holds M MM( win
All of the atoms in I and the disjunction
move (a; b) move (a; c) are consequences of
win under the stable model semantics.
2
2
P
(ii) The set of all stable models of is denoted
by TAB( ).
P
P
Stable models are also minimal models, i.e.
TAB( ) MM( ); but the converse in general is not true.
A formula is considered to be a consequence
of a disjunctive deductive database under the
stable model semantics if holds in all stable
models of .
S
P
P
4 The Declarative Semantics for
Aggregation
P
S
move (a; b) _ move (a; c);
move (b; d); move (c; d) g:
P
Let M be a Herbrand interpretation of a disjunctive deductive database .
if M
move (x; y) j
_
De nition 3.1 (Stable Models, [2, 6])
P
win (x)
x 2 fa; b; c; dg; y 2 fa; dg g [
f
M is a ground positive{disjunctive database
(i) M is called stable model of
MM( M ).
f
P
P
P
Example 3.2
We will present a clear declarative semantics
for disjunctive deductive databases with aggregation. The semantics is based on a special
program transformation, which replaces all aggregations of by suitable constructs using default negation . The transformed database agg
is free of aggregation, and it can be evaluated
based on the concept of stable models.
In a preprocessing step all rules r =
not are normalized by replacing the complete
rule body
not by a single atom Br =
body r (X1 ; : : : ; Xh), which has a new predicate
symbol body r and has as arguments all variable
symbols X1 ; : : : ; Xh that occur in
not .
Thus, we can replace r by the following two
rules r1 and r2 :
P
P
P
^
^
^
For the disjunctive deductive database win
consisting of the following rules and facts
P
win (X ) move (X; Y ) ^ not win (Y );
move (a; b) _ move (a; c);
move (b; d); move (c; d);
we get a set with two stable models, which coincide on the subset I of atoms:
TAB(Pwin ) =
f f move (a; b) g [ I;
f move (a; c) g [ I g;
I = f move (b; d); move (c; d);
win (b); win (c) g:
S
For M = f move (a; b) g [ I we get that
M (not win (y)) = t i y 2 fa; dg, and thus we
7 Note that these truth values must evaluate to themselves under all Herbrand interpretations I of P M .
r1 = B r
^ not ;
r2 =
Br :
Only the rule r2 can contain aggregation. It
will be treated like described below, where we
assume that the bodies of the rules with aggregation consist of exactly one atom.
Transformation of De nite Rules
Consider the following prototypical disjunctive
rule r with aggregation, which computes the
aggregation of V {values of a predicate `p' after
grouping by X {values. If a V {value occurs with
several (di erent) Y {values, then it contributes
several times to the aggregation.
r = q(X; < V >agg )
p(X; Y; V )
Note that `X ', `Y ' and `V ' could also be vectors of argument positions, and correspondingly
`agg' could be a vector of aggregation functions
for the components of `V '.
The rule r is replaced by the following normal
rules, which are free of aggregation:
ragg
= pagg (X; [(Y; V )jYVs]; [V jVs])
pagg (X; YVs; Vs) ^
p(X; Y; V ) ^
not member((Y; V ); YVs)
eagg = pagg (X; [(Y; V )]; [V ])
p(X; Y; V )
ragg = pagg (X; V )
pagg (X; YVs; Vs) ^
not pext
agg (X; YVs) ^
agg (Vs; V )
eagg = pext
agg (X; YVs)
p(X; Y; V ) ^
not member((Y; V ); YVs)
0
r = q(X; V )
pagg (X; V )
The transformed database is given by
r ;
Pagg = ( P n f r g ) [ Pagg
where
r = f r ; e ; ragg ; eagg ; r0 g:
Pagg
agg agg
Instead of aggregation, Pagg contains rules with
Prolog{style function symbols `[ ]' for lists.
We also need the usual de nition of the predicate `member'. The predicate `pagg ' serves
for constructing lists `YVs', which consist of
pairs `(Y; V )' such that `p(X; Y; V )' holds, and
for constructing the corresponding lists `Vs' of
the values `V '. The call `pext
agg (X; YVs)' in ragg
checks whether the list `YVs' can be extended
by other pairs `(Y; V )' that are not yet contained in it. If it cannot be extended, then the
call `agg (Vs; V )' applies the aggregation function `agg' to the list `Vs' and produces the nal
result `V '.8
Obviously, in our approach the aggregation
function `agg' can be de ned by arbitrary (dis-
junctive) rules for agg . We only have to require that the same result pagg (X; V ) is derived by the call agg (Vs; V ) in ragg from
pagg (X; YVs; Vs) for all permutations YVs .
In an implementation of the list approach the
ineciency problem arising from permutations
can be avoided by simply using ordered lists or
ordered sets , depending on whether we are preferring a bag semantics or a set semantics. In
the declarative description of our set semantics,
however, we have not addressed this problem.
r
The predicate dependency graph GPagg
is
given in Figure 1, where labels
\+"
are
omitsum p) due to r in
ted. Instead of the edge (q ?!
GP , the graph GPagg contains a path with a
negative edge:
+ p):
? pext ); (pext ?!
+ p ); (p ?!
(q ?!
agg
agg
agg
agg
I.e., the aggregation has been transformed into
a negation. If the original database P was strati ed w.r.t. negation and aggregation , then Pagg
is strati ed w.r.t. negation , too.
8 If `agg ' is based on an associative binary operator,
which holds for `sum', `max', `min', `count', then the
aggregation could of course be evaluated incrementally
without rst constructing the whole list `Vs'.
with k1 pairwise di erent, fresh variable symbols Vi0 . Note that the atom with the predicate symbol p is necessary in the body of r0 ,
Transformation of Disjunctive Rules
Disjunctive rules r with more than one head
atom, some of which contain aggregation, can
also be treated by this replacement technique:
r = q1 (X1 ; < V1 >agg 1 ) _ : : : _
qk1 (Xk1 ; < Vk1 >agg k1 ) _
A1 _ : : : _ Ak2
p(X1 ; : : : ; Xk1 ; Y; V1 ; : : : ; Vk1 )
All the de nite rules
ri = qi (Xi ; < Vi >agg i )
p(X1 ; : : : ; Xk1 ; Y; V1 ; : : : ; Vk1 )
are transformed as described above into rules
, eagg , raggi , eaggi , which de ne predicates
ragg
i
i
pagg i (Xi ; Vi ). Then the new rule is
r0 = q1 (X1 ; V10 ) _ : : : _ qk1 (Xk1 ; Vk01 ) _
A1 _ : : : _ Ak2
pagg 1 (X1 ; V10 ) ^ : : : ^
pagg k1 (Xk1 ; Vk01 ) ^
p(X1 ; : : : ; Xk1 ; Y; V1 ; : : : ; Vk1 );
q
?
pagg
?
*
.........
................ ............
.......
................ ..........
..........
pagg
R ext
pagg
R
?
p
q
agg
?
U
member
r
Figure 1: The Predicate Dependency Graph of Pagg
since it can share arguments with the atoms in
A1 _ : : : _ Ak .
2
The Stable Model Semantics with Aggregation
The declarative semantics of a disjunctive deductive database P with aggregation is de ned
based on its transformed database Pagg using
the concept of stable models:
STABagg (P ) = f I \ HBP j I 2 STAB(Pagg ) g:
For each stable model of Pagg only the regular
atoms A 2 I \ HBP are considered; all arti cial
atoms with predicate symbols that were introduced during the program transformation (i.e.
pagg , pagg , pext
agg , member) are thrown away.
The Knapsack Example
The aggregation rule r = q(X; < V >agg )
p(X; Y; V ) of Pkn is de nite. It is
r0 = knapsack weight(< Weight >sum )
knapsack(Item; Weight ):
The predicate on which we have to aggregate is
`p = knapsack', the resulting predicate is `q =
knapsack weight', the argument vector `X ' is
empty, `Y = Item', and `V = Weight '.
Pkn is non{strati ed w.r.t. aggregation,
since `knapsack weight' is used for de ning
`knapsack'. Thus, (Pkn )agg is non{strati ed
w.r.t. negation, and it must be evaluated by stable model semantics (rather than perfect model
semantics, which would be simpler). Given the
basic facts in
I = f weight limit(10); energy limit(6);
item('Umbrella'; 2);
item('Trenchcoat'; 1);
item('Energy Drink'; 2);
item('Mineral Water'; 3);
item('Bread'; 2) g;
and the rule
r5 = knapsack(Item; Weight ) _
leave at home(Item; Weight )
item(Item; Weight ) ^
Item 6= 'Umbrella' ^
Item 6= 'Trenchcoat' ^
Item 6= 'Energy Drink';
in principle all items t into the knapsack.
There exist 10 allowed packings, i.e. stable
models of (Pkn )agg , out of 32 possible combinations of the 5 items.9
5 Conclusions
Currently a number of prototypical deductive
database systems are available, e.g. Ldl++,
CORAL, Aditi, Glue{NAIL! ([13, 8]), which
basically allow for strati ed aggregation. E.g.
Ldl++ supports aggregates with choice in XY{
strati ed programs.
Our approach extends deductive database
technology by allowing for disjunction and aggregation; even user{de ned aggregation operators are possible. It is not necessary that the
aggregation operator agg is associative or that
it allows for an incremental evaluation, which is
necessary for the approach of [15] for deductive
databases with aggregation. We are currently
implementing the new approach in DisLog using an ordered sets representation for the values
that have to be aggregated.
In the special case of Datalog with associative, strati ed aggregation, our semantics coincides with the traditional semantics that is used
by current deductive database systems.
References
[1] S. Ceri, G. Gottlob, L. Tanca: Logic Programming and Databases, Springer, 1990.
[2] M. Gelfond, V. Lifschitz: The Stable Model
Semantics for Logic Programming, Proc. Fifth
Intl. Conference and Symposium on Logic Programming 1988 (ICSLP'88), MIT Press, 1988,
pp. 1070{1080.
[3] F. Giannotti, D. Pedreschi, C. Zaniolo:
Semantics and Expressive Power of Non{
Deterministic Constructs in Deductive
Databases, to appear in JCCS.
9 All allowed knapsacks contain exactly one of the
items 'Umbrella' and 'Trenchcoat'. There are 4 packings
where the knapsack does not contain 'Mineral Water'
(in this case it cannot contain an 'Energy Drink' and
'Bread' is optional) and 6 packings where it contains
'Mineral Water' (in this case an 'Energy Drink' is contained in three packings).
[4] J.W. Lloyd: Foundations of Logic Programming, second edition, Springer, 1987.
[5] J. Lobo, J. Minker, A. Rajasekar: Foundations of Disjunctive Logic Programming, MIT
Press, 1992.
[6] T.C. Przymusinski: Stable Semantics for Disjunctive Programs, New Generation Computing, vol. 9, 1991, pp. 401{424.
[7] W.G. Roth, R. Ramakrishnan: MIMSY: A
System for Analyzing Time Series in the Stock
Market Domain, Proc. Workshop on Applications of Deductive Systems at the Intl. Symposium on Logic Programming 1993 (ILPS'93).
[8] R. Ramakrishnan, D. Srivastava, S. Sudarshan: CORAL { Control, Relations and
Logic, Proc. Intl. Conference on Very Large
Databases 1992 (VLDB'92).
[9] R. Ramakrishnan: Database Management
Systems, McGraw{Hill, 1998.
[10] D. Seipel, J. Minker, C. Ruiz: Model Generation and State Generation for Disjunctive
Logic Programs, Journal of Logic Programming, vol. 32(1), 1997, pp. 48{69.
[11] D. Seipel, H. Thone: DisLog { A System for Reasoning in Disjunctive Deductive
Databases, Proc. Intl. Workshop on the Deductive Approach to Information Systems and
Databases 1994 (DAISD'94), pp. 325{343.
[12] D. Seipel: DisLog { A Disjunctive Deductive
Database Prototype, Proc. Twelfth Workshop
on Logic Programming (WLP'97), 1997, pp.
136{143.
DisLog is available on the WWW at
"http://www-info1.informatik.uniwuerzburg.de/databases/DisLog".
[13] C. Zaniolo, N. Arni, K. Ong: Negation and
Aggregates in Recursive Rules: the Ldl++
Approach, Proc. Intl. Conf. on Deductive
and Object{Oriented Database systems 1993
(DOOD'93), Springer, 1993, pp. 204{221.
[14] C. Zaniolo, S. Ceri, C. Faloutsos, R.T. Snodgrass, V.S. Subrahmanian, R. Zicari: Advanced Database Systems, Morgan Kaufmann,
1997.
[15] C. Zaniolo, H. Wang: Logic{Based User{
De ned Aggregates for the Next Generation
of Database Systems, in: The Logic Programming Paradigm: Current Trends and
Future Directions, K.R. Apt, V.W. Marek,
M. Truszczynski, D.S. Warren (eds.), Springer,
1999.