<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Inter Model Data Exchange of Type Information via a Common Type Hierarchy</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Andrew</forename><surname>Smith</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Dept. Computing</orgName>
								<orgName type="institution">Imperial College London</orgName>
								<address>
									<postCode>SW7 2AZ</postCode>
									<settlement>London</settlement>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Peter</forename><surname>Mcbrien</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Dept. Computing</orgName>
								<orgName type="institution">Imperial College London</orgName>
								<address>
									<postCode>SW7 2AZ</postCode>
									<settlement>London</settlement>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Inter Model Data Exchange of Type Information via a Common Type Hierarchy</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">9F09F54AA18DC2A693D906CA44E64FC7</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T09:53+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>data exchange</term>
					<term>model management</term>
					<term>data modelling</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Data exchange between heterogeneous schemas is a difficult problem that becomes more acute if the source and target schemas are from different data models. The data type of the objects to be exchanged can be useful information that should be exploited to help the data exchange process. So far little has been done to take advantage of this in inter model data exchange. Using a common data model has been shown to be effective in data exchange in general. This work aims to show how the common data model approach can be useful specifically in exchanging type information by use of a common type hierarchy.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>Fagin et al. define data exchange as 'the problem of taking data structured under a source schema and creating an instance of a target schema that reflects the source data as accurately as possible' <ref type="bibr" target="#b0">[1]</ref>. Data exchange may occur within a single data model, for example when building a relational data warehouse from a number of relational databases. However, it is often necessary to perform inter model data exchange in which two or more different data models are involved, such as when XML is used as data exchange format between a number of databases, which may use relational, XML, or other models for their internal storage of data.</p><p>One of the most challenging aspects of data exchange is how to transform constraints on the source schema to the target schema. This is particularly difficult if the source and target schemas come from different data models. Type information forms part of these constraints <ref type="bibr" target="#b1">[2]</ref>. The inter model transformation of integrity constraints, like primary and foreign keys, has been investigated <ref type="bibr" target="#b2">[3,</ref><ref type="bibr" target="#b3">4]</ref> and data types have received attention in the field of database programming languages <ref type="bibr" target="#b1">[2]</ref>, but little has been written about how simple types, i.e. integer, float, string etc., should be transformed between models in a data exchange environment.</p><p>The solution we present is a graph based logical type hierarchy that can represent the data types of multiple data models and that links similar data types from different models by defining bi-directional mappings from the high level data types to a common, extensible hierarchy of data types. Cardelli <ref type="bibr" target="#b4">[5]</ref> points out that the purpose of type systems is to prevent execution errors in the running of a program. We present a system that attempts to prevent data errors during data exchange.</p><p>The contributions this paper makes are as follows:</p><p>-Offer a way of improving the expressiveness and safety of inter model transformations in a data exchange environment by adding type information. -Provide a way of transforming data between schemas whose data types support different values. -Show when transformations are illegal, when they need to be checked for data errors and when they do not, based on the data types of the source and target constructs.</p><p>The rest of the paper is organised as follows. Section 2 provides motivation by describing some of the difficulties inherent in data type exchange. Section 3 describes the formal definition of our type system. Section 4 introduces the AutoMed automatic mediation system which we have used to test our approach. Section 5 describes how the new type system can be added to AutoMed along with the definition of a number of operators that can be applied to the data types of objects in AutoMed. Section 6 describes a data exchange scenario in AutoMed using the new type system. Section 7 describes some other approaches to transformation of data types in a data exchange system. Finally some conclusions are drawn and some of our on-going work is described.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Motivation</head><p>In an inter model data exchange system with a typed target schema it is necessary to transform the data type of source schema objects to the target schema. Current solutions make use of simple one to one matching between data types in different models <ref type="bibr" target="#b5">[6,</ref><ref type="bibr" target="#b6">7]</ref>. This approach can lead to some problems:</p><p>-The data type of the source object may allow a greater range of values than that of the target object. This could lead to run-time errors when the materialised target schema is populated with data from the source schema. -Types representing an identical concept may support a different range of values. For example, a boolean in one data modelling language may represent true as 1 while another may represent it as T. Again populating the target schema would cause errors. Some way of mapping the data values between the source and target is required.</p><p>Our solution is to represent the data types in a data exchange system as a directed acyclic graph (DAG) and to define a number of operations on the graph that can be used to overcome the problems described above. Hierarchies exist in some well known type systems, for example, Figure <ref type="figure" target="#fig_0">1</ref> is a portion of the XML Schema <ref type="bibr" target="#b7">[8]</ref> type hierarchy. However, for data exchange purposes, the familiar tree hierarchy of Figure <ref type="figure" target="#fig_0">1</ref> has several short comings due to the hierarchy not fully modelling the domain of data values in XML. In particular:</p><p>-Figure <ref type="figure" target="#fig_0">1</ref> does not distinguish between types which are disjoint in their extent, such as positiveInteger (representing all positive integer values) and negativeInteger (representing all negative integer values), and those which overlap, such as int (representing −2 31 ..2 31 − 1) and unsignedInt (representing 0..2 32 − 1).</p><p>In data exchange, a mapping between source and target objects where the types are disjoint should be ruled illegal, unless an explicit conversion has been defined, but a mapping between objects that overlap should be allowed, with runtime range checking. -Figure <ref type="figure" target="#fig_0">1</ref> fails to identify all isa associations in the hierarchy, shown as dashed lines in the figure <ref type="figure">.</ref> For example, all unsignedShort values (which are in the range 0..  A particular problem in data exchange is found when transferring between different type systems. Figure <ref type="figure">2</ref> shows a portion of a type hierarchy built for Postgres, showing some of the built-in types, and following the built-in casting rules, giving some isa relationships. When translating between the types of XML and Postgres the type systems need to be unified. Two difficulties arise from the fact that the modelling of the type systems might be quite different: Hence in the following sections we introduce our own definition of a type hierarchy that is suited to data exchange applications. In particular, it builds hierarchies solely on the range of data values a type may take. We then demonstrate how mapping rules between schemas in different modelling languages may be made type safe.</p><formula xml:id="formula_0">DISWEB</formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Data Exchange Type Hierarchy</head><p>To facilitate the precise representation of types in a data exchange environment, we introduce in Definition 1 a logical type hierarchy to be used to describe the types of a single or collection data modelling languages in a manner that allows us to address the problems discussed in the previous section. We will show that this type hierarchy can also be used to capture some semantics of types that are specific to a particular schema.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Definition 1. Type Hierarchy</head><p>A type hierarchy T H x is a tuple T ypes x , Ext x , t = x , ≺ x , ∩ x , M apping x where:</p><p>-A finite set of type names T ypes x . These will make up the nodes of the graph. -An Ext x function that returns a subset of the set of all possible data values anyT ype x of the hierarchy that is consistent with a type:</p><formula xml:id="formula_1">t ∈ T ypes x → Ext x (t) ⊆ Ext x (anyT ype x )</formula><p>The type anyT ype x represents the set of data values that a particular language (or collection of languages) may handle, and has the property that Ext x (anyT ype x ) ⊆ C where C is the set of all data values that may be handled by the data exchange system. -An equality relation,</p><formula xml:id="formula_2">t = x , such that for t, t ∈ T ypes x t t = x t ⇐⇒ Ext x (t) = Ext x (t ) -A partial ordering relation ≺ x , such that for t, t ∈ T ypes x t ≺ x t ⇐⇒ Ext x (t) ⊂ Ext x (t )</formula><p>When all types t, t ∈ T ypes x that have t t = x t are treated as a single node, the ≺ x relation builds the types into a connected directed acyclic graph. t = x and ≺ x together make up the edges of the graph.</p><formula xml:id="formula_3">-A disjoint operator, ∩ x , such that for t, t ∈ T ypes x t ∩ x t ⇐⇒ Ext x (t) ∩ Ext x (t ) = φ.</formula><p>This implies there is no pathway from t to t in the graph and so we cannot cast between t and t . If t ∩ x t then any subtype of t will also be disjoint from t . -A set M apping x of mapping tables t a , t b , { s 1 a , s 1 b , . . . , s n a , s n b } , where t a , t b ∈ T ypes x , s 1 a , . . . , s n a are subsets of Ext(t a ) and are disjoint. Similarly s 1 b , . . . , s n b are subsets of Ext(t b ) and are disjoint. We overload M apping x to be used as a function with the following definition:</p><formula xml:id="formula_4">M apping x (t a , t b , v a ) = First(s n b ) | t a , t b , map ∈ M apping x ∧ s n a , s n b ∈ map ∧ v a ∈ s n a M apping −1 x (t a , t b , v a ) = First(s n b ) | t b , t a , map ∈ M apping x ∧ s n b , s n a ∈ map ∧ v a ∈ s n a</formula><p>where First returns the first element of a set according to a sort order that is fixed for the system. We use M apping x (type a , type b ) to denote the specific mapping table that maps type a to type b .</p><p>Examples 1 and 2 illustrate the values for the type hierarchy for the XML and Postgres type models.</p><p>Example 1. The type hierarchy for the XML Schema data modelling language, T H xml , can be derived from Figure <ref type="figure" target="#fig_0">1</ref>  </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">The Common Type Hierarchy</head><p>If the source and target schemas are defined in different data modelling languages we need a way of linking the type hierarchy defined for the source model, the source type hierarchy, to that defined for the target model, the target type hierarchy. To do this we introduce the extensible common type hierarchy (CTH). Using the common hierarchy as an intermediary means that we only need to create one set of associations between the high level data types of a given model and those of the CTH. We do not need to define new associations each time we are faced with a new target model.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Definition 2. Common type hierarchy</head><formula xml:id="formula_5">T ypes c = {anyT ype c , string c , char c , integer c , short c , f loat c , real c , boolean c } Ext c = {boolean c → {true, f alse}, integer c → { − 2 31 , . . . , 2 31 − 1}, short c → { − 32768, . . . , 32767}, . . . } t = c = {} ≺ c = {short c ≺ integer c , integer c ≺ anyT ype c , real c ≺ f loat c , f loat c ≺ anyT ype c , char c ≺ string c , string c ≺ anyT ype c , boolean c ≺ anyT ype c } ∩ c = {integer c ∩ boolean c , integer c ∩ f loat c , . . . } M apping c = {}</formula><p>During an inter model data exchange the source and target type hierarchies will be merged with the CTH to form an inter model type hierarchy. Definition 3 gives a procedure for building such an inter model type hierarchy T H xc from a data model's type hierarchy T H x , and existing inter model type hierarchy T H im , and a (possibly extended) CTH T H c .</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Definition 3. Inter model type hierarchy</head><formula xml:id="formula_6">Merge(T H x ,T H im ,T H c ,CM xc ) T ypes xc := T ypes x ∪ T ypes im Ext xc := Ext x ∪ Ext im ∩ xc := ∩ x ∪ ∩ im ≺ xc := ≺ x ∪ ≺ im t = xc := t = x ∪ t = im M apping xc := M apping x ∪ M apping im ∪ CM xc for each t x ∈ T ypes x t xc := anyT ype c for each t c ∈ T ypes c if Ext(t x ) ⊆ Ext(t c ) ∧ Ext(t c ) ⊆ Ext(t xc ) then t xc := t c endif end if Ext(t x ) ⊂ Ext(t xc ) t c := NewType(t x ) T ypes c := T ypes c ∪ {t c } ≺ c := ≺ c ∪{t c t xc } t xc = t c for each t c ∈ T ypes c if Ext(t c ) ∩Ext(t c ) then ∩ c := ∩ c ∪ {t c ∩ t c } endif end end t = xc := t = xc ∪ {t x t = xc t xc } end return T ypes xc , Ext xc , ∩ xc , t = xc , ≺ xc , M apping xc</formula><p>The function NewType(t) generates a new type t such that Ext(t ) = Ext(t).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Example 4. Constructing an inter model type hierarchy</head><p>Assume that XML Schema is our source data modelling language, Postgres is our target modelling language and we use the CTH in Definition 2. We will also assume the following reduced type hierarchies for XML and Postgres:</p><p>T </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Reducing constraint checking</head><p>The inter model type hierarchy described above can help us decide whether or not to add constraints. For example short xml and smallint pg are both equivalent to short c . We can say with confidence that any value from a construct of type short xml can be stored in a construct of type smallint pg . If we later expanded our system to include schemas from Microsoft SQL Server and discover that smallint ms also maps to short c we would know that values from all three modelling languages could be safely interchanged without checking.</p><p>This method can also highlight when checking is needed. Any time it is necessary to move down the merged inter model hierarchy to transform from one high level type to another we know that checking is necessary. For example assume we have an XML source schema that contains an element of type integer xml , equivalent to integer c and a target of a Postgres column of type smallint pg , equivalent to short c . We know from Definition 2 that short c ≺ integer c . To get from integer xml to smallint pg we need to go via integer c and then down the hierarchy to short c . The checking is necessary here because we know from the definition that Ext(integer c ) ⊃ Ext(short c ).</p><p>It may be necessary to find a common ancestor in the merged inter model hierarchy to be able to move between certain source and target data types.</p><p>In Example 4 we added negativeInteger c to the hierarchy. To transform from negativeInteger to short c we need to go via a type in the merged hierarchy that is an ancestor of both types, in this case integer c . If no such ancestor, other than the root node anyT ype c , can be found the type transformation is invalid. As with the previous example, the step from integer c to short c is down the hierarchy so a constraint is generated.</p><p>Finally we can identify illegal castings. If our pathway from source to target includes data types t and t such that t ∩ t then the cast is illegal from Definition 1.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">AutoMed</head><p>AutoMed <ref type="bibr" target="#b9">[10]</ref> is a data integration and exchange system developed as a joint project between Imperial College London and Birkbeck College. It has been used successfully for data integration of schemas from a number of different data models including both XML and relational schemas.</p><p>AutoMed handles multiple data models defining the constructs of a higher level modelling language such as the relational model or XML in a lower level hypergraph data model (HDM) <ref type="bibr" target="#b10">[11,</ref><ref type="bibr" target="#b11">12]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Definition 4. HDM Schema</head><p>Given a set of N ames that we may use for modelling the real world, an HDM schema, S, is a triple N odes, Edges, Cons where: </p><formula xml:id="formula_7">-N odes ⊆ { n n | n n ∈ N ames} i.e. N</formula><formula xml:id="formula_8">) | c ∈ F uncs ∧ s 1 ∈ Schemes ∧ . . . ∧ s n ∈ Schemes} i.e.</formula><p>Cons is a set of boolean-valued functions (i.e. constraints) whose variables are members of Schemes and where the set of functions F uncs forms the HDM constraint language.</p><p>The extent of a node or edge is returned by the function Ext S,I where I is a specific instance of the schema S. Thus Ext S,I ( n ) returns the values associated with node n .</p><p>As detailed in <ref type="bibr" target="#b10">[11,</ref><ref type="bibr" target="#b11">12]</ref>, the HDM may be used to model a wide range of higher level modelling languages, and we develop the techniques in <ref type="bibr" target="#b11">[12]</ref> to handle types in translating between one higher level modelling language and another by using the HDM as a common data model (CDM).</p><p>Using the simple HDM constructs defined above, the extensional constructs of higher level modelling languages can be defined, based on the HDM. In <ref type="bibr" target="#b12">[13]</ref>,</p><p>DISWEB'06 higher level modelling language constructs were classified into (1) nodal constructs, which can exist independently, and map to nodes in the HDM, (2) linknodal constructs, which must be attached to other constructs, but have some additional data, which map to a node and an edge in the HDM, and (3) linking constructs, which associate data values in existing constructs, and map onto edges in the HDM. For example, in an ER model, entities are nodal constructs, attributes are link-nodal, and relationships linking constructs. Once the constructs of the new modelling language have been defined in the HDM, we can define transformations that allow us to add, delete and rename these constructs.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1">Data Exchange in AutoMed</head><p>In AutoMed, data exchange is done in two phases: first the transformation pathways are set up, and second the data values are transformed using those pathways. This is roughly analogous to compile and run time for a conventional program. Setting up the pathways is a static operation whose complexity is linear in the number of constructs to be mapped. It can be done before data from the data source is imported into the system. The complexity of transforming the data values during run-time depends on the data involved and is less easy to quantify.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2">Example of Data Exchange without Type Information</head><p>Figures <ref type="figure" target="#fig_1">3 and 4</ref> show two schemas modeling the same Universe of Discourse (UoD), namely account debits. We wish to transform the XML Schema in Figure <ref type="figure" target="#fig_1">3</ref> in such a way that we can exchange data between it and the SQL table in Figure <ref type="figure">4</ref>. On the face of it the transformation is very simple. The values in the complete element in the XML schema will be added to those in the complete column in the relational table, and those in the cash element will be added to the cashIn column. However, this example highlights some problems we may face if we ignore type information when transferring data between XML and SQL.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>CREATE TABLE money ( cashIn smallint, complete boolean )</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Fig. 4. Postgres definition of table money</head><p>The XML Schema element cash with type negativeInteger can contain any negative integer whereas the largest negative number the Postgres column cashIn with type smallint is -32678. If the XML file had a value less than -32678 in it, attempting to put that into the Postgres table would cause an error. Similarly if we try to put the boolean value 0 from the complete element into the boolean column complete the operation will fail, since there are XML boolean values that cannot be stored in a Postgres boolean column and we have not specified how to map the XML boolean values into Postgres. These transformations are not type safe.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Adding the Type System to AutoMed</head><p>To add types to the AutoMed system, we extend the Definition 4 by adding a type hierarchy T H = T ypes, Ext, t =, ≺, ∩, M apping from Definition 1 to make a typed HDM schema be a tuple N odes, Edges, Constraints, T H . The scheme of each node will have an extra component, t ∈ T ypes added, making the scheme of a node be n, t The extent of a node can now be defined as a subset of the values represented by the node's type so for x ∈ n, t → x ∈ Ext(t), i.e. n, t ∈ Ext(t). Note that edges connect other nodes and edges, and therefore their type can always be inferred from the base nodes they connect.</p><p>The primitive node operations described in <ref type="bibr" target="#b10">[11,</ref><ref type="bibr" target="#b11">12]</ref> are modified and expanded on to incorporate the new type information as follows.</p><p>1. A new operation getNodeType(q) returns the type, t, of a query q.</p><p>2. The primitive transformations add and delete are adapted slightly:</p><p>-addNode( n, t , q) returns a new schema by adding a node n of type t to the schema, where getNodeType(q) t = t. The extent of the node is given by the value of the IQL (Intermediate Query Language) <ref type="bibr" target="#b13">[14]</ref> query q.</p><p>-deleteNode( n, t , q) returns a new schema by deleting a node from the schema, where the value of the node may be recovered from q, and getNodeType(q</p><formula xml:id="formula_9">) t = t</formula><p>It may be necessary to change the data type of a node during a transformation. We present two new primitive operations to allow this. These changes are done on the inter model type hierarchy.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>DISWEB'06</head><p>Definition 5. changeNodeType( n, t old , n, t new ) Condition: Ext(t old ) ∩ Ext(t new ) = φ, returns a new schema which differs only in that node n has a different type. If t old ≺ t new this operation will generate the following constraint used during query processing: ∀ x ∈ n, t old .x ∈ Ext(t new ). Definition 6. convertNodeType( n, t old , n, t new , M apping im (t old , t new )) defines a bidirectional type conversion from a node of type t old to type t new . Each value in the extent of n, t old is mapped to a value in the extent of t new using the mapping tables and function from Definition 1. This section has shown how our formalism can be applied to the AutoMed system by the addition of primitive operations to manipulate the types of the nodes in a schema. However, the method in Section 3 could equally well be applied to other data exchange systems.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6">AutoMed Transformation with Data Types</head><p>We can now define an AutoMed transformation pathway between the XML and SQL schemas from Section 4.2 using the operators defined above. The pathway is shown in Example 5.</p><p>The initial data type of each node matches the data type of the corresponding data source object. For example if we add a node representing the Postgres column complete from Figure <ref type="figure">4</ref> with type boolean, a node complete, boolean pg will be created using the addNode operator.</p><p>The extents of the high level model types are the set of allowable values as defined by the data source. For example the extent of short xml as defined by the XML Schema standard in <ref type="bibr" target="#b8">[9]</ref> will be the integers from -32768 to 32767.</p><p>We In transformations 7 and 8 we convert the data types of the nodes from the HDM to the Postgres model. In 7 we change the type of complete pg , boolean c using the convertNodeType operation. We again use the mapping defined in Example 4, but this time the inverse of the function to map the values of the CTH boolean to the Postgres boolean. This overcomes the incompatibility of the XML Schema boolean and Postgres boolean data types and solves the second problem from the example in Section 4.2.</p><p>Finally in 8 we change the type of node cashIn pg , negativeInteger c using changeNodeType. smallint pg t =short c but short c ≺ negativeInteger c so we need to find a common ancestor. The common ancestor is integer c . Since we have to move down the hierarchy to get from integer c to short c the constraint: ∀x ∈ cash xml , negativeInteger xml .x ∈ Ext(smallint pg ) is generated from Definition 5. The transformation is legal because there are no disjoint pairs of types in the pathway. We can check the constraint as we transfer data into the SQL table and so be guaranteed that we will not get any errors from the database. This solves the first problem we had in the example in Section 4.2.</p><p>After transformations 1 -8 we have the nodes cashIn pg , smallint pg and complete pg , boolean pg , that correspond to the columns in the Postgres table in Figure <ref type="figure">4</ref>.</p><p>Using the type hierarchy has allowed us to identify a mapping between the XML and Postgres boolean data types. This was done automatically at compiletime, based on the types of the nodes involved. This could not have been done without using the type information. We have also identified a potential type casting problem that will need to be checked during run-time. Without the explicit identification of the latter problem a system would either need to check every transformation for type safety during the data value exchange or adopt a no-checking policy that could lead to unexpected problems.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="7">Related Work</head><p>A number of papers have shown how to transform schemas from one model to another, most commonly XML to relational <ref type="bibr" target="#b14">[15]</ref><ref type="bibr" target="#b15">[16]</ref><ref type="bibr" target="#b16">[17]</ref>. There are also systems that will exchange data between a number of different models <ref type="bibr" target="#b17">[18,</ref><ref type="bibr" target="#b11">12]</ref>. AutoMed falls into this category. Transforming integrity constraints from one model to another has also received some attention <ref type="bibr" target="#b2">[3]</ref>. There does not, however, seem to have been much written about exchanging primitive type information between different models and in particular manipulating that information during the transformation process. Some methods ignore the problem <ref type="bibr" target="#b14">[15,</ref><ref type="bibr" target="#b6">7]</ref> and make no explicit mention of how data type from one model are transformed into the other model. Rahm and Bernstein <ref type="bibr" target="#b5">[6]</ref> suggest using a special synonym table to match data types DISWEB'06 between different models to each other, an approach they adopt in Cupid <ref type="bibr" target="#b18">[19]</ref>. This method is effective when mapping between two specific models but does not scale well to a system like AutoMed that supports multiple models.</p><p>A number of systems provide support for data types. TSIMMIS <ref type="bibr" target="#b19">[20]</ref> allows data types to be stored as part of their Object-Exchange Model <ref type="bibr" target="#b20">[21]</ref> but there is no mechanism to manipulate the data types. WOL <ref type="bibr" target="#b21">[22]</ref> is another language for database transformations that stores type information, however, the language is only able to describe transformations in relational and object-relational databases, not inter model transformations. The Clio system <ref type="bibr" target="#b0">[1,</ref><ref type="bibr" target="#b22">23]</ref> defines a number of value based source-to-target dependencies that specify how and what source data should appear in the target. This data-centric approach does not make use of type information in the source schema to help map to the target schema. In ignoring type information these systems risk losing expressiveness during the transformations <ref type="bibr" target="#b1">[2]</ref> and allowing type-incompatible transformations to be written. We have shown that there are times when data types are significant and should not be ignored.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="8">Conclusions and Future Work</head><p>We have presented a method of improving the expressiveness of inter model data exchange between models that have constructs with associated data types. The method relies on converting the types from the source into a common type hierarchy capable of representing types from any data source, and from there into types from the target schema.</p><p>Types can be cast from one type to another and mappings can be defined between disjoint types. A formal definition of the type system has been provided and it has been shown how this can be included in the existing AutoMed system. An example inter model transformation with and without using the type system was presented to show the advantages of using the type system.</p><p>The type hierarchy described above has been implemented in AutoMed and has been used for data exchange from source schemas in a number of different models to an empty target schema in the relational and XML Schema models.</p><p>In the future we will extend the use of the mapping function to single model data exchange where for instance one Postgres database represents boolean values as single characters 't' and 'f' of type char(1) while another database may use a field of type boolean. We also hope to increase the efficiency of the method by defining direct transformation rules between certain well-known data models, bypassing the need to transform each data type into its HDM equivalent first.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Fig. 1 .</head><label>1</label><figDesc>Fig.1. A portion of the XML Schema type hierarchy<ref type="bibr" target="#b8">[9]</ref> </figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Fig. 3 .</head><label>3</label><figDesc>Fig. 3. XML Schema fragment 1</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>216 − 1) are a subset of int values and all values in XML can be represented as string.In data exchange, if the source object type is a subset of the target object type, then the values may be cast without runtime range checking, since the cast will never fail.</figDesc><table><row><cell></cell><cell>anyType</cell><cell></cell><cell></cell></row><row><cell>string</cell><cell></cell><cell></cell><cell></cell></row><row><cell></cell><cell>decimal</cell><cell>boolean</cell><cell></cell></row><row><cell></cell><cell>integer</cell><cell></cell><cell></cell></row><row><cell>nonPositive Integer</cell><cell></cell><cell>nonNegative Integer</cell><cell></cell></row><row><cell>negative Integer</cell><cell>long</cell><cell>unsigned Long</cell><cell>Integer positive</cell></row><row><cell></cell><cell>int</cell><cell>unsigned Int</cell><cell></cell></row><row><cell></cell><cell>short</cell><cell>unsigned Short</cell><cell></cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head></head><label></label><figDesc>xml = {short xml ≺ int xml , unsignedShort xml ≺ int xml , int xml ≺ long xml , long xml ≺ integer xml , integer xml ≺ string xml . . . } ∩ xml = {negativeInteger xml ∩ positiveInteger xml , . . . } M apping xml = {} The Postgres type hierarchy in Example 2 is quite different. The integer and varchar branches of the hierarchy are quite distinct, since converting an integer to a varchar in Postgres requires a mapping function to be used. Example 2. From the Postgres RDBMS type system illustrated in Figure 2, we derive the type hierarchy T H pg as: DISWEB'06 T ypes pg = {anyT ype pg , boolean pg , bool pg , integer pg , int pg , int4 pg , smallint pg , int2 pg , char(n) pg , varchar(n) pg , text pg . . . } Ext pg = {boolean pg → {'0','1','y','n','yes','no','t','f',true,false}, smallint pg → {-32768, . . . , 32767}, . . . } } ≺ pg = {smallint pg ≺ integer pg , integer pg ≺ bigint pg , bigint pg ≺ anyT ype, varchar(1) pg ≺ varchar(2) pg , char pg ≺ varchar pg , varchar pg ≺ text pg , text pg ≺ anyT ype pg , . . . } ∩ pg = {integer pg ∩ varchar pg , boolean pg ∩ varchar, . . . } M apping pg = {} Example 3. Type Mapping for Postgres During a single model data exchange, it might be found that the boolean type in one Postgres database should map to 0 or 1 of type smallint in another Postgres database. This can be achieved by including the mapping table shown below: M apping pg (boolean pg , smallint pg ) = { boolean pg , int2 pg ,</figDesc><table /><note>as follows: T ypes xml = {anyT ype xml , short xml , int xml , nonP ositiveInteger xml , negativeInteger xml , string xml , . . . } Ext xml = {boolean xml → {0, 1, true, f alse}, short xml → {-32768, . . . ,32767}, . . . } t = xml = {anyT ype xml t = string xml } ≺ t = pg = {boolean pg t = bool pg , int pg t = integer pg , int pg t = int4 pg , . . . { {'0','n','no','f',false}, {0} , {'1','y','yes','t',true}, {1} } }</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_3"><head></head><label></label><figDesc>H xml = {anyT ype xml , boolean xml , integer xml , negativeInteger xml }, {integer xml → { − 2 31 , . . . , 2 31 − 1}, negativeInteger xml → { − 2 31 , . . . , 0}, boolean xml → {0, 1, true, f alse}}, {}, {boolean xml anyT ype xml , integer xml anyT ype xml , negativeInteger xml integer xml }, {}, {} DISWEB'06 T H pg = {anyT ype pg , boolean pg , int4 pg , smallint pg }, {int4 pg → { − 2 31 , . . . , 2 31 − 1}, smallint pg → { − 32768, . . . , 32767}, boolean pg → {'0','1','y','n','yes','no','t','f',true,false}}, {}, {boolean pg anyT ype pg , int4 pg anyT ype pg , smallint pg int4 pg }, {boolean pg ∩ int4 pg }, {} Using Definition 3 we first extend the CTH with the XML types to get a inter model type hierarchy T H im T H im = Merge(T H xml , T H c , T H c , boolean xml , boolean c , { {0,false}, {false} , {1,true}, {true} } ) As a side effect, T H c has the following changes: T ypes c := T ypes c ∪ {negativeInteger c } := c ∪{negativeInteger c ≺ integer c } and the following inter model equalities are found in negativeInteger c , . . . } No additional disjoint relations are added. We can now add in the Postgres type hierarchy to expand the inter model hierarchy to T H im : T H im = Merge(T H pg , T H im , T H c , boolean pg , boolean c , { {'0','n','no','f',false}, {false} , {'1','y','yes','t',true}, {true} } ) No new changes to T H c occur, but the following additional inter model equalities are found in Note that the two mapping tables in T H im , M apping im (boolean xml , boolean c ) and M apping −1 im (boolean pg , boolean c ) allow us to map from a boolean in XML to a boolean Postgres.</figDesc><table /><note>c t = im : t = im = {integer xml t = integer c , negativeInteger xml t = t = im : t = im = {int4 pg t = integer c , smallint pg t = short c , . . . }</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_4"><head></head><label></label><figDesc>Edges is a set of edges in the graph where each edge is denoted by its name, together with the list of nodes/edges that the edge connects, enclosed in double chevron marks.-Cons ⊆ {c(s 1 , . . . , s n</figDesc><table /><note>odes is a set of nodes in the graph, each denoted by its name enclosed in double chevron marks. -Schemes = N odes ∪ Edges -Edges ⊆ { n e , s 1 , . . . , s n | n e ∈ N ames∪{ }∧s 1 ∈ Schemes∧. . .∧s n ∈ Schemes} i.e.</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_5"><head></head><label></label><figDesc>merge T H pg of Example 2 and T H xml of Example 1 with the CTH as shown in Example 4 to form T H im . Type safe transformation pathway 1 changeNodeType( cash xml , negativeInteger xml , cash xml , negativeInteger c ) 2 convertNodeType( complete xml , boolean xml , complete pg , boolean c , Mapping im (boolean xml , boolean c )) 3 addNode( cashIn pg , negativeInteger c , cash xml , negativeInteger c ) 4 addNode( complete pg , boolean c , complete xml , boolean c ) 5 deleteNode( complete xml , boolean c , complete pg , boolean c ) 6 deleteNode( cash xml , negativeInteger c , cashIn pg , negativeInteger c ) 7 convertNodeType( complete pg , boolean c , complete pg , boolean pg , Mapping im (boolean pg , boolean c )) 8 changeNodeType( cashIn pg , negativeInteger c , cashIn pg , smallint pg ) Two nodes cash xml , negativeInteger xml and complete xml , boolean xml representing the XML Schema elements along with their data types are created by the wrapping process. Before adding nodes to represent the Postgres columns we change the type of the XML node to its equivalent in the CTH 1 because we have negativeInteger xml t = negativeInteger c . 2 uses the mapping defined in Example 4.</figDesc><table><row><cell>Example 5.</cell></row></table></figure>
		</body>
		<back>
			<div type="annex">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>DISWEB'06</head></div>			</div>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Data exchange: Semantics and query answering</title>
		<author>
			<persName><forename type="first">R</forename><surname>Fagin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">G</forename><surname>Kolaitis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">J</forename><surname>Miller</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Popa</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ICDT</title>
				<imprint>
			<date type="published" when="2003">2003</date>
			<biblScope unit="page" from="207" to="224" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Types and persistence in database programming languages</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">P</forename><surname>Atkinson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Buneman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Comput. Surv</title>
		<imprint>
			<biblScope unit="volume">19</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="105" to="190" />
			<date type="published" when="1987">1987</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Propagating XML Constraints to Relations</title>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">B</forename><surname>Davidson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Fan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Hara</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Qin</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ICDE</title>
				<imprint>
			<date type="published" when="2003">2003</date>
			<biblScope unit="page" from="543" to="554" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Data integration under integrity constraints</title>
		<author>
			<persName><forename type="first">A</forename><surname>Calì</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Calvanese</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">D</forename><surname>Giacomo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Lenzerini</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Inf. Syst</title>
		<imprint>
			<biblScope unit="volume">29</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="147" to="163" />
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Type systems</title>
		<author>
			<persName><forename type="first">L</forename><surname>Cardelli</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Comput. Surv</title>
		<imprint>
			<biblScope unit="volume">28</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="263" to="264" />
			<date type="published" when="1996">1996</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">A survey of approaches to automatic schema matching</title>
		<author>
			<persName><forename type="first">E</forename><surname>Rahm</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">A</forename><surname>Bernstein</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">VLDB J</title>
		<imprint>
			<biblScope unit="volume">10</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="334" to="350" />
			<date type="published" when="2001">2001</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">A virtual XML database engine for relational databases</title>
		<author>
			<persName><forename type="first">C</forename><surname>Liu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Vincent</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">L</forename><surname>Guo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">XSYM</title>
		<imprint>
			<biblScope unit="volume">2003</biblScope>
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<author>
			<persName><forename type="first">S</forename><surname>Henry</surname></persName>
		</author>
		<author>
			<persName><surname>Thompson</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/xmlschema-1(2001" />
		<title level="m">XML Schema part 1: Structures</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<author>
			<persName><forename type="first">V</forename><surname>Paul</surname></persName>
		</author>
		<author>
			<persName><surname>Biron</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/xmlschema-2(2004" />
		<title level="m">XML Schema part 2: Datatypes second edition</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Au-toMed: A BAV Data Integration System for Heterogeneous Data Sources</title>
		<author>
			<persName><forename type="first">M</forename><surname>Boyd</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Kittivoravitkul</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Lazanitis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">J</forename><surname>Mcbrien</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Rizopoulos</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">CAiSE04</title>
				<imprint>
			<publisher>Springer Verlag</publisher>
			<date type="published" when="2004">2004</date>
			<biblScope unit="volume">3084</biblScope>
			<biblScope unit="page" from="82" to="97" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">A general formal framework for schema transformation</title>
		<author>
			<persName><forename type="first">P</forename><surname>Mcbrien</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Poulovassilis</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Data and Knowledge Engineering</title>
		<imprint>
			<biblScope unit="volume">28</biblScope>
			<biblScope unit="page" from="47" to="71" />
			<date type="published" when="1998">1998</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Comparing and transforming between data models via an intermediate hypergraph data model</title>
		<author>
			<persName><forename type="first">M</forename><surname>Boyd</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Mcbrien</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">J. Data Semantics IV</title>
		<imprint>
			<biblScope unit="page" from="69" to="109" />
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">A semantic approach to integrating XML and structured data sources</title>
		<author>
			<persName><forename type="first">P</forename><surname>Mcbrien</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Poulovassilis</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Advanced Information Systems Engineering</title>
				<imprint>
			<publisher>Springer Verlag</publisher>
			<date type="published" when="2001">2001</date>
			<biblScope unit="volume">2068</biblScope>
			<biblScope unit="page" from="330" to="345" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<monogr>
		<title level="m" type="main">A tutorial on the IQL query language</title>
		<author>
			<persName><forename type="first">A</forename><surname>Poulovassilis</surname></persName>
		</author>
		<ptr target="http://www.doc.ic.ac.uk/automed/" />
		<imprint>
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
	<note type="report_type">AutoMed Technical Report</note>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">From XML Schema to relations: A cost-based approach to XML storage</title>
		<author>
			<persName><forename type="first">Phil</forename><surname>Bohannon</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. of Intl. Conf. on Data Engineering (ICDE)</title>
				<meeting>of Intl. Conf. on Data Engineering (ICDE)</meeting>
		<imprint>
			<date type="published" when="2002">2002</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Silkroute: Trading between relations and XML</title>
		<author>
			<persName><forename type="first">M</forename><surname>Ferández</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><forename type="middle">C</forename><surname>Tan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Suciu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Ninth International World Wide Web Conference</title>
				<meeting>the Ninth International World Wide Web Conference</meeting>
		<imprint>
			<date type="published" when="2000">2000</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">A general techniques for querying XML documents using a relational database system</title>
		<author>
			<persName><forename type="first">Jayavel</forename><surname>Shanmugasundaram</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">SIGMOD Record</title>
		<imprint>
			<biblScope unit="volume">30</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="20" to="26" />
			<date type="published" when="2001">2001</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Data exchange: getting to the core</title>
		<author>
			<persName><forename type="first">R</forename><surname>Fagin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">G</forename><surname>Kolaitis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Popa</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Trans. Database Syst</title>
		<imprint>
			<biblScope unit="volume">30</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="174" to="210" />
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Generic schema matching with cupid</title>
		<author>
			<persName><forename type="first">J</forename><surname>Madhavan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">A</forename><surname>Bernstein</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Rahm</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">VLDB</title>
				<imprint>
			<date type="published" when="2001">2001</date>
			<biblScope unit="page" from="49" to="58" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">The tsimmis approach to mediation: Data models and languages</title>
		<author>
			<persName><forename type="first">H</forename><surname>Garcia-Molina</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Papakonstantinou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Quass</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Rajaraman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Sagiv</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">D</forename><surname>Ullman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Vassalos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Widom</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">J. Intell. Inf. Syst</title>
		<imprint>
			<biblScope unit="volume">8</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="117" to="132" />
			<date type="published" when="1997">1997</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">Object exchange across heterogeneous information sources</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Papakonstantinou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Garcia-Molina</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Widom</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">11th Conference on Data Engineering</title>
				<editor>
			<persName><forename type="first">P</forename><forename type="middle">S</forename><surname>Yu</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">A</forename><forename type="middle">L P</forename><surname>Chen</surname></persName>
		</editor>
		<meeting><address><addrLine>Taipei, Taiwan</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="1995">1995</date>
			<biblScope unit="page" from="251" to="260" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">WOL: A Language for Database Transformations and Constraints</title>
		<author>
			<persName><forename type="first">Susan</forename><surname>Davidson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Kosky</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the International Conference of Data Engineering</title>
				<meeting>the International Conference of Data Engineering</meeting>
		<imprint>
			<date type="published" when="1997">1997</date>
			<biblScope unit="page" from="55" to="65" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">Schema mapping as query discovery</title>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">J</forename><surname>Miller</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">M</forename><surname>Haas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">A</forename><surname>Hernández</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">VLDB</title>
				<imprint>
			<date type="published" when="2000">2000</date>
			<biblScope unit="page" from="77" to="88" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
