Graph Manipulations for the Network Oriented Management :

Application to a Telecommunication Network

M. Mainguenaud, J.L. Raffy, X.T. Simatic

FRANCE TELECOM - Institut National des Télécommunications

9 rue Charles Fourier F91011 Evry - France

+ 33 1 60 76 47 82 + 33 1 60 76 47 80 (fax)

Email : MAINGUENAUD@FRINT51.bitnet, RAFFY@FRINT51.bitnet, SIMATIC@FRINT51.bitnet

Abstract

This paper presents the manipulation operators defined for a data model allying the concepts of the graph theory and the object oriented concepts to manage multi-scaled networks. The main manipulations are the union, the weak and strong intersection, the difference and the graph traversal. The distinction between the weak and strong operators allows distinguishing the operations dealing with the structure of the graph and the operations dealing with the specific data since a basic data element (node, edge) may have several levels of definition (detail) within an application. We give as an example the network manipulations based on the new french telecommunication network.

1. INTRODUCTION

Transport networks (i.e. train, plane, water, telecommunication) may be modeled with the concepts of the graph theory. Early 1970, substantial work was done on the optimization of the graph operators. The underlying data model was only composed of nodes and edges. Graph theory applied to operations research represents an important theoretical base [13] for efficient data manipulation operators. Nevertheless the formalism of the data model has a lack of semantic power if we compare it to the semantic data models [8] or the object oriented data models [16].

The main advantage of a Relational Data Base Management System (RDBMS) is its ability to handle a huge amount of data but the data model [15] cannot represent the structured objects very easily. In order to improve the representative and expressive power several DBMS offer an object oriented data model. In fact object oriented concepts such as classification, aggregation, generalization/specialization can be applied to the alphanumerical information parts of the network but also to the topology of the network.

The aim of this paper is to present a processing model associated to the data model defined in [11]. This model allows to handle multi-scaled networks. As an example we use in this paper the new french telecommunication network. Section 2 presents a short recall of the data model; section 3 presents the concept of layers defined in this data model; sections 4 presents the operators; section 5 presents the application of these concepts to the management a telecommunication network and section 6 deals with the conclusion.

2. THE DATA MODEL

This section is a short recall of the data model. We assume the reader to be familiar with the concepts of the graph theory [3] and the object oriented paradigm [16]. A simple example introduces the basic concepts of the model : node, edge, network (similar to the notion of node, edge and graph in the graph theory), master-node, master-edge (which intuitively correspond to an abstraction of a sub-network). In this paper a network R is defined as R (NR, ER) where NR is a set of nodes and ER is a set of edges. Figure 4 represents the network with the maximum level of abstraction, TLi are the nodes of this network. Figure 3 is the same network with more details (decomposition of the TLi nodes). Figure 2 is the decomposition of the TL3 node and figure 1 is the network with the maximum logical decomposition.

An edge ek is a couple of nodes (ni, nj) i.e. : (P2, P3), P2 is the initial node, P3 is the end node. A master-edge is an abstraction of a sub-graph i.e. (C25, A22). A master-node is an abstraction of a sub-graph i.e. figure 4 for the graph of the figure 3. The sub-graph is called an associated network. A simple node (resp. a simple edge) is a node (resp. an edge) with no associated network. The nodes of an associated network are called the specialized nodes, the master-node, their generalized node.

Each basic data element (node, edge, network, master-node, master-edge) is identified by a logical OID (Object IDentifier). To take into account of the various levels of abstraction this OID is stratified using the following rules :

(1) A node belongs to a hierarchy of node. Let N be the depth of this hierarchy. The OID has N layers (from 1, the lower level of abstraction, to N, the higher level of abstraction). Let n (a node) belongs to the layer k. Two cases may happend :

* n is located at the top level of the abstraction (k = N). The first layer has the local OID - an integer- and the other layers are null (equal to 0) (i.e. TL1 figure 4).

* n is not located at the top level (1 <= k < N). The (N - k) first layers contain each local OID -an integer- of the generalized nodes. The layer k contains the local OID. The (k - 1) last layers are null (i.e. [[tau]]11 figure 3).

Remark : Let n be a node of the layer k ( k <= N - 2). The generalized node of the node n may not belong to the layer k+1. Therefore a shadow node is created with an arbitrary local OID at the level k+1.

