Academia.eduAcademia.edu

Storing Graphic Data in Databases

2007

This paper investigates how new database technologies, in particular, complex object databases, object-oriented databases, and deduc-tive databases, can be used to store object-oriented graphic data and discusses the related problems.

In Proceedings of the International Conference on Image Science, Systems, and Technology (CISST ’97), Las Vegas, USA, June 30 - July 3, 1997. CSREA Press Storing Graphic Data in Databases Mengchi Liu Department of Computer Science University of Regina Regina, Saskatchewan, Canada S4S 0A2 Abstract This paper investigates how new database technologies, in particular, complex object databases, object-oriented databases, and deductive databases, can be used to store object-oriented graphic data and discusses the related problems. graphic data structures and databases, scene and object modeling Keywords: 1 Introduction Graphic data is generally divided into two kinds: bit-mapped graphics and objectoriented graphics [18]. Bit-mapped graphics are usually generated with scanning or painting software, while object-oriented graphics are usually created with drawing software using primitive objects such as points, lines, shapes, texts etc. How to e ectively store graphic data in a database system presents a challenge to the traditional relational database technology. Graphic data is usually handled by various le systems, rather than database systems. As a result, the graphics can only be displayed or printed rather than be queried. For example, we cannot ask where a speci c object is located, which object is at a certain location, how many same kind objects there are in the scene, etc. Besides, we cannot update objects systematically. For example, change the shape of all identical objects in the scene. As the relational database technology is inadequate for many advanced applications, it has been extended signi cantly during the past decade. These extensions can be classi ed into three kinds: complex object databases, object- oriented databases and deductive databases. Complex object databases [2, 3, 6, 15, 20, 32, 27, 35, 38, 39] relax the rst normal form constraint imposed on the relational databases by allowing complex objects to be formed using the tuple and set constructors. Object-oriented databases [7, 11, 12, 16, 17, 21, 24, 26] extends data modeling power of the relational databases by means of object identity, complex objects, classes, class hierarchies, and inheritance. Deductive databases [1, 5, 9, 10, 13, 19, 23, 28, 31, 33, 34, 37, 36, 40, 41, 42] extend the expressive power of the relational databases by means of rules for deduction, recursion and declarative querying. In this paper, we examine how these new database technologies can be used to store object-oriented graphic data and discuss the related problems. We use the following scene to illustrate. In the scene, there are two kinds of trees: pine and maple, two kinds of people: standing and walking, two kinds of houses: bungalow and two storey, some roads, a garden of maple trees, a mountain and the Sun. The trees, people, and houses appear in the scene at xed intervals. These objects are formed with circles and/or lines. As a database usually consists of two parts: the schema and the instance, we will discuss how to de ne the schema for this particular graphic database and how to represent the instance using di erent kinds of databases. This paper is organized as follows: Section 2 investigates complex object databases. Section 3 examines object-oriented databases. Section 4 looks into deductive databases. For simplicity, we shall use a virtual language for each kind of database to illustrate the ideas rather than real languages supported by various database management systems. according to the constructor at the root of its tree. Complex types can be named by using type equations of the following form: T = T' where T is a type name and T' is a type. The schema of a complex object database is a collection of type equations such that there is no cyclicity in the type equations. Consider the scene in Section 1. If we ignore the objects formed with circles such as people and the Sun, we can de ne the schema with the following type equations: InScene= f[Object: fLineg, Loc: Point]g Line = [From: Point, To: Point] Point = [X: Int, Y: Int] where Line and Point are named com- plex types formed with the tuple constructor, fLinesg is an unnamed complex type formed with the set constructor, and InScene is a named complex type formed with both the tuple and set constructors. Indeed, InScene is a set (nested relation) of tuples. The database instance, without people and the Sun, for the scene in Section 1, is a set of tuples in the relation as follows: 2 Complex Object Databases Complex object databases relax the rst normal form constraint imposed on traditional relational databases. The tuple components of a relation can be complex objects, such as tuples, sets or even relations themselves. Complex objects are formed from atomic values such as integers, reals, strings, characters, etc. using the tuple and set constructors. A type is associated with each value in the obvious way and each value is an instance of the type. The types for atomic values (atomic types) such as Int Real String Char etc. are usually built-in. The types for complex objects (complex types) have to be explicitly de ned by the user, using the tuple and set constructors, as follows: 1. If T1 Tn are types, and A1 An are distinct attributes, then [A1 :T1, ..., An :Tn ] is a tuple type. 2. If T is a type, then fTg is a set type. Complex types and values can be viewed as trees. In a typed tree, leaves are atomic types, and in a value tree, leaves are atomic values. Internal nodes are labeled in both cases by constructors. A type is tuple or set, respectively, , , ..., , , InScene InScene: f[Object: f[From: [X:18,Y: 0], TO: [X:18,Y:20]], [From: [X:36,Y:20],TO: [X: 0, Y:20]], [From: [X: 0, Y:20],TO: [X:18,Y:55]], [From: [X:18,Y:55],TO: [X:36,Y:20]]g, Loc: [X: 10,Y:235]], [Object: f[From: [X:18,Y: 0], TO: [X:18,Y:20]], [From: [X:36,Y:20],TO: [X: 0, Y:20]], [From: [X: 0, Y:20],TO: [X:18,Y:55]], [From: [X:18,Y:55],TO: [X:36,Y:20]]g, Loc: [X: 130,Y:235]], [Object: f[From: [X:18,Y: 0], TO: [X:18,Y:20]], [From: [X:36,Y:20],TO: [X: 0, Y:20]], [From: [X: 0, Y:20],TO: [X:18,Y:55]], [From: [X:18,Y:55],TO: [X:36,Y:20]]g, Loc: [X: 250,Y:235]], [Object: f[From: [X:18,Y: 0], TO: [X:18,Y:20]], [From: [X:36,Y:20],TO: [X: 0, Y:20]], [From: [X: 0, Y:20],TO: [X:18,Y:55]], [From: [X:18,Y:55],TO: [X:36,Y:20]]g, Loc: [X: 370,Y:235]], ... , , ..., g 2 Note that with this approach we can only store primitive objects such as points and lines, rather than abstract objects such as trees, houses, people, etc. and we have to explicitly duplicate the structure of the same object for di erent occurrences in the scene. As a result, if we want to change the structure of a particular kind of object such as the pine tree systematically in the scene, we have to modify all of its occurrences in the database. Besides, the query asking for which object is at a certain location, such as Loc: [X:10,Y:235] won't have meaningful result in such a database. A solution to this problem is to decompose the InScene relation into two relations: InScene and LineObjects with the schema and instance as follows. rather than circles and lines. A natural question is how to add people and the Sun in the scene which are formed with circles and/or lines into the database. One solution is to modify both the schema and instance of the relation LineObjects so that objects can be formed with circles and lines. However, such an update in a database system is quite expensive and should be avoided. Another solution is to add a new relation CLineObjects with the schema and an additional instance for the relation CLineObjects as follows. , Schema: InScene = f[Object: String, Loc: Point]g LineObjects = f[Name: String, Lines: fLineg]g CLineObjects= f[Name: String, Lines: fLineg Circle:[Center:Point, Radius:Int]g Line = [From: Point, To: Point] Point = [X: Int, Y: Int] Schema: InScene = f[Object: String, Loc: Point]g LineObjects= f[Name: String, Lines: fLineg] Line = [From: Point, To: Point] Point = [X: Int, Y: Int] InScene: f[Object: Pine, Loc: [X: 10, Y:235]], [Object: Pine, Loc: [X: 130,Y:235]], [Object: Pine, Loc: [X: 250,Y:235]], [Object: Pine, Loc: [X: 370,Y:235]], [Object: Pine, Loc: [X: 490,Y:235]], [Object: Pine, Loc: [X: 610,Y:235]], [Object: Maple, Loc: [X: 90, Y:110]], [Object: Maple, Loc: [X: 140,Y:110]], [Object: Maple, Loc: [X: 190,Y:110]], [Object: Maple, Loc: [X: 240,Y:110]], ... CLineObjects: f[Name: Sun, Lines: fg, Circle: [Center: [X:10,Y:20], Radius: 20]], [Name: Standman, Lines: f[From: [X:10,Y:20],TO: [X:10,Y:10]], [From: [X:10,Y:15],TO: [X: 0, Y:10]], [From: [X:10,Y:15],TO: [X:20,Y:10]], [From: [X: 5, Y: 0], TO: [X:10,Y:10]], [From: [X:10,Y:10],TO: [X:15,Y: 0]]g, Circle: [Center: [X:10,Y:25], Radius: 5]], ... g However, this solution still su ers from several problems. Firstly, the object names such as Pine, Maple, Sun, Standman etc. are used to connect the relation InScene to the relations LineObject and CLineObject but the schema provides no accounts for such connections. We cannot say that the object names used in the relation InScene must appear in one of the two relations: LineObjects and CLineObjects As a result, inconsistency may easily occur. Secondly, these object names are used to identify the corresponding graphic objects in the database but subject to updates which may cause inconsistency as well. Finally, all the information about objects in the scene is expressed explicitly even though we know that g LineObjects: f[Name: Pine, Lines: f[From: [From: [From: [From: [Name: Maple, Lines: f[From: [From: [From: ... , [X:18,Y: 0], TO: [X:18,Y:20]], [X:36,Y:20],TO: [X: 0, Y:20]], [X: 0, Y:20],TO: [X:18,Y:55]], [X:18,Y:55],TO: [X:36,Y:20]]g], , [X:10,Y: 0], TO: [X:10,Y:30]], [X: 0, Y:25],TO: [X:10,Y:15]], [X:10,Y:15],TO: [X:20,Y:25]]g], . g In this database, the objects in the relation LineObjects can only be formed with lines, 3 some of them appear at xed intervals. As a result, if we want to increase or decrease the distance between these objects, we have to modify all of them. 3 complex type. It de nes the class C as a subclass of the classes C1,...,Cn with a directly associated complex type T If C is not a subclass of any classes, then it can be de ned using another form: . CLASS C T Object-Oriented Databases The schema of an object-oriented database is a set of class de nitions. The schema for the scene in Section 1 is dened as follows: In an object-oriented database, each real world object is directly modeled as an object. Each object has an identi er and is associated with a complex object as its value or state. An object identi er uniquely identi es the object in the database and is not subject to changes while the value associated with the object is subject to changes. An object in an object-oriented database is referenced through its identi er rather than the complex object associated with it. Object identity provides better support for object sharing and simpli es update management. Objects often share common properties and are grouped together into classes. Each class has a name and is associated with a complex type which speci es common properties of all objects in the class. Each object in the database belongs to (is an instance of) some class. Classes are organized into class hierarchies by de ning subclass (isa) relationships between classes. Instances of a subclass are also instances of its superclasses. Thus an object can be an instance of several classes. However, every object should have a primary class (the unique, lowest class in the class hierarchy where the object is an instance). Properties dened on the superclasses are inherited by their subclasses. Inheritance supported by object-oriented paradigm provides a powerful mechanism for organizing data as it allows the user to de ne classes in an incremental way by re ning already existing ones. Each class in a database has to be explicitly de ned by the user using an expression of the following form: CLASS InScene [Object: LineObject, Loc: Point] CLASS LineObject [Name: String, Lines: fLineg] CLASS CLineObject isa LineObject [Circle: [Center: Point, Radius: Int ]] Line = [ From: Point, TO: Point ] Point = [ X: Int, Y: Int ] In the schema, we have three classes InScene, LineObject, CLineObject and two named complex types Line, Point. The classes InScene, LineObject are the roots of two class hierarchies. The class CLineObject is a subclass of LineObject. Thus the instances of CLineObject are also instances of LineObject. The class InScene is directly associated with a complex type [Object: LineObject, Loc: Point], which is similar to the complex type InScene in the last section except that the class LineObject is used in place of the atomic type String Therefore, only an instance of LineObject (which can also be the instance of CLineObject ) can be used as the value of the attribute Object rather than an arbitrary string. The class LineObject is directly associated with a complex type . , [Name: String, Lines: fLineg] which is the same as the complex type LineObject in the last section. The class CLineObject is directly associated a complex type [Circle: [Center: Point, Radius: Int]] and also inherits the complex type [Name: String, Lines: fLineg] CLASS C isa C1, ..., Cn T where C, C1, ..., Cn are classes and T is a from the class LineObject Thus the complex . 4 type associated with the class CLineObject is CLineObjects: ObjCLO1 [Name:Sun, Lines: fg, Circle:[Center: [X:10,Y:20], Radius: 20]] [Name: String, Lines: fLineg, Circle: [Center: Point, Radius: Int]] which is also the same as the complex type CLineObject in the last section. Each object in a database has to be explicitly de ned by the user using an expression of the following form: CLineObjects: ObjCLO2 [Name: Standman, Lines: f[From: [X:10,Y:20],TO: [X:10,Y:10]], [From: [X:10,Y:15],TO: [X: 0, Y:10]], [From: [X:10,Y:15],TO: [X:20,Y:10]], [From: [X: 5, Y: 0], TO: [X:10,Y:10]], [From: [X:10,Y:10],TO: [X:15,Y: 0]]g, Circle: [Center: [X:10,Y:25], Radius: 5]] C: Oid V where C is a class, Oid is an object identi er, and V is a complex object. It de nes an object consisting of an identi er Oid and a complex object V with C as its primary class. ... A fundamental feature of object-oriented databases is that only objects can exists in the database. Complex objects alone are not objects and cannot exist independently. In other words, complex objects are not treated as rstclass citizen. This causes some problems. For the above example, the object identi ers ObjIn1, ObjIn2, ... are not really needed for any purpose. In fact, it is burdensome to use them here. Let us see, if complex objects were supported as rst-class citizens as objects, how could we bene t with our graphic database application. First, we could de ne the schema as follows. The database instance for the scene in Section 1 consists of a set of objects as follows. InScene: ObjIn1 [Object: ObjLO1, Loc: InScene: ObjIn2 [Object: ObjLO1, Loc: InScene: ObjIn3 [Object: ObjLO1, Loc: InScene: ObjIn4 [Object: ObjLO1, Loc: InScene: ObjIn5 [Object: ObjLO1, Loc: InScene: ObjIn6 [Object: ObjLO1, Loc: InScene: ObjIn7 [Object: ObjLO2, Loc: InScene: ObjIn8 [Object: ObjLO2, Loc: ... Point [X: 10, Y:235]] Point [X: 130, Y:235]] Point [X:250, Y:235]] Point [X:250, Y:235]] Point [X:250, Y:235]] CLASS LineObject [Name: String, Lines: fLineg] CLASS CLineObject isa LineObject [Circle: [Center: Point, Radius: Int ]] InScene= [ Object: Object, Loc: Point ] Line = [ From: Point, TO: Point ] Point = [ X: Int, Y: Int ] Point [X:250, Y:235]] Point [X:250, Y:235]] Then we could use pure tuples in the complex object relation InScene to represent individual objects in the scene as follows. Point [X:250, Y:235]] LineObjects: ObjLO1 [Name: Pine, Lines: f[From: [X:18,Y: 0], TO: [X:18,Y:20]], [From: [X:36,Y:20],TO: [X: 0, Y:20]], [From: [X: 0, Y:20],TO: [X:18,Y:55]], [From: [X:18,Y:55],TO: [X:36,Y:20]]g] LineObjects: ObjLO2 [Name: Maple, Lines: f[From: [X:10,Y: 0], TO: [X:10,Y:30]], [From: [X: 0, Y:25],TO: [X:10,Y:15]], [From: [X:10,Y:15],TO: [X:20,Y:25]]g] InScene: f[Object: [Object: [Object: [Object: [Object: [Object: ... ObjLO1,Loc: ObjLO1,Loc: ObjLO1,Loc: ObjLO1,Loc: ObjLO1,Loc: ObjLO1,Loc: [X: 10, Y:235]], [X: 130,Y:235]], [X: 250,Y:235]], [X: 370,Y:235]], [X: 490,Y:235]], [X: 610,Y:235]], g The problem with object-oriented databases is that even though we know that some of the ... 5 objects appear at xed intervals, we cannot use such information in the database. We have to explicitly specify where an object is located in the scene using a tuple as in the complex object database. Therefore, if we want to increase or decrease the distance between them, we have to modify all of them. 4 A rule is an expression of the form A :- L1, ..., Ln where L1, ..., Ln is the body of the rule and used for premises and A is head of the rule and used for conclusions. Rules allow new facts to be derived from existing ones. Consider the following rule: Deductive Databases InScene [Object: Pine, Loc: [X:Xvalue,Y:Yvalue]] :{ InScene [Object: Pine, Loc: [X:Xvalue1,Y:Yvalue]], Xvalue =Xvalue1 + 120, Xvalue < 650 where Xvalue, Xvalue1, and Yvalue, are log- Deductive databases stem from the integration of logic programming and relational database techniques [13, 19, 37, 41]. It combines the bene ts of the two approaches, such as representational and operational uniformity, reasoning capabilities, recursion, declarative querying, ecient secondary storage access, etc. Datalog, a restricted form of logic programming language Prolog without functors, has been widely accepted as the standard deductive database language [13, 41]. However, Datalog is based on the traditional relational data model which imposes rst normal form constraint and is found inadequate for many advanced database applications. In recent years, deductive databases have been extended to subsume complex object databases [4, 8, 14, 25, 28, 34] and object-oriented databases [1, 5, 9, 10, 23, 22, 29, 31, 40]. For simplicity, we only discuss deductive complex object databases in this section. Extension of the discussion to deductive object-oriented databases is straightforward. In a deductive database, we can represent data either extensionally using facts or intensionally using rules. To specify that [A1:O1,...An:On] is a tuple in the relation R in a deductive database, a fact of the following form can be used: ical variables used as place holders. This rule states that if there exist Xvalue1 and Yvalue such that the following tuple is in the relation InScene: [Object: Pine, Loc: [X: Xvalue1, Y: Yvalue]] and Xvalue satis es the following conditions: Xvalue = Xvalue1 + 120, Xvalue < 650 then we can derive the following tuple in the relation . InScene [Object: Pine, Loc: [X: Xvalue, Y: Yvalue]] Therefore, based on the fact and the rule above, we can infer the following facts: InScene [Object: InScene [Object: InScene [Object: InScene [Object: InScene [Object: Pine, Loc: Pine, Loc: Pine, Loc: Pine, Loc: Pine, Loc: [X: 130, Y:235]] [X: 250, Y:235]] [X: 370, Y:235]] [X: 490, Y:235]] [X: 610, Y:235]] In deductive databases, the user can directly update the rules but not the facts derived with the rules. Changes to the rules will result in changes to the derived facts automatically. Therefore, if we want to increase or decrease the distance between the pine trees, we just need to modify the rule. A deductive database instance consists of an extensional database (EDB) which is a set of facts and an intensional database (IDB) which is a set of rules. The extensional and intensional database for the scene in Section 1 are shown as follows. R [A1:O1,...,An:On] Consider the following example: InScene [Object: Pine, Loc: [X: 10, Y:235]] This fact speci es that the tuple [Object: Pine, Loc: [X: 10, Y:235]] is in the relation InScene. 6 EDB InScene [Object: Maple, Loc: [X:Xvalue,Y:Yvalue]] :{ InScene [Object: Maple, Loc: [X:Xvalue1,Y:Yvalue]], Xvalue =Xvalue1 + 50, Xvalue < 550 InScene [Object: Bungalow, Loc: [X:Xvalue,Y:Yvalue]] :{ InScene [Object: Bungalow, Loc: [X:Xvalue1,Y:Yvalue]], Xvalue =Xvalue1 + 120, Xvalue < 400 InScene [Object: Twostorey, Loc: [X:Xvalue,Y:Yvalue]] :{ InScene [Object: Twostorey, Loc: [X:Xvalue1,Y:Yvalue]], Xvalue =Xvalue1 + 120, Xvalue < 550 InScene [Object: Walkman, Loc: [X:Xvalue,Y:Yvalue]] :{ InScene [Object: Walkman, Loc: [X:Xvalue1,Y:Yvalue]], Xvalue =Xvalue1 + 180, Xvalue < 650 InScene [Object: Standman, Loc: [X:Xvalue,Y:Yvalue]] :{ InScene [Object: Standman, Loc: [X:Xvalue1,Y:Yvalue]], Xvalue =Xvalue1 + 180, Xvalue < 650 InScene[Object:Pine, Loc:[X:130,Y:235]] InScene[Object:Maple, Loc:[X: 90, Y:110]] InScene[Object:Maple, Loc:[X:120,Y:140]] InScene[Object:Standman, Loc:[X: 50, Y:215]] InScene[Object:Walkman, Loc:[X:110,Y:215]] InScene[Object:Bungalow, Loc:[X: 50, Y:220]] InScene[Object:Twostorey ,Loc:[X:400,Y:220]] InScene[Object:Sun, Loc:[X:500,Y:500]] ... LineObjects: ObjLO1 [Name: Pine, Lines: f[From: [X:18,Y: 0], TO: [X:18,Y:20]], [From: [X:36,Y:20],TO: [X: 0, Y:20]], [From: [X: 0, Y:20],TO: [X:18,Y:55]], [From: [X:18,Y:55],TO: [X:36,Y:20]]g] LineObjects: ObjLO2 [Name: Maple, Lines: f[From: [X:10,Y: 0], TO: [X:10,Y:30]], [From: [X: 0, Y:25],TO: [X:10,Y:15]], [From: [X:10,Y:15],TO: [X:20,Y:25]]g] CLineObjects: ObjCLO1 [Name:Sun, Lines: fg, Circle:[Center: [X:10,Y:20], Radius: 20]] CLineObjects: ObjCLO2 [Name: Standman, Lines: f[From: [X:10,Y:20],TO: [X:10,Y:10]], [From: [X:10,Y:15],TO: [X: 0, Y:10]], [From: [X:10,Y:15],TO: [X:20,Y:10]], [From: [X: 5, Y: 0], TO: [X:10,Y:10]], [From: [X:10,Y:10],TO: [X:15,Y: 0]]g, Circle: [Center: [X:10,Y:25], Radius: 5]] Current deductive database systems will evaluate the rule and derive tuples once they are queried and the results are not stored into the database. For static graphic data, this may be reasonable. However, for dynamic graphic data such as animation, this may be a problem as query process may take some time. In this case, intensional data should be materialized so that fast response is possible. The problem with this method is that of update propagation. That is, if we modify an extensional tuple or a rule, then intensional tuples derived with it must be updated. Unfortunately, not much work has been down in this aspect in deductive database area. CLineObjects: ObjCLO3 [Name: Walkman, Lines: f[From: [X:10,Y:20],TO: [X:10,Y:10]], [From: [X:10,Y:15],TO: [X: 0, Y:10]], [From: [X:10,Y:15],TO: [X:20,Y:10]], [From: [X: 5, Y: 0], TO: [X:10,Y:10]], [From: [X:10,Y:10],TO: [X:15,Y: 0]]g, Circle: [Center: [X:10,Y:25], Radius: 5]] ... 5 Conclusion IDB In this paper, we have investigated how complex object databases, object-oriented databases, and deductive databases can be used to store graphic data and discussed the related problems. Object-oriented databases InScene [Object: Pine, Loc: [X:Xvalue,Y:Yvalue]] :{ InScene [Object: Pine, Loc: [X:Xvalue1,Y:Yvalue]], Xvalue =Xvalue1 + 120, Xvalue < 650 7 provide better support for object sharing and simplify update management with object identity than complex object databases. Their support for inheritance allows data to be de ned in an incremental way. Deductive databases allow data to be represented extensionally using facts and intensionally using rules. It is obvious that deductive object-oriented databases are the most promising for storing graphic data based on the discussions. In the past several years, we have design and developed such kind deductive object-oriented database system called Rule-based Object Language (abbreviated ROL) [29, 30] with object-oriented graphic databases in mind. It is available over the Internet for anonymous ftp from ftp.cs.uregina.ca/pub/rol. The ROL system directly supports object-oriented graphics as discussed in this paper and provides a graphic user interface called drawROL which allows the user to create, modify, display, and query graphic data stored in a ROL database. The system has been downloaded by thousands of users world-wide and used for various data and knowledge-based applications since it's rst release. Currently, we are extending the ROL system and drawROL to support animation. We are also investigating how to use ROL for 3-D graphic data, CAD databases, and multimedia databases which involve extensive graphic data of high complexity and developing corresponding tools for them. [2] S. Abiteboul and N. Bidoit. Non rst normal form relations: An algebra allowing data restructuring. J. Computer and System Sciences, 33(3):361{393, 1986. [3] S. Abiteboul, P. C. Fischer, and H.J. Schek, editors. Proceedings of the International Workshop on Theory and Applications of Nested Relations and Complex Objects in Databases, Darmstadt, Germany, 1987. Springer-Verlag LNCS 361. [4] S. Abiteboul and S. Grumbach. COL: A logic-based language for complex objects. ACM TODS, 16(1):1{30, 1991. [5] S. Abiteboul and P. C. Kanellakis. Object identity as a query language primitive. In Proceedings of the ACM SIGMOD International Conference on Management of Data, pages 159{173, Portland, Oregon, 1989. [6] Serge Abiteboul and Catriel Beeri. The power of languages for the manipulation of complex values. VLDB Journal, 4(4):727{ 794, 1995. [7] A. Albano, G. Ghelli, and R. Orsini. Fibonacci: A programming language for object databases. VLDB Journal, 4(3):403{ 444, 1995. [8] F. Bancilhon and S. Khosha an. A calculus for complex objects. J. Computer and System Sciences, 38(2):326{340, 1989. [9] M. L. Barja, A. A. A. Fernandes, N. W. Paton, M. H. Williams, A. Dinn, and A. I. Abdelmoty. Design and implementation of ROCK & ROLL: a deductive objectoriented database system. Information Systems, 20(3):185{211, 1995. [10] F. Cacace, S. Ceri, S. Crepi-Reghizzi, L. Tanca, and R. Zicari. Integrating object-oriented data modelling with a rule-based programming paradigm. In Proceedings of the ACM SIGMOD International Conference on Management of Data, pages 225{236, 1990. Acknowledgments This work has been partly supported by the Natural Sciences and Engineering Research Council of Canada. References [1] S. Abiteboul. Towards a deductive object-oriented database language. Data and Knowledge Engineering, 5(2):263{ 287, 1990. 8 [11] M. Carey, D. DeWitt, and S. Vanderberg. A data model and query language for EXODUS. In Proceedings of the ACM SIGMOD International Conference on Management of Data, pages 413{423, Chicago, Illinois, 1988. [12] R.G.G. Cattell, editor. The Object Database Standard: ODMG-93, Release 1.2. Morgan Kaufmann, 1996. [13] S. Ceri, G. Gottlob, and T. Tanca. Logic Programming and Databases. SpringerVerlag, 1990. [14] Q. Chen and W. Chu. Hilog: A highorder logic programming language for non-1nf deductive databases. In W. Kim, J.M. Nicolas, and S. Nishio, editors, Proceedings of the International Conference on Deductive and Object-Oriented Databases, pages 431{452, Kyoto, Japan, 1989. North-Holland. [15] L. Colby. A recursive algebra and query optimization for nested relations. In Proceedings of the ACM SIGMOD International Conference on Management of Data, pages 124{138, Portland, Oregon, 1989. [16] O. Deux and others. The story of O2 . IEEE Transactions on Knowledge and Data Engineering, 2(1):91{108, 1990. [17] D. H. Fishman, B. B., H. P. Cate, E. C. Chow, T. Connors, J. W. Davis, N. Derrett, C. G. Hoch, W. Kent, P. Lyngbaek, B. Mahbod, M. A. Neimat, T. A. Ryan, and M. C. Shan. Iris: An objectoriented database management system. ACM Trans. on Oce Information Systems, 5(1):48{69, 1987. [18] J. D. Foley, A. van Dam, S. K. Feiner, and J. F. Hughes. Computer Graphics: Principles and Practice. Addison Wesley, 2 edition, 1990. [19] H. Gallaire, J. Minker, and J. M. Nicolas. Logic and databases: A deduc- tive approach. ACM Computing Surveys, 16(2):153{186, 1984. [20] R. Hull. A survey of theoretic research on typed complex database objects. In J. Pardaens, editor, Databases, pages 193{ 256. Academic Press, 1987. [21] H. Ishikawa, F. Suzuki, F. Kozakura, A. Makinouchi, M. Miyagishima, Y. Izumida, M. Aoshima, and Y. Yamane. The model, language, and implementation of an object-oriented multimedia knowledge base management system. ACM TODS, 18(1):1{50, 1993. [22] M. Kifer, G. Lausen, and J. Wu. Logical foundations of object-oriented and frame-based languages. Journal of ACM, 42(4):741{843, 1995. [23] M. Kifer and J. Wu. A logic for programming with complex objects. J. Computer and System Sciences, 47(1):77{120, 1993. [24] Won Kim. Introduction to ObjectOriented Databases. The MIT Press, 1990. [25] G. M. Kuper. Logic programming with sets. J. Computer and System Sciences, 41(1):44{64, 1990. [26] C. Lecluse and P. Richard. The O2 database programming language. In Proceedings of the International Conference on Very Large Data Bases, pages 411{422, Amsterdam, The Netherlands, 1989. Morgan Kaufmann Publishers, Inc. [27] Mark Levene and George Loizou. Semantics for null extended nested relations. ACM TODS, 18(3):414{459, 1993. [28] M. Liu. Relationlog: A typed extension to datalog with sets and tuples (extended abstract). In Proc. Intl. Logic Programming Symp. (ILPS '95), pages 83{97, Portland, Oregon, U.S.A., December 4-7 1995. MIT Press. 9 [29] M. Liu. ROL: A deductive object base language. Information Systems, 21(5):431 { 457, 1996. [38] M. A. Roth, H. F. Korth, and D. S. Batory. SQL/NF: A query language for :1NF relational databases. Information Systems, 12(1):99{114, 1987. [39] M. A. Roth, H. F. Korth, and A. Silberschatz. Extended algebra and calculus for nested relational databases. ACM TODS, 13(4):389{417, 1988. [40] D. Srivastava, R. Ramakrishnan, D. Srivastava, and S. Sudarshan. Coral++: Adding object-orientation to a logic database language. In Proceedings of the International Conference on Very Large Data Bases, pages 158{170, Dublin, Ireland, 1993. Morgan Kaufmann Publishers, Inc. [41] J.D. Ullman. Principles of Database and Knowledge-Base Systems, volume 2. Computer Science Press, 1989. [42] J. Vahani, K. Ramamohanarao, K. Kemp, D. B. Somogyi, and P. J. Stucky. Design overview of the Aditi deductive database system. In Proceedings of the International Conference on Data Engineering, pages 240{247, Kobe, Japan, 1991. IEEE Computer Society. [30] M. Liu. Storing graphic data in databases. In H. R. Arabnia, editor, Proc. Intl. Conf. on Image Science, Systems, and Technology (CISST '97), pages 197{206, Las Vegas, USA, June 30-July 3 1997. CSREA Press. [31] D. Maier. A logic for objects. Technical Report CS/E-86-012, Oregon Graduate Center, Beaverton, Oregon, 1986. [32] W. Y. Mok, Y. NG, and D. W. Embley. A normal form for precisely charaterizing redundancy in nested relations. ACM TODS, 21(1):77{106, 1996. [33] K. Morris, J. D. Ullman, , and A. V. Gelder. Design overview of the Nail! system. In Proceedings of the International Conference on Logic Programming, pages 554{568, London, England, 1986. MIT Press. [34] Shamim Naqvi and Shalom Tsur. A Logical Language for Data and Knowledge Bases. Computer Science Press, 1989. [35] Z. Meral Ozsoyogly and Li-Yan Yuan. A new normal form for nested relations. ACM Trans. on Database Systems, 12(1):111{136, 1987. [36] R. Ramakrishnan, D. Srivastava, and S. Sudarshan. CORAL: Control, relations and logic. In Proceedings of the International Conference on Very Large Data Bases, pages 238{250, Vancouver, British Columbia, Canada, 1992. Morgan Kaufmann Publishers, Inc. [37] R. Reiter. Towards a logical reconstruction of relational database theory. In M.L. Brodie, J. Mylopoulos, and J.W. Schmidt, editors, On Conceptual Modelling, pages 191{233. Springer-Verlag, 1984. 10