(2) The OID of an edge is divided into three parts. The first part (resp. the second) contains the OID of the initial node (resp. end node) of the edge. These OID are built following the rule defined in (1). With the same philosophy an edge belongs to a hierarchy of edges. The layer is defined by the layers of the initial and end nodes. The third part contains the local OID of an edge (since several edges with the same initial and end nodes may exist).

To manipulate the structures of the data model several functions are defined. The function Si (ej) returns the OID of the initial node of a given edge ej. Se (ej), a similar function, returns the OID of the end node of a given edge ej. The function Simple_node (ni) is true whenever ni is a simple node (resp. Simple_edge). The function Master_node (ni) is true whenever ni is a master-node (resp. Master_edge).

3. THE LEVELS OF DEFINITION

The databases were introduced in order to avoid the redundancy of data. The concept of view allows various users to work on the same database with different levels of details. The data model is well suited to introduce the concept of views. In the following we consider a network as a part of a unique database. This section presents the basic manipulations defined on the logical OID of an object and the comparison between the level of detail of two objects.

3.1 The basic manipulations on the logical OID

This sub-section presents several functions used in this paper to manipulate the nodes and the edges. Each of them is presented in an informal and formal ways :

S returns the local OID for a given layer :

S : OID x N -> N

#S returns the set of relevant layers of an OID (i.e. oj) :

#S : OID -> {i / i [[propersubset]] N}

#S (oj) = { i / S (oj, i) != 0}

oid returns the OID of an object :

oid : Object -> OID

id is true iff the two OID (i.e. oi, oj) are equal :

id : OID x OID -> Boolean

id (oi, oj) = True <=> #S (oi) = #S (oj)

[[universal]] k [[propersubset]] #S(oi) S(oi, k) = S (oj, k)

inc is true iff the non-null data part of the first OID (i.e. oi) is a sub-part of the (non-null part of the second OID (i.e. oj) :

inc : OID x OID -> Boolean

inc (oi, oj) = True <=> #S (oj)   #S (oi)

[[universal]] k [[propersubset]] #S(oi) S(oi, k) = S (oj, k)

trunc transforms the OID (i.e. oi) into an OID (i.e. oj) with the n last layers equal to null (the total number of layers is N) :

trunc : OID x N -> OID

k [[propersubset]] #S (oi)

trunc (oi, k) = oj / [[universal]] l1 / l1 < k S (oj, l1) = 0

[[universal]] l2 / k <= l2 <= N S (oj, l2) = S (oi, l2)

[[omega]]+ returns all the edges "leaving" a given node (i.e. ni)

[[omega]]+ : OID -> {OID}

[[omega]]+ (oid (ni)) = { oid (ej) / Si (ej) = oid (ni)}

[[omega]]- returns all the edges "arriving at" a given node (i.e. ni) :

[[omega]]- : OID -> {OID}

[[omega]]- (oid (ni)) = { oid (ej) / Se (ej) = oid (ni)}

3.2 The level of an object

Three levels - IDentical, Look-Like and Hierarchical Look Like - are defined for an object - n for a node, ek : (ni, nj) for an edge -.

Two nodes (resp. edges) are identical IDn (resp. IDe) iff they have the same OID and they are simple nodes (resp. edges) :

IDn : Node x Node -> Boolean

IDn (ni, nj) = True <=> id (oid (ni), oid (nj) ) = True [[logicaland]]

Simple_node (ni) = Simple_node (nj) = True

IDe : Edge x Edge -> Boolean

IDe (ei, ej) = True <=> id (oid (ei), oid (ej) ) = True [[logicaland]]

Simple_edge (ei) = Simple_edge (ej) = True

Two nodes (resp. edges) are look-like LLn (resp. LLe) iff they have the same OID and they are not two simple nodes (resp. edges) :

LLn : Node x Node -> Boolean

LLn (ni, nj) = True <=> id (oid (ni), oid (nj)) = True [[logicaland]]

Simple_node (ni) = Simple_node(nj) = False

LLe : Edge x Edge -> Boolean

LL (ek1 : (na, nb), ek2 : (nc, nd)) = True <=> LL (na, nc) [[logicaland]] LL (nb, nd) [[logicaland]]

ek1 : (na, nb) [[logicaland]] ek2 : (nc, nd) [[logicaland]]

Simple_edge (ek1) = Simple_edge (ek2) = False

Two nodes (resp. edges) are hierarchically look like HLLn (resp. HLLe) iff they have a common generalized node (which may be equal to one of these nodes).

HLLn : Node x Node -> Boolean

HLLn (ni, nj) = True <=> [[existential]] a, b [[propersubset]] N /

trunc (oid (ni), a) = tronc (oid (nj), b)[1]

HLLe : Edge x Edge -> Boolean

HLLe (ek1 : (na, nb), ek2 (nc, nd)) = True <=> HLLn (na, nc) [[logicaland]] HLLn (nb, nd) [[logicaland]]

ek1 (na, nb) [[logicaland]] ek2 : (nc, nd)

Let the figures 1 and 3 be two views of the same initial network. The node P3 and [[Pi]]3 are identical, [[tau]]31 and T31 are look like, C32 and C34 are hierarchically look like.

Assn returns the nth associated network of a given master-node :

Assn : Node x N -> {Node} x {Edge}

Asse returns the associated network of a given master-edge :

Asse : Edge -> {Node} x {Edge}

4. THE DATA MANIPULATIONS

Let R (NR0, ER0), S (NS0, ES0) and T (NT, ET) be three networks. The operators are defined by :

T (NT, ET) = <operator> (R (NR0, ER0), S (NS0, ES0))

A naïve general case evaluation of an operator follows the step (1) to (4) :

(1) k <- 0, Tk <- R

(2) The construction of S'

ES' = {ei} ei is an arbitrary edge chosen in ESk

NS' = {nj / oid (nj) = Si (ei) } [[union]] {nj / oid (nj) = Se (ei)}

(3) The application of the basic rules of the operator with Tk (NTk, ETk) and S'(NS', ES') (for the nodes of NS' which have not already been studied then for the edge)

(4) The recursive application of the step (2) to (4) until ESk = [[emptyset]] with

ESk+1 = ESk - {ei}

NSk+1 = NSk - {ni [[propersubset]] NSk / [[omega]]+ (oid (ni)) = [[emptyset]] [[logicaland]] [[omega]]- (oid (ni)) = [[emptyset]]}

The basic manipulations are : the union, the intersection (weak and strong), the difference. The distinction between the weak and strong operators allows distinguishing the operations dealing with the structure of the graph and the operations dealing with specific data (or a specific level of detail i.e. IDn, IDe, LLn, LLe functions). This section presents the basic manipulations but do not detail the HLL level.

4.1 The union

The union of two independent networks is defined by :

[[universal]]ni [[propersubset]] NR, [[universal]] nj [[propersubset]] NS

IDn (ni, nj) = False [[logicaland]] LLn (ni, nj) = False [[logicaland]] HLLn (ni, nj) = False ->

[[union]] (R, S) = T (NT, ET) / NT = {nk} [[logicaland]] ET = [[emptyset]]

such as nk is a master-node of level N+1. Two associated networks are defined for this node : R and S

General formulation :

The general formulation of the union operator is :

Tk+1 (NTk+1, ETk+1) = [[union]] (Tk (NTk, ETk), S' (NS', ES'))

Case study :

Let ni [[propersubset]] NTk, nj [[propersubset]] NS', ei [[propersubset]] ETk, ej [[propersubset]] ES' :

IDn (ni, nj) = True -> NTk+1 = NTk

LLn (ni, nj) = True

Simple_node (ni) = Master_node (nj) = True -> NTk+1 = NTk - {ni} [[union]] {nj}

Master_node (ni) = Simple_node (nj) = True -> NTk+1 = NTk

Master_node (ni) = Master_node (nj) = True -> NTk+1 = NTk

Let di (resp. dj) be the number of the associated networks of ni (resp. nj) obtained by Assn (ni, k) (k = 1, ..., di) (resp. Assn (nj, m) (m = 1, ...,dj)). (Ndki, Edki) (resp. (Ndmj, Edmj)) is one of the associated networks of ni (resp. nj) . The basic treatment of (Ndmj, Edmj) is

[[universal]] m [[propersubset]] {1, ..., dj} / [[universal]] k [[propersubset]] {1, ..., di} na [[propersubset]] Ndki, nb [[propersubset]] Ndmj

IDn (na, nb) = False [[logicaland]] LLn (na, nb) = False [[logicaland]] HLLn (na, nb) = False ->

ni has a supplementary associated networks (Ndmj, Edmj)

[[universal]] m [[propersubset]] {1, ..., dj} / [[existential]] k [[propersubset]] {1, ..., di} [[existential]] na [[propersubset]] Ndki, [[existential]] nb [[propersubset]] Ndmj

IDn (na, nb) = True [[logicalor]] LLn (na, nb) = True [[logicalor]] HLLn (na, nb) = True ->

A recursive application of the union operator is performed on the associated networks (Ndki, Edki), (Ndmj, Edmj). A recursive application of the union operation may be performed on two associated networks A1 (Ndti, Edti), A2 (Ndsi, Edsi) (such as A1 != A2) if :

[[existential]] n1 [[propersubset]] Ndti / IDn (na, n1) [[logicalor]] LLn (na,n1) [[logicalor]] (HLLn (na,n1) [[logicaland]]

[[existential]] n2 [[propersubset]] Ndsi / IDn (nb, n2) [[logicalor]] LLn (nb, n2) [[logicalor]] HLLn (nb,n2)

This operation leads to the withdrawal of A2 as an associated network of ni after the recursive application of the union operator between A1 and A2.

[[universal]] ni [[propersubset]] NTk / IDn (ni, nj) = False [[logicaland]] LLn (ni, nj) = False [[logicaland]] HLLn (ni, nj) = False ->

NTk+1 = NTk [[union]] {nj}

IDe (ei, ej) = True -> ETk+1 = ETk

LLe (ei, ej) = True

Simple_edge (ei) = Master_edge (ej) = True -> ETk+1 = ETk - {ei} [[union]] {ej}

A recursive application of the union operator is performed with the associated network of ej - Asse (ej)- and the network defined by :

({nj / oid (nj) = Si (ei) [[logicalor]] oid (nj) = Se (ei) }, {ei})

Master_edge (ei) = Simple_edge (ej) = True -> ETk+1 = ETk

A recursive application of the union operator is performed with the associated network of ei - Asse (ei)-and the network defined by :

({ni / oid (ni) = Si (ej) [[logicalor]] oid (ni) = Se (ej)}, {ej})

Master_edge (ei) = Master_edge (ej) = True -> ETk+1 = ETk

A recursive application of the union operator is performed on the associated networks since the initial node and the end node belong to the two associated networks : [[union]] (Asse (ei), Asse (ej))

[[universal]] ei [[propersubset]] ETk IDe (ei, ej) = False [[logicaland]] LLe (ei, ej) = False [[logicaland]] HLLe (ei, ej) = False ->

ETk+1 = ETk [[union]] {ej}

4.2 The intersection

The intersection of two independent networks is defined by :

[[universal]] ni [[propersubset]] NR, [[universal]] nj [[propersubset]] Ns

IDn (ni, nj) = False [[logicaland]] LLn (ni, nj) = False [[logicaland]] HLLn (ni, nj) = False ->

[[intersection]] (R, S) = T (NT, ET) / NT = [[emptyset]] [[logicaland]] ET = [[emptyset]]

General formulation :

The general formulation of the intersection operator is

Tk+1 (NTk+1, ETk+1) = [[intersection]] (Tk (NTk, ETk), S' (NS', ES'))

First Step :

[[universal]] ni [[propersubset]] NTk /[[universal]] nj [[propersubset]] NS' :

IDn (ni, nj) = False [[logicaland]] LLn (ni, nj) = False [[logicaland]] HLLn (ni, nj) = False ->

NTk+1 = NTk - {ni}

ETk+1 = ETk - {ek / Si (ek) = oid (ni) } - {ek / Se (ek) = oid (ni)}

Case study :

Let ni [[propersubset]] NTk, nj [[propersubset]] NS', ei [[propersubset]] ETk, ej [[propersubset]] ES' :

Strong intersection :

IDn (ni, nj) = True -> NTk+1 = NTk

LLn (ni, nj) = True

Simple_node (ni) = Master_node (nj) = True -> NTk+1 = NTk - {ni}

ETk+1 = ETk - {ek / Si (ek) = oid (ni) } - {ek / Se (ek) = oid (ni)}

Master_node (ni) = Simple_node (nj) = True -> NTk+1 = NTk - {ni}

ETk+1 = ETk - {ek / Si (ek) = oid (ni) } - {ek / Se (ek) = oid (ni)}

Master_node (ni) = Master_node (nj) = True -> NTk+1 = NTk

A recursive application of the intersection operator is performed on the associated networks of ni and nj. If all the intersections are empty, ni becomes a simple node else the associated networks are the results of the strong intersection operator.

IDe (ei, ej) = True -> ETk+1 = ETk

LLe (ei, ej) = True

Simple_edge (ei) = Master_edge (ej) = True -> ETk+1 = ETk - {ei}

Master_edge (ei) = Simple_edge (ej) = True -> ETk+1 = ETk - {ei}

Master_edge (ei) = Master_edge (ej) = True -> ETk+1 = ETk

A recursive application of the strong intersection operator is performed on the associated networks of ei and ej. If the set of edges is empty ei becomes a simple edge else the associated network is the result of the strong intersection operator.

Weak intersection :

IDn (ni, nj) = True -> NTk+1 = NTk

LLn (ni, nj) = True

Simple_node (ni) = Master_node (nj) = True -> NTk+1 = NTk

Master_node (ni) = Simple_node (nj) = True -> NTk+1 = NTk - {ni} [[union]] {nj}

Master_node (ni) = Master_node (nj) = True -> NTk+1 = NTk

A recursive application of the weak intersection operator is performed on the associated networks. If all the intersection are empty, ni becomes a simple node else the associated networks are the results of the weak intersection operator.

IDe (ei, ej) = True -> ETk+1 = ETk

LLe (ei, ej) = True

Simple_edge (ei) = Master_edge (ej) = True -> ETk+1 = ETk

Master_edge (ei) = Simple_edge (ej) = True -> ETk+1 = ETk - {ei} [[union]] {ej}

Master_edge (ei) = Master_edge (ej) = True -> ETk+1 = ETk

A recursive application of the weak intersection operator is performed on the associated networks. If the set of edges is empty, ei becomes a simple edge else the associated network is the result of the weak intersection operator.

4.3 The difference

The difference of two independent networks :

[[universal]] ni [[propersubset]] NR, [[universal]] nj [[propersubset]] NS

IDn (ni, nj) = False [[logicaland]] LLn (ni, nj) = False [[logicaland]] HLLn (ni, nj) = False ->

- (R, S) = T (NT, ET) / NT = NR [[logicaland]] ET = ER

General formulation :

The general formulation of the difference operator is :

Tk+1 (NTk+1, ETk+1) = - (Tk (NTk, ETk), S' (NS', ES'))

Case study :

Let ni [[propersubset]] NTk, nj [[propersubset]] NS', ei [[propersubset]] ETk, ej [[propersubset]] ES' :

IDn (ni, nj) = True -> NTk+1 = NTk - {ni}

ETk+1 = ETk - {ek / Si (ek) = oid (ni)} - {ek / Se (ek) = oid (ni)}

LLn (ni, nj) = True -> NTk+1 = NTk - {ni}

ETk+1 = ETk - {ek / Si (ek) = oid (ni)} - {ek / Se (ek) = oid (ni)}

IDe (ei, ej) = True -> ETk+1 = ETk - {ei}

LLe (ei, ej) = True -> ETk+1 = ETk - {ei}

5. THE APPLICATION TO A TELECOMMUNICATION NETWORK :

This section presents in a first part the various queries addressed to a GIS for the management of a telecommunication network and the second part presents the resolution of such queries using the operators defined in the previous section.

5.1 The queries

The queries may be divided into two classes : (1) the queries about the alphanumerical data part of the networks and (2) the queries about the topology of the network.

About alphanumerical data part :

These data can be modeled using a classical data model. The queries defined on these data are fully application dependent. The ability to answer such queries depends on the representative power and the data manipulation language power of the DBMS in charge of managing the data. We do not consider this kind of queries in this paper.

About the topology of the network :

These queries are principally based on a graph traversal operator with or without constraints. Four queries may be considered as representative of the classical queries :

Query 1 : What are the paths joining C31 to C24 ?

Query 2 : What are the paths joining C32 to A21 without visiting specific nodes (i.e. with a bad quality of service, i.e. T32 and T21) ?

Query 3 : What are the paths joining C25 to C21 without using specific edges (i.e. with a charge greater than 70 %, i.e. C25-A22-ED1) ?

Query 4 : What are the common sub-paths between the paths C32-C14 and C38-C11 ?

5.2 The resolution

Evaluating a path in a graph between two nodes in the database context is equivalent to define a recursive query [1, 5]. Substential work has been done on this subject [6]. [10] presents the management of the basic queries with a flat data structure (relational-like structure) and [9] presents the management of the complex queries with a flat data structure with an Extended Relational DBMS. We do not detail [14] here the transitive closure algorithm since it involves several specific telecommunication routing rules. These specificities allow an evaluation with a mixture of the breath first and the depth first methods.

To solve query 1 to query 4, a combination of the operations presented in section 4 with the specific graph traversal operator is required.

Query 1 is solved using a graph traversal algorithm. Query 2 is solved with a recursive use of the union operator (breath first method) between the initial departure node and the arrival node. The stop is defined by the multi-level structuration of the OID. Each step of this recursive process guaranties by applying the difference operator the withdrawal of the specific nodes and the edges arriving at or leaving these nodes. Then the graph traversal operator can be applied. The resolution of the query 3 follows the same philosophy as the resolution of the query 2. Each step of the recursive process of the union operator guaranties by appling the difference operator the withdrawal of the specific edges. The resolution of the query 4 involves the strong intersection between the path C32-C14 and the path C38-C11.

6. CONCLUSION

This paper presents the basic data manipulation operators defined on a logical multi-scaled network. The operators are the union, the weak and strong intersection, the difference and the graph traversal. The difference between the weak and strong operators allows the distinction between the operations dealing with the structure of the graph and the operations dealing with the specific data since a basic data element (node, edge) may have several levels of definition (detail) within an application. The answer of a query is obtained by combination of these operators. Queries about the management of a telecommunication network give an example of such a resolution.

We are currently implementing a toy application using an object oriented Data Base Management System O2 [2]. The next step is to support this data processing model in the context of the CIGALES prototype [12, 9] and compare the object oriented philosophy and the Extended Relational DBMS philosophy [7] to manage network oriented data.

REFERENCES

1. Aho A., Ullman J.D., Universality of Data Retrieval Languages, ACM Principles Of Programming Languages, San Antonio, USA, January 1979

2. Bancilhon F. and al : The design and Implementation of O2, an Object Oriented Database System, Proc. of the 2nd Int. Work. on Object-Oriented Data Base Systems, K. Dittrich (Ed) Bad-Munster, FRG, September 1988

3. Berge C. : Graphes, Gauthier-Villars, 1983

4. Codd E.F., A Relational Model of Data for Large Shared Data Banks, Communications of the ACM, Vol 13, ndeg.6, 1970

5. Cruz I.F., Mendelzon A.O., Wood P.T., A Graphical Query Language supporting Recursion, ACM SIGMOD, San Fransisco, USA, May 27-29 1987

6. Eck (van) J.R., De Jong T. : Adapting Datastructures and Algorithms for Faster Transport Network Computations, 4th Spatial Data Handling Symp., Zurich, Switzerland, July 24-27 1990

7. Gardarin and all : Managing Complex Objects in an Extensible Relational DBMS, 15th Int. Conf. on Very Large Data Bases, Amsterdam, The Netherlands, August 22-25 1989

8. Hull R., King R. : Semantic Database Modelling : Surveys, Applications and Research Issues" ACM Computing Surveys, Vol 19, Sept 1987

9. Jourdas C., Mainguenaud M., An Extended relational DBMS to Manage Network Applications, European Geographical Information System 91, Brussels, Belgium, April 2-5 1991

10. Mainguenaud M., Is an Extended Relational DBMS Powerful Enough to Deal with Network Applications, European Geographical Information System 90, Amsterdam, The Netherlands, April 9-13 1990

11. Mainguenaud M., X.T. Simatic : A Data Model for Multi-Scaled Network, UGI-IGU Conference - GIS Multiple Representation and Multiple Use, Brno - Czechoslovakia, April 22-25 1991

12. Mainguenaud M., Portier M.A. : CIGALES : a Graphical Query Language for GIS, 4th Spatial Data Handling Symp., Zurich, Switzerland, July 24-27 1990

13. Nato Conference : The Application of Operations Research to Transport Problems, Sandefjord, Norway, 14-18 August 1972

14. Raffy J.L., Modélisation d'un Réseau de Télécommunication, Rapport de D.E.A. Université de Paris VI Jussieu, France, September 1990 (in french)

15. Ullman J. : Principles of Databases, Academic Press, 1980

16. Zdonic S., D. Maier (Eds), Readings in Object-Oriented Database System, Morgan Kauffmann, 1989