UFDC Home myUFDC Home  |   Help
<%BANNER%>

# Moving Balloon Algebra

## Material Information

Title: Moving Balloon Algebra Design, Implementation, and Database Integration of a Spatiotemporal Data Model for Historical and Predictive Moving Objects
Physical Description: 1 online resource (206 p.)
Language: english
Creator: Praing, Reasey
Publisher: University of Florida
Place of Publication: Gainesville, Fla.
Publication Date: 2008

## Subjects

Subjects / Keywords: balloon, database, evolution, historical, model, movement, moving, predicates, predictive, spatiotemporal
Computer and Information Science and Engineering -- Dissertations, Academic -- UF
Genre: Computer Engineering thesis, Ph.D.
bibliography   ( marcgt )
theses   ( marcgt )
government publication (state, provincial, terriorial, dependent)   ( marcgt )
born-digital   ( sobekcm )
Electronic Thesis or Dissertation

## Notes

Abstract: Spatiotemporal databases deal with geometries changing over time. Recently, moving objects like moving points and moving regions have been the focus of research. They represent time-dependent geometries that continuously change their location and/or extent and are interesting for many disciplines including the geosciences, geographical information science, moving objects databases, location-based services, robotics, and mobile computing. So far, a few moving object data models and query languages have been proposed. Each of them supports either exclusively historical movements relating to the past or exclusively predicted movements relating to the future. Thus, the query support for each model is limited by the type of supported movements. This presents a problem in modeling the dynamic nature of a moving object when both its known historical movement and its predicted future movement are desired to be simultaneously managed and made available for spatiotemporal operations and queries. Furthermore, current definitions of moving objects are too general and rather vague. It is unclear how a moving object is allowed to move or evolve through space and time. That is, the properties of movement (like its continuity) have not been precisely specified. It is also unclear how, in a database context, future predictions of a moving object can be modeled taking into account the inherent uncertainty of future evolution. Moreover, implementations of spatiotemporal data types and operations are rare and their integration into extensible database management systems has been so far nonexistent. In this research, we present a new type system and query language called Moving Balloon Algebra consisting of a moving object model that is able to represent the dynamic nature of moving objects while providing integrated and seamless support for both historical and predicted movements of moving objects. The goal is to go beyond existing moving object models by collectively integrating existing functionalities as well as introducing new ones. From a conceptual standpoint, this algebra provides a formal definition of novel spatiotemporal data types, operations, and predicates as well as introduces new types of spatiotemporal queries. Beside these conceptual contributions, an implementation of the algebra is provided in the form of a database-independent type system library, and its integration into a relational database management system is demonstrated.
General Note: In the series University of Florida Digital Collections.
General Note: Includes vita.
Bibliography: Includes bibliographical references.
Source of Description: Description based on online resource; title from PDF title page.
Source of Description: This bibliographic record is available under the Creative Commons CC0 public domain dedication. The University of Florida Libraries, as creator of this bibliographic record, has waived all rights to it worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.
Statement of Responsibility: by Reasey Praing.
Thesis: Thesis (Ph.D.)--University of Florida, 2008.
Electronic Access: RESTRICTED TO UF STUDENTS, STAFF, FACULTY, AND ON-CAMPUS USE UNTIL 2010-08-31

## Record Information

Source Institution: UFRGP
Rights Management: Applicable rights reserved.
Classification: lcc - LD1780 2008
System ID: UFE0022558:00001

## Material Information

Title: Moving Balloon Algebra Design, Implementation, and Database Integration of a Spatiotemporal Data Model for Historical and Predictive Moving Objects
Physical Description: 1 online resource (206 p.)
Language: english
Creator: Praing, Reasey
Publisher: University of Florida
Place of Publication: Gainesville, Fla.
Publication Date: 2008

## Subjects

Subjects / Keywords: balloon, database, evolution, historical, model, movement, moving, predicates, predictive, spatiotemporal
Computer and Information Science and Engineering -- Dissertations, Academic -- UF
Genre: Computer Engineering thesis, Ph.D.
bibliography   ( marcgt )
theses   ( marcgt )
government publication (state, provincial, terriorial, dependent)   ( marcgt )
born-digital   ( sobekcm )
Electronic Thesis or Dissertation

## Notes

Abstract: Spatiotemporal databases deal with geometries changing over time. Recently, moving objects like moving points and moving regions have been the focus of research. They represent time-dependent geometries that continuously change their location and/or extent and are interesting for many disciplines including the geosciences, geographical information science, moving objects databases, location-based services, robotics, and mobile computing. So far, a few moving object data models and query languages have been proposed. Each of them supports either exclusively historical movements relating to the past or exclusively predicted movements relating to the future. Thus, the query support for each model is limited by the type of supported movements. This presents a problem in modeling the dynamic nature of a moving object when both its known historical movement and its predicted future movement are desired to be simultaneously managed and made available for spatiotemporal operations and queries. Furthermore, current definitions of moving objects are too general and rather vague. It is unclear how a moving object is allowed to move or evolve through space and time. That is, the properties of movement (like its continuity) have not been precisely specified. It is also unclear how, in a database context, future predictions of a moving object can be modeled taking into account the inherent uncertainty of future evolution. Moreover, implementations of spatiotemporal data types and operations are rare and their integration into extensible database management systems has been so far nonexistent. In this research, we present a new type system and query language called Moving Balloon Algebra consisting of a moving object model that is able to represent the dynamic nature of moving objects while providing integrated and seamless support for both historical and predicted movements of moving objects. The goal is to go beyond existing moving object models by collectively integrating existing functionalities as well as introducing new ones. From a conceptual standpoint, this algebra provides a formal definition of novel spatiotemporal data types, operations, and predicates as well as introduces new types of spatiotemporal queries. Beside these conceptual contributions, an implementation of the algebra is provided in the form of a database-independent type system library, and its integration into a relational database management system is demonstrated.
General Note: In the series University of Florida Digital Collections.
General Note: Includes vita.
Bibliography: Includes bibliographical references.
Source of Description: Description based on online resource; title from PDF title page.
Source of Description: This bibliographic record is available under the Creative Commons CC0 public domain dedication. The University of Florida Libraries, as creator of this bibliographic record, has waived all rights to it worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.
Statement of Responsibility: by Reasey Praing.
Thesis: Thesis (Ph.D.)--University of Florida, 2008.
Electronic Access: RESTRICTED TO UF STUDENTS, STAFF, FACULTY, AND ON-CAMPUS USE UNTIL 2010-08-31

## Record Information

Source Institution: UFRGP
Rights Management: Applicable rights reserved.
Classification: lcc - LD1780 2008
System ID: UFE0022558:00001

Full Text
xml version 1.0 encoding UTF-8
REPORT xmlns http:www.fcla.edudlsmddaitss xmlns:xsi http:www.w3.org2001XMLSchema-instance xsi:schemaLocation http:www.fcla.edudlsmddaitssdaitssReport.xsd
INGEST IEID E20101107_AAAACS INGEST_TIME 2010-11-08T00:07:52Z PACKAGE UFE0022558_00001
AGREEMENT_INFO ACCOUNT UF PROJECT UFDC
FILES
FILE SIZE 8564 DFID F20101107_AABXHG ORIGIN DEPOSITOR PATH praing_r_Page_096thm.jpg GLOBAL false PRESERVATION BIT MESSAGE_DIGEST ALGORITHM MD5
SHA-1
ae14a9d65c0aa800501029cbbccff19b8d88781c
30356 F20101107_AABXGS praing_r_Page_088.QC.jpg
8bcc03d3ca821a43bfc8de498c5217f6
d377c3006a941d7021b1d944f21356470be9e2a8
107539 F20101107_AABVYK praing_r_Page_181.jpg
b3fde8b225bb68a41aa4f0f940b0477e
c8ddc7f7c4c36e587c615f441f95149eb75c360b
129105 F20101107_AABVXV praing_r_Page_165.jpg
0cbf76a6dcc1b64ed140c95414c5ace7
d6eed119523404740d188b3f7996a1f894b7700d
952909 F20101107_AABWEE praing_r_Page_142.jp2
baf9944a4df7f6d73870138fcd9ceba0
04e2ed127ea6ec51da38d8c545501e1e6b72a7a3
1051982 F20101107_AABWDQ praing_r_Page_128.jp2
a555c1eec022b375730c565a6eafe55c
75ae272d8cdfb5171ea70c47264ac20f1caa61dc
39533 F20101107_AABXHH praing_r_Page_097.QC.jpg
bc1624f5565b091e458cf8bef114eb57c0a63d2d
30112 F20101107_AABXGT praing_r_Page_089.QC.jpg
78dc761243de9195cceae304809c090f
9a7b30916a13fff8534fdcf0ccb6ec86f648ed66
119346 F20101107_AABVYL praing_r_Page_182.jpg
3c7220c7d4fc6c8f492a103e0f23b497
a46f22a624f3022f78f0384f0565fd3e01cbed34
114955 F20101107_AABVXW praing_r_Page_166.jpg
65aedc1a76d7d015763d13113d72880a
3d488f0c405150cf0de81609726274cd4a3627dd
1051964 F20101107_AABWEF praing_r_Page_143.jp2
98235384a88191bca7f914647c149092
a547053d8358d7efc9766b194d23f65da9e87f80
1051952 F20101107_AABWDR praing_r_Page_129.jp2
20cc54fed3f12ac9eb92e40b9502ecfd
60c096df5819e48f8a6a4f8d1f1c5f2f6d98b21f
9190 F20101107_AABXHI praing_r_Page_097thm.jpg
313f9cf8cf0c807140d19a034dd8dc28
8104819e30631bd39621a433df7a2fa4d2e96b55
7766 F20101107_AABXGU praing_r_Page_089thm.jpg
eee359aa9e0ccec7a58b3575e7b67704
05bb8bdfcb1f2d402f161429237e4efd07f37071
123835 F20101107_AABVYM praing_r_Page_184.jpg
8f30d9af64796ac2cddc44e0fb9eb993
130226 F20101107_AABVXX praing_r_Page_168.jpg
a44d671902bba08163dddcdf166b18f820c6c424
1051955 F20101107_AABWEG praing_r_Page_144.jp2
e6e380911a1be3c7087a0e2a338e62c7
1cc7d8cf3261677d646aac4488a182306767ec14
135500 F20101107_AABVZA praing_r_Page_201.jpg
779b697fedbffe2c5400e36b541b475e
c1ae3136e88a637a0bd8da147b5c9c74a4c656e5
1051976 F20101107_AABWDS praing_r_Page_130.jp2
6f50c9d75371e38bfc03de442a7bbcd7
3d2d7298561b5ddc7305b3f8d90c24bf504a64a7
35728 F20101107_AABXHJ praing_r_Page_098.QC.jpg
22c50f43f426ef72720a7b8c7635a4f0
940e4c280f36f97822f836bdc51bb441ee88f59c
28101 F20101107_AABXGV praing_r_Page_090.QC.jpg
81959 F20101107_AABVYN praing_r_Page_185.jpg
29d15a96c3e873099f146964c30ca452
1bc0b1c35c804bb0b2347338b10a0d941c2c36ed
125504 F20101107_AABVXY praing_r_Page_169.jpg
a7be5bddac50124b2c0e110ebdc0fac9
126a9d79a00396672063d07df9285fe300ef930a
1051979 F20101107_AABWEH praing_r_Page_145.jp2
b498f8e4cdb853b19b01210e97c1667c
e0041c984234942801e7fe6609d859644bd7d472
134285 F20101107_AABVZB praing_r_Page_202.jpg
851b82daa8152bd63e01f0c721a39e7a
364a41bc7f8fb3ab59c29c8fe3d7ab7f68407b92
F20101107_AABWDT praing_r_Page_131.jp2
c28c00d96587d7d2a81efd81eeb1ffd0
a7c81f04c497588d1d8bfe4b5b22c3d8e6e811cd
33355 F20101107_AABXHK praing_r_Page_099.QC.jpg
fe4caee8ac27ed7cf7c989f4001332ab
679ae76460ee7ee16bfb352d1e44f48092364377
7164 F20101107_AABXGW praing_r_Page_090thm.jpg
0141a39ec033bac948761b5c760f7144
79b542aa4ddbab9ef3b625eb24df054633a19885
120628 F20101107_AABVYO praing_r_Page_186.jpg
377642cb7a55d8a372ae2e1009acd44e
ca8defce595ab15f44daa1cb3bb569650f2a5158
111990 F20101107_AABVXZ praing_r_Page_170.jpg
7942c9419553b2471caaf5534f5eaa7e
e6b5a5cbf6b1d4946eff0eb499f0ed8e1f088bc9
1051983 F20101107_AABWEI praing_r_Page_146.jp2
aa4e54b4f18765e1c2468df251c59b717532c79f
131939 F20101107_AABVZC praing_r_Page_203.jpg
8f91ec0325445d82be6486052555cb33
be01ce62fd3eb81582b197d5b1a52615631f5352
1051968 F20101107_AABWDU praing_r_Page_132.jp2
418e2465129d506913754dddc47c5141
188abdbdb1432b34f197e149af298d90eab09032
7666 F20101107_AABXHL praing_r_Page_099thm.jpg
af446db8afc363560447e6127f3eda0b
49acf0aa2866cfeb731142ae50fddfebe1b14762
30143 F20101107_AABXGX praing_r_Page_091.QC.jpg
f27500f02511c332055c14b224272341
1051981 F20101107_AABWEJ praing_r_Page_147.jp2
d96c3b9245ce8c6a91f61204974fcc04a19fc462
147579 F20101107_AABVZD praing_r_Page_204.jpg
43d4ec422844eff8e4520293b8a09094
b75c86dab4ebbf0d51c03fa5b4ba6d5c239088c7
1051985 F20101107_AABWDV praing_r_Page_133.jp2
5c0286005f8def41e3540c2909d8f3e8
29da5b83feae4dff7bafb7f1736352ac65f02b05
38533 F20101107_AABXIA praing_r_Page_107.QC.jpg
5552ff0bf1c6ecc50063fe87353dff6e
7963ca2588ea4a8e5636fb9fabf16506d8d51424
33462 F20101107_AABXHM praing_r_Page_100.QC.jpg
4cc95f40154cb644af31e2ed507c6b75
8b0c5db700d229cffdf36b3071f923d35611f101
7412 F20101107_AABXGY praing_r_Page_091thm.jpg
711be05b1ede7e863386259626a4b52e
0acc20d5d1af678e845a50a22837d6f2b669e1a0
96630 F20101107_AABVYP praing_r_Page_187.jpg
cc508e0ce63e4e43f184a20f705aae3b
977ef36a7ba4f9a9f40cca70a9b3d63e0c997cea
984669 F20101107_AABWEK praing_r_Page_148.jp2
d6ecc2493ef2019e59a66a428f608c6f
39521 F20101107_AABVZE praing_r_Page_205.jpg
2591c42f2fe08076d205f667a1cbf910
1051962 F20101107_AABWDW praing_r_Page_134.jp2
41384 F20101107_AABXIB praing_r_Page_108.QC.jpg
db2bca55160f69133f4e59f7ab8ba84b
c56da3bdef79ef1c6afe8f232424ff1117269be6
8112 F20101107_AABXHN praing_r_Page_100thm.jpg
0841f28a0a1af24a3188a342c8079993
4da4c213c2750288950a6d2cd5ab0a4649df550e
33153 F20101107_AABXGZ praing_r_Page_092.QC.jpg
0f2b7b08c43cf219e8a70d47f80106b2
131430 F20101107_AABVYQ praing_r_Page_188.jpg
d8f56d28c4fc3eb1a6b26edbc4281861
93845ba3ef58d66e9cf88388a498a582a257b600
1002757 F20101107_AABWEL praing_r_Page_149.jp2
aafde325da4552bf6c9175e100f36392
dbed4f95fe9f19c0fc2d8446c9f8c17e1a8f3c73
84740 F20101107_AABVZF praing_r_Page_206.jpg
f81765541ce5f987b889b51dfb516749
915926 F20101107_AABWDX praing_r_Page_135.jp2
5912803ebe51d6996144fa268cc1f19f
72c3166dd98559d25b920fd0dfe8a560392ef3a5
9283 F20101107_AABXIC praing_r_Page_108thm.jpg
a443d4fb77fceac640950916562574fa
1001ba1d1196368346d36f29120956b2263b9dba
28709 F20101107_AABXHO praing_r_Page_101.QC.jpg
91c8110c2654e1e55dcd2d27e4c87487
1f7d3368d1be97a5391c305aed4acbfc10f9ce46
70042 F20101107_AABVYR praing_r_Page_189.jpg
aee2dd564f13702b9bc7114278bb0b35
9ac4f2202ddb8190de68deea6c30121ffb23c9a1
F20101107_AABWFA praing_r_Page_169.jp2
15df172703795cec0886fb43e283973a
fe37cff3d8e58039efc219b755137fd238dd694d
1051969 F20101107_AABWEM praing_r_Page_151.jp2
f1d74a50f7b7629b7ef4c355d714a7bd
138cf1df7b5a3458b792e19f7d81398582f687fa
302013 F20101107_AABVZG praing_r_Page_001.jp2
1855902259138773a54b82d8e74690a2
1051925 F20101107_AABWDY praing_r_Page_136.jp2
fb0be3a10dc2996eac0261f4b36759a2
5948897342d8f8c0f6c9714baa86a9358906f508
40351 F20101107_AABXID praing_r_Page_109.QC.jpg
7c83782b3b257c57a3fd2ccc0b4805a0
96b49e36a4824470c67f4335521c8f87428d78b7
6927 F20101107_AABXHP praing_r_Page_101thm.jpg
f173967ab51ac861175aac004ef30508
2d7a7e15e133fa77b3899813a0f9377db83ac9a9
117144 F20101107_AABVYS praing_r_Page_191.jpg
3d752a72ac6fb2cbffe8f06007c360d4
c1d2736f83d28474bf5570888a160be67d317c25
1051975 F20101107_AABWFB praing_r_Page_170.jp2
34d8ef66fd34d1ff0e578b2524d6c7c1
e63b13023235345809f12ac490bf36b75f2704fa
F20101107_AABWEN praing_r_Page_152.jp2
c17bff678a0df4a7200d9442a57ec026
caace91cb2c029cc3cf77ef151ee17a1fa3d77f4
25180 F20101107_AABVZH praing_r_Page_002.jp2
48b30e15fdc51a65fff90a18833dab58
a511fc926d172a1d99da8a1f551f148b9cf36db1
9009 F20101107_AABXIE praing_r_Page_109thm.jpg
0f50e68e36da6454c3d98c4623235409
28259 F20101107_AABXHQ praing_r_Page_102.QC.jpg
4baa1345c4f6eb7174180a74a77b1923
123152 F20101107_AABVYT praing_r_Page_192.jpg
5538136c145873c6bd13eed0f0da2e92
95187a280c5c67f08f97fc7446558b2d54031255
F20101107_AABWFC praing_r_Page_171.jp2
7dcbfc234c918117ba87651f77eefff7
7ce1db5648cabb905de90a50a240e9f47d2e7b76
753458 F20101107_AABWEO praing_r_Page_153.jp2
55fa9344c5e8854f85c140d67ede0221
0c3daaafe103202cca02b2b4c5590bdd91f0034b
73747 F20101107_AABVZI praing_r_Page_003.jp2
d2cff9c08f06b38e9ac215f2440a0a21
0454531bdbbae22d61ea05973a31a8174116d1de
1051957 F20101107_AABWDZ praing_r_Page_137.jp2
2ba3dfd9785de8f0a62f85ed61cc08a5
5ab7ba08ea535128934d9cbafd7af355d4b41ec3
40714 F20101107_AABXIF praing_r_Page_110.QC.jpg
9df5e49e0dce124b1cabeba2507c4cc0
45762bc061a2eb8070775c9dd6cb8842bd9ed4fa
6814 F20101107_AABXHR praing_r_Page_102thm.jpg
f1e9f2ab9fc8aaa4d9634f9a14ee3f99
7a3afc9e657c076570065a1911ca8e666001973e
119052 F20101107_AABVYU praing_r_Page_193.jpg
58a8799d92cfde65f558b15cbdcfa611
abcfc845ab2d8a6a7de641c5dc52021a80c92558
1051947 F20101107_AABWFD praing_r_Page_172.jp2
e97ee88349c9e882c12af933d831871b
78a9ae02457714912d8e8c055e137c5cb1c074a7
F20101107_AABWEP praing_r_Page_155.jp2
9d9a4ff48e75e308a8f40fd8f232c9d4
0d8f8f1ac325e2aceb7f8c11c3809003bfe499c4
228086 F20101107_AABVZJ praing_r_Page_004.jp2
9d6c408c0b312ce86fbc8aa06c8a861a
3a0bced6b2a54f37f12c72fca1b51dd5a4c6d30a
9354 F20101107_AABXIG praing_r_Page_110thm.jpg
89413806d074841f4f1e5a264d86a222
47f8fa280bc8e73bf8aefe53cd48103c5a792be2
32684 F20101107_AABXHS praing_r_Page_103.QC.jpg
56779d5d6f15237590c4f5b708af0f88
23df4f144d6ec850257521baa9ecbd04f8aaee4b
117734 F20101107_AABVYV praing_r_Page_194.jpg
2ec2de927fb41de28fe9b75f91a66466
d7881a6ccf7b6be1db100447aa5f710547d682d1
F20101107_AABWFE praing_r_Page_173.jp2
bb99662898b15f0e30fb5e5b9484b6fc
f848bca2c5831366bf808271ca682f687cc9496c
F20101107_AABWEQ praing_r_Page_157.jp2
8ec360828cba69ef6de8a1e7e58a8963
1875ccffb79b5cf0bae582f6f82ece2d816f5efb
F20101107_AABVZK praing_r_Page_005.jp2
b2fb97b154b46b40bcfd1822d1f91998
ffff5b6f935123fc39c1369684ae540b0e82fd28
39411 F20101107_AABXIH praing_r_Page_111.QC.jpg
dd05f92bdd8952da192fd134447647b2
b6eecf7c48daa691ae92c7f2ee5f57073cac6d2f
7777 F20101107_AABXHT praing_r_Page_103thm.jpg
641498c06213fd5a1564ae51a654a4e4
f00e5336801b50ca2320950d768550b9ca82b7e2
106854 F20101107_AABVYW praing_r_Page_196.jpg
4ff55271f72c8cf757c38a98fda689da
36a476ca0fb952407b64687f4e36bb63210f68dd
921080 F20101107_AABWFF praing_r_Page_174.jp2
cda8a4fda0515f658680d226830f0bfb
fafdc9f71b7c271b0ed935e9ed553707266da0e1
951343 F20101107_AABWER praing_r_Page_159.jp2
93800426c7b0b521fb950e46e563048dacfee7da
1051960 F20101107_AABVZL praing_r_Page_006.jp2
b9651c7c27b08c88f2324bee406c62ee
8a388df0ba7420b029f3b4b9a7b1dc9d461b8709
8870 F20101107_AABXII praing_r_Page_111thm.jpg
e154a9aa522b36846bd8095f860317a8
093bebdb23a9e8876e92f20b3794165b967efab8
36603 F20101107_AABXHU praing_r_Page_104.QC.jpg
6e0c34e39d4891083841526c2a0d2652
2f8cc8538d040c7a21d5ccd3d8ea1f2b9af157d2
1051972 F20101107_AABWFG praing_r_Page_175.jp2
da4da4bcffb6d12d0073c10ccf83585b
997b22e64ca05aa4152679e17e979bf4e6584f82
F20101107_AABWES praing_r_Page_160.jp2
14120dc3b1d294e035c55c112e70eda3
F20101107_AABVZM praing_r_Page_007.jp2
3567c0e6f4df8bcbefa4ab018e213dc4
0025fc3ea2641044ff02a59bb999f1ca7ecd804c
127035 F20101107_AABVYX praing_r_Page_197.jpg
59b8579127b592fb2a9f2ceda47d6894
9bc2f40732b19396676521e969bbd7e1fcb6ea3d
8391 F20101107_AABXIJ praing_r_Page_112thm.jpg
3a033e562c7818bb06073d8b736a02ec
e1e63883e131e620240332af1f42c376bbc38cdd
8734 F20101107_AABXHV praing_r_Page_104thm.jpg
F20101107_AABWFH praing_r_Page_176.jp2
b546e6d7ca5c288562e7ccec05e4ae751799c397
F20101107_AABWET praing_r_Page_161.jp2
62ac7fc035435635b9c2397d4e694eb8
2dd9a9aa9e3f9768303d55710854deac8e3e4b23
F20101107_AABVZN praing_r_Page_008.jp2
ecca8c9f0d107bd18c84f235956bc293
102204 F20101107_AABVYY praing_r_Page_198.jpg
b67375c66010cd6a0745454d8508d1b0
c44ffdd8e9619fa143d58449a0fb6f9a18735f48
37210 F20101107_AABXIK praing_r_Page_113.QC.jpg
f75cbcc812aeb9a645d0656c8ff32697
03eb8de8334f5f61daac7ef00fbfc50d8e1a780e
34768 F20101107_AABXHW praing_r_Page_105.QC.jpg
76d86f0b6d520412ff8d701d49068ccc
58e064d38943efb6c1b26f27fa0bfc607ed1f920
F20101107_AABWFI praing_r_Page_177.jp2
a37e1c01e951b64d34c6c0e9c65eaf48
5d78c3f3b9788217eed34700e06139a3728e063d
849342 F20101107_AABWEU praing_r_Page_162.jp2
842517baa8d453115e5cc25550f5ab13
F20101107_AABVZO praing_r_Page_009.jp2
19831262224698e7c953a06b311fdcd0
4b15e4df84c8b30af5982842d0cba93b91517f13
88619 F20101107_AABVYZ praing_r_Page_200.jpg
d0c456e0023f44cc55f85401af48370b
c3d90cacbdbef9e1f3ebefc995575683679197f0
8413 F20101107_AABXIL praing_r_Page_113thm.jpg
b62c1bf9dfa0656698f398590e73d8ab
d963c12f4291df6ddc82388f32d4b5dfb03cedcd
8483 F20101107_AABXHX praing_r_Page_105thm.jpg
246ae3cbd83c8db9a00d5bfa462708af
F20101107_AABWFJ praing_r_Page_178.jp2
450c8785a7043da3546afc9c98310a7d3a17bbc2
1051973 F20101107_AABWEV praing_r_Page_163.jp2
37398e31b2e5dfff44e89459c9899e58
e835d3324b56d78f0857eb94084df5985f000fe5
F20101107_AABVZP praing_r_Page_010.jp2
9234ddd6e96956874895dc8d8c5409d5
59849e4bd22685031a1935206098381b1ec6d9c6
9043 F20101107_AABXJA praing_r_Page_121thm.jpg
b571c4bbdbde3fdcded92c4059de7c37
41631 F20101107_AABXIM praing_r_Page_114.QC.jpg
4baabcf5676fa6ee7f4fd728c62f3cdf
e86a171f9b60d283d8ede6cf4fb146a64bab595c
40816 F20101107_AABXHY praing_r_Page_106.QC.jpg
34e2f7f2f6ee9029f2561c47ed2f2a20
05f4774289a5957ea519dc1858f62a58a531353d
1051984 F20101107_AABWFK praing_r_Page_179.jp2
268c2f10a0c3001d77f1c540d92f6257
2590912e53f158704e8d560c20417e7a9b6d63f1
1051980 F20101107_AABWEW praing_r_Page_164.jp2
073501014924847da8d44f4b9aae44a1
21272 F20101107_AABXJB praing_r_Page_122.QC.jpg
57c199003df6de6492b7c2eb5f8553dd
1aa7d4ea6810607de7dac4095bbc25a199ba6d55
9326 F20101107_AABXIN praing_r_Page_114thm.jpg
f068190c4ab4aefb3b81c28b6ace2d5a
9227 F20101107_AABXHZ praing_r_Page_106thm.jpg
ec8492796ff429fc4a1d278c65f22728
335c08b84183e145fc08e9cfa613a9b6e62fbb8b
1051971 F20101107_AABWFL praing_r_Page_180.jp2
b8b939d7ed69ceab8892b4ddb0e7597c
b71eda9b8470a3995c605b851ea895a4ae2e03c9
1051963 F20101107_AABWEX praing_r_Page_165.jp2
d62f373388deccc5e6720a9b30dbefe7
fbd47a67a4aa501e297bcf37af440aac5e1e5fba
F20101107_AABVZQ praing_r_Page_011.jp2
f5b5a2d85381fcaf6ce80dd7180da380
109fba1b750f7edbc5abc0b38bb69dc095a659f1
9367 F20101107_AABXJC praing_r_Page_123thm.jpg
be6dfacf1ab429f6f4b6b3d9c56a406c
d669bb9ecb784f2bda562884aaf65d7f1b188c15
31503 F20101107_AABXIO praing_r_Page_115.QC.jpg
742dbe3e178b29ccd622ddd00ec2ba0116443925
1051884 F20101107_AABWFM praing_r_Page_181.jp2
7fd5da96c9198e4069cef7da799826ef
b2e4700aaa59454573b769dc4f8f5d42c9e29068
F20101107_AABWEY praing_r_Page_166.jp2
d0500bd97f66ff4e7a926ce4c417ce93
ca8ecd398e5ae414eb66f757f9c48ec00c6400cc
1051936 F20101107_AABVZR praing_r_Page_012.jp2
1051970 F20101107_AABWGA praing_r_Page_198.jp2
37657 F20101107_AABXJD praing_r_Page_124.QC.jpg
fd142f413b4b8ff0cfac47ef8db72c60
a4749164223f15d4d8c28c284f3e488f316fd759
8135 F20101107_AABXIP praing_r_Page_115thm.jpg
F20101107_AABWFN praing_r_Page_182.jp2
c7de0fe01fef563cef591e5228c5b102
F20101107_AABWEZ praing_r_Page_167.jp2
120c2142d2dd633e5540d6ffe1e20b6e
526955 F20101107_AABVZS praing_r_Page_014.jp2
270179cf1590e3155932cc006b57f648
b5e92952da2b3af1369055ce0f8037e20f7aa397
991524 F20101107_AABWGB praing_r_Page_200.jp2
8253c443bcdb21c95ee4a45b34228c36b8eb51e9
9087 F20101107_AABXJE praing_r_Page_124thm.jpg
647a05e8f5a8f97ce2f542354212ddc6
73ea1b3ffb10306e5336085f2752471f173b46e7
42019 F20101107_AABXIQ praing_r_Page_116.QC.jpg
163d5ec160a42dc44a61f58926322e35
8857ec48631ced2c201d4bdf419de70c83f01ff2
1051966 F20101107_AABWFO praing_r_Page_184.jp2
05945e1afc53193237b14459055a66ba
c4a35d076e931b5ed67709876daf0aa46a457d7a
1051934 F20101107_AABVZT praing_r_Page_015.jp2
502f9b2dfff5c6a0facb742593cb5239
135ea3714c01b4553361b7ebdec44081da18f59f
1051839 F20101107_AABWGC praing_r_Page_201.jp2
7c8a13f57276c1ccb369cdae1cb63c8d
1aefeccdd08f3009e311cca35042dbd14e21078b
26013 F20101107_AABXJF praing_r_Page_125.QC.jpg
cb7736f9b0450c1e4f31eddd5b460550
efca81905c07469c6128821f446baa5b7945ffc2
F20101107_AABXIR praing_r_Page_117.QC.jpg
5629c956cfe94567a0b4c041be3c6b4d
805160 F20101107_AABWFP praing_r_Page_185.jp2
3b183e301ff3e80b26a02a2cfd409cba
729e4c50d63d5d19ae9df25cefd0b90d2b4e2824
1051986 F20101107_AABVZU praing_r_Page_016.jp2
732de1eeb43eef772ce0a7fcbdea2176
F20101107_AABWGD praing_r_Page_202.jp2
e06fbb3ee46be772ab575af5c4d3bf27
40fa84a8a50b442340b4cc0de14e13102ec4451e
6719 F20101107_AABXJG praing_r_Page_125thm.jpg
dd6b64bb60e4dacb66f5469b5b5be6b6
95ac0823d776c5f20f012fdacefd420f4cc3a279
8600 F20101107_AABXIS praing_r_Page_117thm.jpg
484719ae2447620fbfecae9d13175ba7
7af687e35cfb348496c802306663cdd83de55226
F20101107_AABWFQ praing_r_Page_187.jp2
b5deaa42ac95feb7f04b19d6f379755c
1051967 F20101107_AABVZV praing_r_Page_017.jp2
992b25ea64301d9211b2cf7ed357810b
cc148ba55cbdea38f27def3b0cf8dd4d28ca1236
F20101107_AABWGE praing_r_Page_203.jp2
cc436f31130db52cb6e7e329b4c49cec
80971e222719335ede80d5b138a6dfe82b6025e0
32136 F20101107_AABXJH praing_r_Page_126.QC.jpg
0e40fe087f3e930982639052b26b09b7
2ff3b48c8f56866797a1c03d5d52365cb0d8fa5c
36998 F20101107_AABXIT praing_r_Page_118.QC.jpg
a336e8c2dc196b31d3a0c7a4c8fe71d3
1f3b09fa52de4f4b20f73251704b1f143a8cc150
1051978 F20101107_AABWFR praing_r_Page_188.jp2
0f353cb176d7c57ec174c169b97c8e4b
9602506fc7e8449c0e1632a035a271216320fda2
F20101107_AABVZW praing_r_Page_019.jp2
01853bed55016da017e11405c4ee246a
7eccae2470dfa3431689c332eac8bdda8d000cb3
F20101107_AABWGF praing_r_Page_204.jp2
ac5a405b3e56bbd8f468cc490fe947c4
7818 F20101107_AABXJI praing_r_Page_126thm.jpg
e78cced68b6a9cc626c8776c9fbb66a0
4645fbfec5931bdf1d92632d07453945563b4dce
8490 F20101107_AABXIU praing_r_Page_118thm.jpg
24747a559f55e43dd0f021cc667e270b
1ae0b0bc5bf466f19f3ae3a6b6c33a185bf78685
1051974 F20101107_AABWFS praing_r_Page_189.jp2
19c74ecb16d4a6be34b62233ae331c1676b1ffab
F20101107_AABVZX praing_r_Page_020.jp2
408554 F20101107_AABWGG praing_r_Page_205.jp2
e29809446edb7a884155a360db25258f
1fe5151ccc2ac26342df56f24ee6e4cd2711d16a
41891 F20101107_AABXJJ praing_r_Page_128.QC.jpg
749989c7e0b79a8aea960b220cf4aa6b
16ed4e6aca083a612f0311496982189ffaa50598
35784 F20101107_AABXIV praing_r_Page_119.QC.jpg
5a7a97246e311e28e9f024bd53dede7a
cc36ca4982f8367767b04e6841b8ab0c49c00d18
F20101107_AABWFT praing_r_Page_190.jp2
059243466cbcb82689313b6a7012a8fc
804a17ca9a171968385d82952802bf1bdd2b386d
1051946 F20101107_AABVZY praing_r_Page_023.jp2
0568a0fedc308725699b812fe5df3f7dc7fbbd0c
924902 F20101107_AABWGH praing_r_Page_206.jp2
af8a8f6f7847eda7403d28dd1655bbb1
99d1f9a92bc933e57f426dd7c26f8aa8fc776675
9407 F20101107_AABXJK praing_r_Page_128thm.jpg
de543e137b2da00af35919b1096d408f
c7edffc4bc5d76f872e0f4051a893f94ab367dea
8703 F20101107_AABXIW praing_r_Page_119thm.jpg
8a6433e68ecb957bf8a1b126dd750b8d
b806bf736b16e054b515a81daa5223e6e2ff21e8
F20101107_AABWFU praing_r_Page_191.jp2
14203d935498785fce92d1eee530cfc3
927bfb14125935fd0178153eddf992bd5402910f
1051939 F20101107_AABVZZ praing_r_Page_024.jp2
eac7f4d0a5844331a9282e11873c7d17bd37dcec
25271604 F20101107_AABWGI praing_r_Page_001.tif
a6cb7935f0a820177cbbd1a6db4c2303
95c02514f4c60d5b3cfb0cb46276dc982f2fc124
34738 F20101107_AABXJL praing_r_Page_130.QC.jpg
9312d11028c85b89901153898b0e1b7f
c137dfcd8e3cd3ef39b03567c2e4ed1f3c363e31
28757 F20101107_AABXIX praing_r_Page_120.QC.jpg
e5be46351ab1f08336427544305a3437
5954669ba17bd192d4dac96c6009b6e638d735bb
F20101107_AABWGJ praing_r_Page_002.tif
7a5e06ce0e62af99fbd86a24434b03b4
d366052f872d0075a59945404ddd54c2a7b71cb6
1051977 F20101107_AABWFV praing_r_Page_192.jp2
165ca4275786ba5582c22dd55c1a31ef
fbe13c013ca492ac6035baf050293ce99c8ff87a
40064 F20101107_AABXKA praing_r_Page_141.QC.jpg
279de54c6df3ebcbc2470f98a44ed14e
7097 F20101107_AABXJM praing_r_Page_131thm.jpg
d31edda5a60dbc45a83c16c37e1c2b09
7fdfaf8c59d95e17c0e2af502b920a3f102139c6
7375 F20101107_AABXIY praing_r_Page_120thm.jpg
2044ec193227b1e99c30e90311578532
83d7e2df9904e07f52c8eb06bca857b4dd0d5308
F20101107_AABWGK praing_r_Page_003.tif
f063a6be653531fc5e20f3331a6fa758f7e47f47
F20101107_AABWFW praing_r_Page_193.jp2
eb6ddaf8beb74b43dbfe5a7be92a6b98
378cb656fd1b815f5ccb33d00d7d4956b021f604
9070 F20101107_AABXKB praing_r_Page_141thm.jpg
4b1e8e13dcff12dd46bddf50ac242f28
da4f75c91b7bb85a1e4c1cebbdff0bc439ab7545
37929 F20101107_AABXJN praing_r_Page_132.QC.jpg
ff3f3fb2e5bb2ca9688b0cc200c6ee5d
da80cb04a6235c5e783e57721fccefd0174d7ebe
39007 F20101107_AABXIZ praing_r_Page_121.QC.jpg
423246ebedbc38787015302b5d33d63f
22039f85a6f8bc98c9ccd39791009e2d1a8bcff6
F20101107_AABWGL praing_r_Page_004.tif
75abe6d265bb295f28a585b6d21aa3a6
5bc7f97ce7139db023d76ef7cf31902269099f46
1051950 F20101107_AABWFX praing_r_Page_195.jp2
6378cf1e99554f68c2853a07e3ee623d
bf7ffb1279f8fdabbc669c61721e9c51b16c030b
29256 F20101107_AABXKC praing_r_Page_142.QC.jpg
56e821c339d47ebaf3070d27c34a7b72
c33b6ea758ba23bcbfefd606427cf2c4defd8c7e
33356 F20101107_AABXJO praing_r_Page_133.QC.jpg
af7968ccbb33aa7dab059fa9a12d97f8
382cc16eda93600275bbf57cbe6cf4005ba4b3c2
F20101107_AABWHA praing_r_Page_021.tif
000d263daf505be889464c0c685927f6
be38693a88a256ded2d6be2fcf0b6dd616e223b9
F20101107_AABWGM praing_r_Page_005.tif
98cb8c649b7d8b9fe95971397df56179
94358b01d1d13e5f2906b232afe41d40ff2a8a09
F20101107_AABWFY praing_r_Page_196.jp2
5e8efed07e15e6a5a28b21ba822163a0
524d8748d1fccdcf15729fcb73c4346a862322f6
7319 F20101107_AABXKD praing_r_Page_142thm.jpg
28a69a6e4bb780ce69d40b07a018f6aa
41476 F20101107_AABXJP praing_r_Page_134.QC.jpg
fb9f1f71937202a89680d21f8e70a741
3d6a00cdeccdeca183544421e6ff0c755a1fd880
F20101107_AABWHB praing_r_Page_022.tif
e07ba38042038ece0fd24c13200ceb33
8398401768aca89d024b5e5659c1072966f7b6b8
F20101107_AABWGN praing_r_Page_006.tif
c025dfd124836c285eda32e213765e43
97425e62745fb9d78eae7224918c16a3a320871f
F20101107_AABWFZ praing_r_Page_197.jp2
e141afb3175553d4a65ea1602a685958
f335e9d3a15df618cb782438b2fe7c2503bb93b3
34940 F20101107_AABXKE praing_r_Page_143.QC.jpg
082db13ca051dcdfb3f2aaf0f5b93543
79cc32768ff751e9538e4fe157ac4f51799271a6
9416 F20101107_AABXJQ praing_r_Page_134thm.jpg
a4a08e816d389657800403bdc0e2aa51
F20101107_AABWHC praing_r_Page_023.tif
0b30ab0b6cf15f129914562e1458c218
26ce1e6a1b37703a4fea146a7758f219d99e3b5a
F20101107_AABWGO praing_r_Page_007.tif
1066e1da7949a4ca69e8a12650e96e5e
3038f79d38328b7933d587fbd3d530378a20fe2a
8257 F20101107_AABXKF praing_r_Page_143thm.jpg
e99588b3b7ee80700d2ed23cff7fc48e
e45accfbffdb2f20967d5d8502c45b34a3f93939
23289 F20101107_AABXJR praing_r_Page_135.QC.jpg
6be4caa85092a2448576228479aa1c6e
060ec4e9423262b5a6db81120bcc86888c02d0d5
F20101107_AABWHD praing_r_Page_024.tif
2680812fe817fb9aa9a4a5ac6afdc2da
1023d4a334092fbee73de4e61b3e2ca2b41b5bfa
F20101107_AABWGP praing_r_Page_008.tif
baedd0efaea619298e96ac07c21a511b
a39a10cd6a4b555cdb68e2596679ac5a5d1e4771
34432 F20101107_AABXKG praing_r_Page_144.QC.jpg
46597c51dbe7bab95aa24ce86f036e0c
104d5de6d12bf34cedc9368a91a102ddc1426098
5884 F20101107_AABXJS praing_r_Page_135thm.jpg
d38a41f7fa160a1eb93f5bf1e6724689
F20101107_AABWHE praing_r_Page_026.tif
e1ec7a780f425245cfda5d813cf1db7a
539a88aec49a156f9c92569e7fe5e4c804ca76ac
F20101107_AABWGQ praing_r_Page_009.tif
88468dfecf93c381bc98e2446d7a17dd
a6d5a80bd02e8186b78f82c548b93ac4bf087b2d
34689 F20101107_AABXKH praing_r_Page_145.QC.jpg
114208b401cb7ca81571cb63f6ee5976baa6f9f5
39437 F20101107_AABXJT praing_r_Page_136.QC.jpg
9e3dce42d6e0fafc8129d2deedfb46ccfc3f7496
F20101107_AABWHF praing_r_Page_027.tif
f3f7f64e760c8d833a3007e7f867fe62
7a9ae2012798298f06f5973c970c5a3614f09a59
F20101107_AABWGR praing_r_Page_011.tif
4d929b651f79085bba0dd5a7b085868f
44171286837bbac000292a5ef7c31ab13f4850d4
8045 F20101107_AABXKI praing_r_Page_145thm.jpg
50671183cba3bc09de107732ba60fb67
9298 F20101107_AABXJU praing_r_Page_136thm.jpg
219cc5f1af9cc37de4be572a985306fe
F20101107_AABWHG praing_r_Page_028.tif
36cb652e9a74c88d5e3cbf4884c464bb
1889eaa32ef4f26047a4349e34db2270c5df0e19
F20101107_AABWGS praing_r_Page_012.tif
294607dd8136f6708e9cb0beb628615f
874833bee94370953eed9f0b3625636a4fb124a8
40285 F20101107_AABXKJ praing_r_Page_146.QC.jpg
f0306ab6bae11e442efa4bbc13b64e44
a537231678a43d893a1112411331f7bc30c3f253
40934 F20101107_AABXJV praing_r_Page_137.QC.jpg
4ccef5fda16da338d7fb4ed31849891d
337216d85d92a1ddd9b487b9550246e6e44dc654
F20101107_AABWHH praing_r_Page_029.tif
08e1182e607fc4d61c34dd455a60115e
1f5123b1eb61dbeff1f18db6af225aaf3e53f445
F20101107_AABWGT praing_r_Page_013.tif
11f3b09afd8abdb65a3100eb4c253786
f5f160812643b53d9ae1b4611bc43c26270e07b7
9053 F20101107_AABXKK praing_r_Page_146thm.jpg
0eeaaa4f624e885680f5b887db6ebb7c
c1911305e19503c7efdcb1fe9a149f3d55abaf27
9359 F20101107_AABXJW praing_r_Page_137thm.jpg
92f8a87387eafcc0b4f3b51c66c45159
d7a5aa50f0dbf0f9a880e5310995edb63f079586
F20101107_AABWHI praing_r_Page_030.tif
25159a7b4249ff201d3acc5e0e6a4077ded9a40b
F20101107_AABWGU praing_r_Page_014.tif
90f258621f0fb9545e13f2a0c954bc7b
374c0ed8c3520fd70e6732a242ab3f74db0314be
35324 F20101107_AABXKL praing_r_Page_147.QC.jpg
25d827f112531088a59e6e412e7a9f38
b2027de98338a74423a835aa45c49e999c36cdb9
7918 F20101107_AABXJX praing_r_Page_138thm.jpg
24bf73d19ec1eb8892aa70a234d908fa
5f477219d55f328c1be217ac98acd4efaaac53b3
F20101107_AABWHJ praing_r_Page_031.tif
80ac18bbe9f3b0267bfb699cfa2cebe8
05be5e8a08ccd20237fe22d6f59225e18805b7a5
F20101107_AABWGV praing_r_Page_015.tif
3cd7be431ab550e4d8e2b0a334baf73a
8268 F20101107_AABXLA praing_r_Page_155thm.jpg
4f60aa8f6f4fa79ceb50e5c64f45f4ac
4beafcf71ae40699c0e57044a62f1a7ac43c78ac
8195 F20101107_AABXKM praing_r_Page_147thm.jpg
55d5193b32bfd6954b60c4a98c93d4e5
8a34450eb14ef385c708ee69cbfee9cbac8c4095
39624 F20101107_AABXJY praing_r_Page_140.QC.jpg
5864646e2a7748ecb600f52d9239862d
40034259e5aeb4e4db40bc11c1a2bd8c0a98c07d
F20101107_AABWHK praing_r_Page_032.tif
feaf6ff6a9e70449a9a5bca37777c799
9ce78172e99b486341a3358801b6baec56c6baa1
F20101107_AABWGW praing_r_Page_016.tif
f299de517db7a6ca9ec29c21336e81f6
bc1d570fc65b8a3909c956300d0f763d2a1e8d96
33144 F20101107_AABXLB praing_r_Page_156.QC.jpg
44736005a15a195c6d8cef58bea10333
7ea336836d585eee14d786fee1c2974f57568762
28370 F20101107_AABXKN praing_r_Page_148.QC.jpg
e40c5e171014557ae1d2794d07c6c1f44a591438
9258 F20101107_AABXJZ praing_r_Page_140thm.jpg
2900eebaef97bb370d513e143c58dba1
c241f7dd564b65dca545039c3ae7c16dc9e283db
F20101107_AABWHL praing_r_Page_034.tif
32908e980ff169e0567a2a6e844ff8bb
F20101107_AABWGX praing_r_Page_017.tif
5b10b3015495238cf98df7e445ba17cc
098aa5f97225de577646f8e0e8fe455003d29d94
8145 F20101107_AABXLC praing_r_Page_156thm.jpg
2f51c59da3c7c9fc357afc003c80af42
88f9725a8ecf9504a3d67f5779fcfd78c70ed438
7068 F20101107_AABXKO praing_r_Page_148thm.jpg
905d9f8462ef338b75fdc3f8cc9258a3
c5ffc58bb0405456b2a96aa7e7bb5ab95faae5e5
F20101107_AABWHM praing_r_Page_035.tif
d99797f33a971b75aac7af7d8f09b62b
09780ca111788ee69e3a9ce5952527684dac4d34
F20101107_AABWGY praing_r_Page_018.tif
4a85a2eabf43ef5a1b0f78f2e501c200
6ed5cd6869393d0e813b3f12c9defcd5464877f7
F20101107_AABWIA praing_r_Page_058.tif
dbc10751e2bb35b40acb95298f8f436e
40604 F20101107_AABXLD praing_r_Page_157.QC.jpg
e6986f2f306cf2138ce273992cf1d5e3
0873a1d2bc4d03dbe78c182251f150eaf3510d49
31615 F20101107_AABXKP praing_r_Page_149.QC.jpg
F20101107_AABWHN praing_r_Page_037.tif
19ca711a81d3b2e0da1b52d52c8bcdb2
71666e89c735a29ff09f32ea34459fc07e3419c4
F20101107_AABWGZ praing_r_Page_019.tif
91ef6d554dff0fcd3fc0b74b5e78289b
8ac4629b7da96c42632ab080ffe63192e081fa9d
F20101107_AABWIB praing_r_Page_059.tif
ab977557641ce5f70caaf409b828e5f5
9329 F20101107_AABXLE praing_r_Page_157thm.jpg
81759b0fc6562530b456fd6ab0c36aca
515a25eef6c5e838e14e3932e038306e313dbd96
42699 F20101107_AABXKQ praing_r_Page_150.QC.jpg
522cd4407d370c71d5a41ebb8d417c13
fda4c66cb5495098c241fa800bc2d5006ebdd49b
F20101107_AABWHO praing_r_Page_038.tif
52d5ee2005d2e6c0d03f8f269f8c6ea1
54a98ecb15e3463eabe3d6f315ea72cbf29752c9
F20101107_AABWIC praing_r_Page_061.tif
10de278b57ef9f90188650d69ca02fc3
aaab6202d78583dbc9840875cc9933b251e089f6
38517 F20101107_AABXLF praing_r_Page_158.QC.jpg
e8d8916ca65684f7def248e0f9d9743c
209460a01e972bca53196f91e0d52d60caf3b785
9468 F20101107_AABXKR praing_r_Page_150thm.jpg
e68576656a262e819cd2fd118e3fde8b
f17b47e5caf70e843337891631f12b10236c89bd
F20101107_AABWHP praing_r_Page_039.tif
60dc5a6f507e1d06db7cf0347f2a2230
f826534d30abac007aebb2c87744273073c1bd01
F20101107_AABWID praing_r_Page_062.tif
c3230d51b7756e90649b5d4b1e6ddd03
9089 F20101107_AABXLG praing_r_Page_158thm.jpg
81cd0cbc862bd61879b92ebbb8bba090b5f4e171
39923 F20101107_AABXKS praing_r_Page_151.QC.jpg
b3bac5ebfd2f59dab7a1156bd6b39698
b01e174433bf3d524dea28c13c3847d61e1f8e5e
F20101107_AABWHQ praing_r_Page_040.tif
7cb09d56c712a212e7898a2a36f54503
4474e2fd6d984f4fce511e782a0b5b3212400655
F20101107_AABWIE praing_r_Page_063.tif
ce7895f89967221dfcfa32bb9fb640a5
d9d7f431bd2dda02d64e93b022da9460fc755337
25691 F20101107_AABXLH praing_r_Page_159.QC.jpg
baca9d95f2c8ac17126ee84007a0b2b4
2804136dd53383fd8b42055e207a144e1b510558
39093 F20101107_AABXKT praing_r_Page_152.QC.jpg
8c3bb9a85bd8f94f1fd22392b9eb0866
0c34151605000ec8063948b1bc037870d6f7024f
F20101107_AABWHR praing_r_Page_041.tif
a009bb06a0f86232e7f364da9f9f231f
917804131b39265899455e6b55798d3a04f46d14
F20101107_AABWIF praing_r_Page_064.tif
8936c89887d6d7bf0f66da7df5f6a112
f00e94099f7b76627c086667aacf10882f34d726
6088 F20101107_AABXLI praing_r_Page_159thm.jpg
c2ae61966f2317db940fbbe913c2c1a7a98ff5c3
8918 F20101107_AABXKU praing_r_Page_152thm.jpg
76771b4e4d4e7fda3901b82259ae6d76
c137bc0ff706ff6fd231c69e1f0087c2fce331fd
F20101107_AABWHS praing_r_Page_044.tif
34b23a7da724b39be7e42cc2a8f427a0
34d8e29ed6b1959865dd56c93d0070eb50408a37
F20101107_AABWIG praing_r_Page_065.tif
569bdcca582dbfa6fab866a87deef83d
1c8f435ace7b006aceb8baa08d0a5f30d71ffc33
41836 F20101107_AABXLJ praing_r_Page_160.QC.jpg
649ca9670b8937420dfd08a1a7481f9e
144da441eb2f1cde12e269866fc13e0efaf77427
20390 F20101107_AABXKV praing_r_Page_153.QC.jpg
F20101107_AABWHT praing_r_Page_048.tif
4ea671070c51e6212acdd952b50a6869
d801e06c85dbf84b449d1a9cbf7067a2516a2de9
F20101107_AABWIH praing_r_Page_067.tif
0ea5902ac17fbe32a546673df77d87d3
27341b65aa4c3297ecd7f9380f954472603fdf67
9455 F20101107_AABXLK praing_r_Page_160thm.jpg
95e733a4dece71ac57ac946b5a99c7eb
870793ce8a8c9b7f7ceaca6b3f9cb091574d5611
5042 F20101107_AABXKW praing_r_Page_153thm.jpg
401f56099b6d01359c1f5fb2b718ff8c
17bea9b8520a8ece10f7afc48ca4bd4a00a92ebf
F20101107_AABWHU praing_r_Page_050.tif
2b92f5df602d55d9b5c1bd5444d109f6
6d5fee3a71e34e1b11250fd041d160de57df2411
F20101107_AABWII praing_r_Page_068.tif
bbb1cfd5e1603478ec900091c873ba15
ce6e90cc82507393c4ab72b50512c2edaca3ed8f
40009 F20101107_AABXMA praing_r_Page_169.QC.jpg
40a1e163214a03b8d0c6fce887c04fbb
a84a98950544b010abc1cb7a4fdce835e2250c56
38067 F20101107_AABXLL praing_r_Page_161.QC.jpg
e47b2ab3abc390ac4020316fc2c91aab
15458f34a1ea529e612cf1f6548b9cbd8d38ce78
34960 F20101107_AABXKX praing_r_Page_154.QC.jpg
2d92fc4e6ca5a4b56861995ba178cbf6
2a053c75728252c823e0a2a641d0e66a9d061a6b
F20101107_AABWHV praing_r_Page_053.tif
2948effe789ecbbc5dd2a7f498373aa0
a6904120d16d8798de21c8915761ec83d712296f
F20101107_AABWIJ praing_r_Page_069.tif
fcb472d3b6ec185a22f5d0a685111f5e
6dcc8d87167ef3c63547f428278dc24c208a6544
9037 F20101107_AABXLM praing_r_Page_161thm.jpg
56c922109b334435c0844538791330a5
5fd821045fb923ecdc0dfeb36012130ed652e537
8347 F20101107_AABXKY praing_r_Page_154thm.jpg
67b87255380b821455c51fdab089d98d
7c55600580c2daed84fbc4f255948ed5c1794391
F20101107_AABWHW praing_r_Page_054.tif
d3962b840204320035ce80bd5fa38a657d39e01f
F20101107_AABWIK praing_r_Page_070.tif
0ff15499225484da77dc04c79971e755
90aea8000d0f90d90d760ef796edc3263a2473d1
9095 F20101107_AABXMB praing_r_Page_169thm.jpg
e6ca6f79f4828e15de5366634b911178
e07cd6042827d013d06972b62bf1a8b3f90d1796
26084 F20101107_AABXLN praing_r_Page_162.QC.jpg
b46800a1d39673567de46917e9f6bd91
687841bcb7ee874a6c66d15f8ba8d2285cebcb39
33641 F20101107_AABXKZ praing_r_Page_155.QC.jpg
15073f370829972895e307fc1bc7a33c
088b7100549b4242aa581a7920d8f5dbc26c147c
F20101107_AABWHX praing_r_Page_055.tif
256a9b6fd1d8a567591e7acebfeec785
d6f3d131a17e42bb5383a22641dd5b632be48743
F20101107_AABWIL praing_r_Page_073.tif
b6b5481f4488ecf7e21d7102d05c37e5
4321bff9588c2990cd533f9ec56a5f9eb5d1a7e9
34578 F20101107_AABXMC praing_r_Page_170.QC.jpg
9be58a1ff7ce9b47529e078b716f36f6
f7c583a4cc665da477bfdc28410e9cf91013aa3d
6557 F20101107_AABXLO praing_r_Page_162thm.jpg
b9c3326cc6c0d15eb396f78cc5a64530
431eaf88f720f5713803c27c5d758f2f6265e234
F20101107_AABWHY praing_r_Page_056.tif
d01d45e6583b715d63908c48e68e2b81
3d51a789ce3fc8492b1fd815121818e9f8913150
F20101107_AABWJA praing_r_Page_092.tif
7477f8b307dddc6162181149382ecc13
1e6f7e83098067ccbc0fd1d22aa1421f9f343b7a
F20101107_AABWIM praing_r_Page_074.tif
308be3e38615416b4d16c4c2d943be46
556e405f85dce2d56b8c8063d6329280bdf36455
8606 F20101107_AABXMD praing_r_Page_170thm.jpg
d3a842dea1dd658c29b2057d1202d7bc
3a43345d55f9943b749f42843c8741af67208504
34342 F20101107_AABXLP praing_r_Page_163.QC.jpg
f5ac3f9eb12769c50f9fcb8c0d9eec8b
F20101107_AABWHZ praing_r_Page_057.tif
e3ebcc7d6b3e2104795bd2665e7b12a2
df9d55f783067c2be1aaac82280a15aba1ebd679
F20101107_AABWJB praing_r_Page_093.tif
29738c58d0aa763325b1ab98372b22c4
F20101107_AABWIN praing_r_Page_076.tif
86155e19779c71fdd4a9079edba9b53f
833bdcb1104b08c53943b31230d5c7c10e1906c8
35288 F20101107_AABXME praing_r_Page_171.QC.jpg
a67c4c1005cabf3daf961a6722c6f629
d01fb5b7b3fb89d3f885366c89a60f0560ecb16f
35639 F20101107_AABXLQ praing_r_Page_164.QC.jpg
831e792f4e595c62ab33c2aac732174f
c6474fc3671a23d799dd7c8fc506562757aab11e
F20101107_AABWJC praing_r_Page_094.tif
abaa207ab681bcd354a2e452c20d3faf
7f7a63bb49b81327936cd02fe54ee0cdfffcf177
F20101107_AABWIO praing_r_Page_077.tif
25ed8e45bffb6f3ee6a9e19a0fd2689ed1d26bc4
7987 F20101107_AABXMF praing_r_Page_171thm.jpg
8b6a46772fbaac44e5e018b8c4e0e77d
8c1ae256f7bc686679f067166cf8bbf074fb385a
8619 F20101107_AABXLR praing_r_Page_164thm.jpg
d0b922974a5d0d429f973932870ac753
a80a50070f0eb6eefaa4e22f24ba2171bd7e7a49
F20101107_AABWJD praing_r_Page_095.tif
c807012b5c6c02e475e6e9757b9261e1
3c8b7aa7d8875c5451562cb2fbcedebe0a6cc840
F20101107_AABWIP praing_r_Page_078.tif
a3cc68823609e141556ec194a3fc0843
23d2a27ec7f2ef6a5122714840e5339ea2f796f1
29241 F20101107_AABXMG praing_r_Page_172.QC.jpg
6c77a50362bc214f173341af217fa476
bc78b411daa068965fce7d2fe823473b54cb9abb
41288 F20101107_AABXLS praing_r_Page_165.QC.jpg
dd8f0a930284286d41e2207456a7bf0a
bc1d3c8596424d9f6e57de110709ec207178efe2
F20101107_AABWJE praing_r_Page_096.tif
786a67557dff701963b4603220d9139f
a6eb4566d0514b5cd93815c5635105ce4777dc5d
F20101107_AABWIQ praing_r_Page_080.tif
713a731682757d95b0db20c2484a4872
7009 F20101107_AABXMH praing_r_Page_172thm.jpg
6a33dc4a72cf21b62ca626f1247f5c19
c84b8d763a88356959299692d613403023632ca5
9139 F20101107_AABXLT praing_r_Page_165thm.jpg
0f7d0f2c6265f05a3347f23ebfa8fd0f
da1fbaa9269665574f23520a26a66744b6bf12e1
F20101107_AABWJF praing_r_Page_097.tif
b5a43be4d3ca5a452753e9f10a82854a
49203d26ce1f583404bd8ca51dd5cb86144fb9fa
F20101107_AABWIR praing_r_Page_081.tif
dd161220e7f4041f1ee9d653eff0b61c
18aaabcfdd47c4b2b1572ac06d28d97078aaebea
39623 F20101107_AABXMI praing_r_Page_173.QC.jpg
9a2db945a70998de85def6c434e25c31
95d646556af9bbf9d81e96b6f8d50f4308a8bf7a
36571 F20101107_AABXLU praing_r_Page_166.QC.jpg
dfa8980420c7126c53da6c888be88146
1aa77bd9772ab4337f0c903ac3abcd42b6c43ac8
F20101107_AABWJG praing_r_Page_098.tif
F20101107_AABWIS praing_r_Page_082.tif
9ec2a0b41c198009a07f41179e79be8e
b828f1168490cca11fa5bf92bb03e55142f5f595
9304 F20101107_AABXMJ praing_r_Page_173thm.jpg
360faa70e160211d932418d01a9ef1300735c578
8654 F20101107_AABXLV praing_r_Page_166thm.jpg
79965944bc958309d04a78a9184c4c1b
F20101107_AABWJH praing_r_Page_099.tif
87c285d00d968f2367c2264afd478651
F20101107_AABWIT praing_r_Page_083.tif
f591b4c43dccde236b31ff69838dd01f
1253c7037ac1a0db762a10791fcf5107a8f2ede9
27986 F20101107_AABXMK praing_r_Page_174.QC.jpg
b7aabc882830ee1daa6de26d55e50a54
6e615883c5130a5bf86f56517f3d6bfa7e5e8e92
40792 F20101107_AABXLW praing_r_Page_167.QC.jpg
5b2a49c24085c5b10e9f2952c36a9077
62bcb56a27c54d91dc0a7b963c1e84b71bfe252c
F20101107_AABWJI praing_r_Page_100.tif
7dc164d53949306e2f24194f1e044301
F20101107_AABWIU praing_r_Page_086.tif
aca8bdb1f564bc7421fc1fd67690bbdb
e1afccab06e7d9605d10747702b80c208accf51a
39160 F20101107_AABXNA praing_r_Page_184.QC.jpg
36d076b2b1bb207afac7ca887554d0acd9f298d6
7408 F20101107_AABXML praing_r_Page_174thm.jpg
e433989e496b8b5bf9faacec82fc6355
558e733310991553684680194fcd75fa58d86a8b
9143 F20101107_AABXLX praing_r_Page_167thm.jpg
c015529a56b34cb2cfab8f4cbdd88986
2d734550266d58ee97afc59c099b52cfbd499908
F20101107_AABWJJ praing_r_Page_101.tif
1fe3a3a777683dc4849205711253ddac
F20101107_AABWIV praing_r_Page_087.tif
f9b279b4f02d72b0b3a0c240650b2c5cdb5b5114
8903 F20101107_AABXNB praing_r_Page_184thm.jpg
81f3a491cc889839342ac6bdbd4ec5f887f9eb20
33327 F20101107_AABXMM praing_r_Page_175.QC.jpg
de6467e60f5a64c3674366c1ddb6b799
1bccb1bf4391e9e8ce85c7e0906a64da21a8e52f
37986 F20101107_AABXLY praing_r_Page_168.QC.jpg
efe1d15e06610c59500c10118886f028
3e355468c87003600fe556231930a8c5e54123c7
F20101107_AABWJK praing_r_Page_102.tif
8c3e93b548b98cc0045089bd2d746d14
cc4bea59842335b2c289b1c1bc0618a8bee3e30f
F20101107_AABWIW praing_r_Page_088.tif
c81c902a09db25067f673895e626b8991d30a6e1
8109 F20101107_AABXMN praing_r_Page_175thm.jpg
4f0094412f97e0c1fca78ea0be385032
e44efdb1efc0359a257d2a9dff524aa85ec6ae81
9051 F20101107_AABXLZ praing_r_Page_168thm.jpg
cd4139475749ce6dc03d7273aacbf30a
9626fe0bf59091acabba0894602f1495edd43280
F20101107_AABWJL praing_r_Page_103.tif
c0163d53a79b93e27fb8fa829a49fc5e
03e17a3bb0180f3a97c55fcfac9a74c1d8ba1d47
F20101107_AABWIX praing_r_Page_089.tif
6974dd8ed299382d80a26e40c69a43e2
63c6f2360f6208c4260c2197148e24554592faff
26401 F20101107_AABXNC praing_r_Page_185.QC.jpg
7a2c89004810696133ef1bf599bb957c3693798d
27000 F20101107_AABXMO praing_r_Page_176.QC.jpg
9ea49d9e03d055fee6c71f1f5e2cc1bb
2dc404f35701f8494e4f585c819ae13b5f3351d2
F20101107_AABWKA praing_r_Page_120.tif
b3848f2b0f06c31e2c43d2187dac7f22
F20101107_AABWJM praing_r_Page_104.tif
079d07bb20425c4e288a67ae99ac06ae
1f5c236b54e0f79b33dea622ed3cff9c2277c952
F20101107_AABWIY praing_r_Page_090.tif
e56f48c689a1fa4bc4c8f343de928480
1e71383d76eb993b4820c015627cdac15de08c38
7099 F20101107_AABXND praing_r_Page_185thm.jpg
3c53b3eacc30135bb2b9a40ffdeab94d
40531 F20101107_AABXMP praing_r_Page_177.QC.jpg
3d94565b88ae143047dc7a8761af54c7
96dda5715abc66661002b00441c8f9435bbe8082
F20101107_AABWKB praing_r_Page_122.tif
39da43a58c1a4ba316b7e3505a2e8a94
a3650774e67ed30a48758db3a2a7cd1e15a582b9
F20101107_AABWJN praing_r_Page_105.tif
5a5ef213b5756ee1354f1f155c56794e
7cb17f6fe84e071e09da68cf4278481b985abd89
F20101107_AABWIZ praing_r_Page_091.tif
1929f043a7b83f6ed7d2ac04a984906f
38618 F20101107_AABXNE praing_r_Page_186.QC.jpg
1d98d8869985f7903be16bc6bba674e0
0eb223517c13b378b44056ee6415d0af49fa6fe0
9260 F20101107_AABXMQ praing_r_Page_177thm.jpg
ea13c050f5108c8d59ff47e5fb2ecdd2
56a54fe133e539e35eda4f82c1f559dc6287ceed
F20101107_AABWKC praing_r_Page_123.tif
743dc2a38c1996c0e6614fe9473c5a54
F20101107_AABWJO praing_r_Page_106.tif
7de9ac213d7e6418f85d7a4059354659
64a90238ed880e7d035a5822241116b3100eef94
F20101107_AABXNF praing_r_Page_186thm.jpg
453dfb8bd12ff167e297723a0d72d18c
80f3e42f22239c05d6c52206875ba0f35bc6733e
37696 F20101107_AABXMR praing_r_Page_178.QC.jpg
db10fba3690469f3cc445e3b05d3accb
e27e18d79d71b67fd2eb62f3cce8baf1ec6d200e
F20101107_AABWKD praing_r_Page_124.tif
e9117a0379d1346bc2145eb38777ca41387117b1
F20101107_AABWJP praing_r_Page_107.tif
6e980f88cc0ced6e157dbbda8fce7cd6d0ba19b3
28961 F20101107_AABXNG praing_r_Page_187.QC.jpg
da5895eebd6c8a491dd54b868406f4fd
343a3b4cba0a8566e3f4122442abcfe32c28b4d3
33986 F20101107_AABXMS praing_r_Page_179.QC.jpg
695c299a51cdb651662d810218ca828d
0e80ca7309c901f4a9c3160b15b3fc0c80954088
F20101107_AABWKE praing_r_Page_125.tif
db87323b9b49f540b6a5df1b6b72b2e3
3c1ec057b58d2fa4999b628437b619b92622332a
F20101107_AABWJQ praing_r_Page_108.tif
80f357319304d274341d503e382895dc
43310ab82327566ee67cb1ca9ef22519e60d6bc8
7697 F20101107_AABXNH praing_r_Page_187thm.jpg
46e477ae10a52e8e451fdb120e85f513
c3d2716a3464b2a22af1367a9220a54cd3d1ae71
41162 F20101107_AABXMT praing_r_Page_180.QC.jpg
fcfbb22a4c93682243ceb955b5e5cd0b1bb74c6e
F20101107_AABWKF praing_r_Page_126.tif
da362cc39eec5b3e86954a47ebde81c9
F20101107_AABWJR praing_r_Page_109.tif
c6c7fb6f7c7aa03832e6ccfeb2e10183
dc01a8001d92f9bd0fd2e5824057f44277a2dab4
42030 F20101107_AABXNI praing_r_Page_188.QC.jpg
eca15d83a68f43f97ed285d15ec51b61
40c92a4fdbb95b334f32783de4b3d706ae042bbc
9121 F20101107_AABXMU praing_r_Page_180thm.jpg
f70ddd65f4b1a979837e3ccdfba391e2
0b62da6b9f1bca22bf699803a88d9e8648a6f70e
F20101107_AABWKG praing_r_Page_127.tif
0c81f4891236c8bcb4bb795e51d537a8
7d65de6b5351a908c6d17be3a4a67e47d5887e1d
F20101107_AABWJS praing_r_Page_110.tif
651c608ef485fd5d35dfc54c811c0d5f
df88477e1dae039d675521434a1f1e9773ce04b2
9580 F20101107_AABXNJ praing_r_Page_188thm.jpg
1464dd150fb580cf02c6c26f55c78335
c2ef3ddb6389c6b78cccc9c32644c416786c7f15
7680 F20101107_AABXMV praing_r_Page_181thm.jpg
383a6117fa52aabac56f8468839c9886
897279fc0f3410fa60800b0d437628fe215a7431
F20101107_AABWKH praing_r_Page_128.tif
6f39fcebd6e3e7a3af741e1c9bd15120
1fa4e698a696541c4296cd589c2c6fd58e05b7b2
F20101107_AABWJT praing_r_Page_111.tif
b7d99741655b9749f35ef29547b62a60
1a75569b1317ef88e766e61450f9cd099078ff41
21957 F20101107_AABXNK praing_r_Page_189.QC.jpg
e47cdbfb4824dfbb8da944d75e034f28
e78b7751c62fcd01b62e8a7e3b75a7160d14c196
37998 F20101107_AABXMW praing_r_Page_182.QC.jpg
1de1fbf8f3f99cdacb68ac860ee7c26f1516abb9
F20101107_AABWKI praing_r_Page_129.tif
c5e2de429d27eb3a644b7df9e424e7e866997f3a
F20101107_AABWJU praing_r_Page_112.tif
dbd056a35fdc53379b41fce90ea91fed
c5a62f253dd0167ac54241ef1471b8cd47b68b9d
9231 F20101107_AABXOA praing_r_Page_197thm.jpg
47d83b3652d5f5d775f3e832981a2236
147445950395af702b8cf2edecf6fa7058e8491e
5768 F20101107_AABXNL praing_r_Page_189thm.jpg
e68824cf828732f66d4597a092672cec
1507f31f03e66cdd510811d688f2b89b2386ea37
8584 F20101107_AABXMX praing_r_Page_182thm.jpg
ed24f1281340252cb22af274b9889486b530c405
F20101107_AABWKJ praing_r_Page_130.tif
7ef510f7dcc75a2c3555b8633599884e
e5d85fcda9bfc6dce316965c3a41c745de9c9e29
F20101107_AABWJV praing_r_Page_114.tif
c92d52784da7d5021e97ceff9c7f43b5
ca727ee7de9126bdabb5fc87a7aceb2b939357a8
32969 F20101107_AABXOB praing_r_Page_198.QC.jpg
b45fef870d57d0ac8e15e5aec4bcf77f
3d228fc45c3b0c4ee8a60062755ae6dd6a64f864
28260 F20101107_AABXNM praing_r_Page_190.QC.jpg
fcfc9bb5635a9bb867a1e7166c05927a
62a865de466f9a9f632dde4c5d2c60ba326be2d1
29449 F20101107_AABXMY praing_r_Page_183.QC.jpg
780026acc52724aa873d57d56dc2d256
40a75b9346c4542ee4052c2b58d3cf6ba5fe3f8e
F20101107_AABWKK praing_r_Page_131.tif
6808410fdbf12b984b8ddb5348e4b1e2
2839209101f54b28f3fb79534ff221a2ac53d995
F20101107_AABWJW praing_r_Page_116.tif
699fa412410cfa9c193bee8d6a643580
80ee2680860948b5360834b044e761b1b787b128
7528 F20101107_AABXOC praing_r_Page_198thm.jpg
42a3bdf14fa3d662d3cd27d54e95b189
d98bb4c0e098e4cfbf072cc16729e3d3cca82538
7989 F20101107_AABXNN praing_r_Page_190thm.jpg
ca61e836f47db55ff145c53ab16f9fdf
49237b2641d263d17e97610bd31983200c2c3641
7287 F20101107_AABXMZ praing_r_Page_183thm.jpg
b0b5c5cfd8295b0be58ebed260782d07
cd373dfafb5f19f716a57c357b901c6cef2cc376
F20101107_AABWKL praing_r_Page_132.tif
13a9032f34c9eaa8907c8754e10697d4
F20101107_AABWJX praing_r_Page_117.tif
6673884b9b14241ee29b08b0e322fd7b
ce992c4d27a682478b600621b9aab4036480088a
F20101107_AABWLA praing_r_Page_147.tif
df07914b61c377f7045b5e5ed78ae0be
edb52cef2dd29f6232028db60989715b0bcc3a18
37286 F20101107_AABXNO praing_r_Page_191.QC.jpg
3057a523d0dc15419fda0413a6282774
0cb1f363d752470c14bb38b5fcb5aa6418e720c3
F20101107_AABWKM praing_r_Page_133.tif
929fb9856f93098946e5f826a567bdde
d083a696ba34a0076e8c5b932e9b8105960d6c96
F20101107_AABWJY praing_r_Page_118.tif
d1ab2afb017de3946d618ea09e83384e
771ddb5bb3c56c6824ed7e74f427d3f909c7633b
37971 F20101107_AABXOD praing_r_Page_199.QC.jpg
b03d7eb41c20b03572c213232f2e2e67
f3d05e8622ab10e798dcdb8aebd6fcf6b0f8d1c5
8765 F20101107_AABXNP praing_r_Page_191thm.jpg
8d42705ae50a4b1c684c961e36b1c1d5
e8fe437e1cc81746291337646040e0942576638f
F20101107_AABWKN praing_r_Page_134.tif
096ce025fd4ef9e3b302745c8ee02429
eae9b7a49e6a5037ef7427a747403da93960f32a
F20101107_AABWJZ praing_r_Page_119.tif
75bbdf5b0925c658e4d7d16be143bb6b
3755a85d0395e2de328a055aa512493569366ef9
F20101107_AABWLB praing_r_Page_148.tif
e0789ec8372a76bcf99721ed82583045
be0fecd604a0a07acf091c78135632df697bd337
8580 F20101107_AABXOE praing_r_Page_199thm.jpg
9824f546beed198f58a91882d53926ab
39268 F20101107_AABXNQ praing_r_Page_192.QC.jpg
8f8c1ed879be41017440afc2f9d6e576
10c1215b33cd237ec8f8c79ae0028f171139b757
F20101107_AABWKO praing_r_Page_135.tif
F20101107_AABWLC praing_r_Page_149.tif
175d6cfa0eb0f0d38f224388301fd4c2
28115 F20101107_AABXOF praing_r_Page_200.QC.jpg
469ec32f6e84199ea2072034e827c982ca0018eb
38417 F20101107_AABXNR praing_r_Page_193.QC.jpg
a7ca6f7a88c7679d62f16cfc9bc37d02
402b1b92d3d3fda810bb71d54e193c466f8da3a3
F20101107_AABWKP praing_r_Page_136.tif
86b1053093f8fd398a172d82db2216e9
8cbde8b6055e2f26f14d4fb2db6a837d98bb3edc
F20101107_AABWLD praing_r_Page_151.tif
cb54d1e205955006cb5e42954b9619fe
89a1ebdba4ed466e987e716517257336b4ce6eee
6713 F20101107_AABXOG praing_r_Page_200thm.jpg
d6535aed54211e4061a6730d07b6c108
7c0983161c32b43249ae1eefa8030797921907b3
8768 F20101107_AABXNS praing_r_Page_193thm.jpg
a889ecd6cf2b0b425dbf55506dbf965c
9d4201c8f12371eda83d9a6403a4bf4f0b7b80a4
F20101107_AABWKQ praing_r_Page_137.tif
baf4a3a1ce9c692b14189af6719b17f0
383ae3b32c15ca2094ba6ccc8529a7a662e6099a
F20101107_AABWLE praing_r_Page_152.tif
511d4cc04ee25b9a2a77acc7144692bf
b86ee4c05d0a8356bc50df13289dd1cc195b7997
37841 F20101107_AABXOH praing_r_Page_201.QC.jpg
6925570d1667fc3e9d48b5a8c9a7dce1
7ee65f4529b2e965506c210366ab0e5a52481906
34900 F20101107_AABXNT praing_r_Page_194.QC.jpg
a1f0478fd33416bc6a17b4d4de71d6b5
c322ae2baef0b55b022318b4a1ae945e631242d2
F20101107_AABWKR praing_r_Page_138.tif
931e18a063a61214cd7dfcb484aa92cb6051ac01
F20101107_AABWLF praing_r_Page_153.tif
19d09ec54b1d0e241a63c7e64372600f
f0a84ca451ec002cb5db972579e7b244bb499bfe
9025 F20101107_AABXOI praing_r_Page_201thm.jpg
859156ae1e161f7b146c8f5f21b09abd
0f498696414082cb0a1450486fee199415d126f6
9252 F20101107_AABXNU praing_r_Page_194thm.jpg
876f4a8ab32bd1a51e5b95139f748080
e3157b1d603dc47641f7d08a9c0a62724ee23ec6
F20101107_AABWLG praing_r_Page_154.tif
5a1ff2595b565c773bcebbf0913f3ef1
84e0ac8092666e1bb1e7a76ce36202dacd8840b7
F20101107_AABWKS praing_r_Page_139.tif
bf941ce6a0c73f6b62379e1af3a48bb7
c4e502b9f9b38f8f9ec4f00f1efaa7158f0801a8
38355 F20101107_AABXOJ praing_r_Page_202.QC.jpg
7106d8d7686da298069acc784193488c
40398 F20101107_AABXNV praing_r_Page_195.QC.jpg
4ee0282b0d669b74fdc51c0b662ba9b7
6910264c19dea572b85658d97f54c862801edb08
F20101107_AABWLH praing_r_Page_155.tif
e8200ab2bfab0f2a091e5151dc0f544e
be50bbdfddd13a89f22839c925a2e2c7ef0879f7
F20101107_AABWKT praing_r_Page_140.tif
ddb5761607f37c5acdb3c55a38e7cc96
50c05078e6e447eb9e3829be729548ffcf608399
8886 F20101107_AABXOK praing_r_Page_202thm.jpg
34b08916ec2503a1ef5aa9ae7d6ff891
a3a7784d5380dc9478c0e066e0e53f0722fd55c2
F20101107_AABXNW praing_r_Page_195thm.jpg
3e3a5e0c7198c262804e80f0d77a4e1ab91514b8
F20101107_AABWLI praing_r_Page_156.tif
77dfa317e4487e1a4395995ef26b748f
27f488334e1dfe6294c90754bfae1d7964940053
F20101107_AABWKU praing_r_Page_141.tif
5a9ff9a3aa2330ca03fc936c3117605b
1c7ca52e2c6f14893e52b81ec2bf6e44cc2c4fc8
37720 F20101107_AABXOL praing_r_Page_203.QC.jpg
5ed281ca5ae0d289d469ced486277164
d615ba46188a2541eb1227227710bb770466914f
32875 F20101107_AABXNX praing_r_Page_196.QC.jpg
1f31eb9411706ddfbf712fb19f43dba1565d2c00
F20101107_AABWLJ praing_r_Page_157.tif
4b150d42d96c05b5d6c872a86f2e746d
efa213fa3ff96ea1e207f2149a438704e1a76d76
F20101107_AABWKV praing_r_Page_142.tif
13746ef3feef024092005cc95519cef4
cfac1012806ee1c4f3186039d79298c273ecdb0b
9334 F20101107_AABXOM praing_r_Page_203thm.jpg
be58ef3ce711ba2ce74a179c7794aee2f94d5db7
8364 F20101107_AABXNY praing_r_Page_196thm.jpg
3a2f88aa8c6f173f4fd65aa06bf17205
a977cf828f10fbe0be2efa34ae5b4cd42592a7dc
F20101107_AABWLK praing_r_Page_158.tif
e399f28a5be66c07bdaa6e87ae6abac9
0d54a044dccb7a405251c549dd88853dde9cd3f6
F20101107_AABWKW praing_r_Page_143.tif
558722bd5b12bfd678ec5345bfe16cdf
9c742e50011f9b90065220d0be87bdcd710f742f
42138 F20101107_AABXON praing_r_Page_204.QC.jpg
994fd6299e0432ef38f9465d2b6af29a
0b1e288ce1c7e0b27c9f749d35eb224688464bab
40410 F20101107_AABXNZ praing_r_Page_197.QC.jpg
0132a6f66912e27e08e6344956761dc970c40eca
F20101107_AABWMA praing_r_Page_178.tif
4d0792e078f82a4ba2661d5a727a45594aa6b8a0
F20101107_AABWLL praing_r_Page_159.tif
46e9552d55cdc24a8dd9b33130b9c580
795cd6ae789d915eab21e897ef94a591c86a28d0
F20101107_AABWKX praing_r_Page_144.tif
69df84b0e7ccafec0d587b6fe184778c
e87976c97c3aa770974c0cbdc0125a87427791aa
9759 F20101107_AABXOO praing_r_Page_204thm.jpg
df22d5791739d103ef0147de0f335fdec058f334
F20101107_AABWMB praing_r_Page_179.tif
bd5e0262785077622a6fcc0b742f80b1
f7f1990744ac783261486f655d01d7ea8bf512e2
F20101107_AABWLM praing_r_Page_160.tif
213aeed515fd4bd060da1a3c79b3568d
7e171d68c8dc5a77b27de005e417a6789c2a3477
F20101107_AABWKY praing_r_Page_145.tif
2084c4a35be9d0fb185ec8cc1fdc3e1a
4ff98028be6405d059ce0237c4f8fa155578c93a
2853 F20101107_AABXOP praing_r_Page_205thm.jpg
764c91dcca850c7b49e7ef009230e2b7
bce0ca4fcc8bd56dee04c094327747cc9aac095c
F20101107_AABWLN praing_r_Page_161.tif
d6db79edf3e47bff007b3df89be36fc7
6312b563a0200aae2cbd035e88dcd0ffba07f18c
F20101107_AABWKZ praing_r_Page_146.tif
96b934c6830d6c9b4f64bfc779f6902c
2387f4ff8d8924aa658d691998816bb96dac04df
26975 F20101107_AABXOQ praing_r_Page_206.QC.jpg
8784c2629b637d42f813acce76e3b0a3
9ce0ae3eae2218d2037cd3ff21d1818c80e763e6
F20101107_AABWMC praing_r_Page_180.tif
2fa3fb3870d207fda8600fcbbcce9473
e9967837f7c07c6821057f4263c9885b5aca6322
F20101107_AABWLO praing_r_Page_162.tif
a8bd923297c79b8f07873fb7414b1935
c47b6f56d7e4461b5caa09c8f83efdda4ac4ef6f
6116 F20101107_AABXOR praing_r_Page_206thm.jpg
c9bacaff06bc03fcf752b948d8ea2a4cd162d9b7
F20101107_AABWMD praing_r_Page_182.tif
c401f3e51cbd6dc68d83e5a3a9d8ff81
7e45fea05f5e83f4dbc8691ac9bd6f5ec2030705
F20101107_AABWLP praing_r_Page_163.tif
b210c220cc7fa0291d9b1cfe73ce4bce
917ac46667542a7f7f8429ea01d3c969730b76d8
F20101107_AABWME praing_r_Page_183.tif
4edc012c54ff6481832a95f33f90ef93
df5b6c9e2811c6b9dbbc4d2de802cb5e516b7fa9
F20101107_AABWLQ praing_r_Page_164.tif
e4ed3fec5ee5cb64096417de47b3fe62
1efcdc4542a9abc9e349a97c4cc6a69c0c648c83
F20101107_AABWMF praing_r_Page_185.tif
7c709db527a331b13dec3428a10f68a9
b3e626ba573f8920c570562b95f00150ede4889e
F20101107_AABWLR praing_r_Page_165.tif
11fec44bafaf173ceb21ece78f4da6d5
4d43baf735209a18195cf5a2bed437098cf6288c
F20101107_AABWMG praing_r_Page_186.tif
838f8053f3c92485d96ae2c261d832ac
4ea696020e756b17b095704cbd0076ce33d702a7
F20101107_AABWLS praing_r_Page_166.tif
806abb04976fd975b19d61dc2737ca0248a3d670
F20101107_AABWMH praing_r_Page_187.tif
e37d5a5971126d858634fd0496544dd2
a7786a3c2f814faa8bf240f0fc5645cbc0130fef
F20101107_AABWLT praing_r_Page_167.tif
37fce710fd7ac12e6381d58a1fcdd879
be54c64d7368354f458fee4ffe01c06fb6592bbb
F20101107_AABWMI praing_r_Page_188.tif
aec81398c613281b9117c79b7630080e
3ccbf095aeaaaa250b180163979c3af7d3f0f218
F20101107_AABWLU praing_r_Page_168.tif
0f764ed3fd7aa74c1aae13ccd0f51c01
dce827ae6337f27a4a7ebeced14cb31d73df7bc1
F20101107_AABWMJ praing_r_Page_189.tif
831f4542e074a3496583d9969b088533
e326be9dfb719e397b433dd3e9985c14e98616fd
F20101107_AABWLV praing_r_Page_169.tif
c52690f6a7f0d5c04e2795c40d2d486b
7450e7f65accc06ffaf9bb56335597c82daa7930
F20101107_AABWMK praing_r_Page_190.tif
806622d2483acf0f6a18672452a68f4b
7ef384f2de49fa5712e25ea2dfb81a48531448a3
F20101107_AABWLW praing_r_Page_172.tif
043b1cdebf9492690b39b339a9a18552
F20101107_AABWML praing_r_Page_191.tif
1603d35905971ef2e31c3ffdd0767169
b937e4486a64609ea4c1b92b14707015b6bd8f1f
F20101107_AABWLX praing_r_Page_174.tif
4328cc671a87277b0a952dd2acf817906eaa8b27
10023 F20101107_AABWNA praing_r_Page_001.pro
2b82b92f23edf52d0aacd8d9cba77e91
F20101107_AABWMM praing_r_Page_192.tif
2479d99c430aeded15ed2251af62eafb
a54692cb23e2dfa34d4a6055fb24d6a4a962f23f
F20101107_AABWLY praing_r_Page_176.tif
e3a210270bcb8f76b1f26f55be916bd4
2a268d5a464321e3ecdda6a26982bc85b8cbd9c1
807 F20101107_AABWNB praing_r_Page_002.pro
cd35656996d76b3e758860ac5ff4cb35
b1d99dd47a5e02998f33693cca0efaec40db8d21
F20101107_AABWMN praing_r_Page_193.tif
18454af3658c063c53079ba4b8d776b5
b8dfd4a04a023f65b1e505bf9335d1f98d34f454
F20101107_AABWLZ praing_r_Page_177.tif
0601e8d02efb814e6c92ac048d3da458
2a822abd428c0b7e4ebe84aaf5e390ea6131fabb
2980 F20101107_AABWNC praing_r_Page_003.pro
e29d2b1c2268f5d79d64873b1ed6256b
dd833bb18ce4d65f914dc5463f1d177b4131321d
F20101107_AABWMO praing_r_Page_194.tif
F20101107_AABWMP praing_r_Page_195.tif
2c459c13bca67392b1fc07305969e43e
cff3308131a5debeca89b4b4583d6d681a66fe5c
9811 F20101107_AABWND praing_r_Page_004.pro
11d95458d0b02e6476f02cecd0552125
15bf6f4ca051eb91cdd34a92694ac8f2f5583ea9
F20101107_AABWMQ praing_r_Page_196.tif
cc400f7af6188464b4197bdab5fd4786
f09484f72e4d03f7d9cd0559ff6a1f1f28ccd1e8
67254 F20101107_AABWNE praing_r_Page_005.pro
6a3c1e956a350b2948aa89e376c47d1d
F20101107_AABWMR praing_r_Page_197.tif
94d332dce056062af436660e2664e7ab
b2b7b08aaacd81b2e7de8cf5abe92217ff542d5b
83215 F20101107_AABWNF praing_r_Page_006.pro
c7bc30fc5f96b4bf9020af6de6dd6c85
1f1f969b98a4afc721385b50c6609836cd865c35
F20101107_AABWMS praing_r_Page_198.tif
bf8b984080c5d41c0fdfdd6fb72d33dd
bb6836caf4369a2088247d1b004f6733c59d5731
44603 F20101107_AABWNG praing_r_Page_008.pro
ec39060af49c314de6dae46851d06b3b
F20101107_AABWMT praing_r_Page_200.tif
5c8099622c0f3269628370a4482c6757
74808 F20101107_AABWNH praing_r_Page_009.pro
F20101107_AABWMU praing_r_Page_201.tif
c4d6445d667d94e749d1b40f86420282
780de0b60ce7e66f6561d3304086a86f95924aea
73909 F20101107_AABWNI praing_r_Page_010.pro
b113daa2a25bdb95850ed249c819524b
F20101107_AABWMV praing_r_Page_202.tif
05c0297e1c0e830be955358a127ca031
3192656d6b21028ac0f71667626772889469dfea
75212 F20101107_AABWNJ praing_r_Page_011.pro
94a4fa227f35b7d63ae5d08155f86ff3
F20101107_AABWMW praing_r_Page_203.tif
7e5f5ee05daf633d7696d20279b26644
34aca4d3208d83f3314e16c99b99a18a17822f2e
31891 F20101107_AABWNK praing_r_Page_012.pro
afcc28e326a9ee66239aaa0b8ea51a06
7bff4abc54a85f3feaba8dbb5bd73bab92e0cab9
F20101107_AABWMX praing_r_Page_204.tif
3c0e31882f393819e1f02c9fd1d66442
1ac4fa38d2499f9da84b5762fa44c96d8322d455
50004 F20101107_AABWOA praing_r_Page_032.pro
04a30f32d6d4857bbd460e99465fe668
857be78f9f6db4fd9a2afa5ca82a207f118ff246
52919 F20101107_AABWNL praing_r_Page_013.pro
2fb0b62e96fb5709837645de7fab0b07
6d80db17f5a3dc37c0e056f37a25f923c83555fc
F20101107_AABWMY praing_r_Page_205.tif
f9a80c1b115767b44e3d859259ef9ef2
5dce6da0ac27d6573a47b922d4e208449837df45
31630 F20101107_AABWOB praing_r_Page_033.pro
a9071c20e2846bcd4b441ae351126f2d
4e1abf4f41d9e8e07d6bc6c516d12d68ab903792
57869 F20101107_AABWNM praing_r_Page_015.pro
47b66ab6d0f567657d5c9e5a3acf829e2a1d6bcd
F20101107_AABWMZ praing_r_Page_206.tif
b75849d375881ec51e5ce8f4f21922fa
a88a8a0bed80c16638d35fee60fbcea3c3a327c3
64297 F20101107_AABWOC praing_r_Page_034.pro
475bd68b24db42548cccb03a41000a667e052976
67395 F20101107_AABWNN praing_r_Page_016.pro
4900089f23256467d2daa2dbd233ecaf
c7c3a4f51f7fab7f47299fa1c8e43e995d73d3b5
F20101107_AABVLB praing_r_Page_113.tif
93d806e3ab5a96fde71ab6a27e3d3872
a8a3081407ee0d93faeb4696803076e40c6687ee
46642 F20101107_AABWOD praing_r_Page_035.pro
66870b9ced48fc619d157510b2f9ccd4
011d691da0573bc214c7227cc176359e75e0c96b
67575 F20101107_AABWNO praing_r_Page_018.pro
09cd23ef088fa51749f0e761e43952fc
b7db8f33c4286eda355d424533caa7bc56da360c
60889 F20101107_AABWNP praing_r_Page_019.pro
50a9643aca81d52d396453f4b9f07c0c
6ba822e26db606b1efa4ab244f58792f2c85b828
693964 F20101107_AABVLC praing_r_Page_033.jp2
78dc3b7ebd62646126d1ce8cb83cdb41
55424 F20101107_AABWOE praing_r_Page_036.pro
2d8400b538b669e60e7ff702e39473a9
d2cca554a448737f4ef2fc0bdf4b96596c9a1a90
57993 F20101107_AABWNQ praing_r_Page_021.pro
ec2bb10c01fcf97acfc237f279c0ae65
6730616dfbf815d47b1d0c096399740f6b591dae
120893 F20101107_AABVLD praing_r_Page_136.jpg
d765c1d453bb7f770c6439a0c0c6df21
5734b9f831570a16e769d7ea1557e2e531a7f05c
62088 F20101107_AABWOF praing_r_Page_037.pro
d35f18c5b7793dc6841d8d26047b1606
129a332591bb199c294eecd8f5686ec0c91bd3bf
57982 F20101107_AABWNR praing_r_Page_022.pro
d645de6650b9f501424433d734182365
93986 F20101107_AABVLE praing_r_Page_074.jpg
ed0ab545f6341e2d0aa2ed5b12d10372
70b30ffc47847bf50b26e416ba2d0c9f18ba10ec
54261 F20101107_AABWOG praing_r_Page_040.pro
d8c10afff4959369429163f8b3966401
b42e0384f8968cdd504e225af55a1f85edf35813
52138 F20101107_AABWNS praing_r_Page_023.pro
2941a47b47e6ee228f0358f2172a522e6bdd8b34
F20101107_AABVLF praing_r_Page_046.tif
c705b24a99cb61187d53e12b64a06aa5
a8de862908c43bf874fbcf103eb73afb0dd0251d
64343 F20101107_AABWOH praing_r_Page_041.pro
21bbebfcc87cdb2d6a2e2e01fcdf3e4a
a515bd8dba61b8a0a13c9c0e0a726145939d844c
54525 F20101107_AABWNT praing_r_Page_024.pro
950f4a019443b9904fd2d4534ee5fc6087597ec7
F20101107_AABVLG praing_r_Page_071.jp2
4a66e7556040e2042be00292bed425b8
c78c315d3bf6bc4fb47430ec1cb8297866389ae5
60667 F20101107_AABWOI praing_r_Page_042.pro
23e8571beac240b269bb1065f1e9d88e
4ddd30b24e5ac4fff9abc835867e3a1b85d28c89
65043 F20101107_AABWNU praing_r_Page_025.pro
678fc61d47993b75e217347b47140853
65fc2db3b6f91f0cd863e0a9680083ab247f8231
5334 F20101107_AABVLH praing_r_Page_122thm.jpg
000f86ed91fbdd5beb068bbe68189617
84cf932707027beb40249ee974f44e2cda2725d5
58999 F20101107_AABWOJ praing_r_Page_044.pro
533ff653c809bbdef56480789602ba1d026f2ddb
50469 F20101107_AABWNV praing_r_Page_026.pro
9d71fc0101ae77b2bde8406849458938
d7da15bc081f86243d452b7e831cb4a361430775
7916 F20101107_AABVLI praing_r_Page_133thm.jpg
46cfdb4177705500fea791171c4fbfc8
83d68439e08d9ceec6d7205fa16914b3957689a0
60120 F20101107_AABWOK praing_r_Page_047.pro
e58054c608aebc59c264c4f1d35074d1
e26608f2913f6493890c2fe823f825069c6006af
65975 F20101107_AABWNW praing_r_Page_027.pro
0e4f95b6d3c07fa57c6b8044e5b86ec8
a2111d94e952de3a195a7ae897124c01a5a2e99d
56763 F20101107_AABWPA praing_r_Page_065.pro
f298ab33b821b43e43831fc0e3cfc6eb
a9ac95f3c5929c56d2e5881f772fb6303235a9d3
33178 F20101107_AABVLJ praing_r_Page_185.pro
0a9093be99429e7112a8f58d65f278b777deb89b
48865 F20101107_AABWOL praing_r_Page_048.pro
14666660057431a1007f8de9ffda24356977204d
62707 F20101107_AABWNX praing_r_Page_028.pro
479853f496aee0fec339cdacbc829aec
0d8827b29267634f9b1a9b945a3f9500722a2972
51558 F20101107_AABWPB praing_r_Page_066.pro
720f4efb0761825cd964717ca8260d76
2549 F20101107_AABVLK praing_r_Page_164.txt
ed0dfaf7318da6e942b72d413bb9b940
7306675e7edc6bf9fc445e6914d012513f7b863c
67861 F20101107_AABWOM praing_r_Page_049.pro
15440a091c4fb6180b5a42963fbc7908
cc56f4d066466f1e8979bc05de7db0984ec280b1
54412 F20101107_AABWNY praing_r_Page_030.pro
4951fed3a7011bc342ef5b0a4c20f2bb
5106edceafae488a9ccf6662c4388b45980081b4
8678 F20101107_AABVMA praing_r_Page_139thm.jpg
fcd901fb9c95858692212845e49df482
013679b19836fcf4d1c0609c1a4fcdbce86c21d6
66707 F20101107_AABWPC praing_r_Page_068.pro
98da97bafb796c91768316aa74f74f69
abccc695d9d7cbeb7c6a8d7d5a78ab92d4d4d234
32750 F20101107_AABVLL praing_r_Page_066.QC.jpg
430bd8c702bef8e67b76203702bfe1e4
9d8a2cd4cb378b6ba0ac6c7f902b1911694feeda
48450 F20101107_AABWON praing_r_Page_050.pro
7b5ea9ea1a42c557c0316deac12ec36a
d888266e148e058bbd806d0c502931806aabc75f
57572 F20101107_AABWNZ praing_r_Page_031.pro
1af4efd3a5f644ca3656f3e7d4b6db81d808d380
49278 F20101107_AABVMB praing_r_Page_085.pro
7bd25c968c52d44db5eea736c5d7ce0162cfca67
59776 F20101107_AABWPD praing_r_Page_069.pro
bdc7197c92afff96e10183d45df6c5ca
f797178a6e53430863368d842f94f8bdfa39365a
F20101107_AABVLM praing_r_Page_079.tif
7f3603b4c5185ddb70c7885366e9a9e5
a7081c65c7da58f3bb504564303a7cf61ee55574
43912 F20101107_AABWOO praing_r_Page_051.pro
8f9dbd275331973c303ca38ed3f3a2903545bbcb
1913 F20101107_AABVMC praing_r_Page_159.txt
000887c6b183aeb4f52109f5a9b83c33
19e21c6e75a0697a230d770c1845be718b9e3aed
64760 F20101107_AABWPE praing_r_Page_070.pro
217b74a57893fb582c92e7abf972919e
4d3f8da3db33c8635f4c6a48c4a075c8249c4907
6581 F20101107_AABVLN praing_r_Page_176thm.jpg
a4f26ae68360f84cf1297433c8e148aa
93ccf6d07de0e0de20430a825b74bf7f9cea89fe
61959 F20101107_AABWOP praing_r_Page_053.pro
07daed1d596bd0a5cddeb44c2028af51
0323190032899cb4c21e44a4f74a6d390540d8ed
F20101107_AABVLO praing_r_Page_071.tif
1815fc3b4eda2c8903668e292d2bf76f
809376d79a86982aa85d473b09541504a22ec9ae
63826 F20101107_AABWOQ praing_r_Page_054.pro
e8047e63b13831df4d401b38166e572a
d1813f79502d4b4d2b8cb8b2f94419057185c4a7
118905 F20101107_AABVMD praing_r_Page_199.jpg
528a99ac53f6bf3dbd6136ea42103f31
61374 F20101107_AABWPF praing_r_Page_071.pro
0f0e36ac53c90d599d7a7c75f80db989
19a9bbd5d300d8e36594fc2c96cdb8f8d42870c8
123608 F20101107_AABVLP praing_r_Page_058.jpg
7ba54079d428e6ffe4edc05738802668
77725de0e411a09d89fc5c1c01e32ff8906fa4bb
99692 F20101107_AABWOR praing_r_Page_055.pro
f82e0d34e03f2f1078cc7c9df8d9685c
54274 F20101107_AABWPG praing_r_Page_072.pro
1cb2f33f312435aabcf4b3fee5106be8
bf901aa08b9d9b041f029cf8d29667a5573ab0a3
8256 F20101107_AABVLQ praing_r_Page_067thm.jpg
181c41e65af41f265a0e989d51fb7317
0310ce21325b1edce9ba6f7937d44d8aa575533b
62485 F20101107_AABWOS praing_r_Page_056.pro
8b232cae41c89d23b23ab6d9b2ca0f9e
570d8324f4e50ccb452c7ab2c3eb77b60db09b14
129276 F20101107_AABVME praing_r_Page_110.jpg
f9728517a0121c297095fc704eb7b19c
6acf8c268ee9322b01aae63f2973e2bf1d25327b
66185 F20101107_AABWPH praing_r_Page_073.pro
2e57f9a445bbc167b5c633066ef0219b
fa711e3c6b2427bd6146146b31a5bdcb3d50847c
2591 F20101107_AABVLR praing_r_Page_110.txt
ce88f3e6a544a1bf6176813328eb24ff
ab6f35bb4a38a8bc129a2c3984e6e6d23f781f2c
54329 F20101107_AABWOT praing_r_Page_057.pro
f35abfe4f9222c9bbf7e7ca216bb053a
35c0a76be0e98238b49ae1ca389ed8067f132d38
41030 F20101107_AABVMF praing_r_Page_129.QC.jpg
5a3e1e68ca0d32e057e8d529369e1cdb
c75e90fd91bbe0807150dca5828e62e27c0ed079
39981 F20101107_AABWPI praing_r_Page_074.pro
52071740ec8a2678846f05b17f98b47d
3211211aeb16064117bea8be71454c40a6046655
8427 F20101107_AABVLS praing_r_Page_130thm.jpg
9a5b7868a5a9319427689a98d2462bc0
62163 F20101107_AABWOU praing_r_Page_058.pro
8be68eb9e453b6523e79b57eda016cdc
5505b720124baea3dd0769ca3d3f0cd1667c0689
7233 F20101107_AABVMG praing_r_Page_029.pro
50feb81a0cbaf7e27b010065a7ca23b5
c3b2a7e16eb32753dbac4648f5b1bd1d627225c2
54478 F20101107_AABWPJ praing_r_Page_075.pro
3aff23b938bf1e4064b73273b9c409bc
73dab5f50a4a245a9ace9eaa28f59cde7664f84f
106779 F20101107_AABVLT praing_r_Page_042.jpg
e987cef2bea635587332594aa9ceac61b45d786c
64253 F20101107_AABWOV praing_r_Page_059.pro
296059691b90a93bba932fb11dd42a94f488f78e
112497 F20101107_AABVMH praing_r_Page_067.jpg
f1d022e053d0e0ef8844154ed3eeeba4
9db09df2bc273b657d126ac93a50931e8ce18782
29411 F20101107_AABWPK praing_r_Page_076.pro
fec05f9710a68862ef676aeddda34442
20d7392fe99cca5eef4b30067f8ff26b7f848686
61690 F20101107_AABVLU praing_r_Page_117.pro
5c77b20f6c410c8047e371b8d141f1e3
51c661598495703b1a1898d152ae0a006d9650de
68649 F20101107_AABWOW praing_r_Page_061.pro
f6899bba39130216280ab4941a19602bddbb1d0b
2447 F20101107_AABVMI praing_r_Page_053.txt
bc5da3a9c5a1cfa3fa3516e529febcdc
18399 F20101107_AABWQA praing_r_Page_095.pro
5875eaa7e30bd446b55c4c83bb316a2e
ba1ed207a65cc3cf5da8084a702e18860ee2eeea
58717 F20101107_AABWPL praing_r_Page_077.pro
ff048042c9672505dda62b4fa182736c
e0887c87156e38d667695fd7d5a6cfdfb98c7df6
2223 F20101107_AABVLV praing_r_Page_156.txt
7fac20f33f05f66ff937d5c1a28f58d6
d33f2485791a1a5e6bdca166850921f8af24ab81
62251 F20101107_AABWOX praing_r_Page_062.pro
3d8030391d752e9f67d3fab468a34cfc
8029a262ce6179d0c10267ee61803e17f5d6aeea
F20101107_AABVMJ praing_r_Page_025.tif
1c24bd9049378f25e20e7d23be4db051
bdd1a85a066bdf4c944fa280fa71a93876bafb59
55633 F20101107_AABWQB praing_r_Page_096.pro
f82fa593a3788b89a2e724a204b2bf0b
9473c50d7cc4f8509de18e2a7be43222d728352c
44636 F20101107_AABWPM praing_r_Page_079.pro
fe3720fee46d159989066f4f80b00c7b
3ba3f73f861beae92b3c1c22c24a0f7c2585da35
1051951 F20101107_AABVLW praing_r_Page_096.jp2
1f95587b5a1ca676f6edd16bc3c258ab
e137509888d8684d3aedc752ffbe4d34e7b815b8
63647 F20101107_AABWOY praing_r_Page_063.pro
a1405540b9f75301d5a5b875aefb005f
4c98edc4f955e9d748eb945531172156133919bb
46679 F20101107_AABVMK praing_r_Page_159.pro
e5bf84dffc312fdb7001e2913bbc7716
0c36ef8b28059a9ed61cfbf3bc0732397a251513
62275 F20101107_AABWQC praing_r_Page_097.pro
6035c9b87407f5cb42252e8e053943a0
f3cd429cd98d5eca7e2cd3262e9935d70697d1d8
35507 F20101107_AABWPN praing_r_Page_080.pro
fa5d1d6fc209e5bb3e0562a2f2b9a809
f891ff54fa10b9894630372a408c72faf99fc92e
9031 F20101107_AABVLX praing_r_Page_003.jpg
75953bf8d203b8788f7fc0da3de0ca26
bfb8730a3a34738d4679d71889a0815560cd0447
55342 F20101107_AABWOZ praing_r_Page_064.pro
ff3ac9e30ccc67c25066d7b9d9213b55ddb61a01
68039 F20101107_AABVNA praing_r_Page_060.pro
cc83643f188251a2bac9e38019a0abb4
8712cb85ed1f5785ce823cb78fc7179f00f3e2c0
F20101107_AABVML praing_r_Page_075.tif
e273c18a90a10cc0ab52149b5f875c7d
b27707e064518366b23ff430e02d1dfdd0021158
51963 F20101107_AABWQD praing_r_Page_099.pro
e2ca44e9387dedb0b01bf1aa4ccae035
e4105cc3f969816db7a73fd80e10c42d1f34cbd4
43622 F20101107_AABWPO praing_r_Page_081.pro
7c208a66c757234967d228689d4fc7c2
1f65372f716faff0691dfbd6dacc2182605c460b
F20101107_AABVLY praing_r_Page_192thm.jpg
4522ef2a0925d28720dd66fea624d5bd
862c8c614a12b6bcfc24e8642e64b5c6e2a73e58
58276 F20101107_AABVNB praing_r_Page_191.pro
65b118e998638c8d5dc622a56fc250ac
31ae19385a79737b1cd9989db9684d745d44378f
43529 F20101107_AABVMM praing_r_Page_082.pro
0728c12eaaba110d307f7cf5c21aa8ee
8d6010769d6e0230a4a703d42d7b98e939c2c61b
48255 F20101107_AABWQE praing_r_Page_100.pro
b6ae0c20c98217755e2c6bbba998778d
fe3b57d2de761ea213983b7226d64337916f004a
40445 F20101107_AABWPP praing_r_Page_083.pro
db04a12d45113b786f223c273458514a
99a1721a3d2e0082b97696b4494c8e70bfd71d99
2300 F20101107_AABVLZ praing_r_Page_138.txt
75aa2ba6e700548273645608fdca2faf9ae6214a
9515 F20101107_AABVNC praing_r_Page_049thm.jpg
53f60ec3a810c0293922f9d9354ba828
7dd7185817ed965e8ba53e24113608c8a1119ce3
F20101107_AABVMN praing_r_Page_115.tif
32f77756d7de3738f9b1bfec07652471
34c2d039af0c371bcf12ba4e8af4736b066a65e1
45437 F20101107_AABWQF praing_r_Page_101.pro
9aa793d4ef500f4495903573e39b6dc5
a4779be8bbde8f3fd5c6ff32b1df746d1eea6749
56160 F20101107_AABWPQ praing_r_Page_084.pro
b5271b6f3e61b5b8cd4eb20454b0fe59
e58bbd2e7b3b4d71a325002666e582930ac8f7e9
37144 F20101107_AABVND praing_r_Page_062.QC.jpg
049aee2fef744799f8ff1af1d895f5a9
dcdea1386418008bf0e2e24a0ab50785b19d588d
F20101107_AABVMO praing_r_Page_036.tif
7ebb9716371f1a3a4027a5cee183c7aa
9ac3e554aec1a88e791ef9ab4c58f5dc0129b118
59584 F20101107_AABWPR praing_r_Page_086.pro
9085614d1816f208cebbe9f55e9191e1
39179 F20101107_AABVMP praing_r_Page_043.QC.jpg
6c0be9ac552c7a12739f50fc4e404487
6bcc443d24fab666711aba11a4b482be6cb0cde4
42857 F20101107_AABWQG praing_r_Page_102.pro
c4cfcf75456bb019109bbb15f4cf85c4
7836e4032ab0a6492acd584108a45f112ff5204b
36275 F20101107_AABWPS praing_r_Page_087.pro
0513e3c08f84d92da9e8e4cb77024571
4efe3d640ccd1eac55409ce18c1b3d04869d3381
121356 F20101107_AABVNE praing_r_Page_121.jpg
6cdd767ebfd134f2b615e14756f0ed7e
f78c6f08398ed92d7e07ffedb6211e514ceeb64c
68493 F20101107_AABVMQ praing_r_Page_160.pro
c5e952e1b44662758467726266f5ce2e
53527 F20101107_AABWQH praing_r_Page_103.pro
a3acaf66b1a0e0efba3081f42d876b64
214e3f84f9167dd77d66304c68bedc5fa1ff3666
45647 F20101107_AABWPT praing_r_Page_088.pro
02bc15f32a01f7fccce4fd6c03031e00
d02526b38c69f8a4e401a26c08010213c92b399b
55972 F20101107_AABVNF praing_r_Page_098.pro
cafae5450e2a0fe2ae2a8a8cfc2c4b2f
76b17f4247174f5c663b010cf9bdc4505ff2c45d
2581 F20101107_AABVMR praing_r_Page_034.txt
02a4952d34cf8a6fe42e1af4c1f5413dce599e72
60822 F20101107_AABWQI praing_r_Page_104.pro
87e3e549d54b12a7d4d9ccf040bee888
ccaa496ddba436391aa04396fbf0108718d185aa
40534 F20101107_AABWPU praing_r_Page_089.pro
857ed57d4da4b5211a6e669cf424712502711037
54365 F20101107_AABVNG praing_r_Page_007.pro
3a99a9bf8dd5b4e24bedcb7c8308b127
57e73929ae7c4f95d81f823deed0966649cbed05
F20101107_AABVMS praing_r_Page_170.tif
8e83ff8e25b206de61be375e7098562d
d51b3eb6fba44acd43e4f1946d87173a074ceaba
56695 F20101107_AABWQJ praing_r_Page_105.pro
006bf14fbfa84ae88381ac9aa76621c5
aa26d1e5974723faea71e0b2378ac9e913376d55
41139 F20101107_AABWPV praing_r_Page_090.pro
c7100f1446d880feaa72da003f6e582c
3f5b9f1144ec66e14ddced7684b4ca59192541f1
F20101107_AABVNH praing_r_Page_010.tif
97d920a3ee8d674b2d9b64f6c18726f9
80db25e3bb218ea98dd4fe549db88bfee50cd518
1367 F20101107_AABVMT praing_r_Page_002.QC.jpg
a606fd7dcf2ae12ac5a1de3d3af96fe7
d05caf16017a82aa6f15bb1cf8b606b50dd0a88b
66479 F20101107_AABWQK praing_r_Page_106.pro
697259e82fe2c8333dc0f98d62666d1c
c297ff597f7b06a724b6774dd902fdea712ffbab
46685 F20101107_AABWPW praing_r_Page_091.pro
f51d344a9a28887bb2e0801947911264
02c495d791d2a3c48a83a3637a8feae822571657
1051929 F20101107_AABVNI praing_r_Page_158.jp2
c1ab9f50f9630731d1d26ffc43d57c71
1051958 F20101107_AABVMU praing_r_Page_049.jp2
9cf9b3382f167e690d26f8b9ecdcc13a
79d4796d01e699c79740f0ea3120d1fb0984e94c
65363 F20101107_AABWRA praing_r_Page_123.pro
05d2e3b82062ef9273f5a2523d1177931a5b9a40
61829 F20101107_AABWQL praing_r_Page_107.pro
2e80ca672e912947bfcd4bb7626a77ce
f46e4392ed484520e4df5049061ed8b6b37109cf
54895 F20101107_AABWPX praing_r_Page_092.pro
ae2a34f6ce3db2e6608d03be44c30bb1
d3f7341715610a32493110f77e63bb1ea2450954
105576 F20101107_AABVNJ praing_r_Page_130.jpg
f27b5c76fcb1ec88ab68628dbc89c24f
368f63ac75d2d33481127ff2b3601f89733bcd02
F20101107_AABVMV praing_r_Page_049.tif
eb9d221d7c8bfff89632ac98d5d23c00
7b97d23be82c8e456c174c4c507a5c4ffc51369b
60952 F20101107_AABWRB praing_r_Page_124.pro
54c42ef58dcbc773fb7a4f8277e33100
9ceb806305a894948e2b09513742394a97668313
65103 F20101107_AABWQM praing_r_Page_108.pro
397fea9956feb491f948c5076e9199de
59414 F20101107_AABWPY praing_r_Page_093.pro
ecd211322465666f08358b7711e8d60fe79c1089
1994 F20101107_AABVNK praing_r_Page_126.txt
9b80dcbb911245cca6bacd99ab83680560d61340
32989 F20101107_AABVMW praing_r_Page_138.QC.jpg
882d76354a86491233410b0900965488
44624 F20101107_AABWRC praing_r_Page_125.pro
bf84d32bc737a4bac6ee5ee99b8c4135
41dd65ba661b185ee8f83a0383976266b416dfae
64273 F20101107_AABWQN praing_r_Page_109.pro
2b559abf94471b37a4b648bab42b25bb
48883 F20101107_AABWPZ praing_r_Page_094.pro
21fbed8dea97c82b528d998e6cb992a2
02e063be98e03e0dd00f6a7c0c9e5451ee729e8f
F20101107_AABVOA praing_r_Page_084.tif
c43f82ababde953643c6cc4ef31f1a51
87127 F20101107_AABVNL praing_r_Page_190.jpg
ba74269e285c2070332a9fcb102a7892
72b79812366c29fc6b9e0ed7c2fa1ce171da8c25
118969 F20101107_AABVMX praing_r_Page_124.jpg
50251 F20101107_AABWRD praing_r_Page_126.pro
91dea606d60f5e9e22dc7f1f77c623c5
3f127cd5cd33e75130f703ef27499cfa1aaecb93
66227 F20101107_AABWQO praing_r_Page_110.pro
0e9062706804296b820a5a4b7d54cc68
F20101107_AABVOB praing_r_Page_020.tif
24294f8300977bd9e463812e4c4987cb9ea6f795
32199 F20101107_AABVNM praing_r_Page_181.QC.jpg
e9be3a2d38fbf3a19d6dfed5634eaff0
1b0fe012b445ca829b3a1ca06d24b3ec45f885c3
2619 F20101107_AABVMY praing_r_Page_173.txt
c559804d61ebd7579b1571b48a046bdf
c82841075bbfc1a76e109e16a38fa5e986e68d0b
29468 F20101107_AABWRE praing_r_Page_127.pro
654ca5bca4b34246eee24e9f74bd4ede
62503 F20101107_AABWQP praing_r_Page_111.pro
3000 F20101107_AABVOC praing_r_Page_010.txt
67aa4b2b00195e6324c52e2551c49ebf
9dab439af0f15cac7835e389f4265158726e1cfe
62789 F20101107_AABVNN praing_r_Page_017.pro
3e2b34ee16e385e87124f044d9dc2982
14eb58bfe4aaceae3662d7f860dcc2486be6690f
55350 F20101107_AABVMZ praing_r_Page_143.pro
342608935ac2dd99607fb03c9cdbd960
61a1c6e3eb6454172d64761aa42b374a110ab57e
68609 F20101107_AABWRF praing_r_Page_128.pro
f700eb4683472beb30dfce146f1855df
17f7dee7889cb0af42906c44f41927a9cbc4874c
54366 F20101107_AABWQQ praing_r_Page_112.pro
fb369eb30edd654f7b4fecf587be1dd4
a30d36e24c51f498fa8af8927553558af47f87d1
996398 F20101107_AABVOD praing_r_Page_183.jp2
663f6dd6fa1943b6cca300838b1fb2ae
2fbec366fee8dcf8139ce9c9e3fc881b5e553bac
132792 F20101107_AABVNO praing_r_Page_167.jpg
ecc2de8f3cbda2c01b0bc44ca5e2b3a4
aef701dbc497efaa4fc69bf99b9c775b7aae7b68
67073 F20101107_AABWRG praing_r_Page_129.pro
af997d5b57fa609475e3e9f431386669
1870a483ff6652e3af57334ae6f8f5a4f671b236
57761 F20101107_AABWQR praing_r_Page_113.pro
e7a3c3fb178eec91608a5289ec37bd7a
F20101107_AABVOE praing_r_Page_194.jp2
58774c47246fbd3da6ea3a8c4561e69c
9a2e3e5dcd697c703682bd34856d5fa200545713
33392 F20101107_AABVNP praing_r_Page_052.pro
7abb38033fe628560c57b4df2b6def36
67636 F20101107_AABWQS praing_r_Page_114.pro
0857599ea88480a1102107080103afd3
372e287f158efc06d393a79e3c13b9a04f8ca347
F20101107_AABVNQ praing_r_Page_150.jp2
52f4815ef978383180537ba094f1fe25
c1e98c7bc9352209ac3b989c7c60c1b2d9b6e33c
53485 F20101107_AABWRH praing_r_Page_130.pro
3e9b75bc18ab25e6dc31e3b2d106d6d4
18dd85ea054141df3f8b9a8973ca171649d39bf8
45456 F20101107_AABWQT praing_r_Page_115.pro
4185246d7b79485fe1237b8af7dc20d1
9200 F20101107_AABVOF praing_r_Page_129thm.jpg
99d5f4c749c19e00d295db1133fb361e
041b898c7457b1f85ff52f3c41f2c87f5e5cc79d
1051954 F20101107_AABVNR praing_r_Page_021.jp2
8d733d75e278ea054ae1eb845fc8717d
4c41c3c26be83c56c1a53a59837edf187853153a
59544 F20101107_AABWRI praing_r_Page_132.pro
49a7487d46d38117c21eb6943ae89d1a8d425761
66318 F20101107_AABWQU praing_r_Page_116.pro
2ef2702fba65b8eccf37a6337a85b771
F20101107_AABVOG praing_r_Page_156.jp2
24a852da838da8c3a1913f5614e01662
d9beac92fcd358e8a9445a114d758bc8cc85deb8
109628 F20101107_AABVNS praing_r_Page_026.jpg
46697e7cb32a3981d2a290944ac87da4
3424a5ebbebf188b1b5500afb4d4ef6a31729b40
53536 F20101107_AABWRJ praing_r_Page_133.pro
11ed4a3907a877e981c564b128b32fd6
f733c346920430393979e010c04d4a258b5a0269
59612 F20101107_AABWQV praing_r_Page_118.pro
a4946dbc60eb3f86f00bbd71c0f2ef46
fa0af6f980969c5feef5a546accd7d3a8e5ab225
2160 F20101107_AABVOH praing_r_Page_145.txt
7e64a55bab308db21ecdde18e07864a1
915f5f176ba83e2633280bfc04f6f6c01f07f1b0
F20101107_AABVNT praing_r_Page_121.tif
4541a4c57ec8092f688641bfd4def117
11662dd24c2db6f61d702b1917855d1c1d5983c7
66949 F20101107_AABWRK praing_r_Page_134.pro
45c429f4bc21854f4a7f2b8311098e33
642bb4cc5150f8c94ef0ac52591e83996cdfc449
55198 F20101107_AABWQW praing_r_Page_119.pro
2af8c3ae78a095a86a116d64208f9245
a70d779b49a1cec095bd02afcbbbe814426c9e8a
49723 F20101107_AABVOI praing_r_Page_156.pro
b0b54e0df0fef70695af398dfcb85cc0
678f3fbea9a4e790f27a122f6a8f195ee9e9a03b
7569 F20101107_AABVNU praing_r_Page_082thm.jpg
3b9a3c88ca8c40fdb2a8388a6bdc7272
97bc229ee45aab035370c32a6f9a8548509bc626
62640 F20101107_AABWSA praing_r_Page_152.pro
45d11d81c24b117fd29515378648e17e
1e49e3dac6d76c2f45e8b3114b227f5f2db53f07
15838 F20101107_AABWRL praing_r_Page_135.pro
37f24a986f4bbe80aa076d7c768204cf
47499 F20101107_AABWQX praing_r_Page_120.pro
f3f3ea75e365bfd91b109674a37fbc57
3bbf4d51efe2d5a950ecd0344b26c73c7bea1c87
40048 F20101107_AABVOJ praing_r_Page_123.QC.jpg
ae22033ef23be3d19e170ee96eb34dd197f1ffe9
9003 F20101107_AABVNV praing_r_Page_064thm.jpg
406ef0951d7288c448fd6bec48bfcd19
665e4dd1b944b21ff9d03f81fc346e89de13ed20
38437 F20101107_AABWSB praing_r_Page_153.pro
49787bd513c756c68d581181ec0d4905
b1ea05cfdc13d35ff373151c2e5409228c3d193e
62147 F20101107_AABWRM praing_r_Page_136.pro
d302d55194ea110c6d7101aa024c6ff0
5579cbe71cec894e3fb8d3e1f758e99018ee83e0
61500 F20101107_AABWQY praing_r_Page_121.pro
af56fee02aa440f65c8a8f43bf6f9e5c
5b3ae6e0639317b0fa0c31f5797e6fec10ee5a60
F20101107_AABVOK praing_r_Page_066.tif
cae46d91bdf68de972ecc749e927c8d7
95d1171abb133dc6629497e447813ef2dbe3dcc0
64082 F20101107_AABVNW praing_r_Page_043.pro
665bd7cb9ddba2d59aa860d36e25d350
cbb6e9e19ffbec21e2ae7683f6cb14460d8c322d
62441 F20101107_AABWSC praing_r_Page_154.pro
1815c471e4cb18baa7e9b11303f6db06
bcf4b5e2c0fd117b7fe3c574e9d1371e33d0a9bd
64811 F20101107_AABWRN praing_r_Page_137.pro
38189 F20101107_AABWQZ praing_r_Page_122.pro
c1a91c43a658eaff3516b67036260fb2
afa1276beb578ca640f50e39a48a8a097172f98d
2267 F20101107_AABVOL praing_r_Page_196.txt
bfe4b344bff60bbd830f945f94ebe52b
21aba602e6f1c1358d521b376759c94018228e5f
F20101107_AABVNX praing_r_Page_184.tif
500a964c07c835fb727797f8722ba1f5b1077b40
44513 F20101107_AABVPA praing_r_Page_200.pro
a353f24a094bb6fd5922517c480d6992
b7423eab124e5264f36ffacb1101ba6633cbddb9
63892 F20101107_AABWSD praing_r_Page_161.pro
d0a3a318a93cde4aa7674ae8514e41b1
46b1a0d518814f247c5e96b72ed5fec795b9fee1
52397 F20101107_AABWRO praing_r_Page_138.pro
e6163a7543ab1cc89cbb8ddfa8f38a33
26bccb140dfece7cfd296a9158022c4fb9a46bea
8887 F20101107_AABVOM praing_r_Page_107thm.jpg
c5729a385a688cfabffa5335bd9b9826
40e830dcd8eb68658126e3c39d0aec673f9d9c7a
29745 F20101107_AABVNY praing_r_Page_055.QC.jpg
b5b359f3d827b9c9a44661952b7281b5
907700ecb5fcb3e5c925c583596bdc189c8af07d
46645 F20101107_AABVPB praing_r_Page_039.pro
7769bb45738b20b84500021afc6515fa
39347 F20101107_AABWSE praing_r_Page_162.pro
45003b6418533ca2ef8a6d05cc0981e7
0603dc7316ac7d924f9e230eac080ccfb7618f22
63846 F20101107_AABWRP praing_r_Page_139.pro
31cde2d674d7c4b1650cbc0c5665e2da
54da6e236c596fb8cffd10869aeaf1f26bf50bb7
F20101107_AABVON praing_r_Page_013.jp2
af59c59b3cd85d0b69b0de98490182ce
2ed85a175cb26c422cd9430e2bb5fe7f66b2d5e4
59537 F20101107_AABVNZ praing_r_Page_158.pro
7a3b005007158dbbe4374dea28ff3c6e
c23713f03168e0540fcd2596e554ddd4b9363f05
F20101107_AABVPC praing_r_Page_154.jp2
bc70bc9c13a98a77515309cabae3c81d
2ba53db5d379c9abf3fbf26cff64b7b082344416
54346 F20101107_AABWSF praing_r_Page_163.pro
7db92dbf98b5cc2d482aa5344e5a8312
9ebe6db0e40a461a865981724ff26675d47e4b26
64704 F20101107_AABWRQ praing_r_Page_140.pro
71c2890079dc5232d3794118b1005526
42efda6a7cb90eea7824e4db9c1d8ef8389b4d28
F20101107_AABVOO praing_r_Page_022.jp2
1fed5c509b3219b3aee71fa7bed670bc
b82e2d497bbfda45915caccf7e395d83d4856e3e
127999 F20101107_AABVPD praing_r_Page_157.jpg
08ee257f8fa258f70dcfb8b5e67be7d2
e24abf735c5bb53ab855df098cee3df93d374583
58711 F20101107_AABWSG praing_r_Page_164.pro
851649fab296c74ccbc65f617aa404858a4bcfa2
64388 F20101107_AABWRR praing_r_Page_141.pro
4cc102371c9dcbdbd6e32bf57f8705ca
a05a904bb3b75d37ff42e03f0cfa4e7a6357cf1d
F20101107_AABVOP praing_r_Page_062.jp2
b0a73b0a55035e23c5a180cb20904063
1ec0858741ed751121aa4907ba7ffac55d9d8b2a
7307 F20101107_AABVPE praing_r_Page_127thm.jpg
f190f28a3607284164b4e123bcfecd23
d701cda2ee6cc1d5f46d984fe9d6f8949fcc49ab
F20101107_AABWSH praing_r_Page_165.pro
21b5cc22b397f2df25f5ec7c20da21f1
1858c3d84a3a75de6656425057264f60a6b7819f
44106 F20101107_AABWRS praing_r_Page_142.pro
0cf48a59323a8e4f684885f872c663c3
349c6a890a6bfbe6687420ca2be7eb228139d100
8100 F20101107_AABVOQ praing_r_Page_098thm.jpg
46b1ac52237336fe742748309b076348
c388742298f2852e2fea588fce745a835d950ddd
2470 F20101107_AABVPF praing_r_Page_069.txt
ebf36a5968c40430bf524da0ffa3ab00
3a785307943bdef23ca88902293ea220e65a7a09
51696 F20101107_AABWRT praing_r_Page_144.pro
bd33ac22eb7f2365fc4246df854c1a16d1e5da04
9225 F20101107_AABVOR praing_r_Page_151thm.jpg
aedfe790f5e4540f8e924af234ce760e
f1641f0a637082aebec2406ec2d43aeac14985a4
58286 F20101107_AABWSI praing_r_Page_166.pro
9e138eda04f0ea117c48ca1d7babd283
54eeeae8988b88a4565c010a2657c813cc676cc4
51987 F20101107_AABWRU praing_r_Page_145.pro
d3da96df9a0469e4e511f385bdf32588
F20101107_AABVOS praing_r_Page_047.tif
0dfc7b32e8a91f7166e61123271d8b2c
157f2ba546da17cecd29d55d61baa301eb2fc7b0
7137 F20101107_AABVPG praing_r_Page_083thm.jpg
4bdc4499fa0f236b26b786d2f337d3f6
2108dc74baeefd5cf84a68ae3698824428680253
69942 F20101107_AABWSJ praing_r_Page_167.pro
d439e8d72476ec8ebc5dac71026ba711d2272110
54978 F20101107_AABWRV praing_r_Page_147.pro
e62e530cf36ea48c62368f069c3160da
ccf889f6089c42fc699339c82b2625acccc8e2b9
2411 F20101107_AABVOT praing_r_Page_104.txt
5dd772f5c67d7a8fe60e414a897a6dd0
7e8ffc6c8668578bfc08d6a84712db3aa3907e1b
2422 F20101107_AABVPH praing_r_Page_172.txt
fb2daf2732e110563fb05aeec7d65471
a82289861ef73c06edbd7cf9b823b287c7889738
68029 F20101107_AABWSK praing_r_Page_168.pro
20c6c615527151f952928525bba21b36
45827 F20101107_AABWRW praing_r_Page_148.pro
ff4c95254ea245f8932a83215375a9e9
41347 F20101107_AABVOU praing_r_Page_038.pro
1593f1da03cf331cbb250b5091578353
a04db5b2f5129ed5cba979f25dee7afa2609e3a8
124264 F20101107_AABVPI praing_r_Page_043.jpg
ce7cd991dc45993708ea79c92e74f2d5
62127 F20101107_AABWTA praing_r_Page_184.pro
63158 F20101107_AABWSL praing_r_Page_169.pro
f43cc67baa8673ba436fd24346fafe77
46077 F20101107_AABWRX praing_r_Page_149.pro
e7fbdff836c79467d5501f133e250fd9
6651883d269f94675da1662406b110a3201eac97
113331 F20101107_AABVOV praing_r_Page_104.jpg
0e252e252cffe604f8d8a80f89b2d5d1
202dda07f5a803a2b4122ca206bf5515079478da
1852 F20101107_AABVPJ praing_r_Page_125.txt
e1ba5ab491b24e7020fc8d922e82a179
c52b95790299508ef2e8bca3ce8e9aa822e5e84e
63417 F20101107_AABWTB praing_r_Page_186.pro
bc2d335011e448271922e988e141f847
67bf0569b3dd5574c9d5d6e494375e7952ef5e86
55995 F20101107_AABWSM praing_r_Page_170.pro
46e404c0b30a3c9342c1564188de1bee
5c6eaeda2e5f965b1650ff4d9a8d1d93f7479451
66664 F20101107_AABWRY praing_r_Page_150.pro
063fefc2e1a930ae3fbdf0f973d6d1d9
a178c7a2c30dd8ea60f6d3490d41ccedaf56b808
8762 F20101107_AABVOW praing_r_Page_071thm.jpg
20569b8da345ff3dda500059885079d0
a45039a56ec118f1e794d4d4850a601a3340dca9
38240 F20101107_AABVPK praing_r_Page_071.QC.jpg
16391 F20101107_AABWTC praing_r_Page_187.pro
02463428ea77e7021f15826bbee888d7
c264283a28db1620b984763a801ebdf436d6accd
53936 F20101107_AABWSN praing_r_Page_171.pro
34b4f468bdacf1dd2e98e5fca5ddfebd
356ff9613af2142dd43679356560cc6fdda4d48b
63357 F20101107_AABWRZ praing_r_Page_151.pro
65aa0426d44f4cfd72284bc0876fb849
63856 F20101107_AABVOX praing_r_Page_146.pro
a84cc6f4a7bee1f65d45af1ca065b195
6d4687bc64a5b467a7ac2e9a47751fe23dc3199f
F20101107_AABVQA praing_r_Page_199.tif
2bfcf577b2581507529d0c2ef1a84872
d17bdfca8106d28ded0e8b46e692553c4aefd042
58793 F20101107_AABVPL praing_r_Page_020.pro
149419bd209842c3cc0f08c63550ee2e
62d9c171707395fe22f09b19f26cfbf4c89f4d0e
66991 F20101107_AABWTD praing_r_Page_188.pro
dee301fb49fbf9c771e9a711a98067f2
63a2d6c825cf9c705ea875ae5baa9c27fb4f55da
56422 F20101107_AABWSO praing_r_Page_172.pro
51a9d5a179965be084c9984af50c7442
9384013848c405b9e5f01cdc677b47cc5bc08db2
72705 F20101107_AABVOY praing_r_Page_012.jpg
21a8f3d60d9fa1b60308e50683683e19
131623 F20101107_AABVQB praing_r_Page_160.jpg
6af23968f72100cc7dd2d0ab83863a74
dc07c3909edf0ff08e4d7b831e627b7f595042a0
127733 F20101107_AABVPM praing_r_Page_034.jpg
185070a929176bef00e7b00c555573bf1d9cdac4
23258 F20101107_AABWTE praing_r_Page_189.pro
7976097a93aaf9c462d58a258b618195da9e182f
64838 F20101107_AABWSP praing_r_Page_173.pro
9e96d279208c4536793d8fdffde9fdf8
c06939d4b0e9f326aa6cb6ed743edf3c68a3cc47
F20101107_AABVOZ praing_r_Page_051.tif
fd9f0a68b00ab342781c542b8e99d7b7
95d2c3d4fdedca6d5981fe2bafc15f5f1d78ee58
8745 F20101107_AABVQC praing_r_Page_132thm.jpg
0a2349d06a8a1e3930ce7fb14355dc05
9217a1c4c71d0a29875237e948260757c105abd9
41792 F20101107_AABVPN praing_r_Page_068.QC.jpg
348b0cb565996b6c66f594a7d25b71e6
4c98de6356023c626966e9408cbaf1860ee23910
21090 F20101107_AABWTF praing_r_Page_190.pro
16041bef882fee2a734e914941660ea3
ab7b84f459c9c03891ef5cdbd443d7dbfd46480a
42095 F20101107_AABWSQ praing_r_Page_174.pro
a8b6a2eef767a52a0b84288c815cd83b
7450 F20101107_AABVQD praing_r_Page_088thm.jpg
aa2d759f8b270ed18d39864b89da0f8b
826f7f99f6234b5a57563480b3b006c58601e299
2199 F20101107_AABVPO praing_r_Page_147.txt
e8f612e2fcb051d29d32b6ee7ec9b37a
3460825dd434b1fbc6f796529365a7c6563257aa
F20101107_AABWTG praing_r_Page_192.pro
6472fd5d8c6813c0f4390db3546e2368
e7061c53497e38784e870b6d133b6304763439e9
56029 F20101107_AABWSR praing_r_Page_175.pro
27bb6b17ce7edd8c03e0ff6f504f37a1
2224 F20101107_AABVQE praing_r_Page_098.txt
48bf19802ce6ac264ebdf4a261c56e27
5a3b5b5a25c835bd3b4e7ddc6a0002387d43ffce
6286 F20101107_AABVPP praing_r_Page_052thm.jpg
6ddcb88f9be244949d8e54e34d7f5135
c4d04cc9bb2aca4695f9606f46458beb642e0ef4
61513 F20101107_AABWTH praing_r_Page_193.pro
728a8a354f2f2ecf2a8da1382f4b6b34
50604 F20101107_AABWSS praing_r_Page_176.pro
b012596bd57ddaea9f78887d677dbfe7
f9ee461c2f3ebcf69b1c1f59f12a629aef0bd46e
41945 F20101107_AABVQF praing_r_Page_046.pro
4d03e756ff3d8dc080e6dfe8826fed18
91469b3987c75354cb623f77d1204cbe508f5233
F20101107_AABVPQ praing_r_Page_052.tif
18a558cd343d6b5b3f9d68ba6cd7bcd3
36533 F20101107_AABWTI praing_r_Page_194.pro
47faa0db76b9f615ff0bed364e9e3b166a917944
66208 F20101107_AABWST praing_r_Page_177.pro
8efd9ec6e95981582f7dbddcebf0be99
f01940c2595dbd23103e09564d15fa1735ce7171
8789 F20101107_AABVQG praing_r_Page_024thm.jpg
5871601c59dd4ebcb7514f21c89ea645
0369fd734f6ddcd6a795396c46e77ab971893057
37437 F20101107_AABVPR praing_r_Page_020.QC.jpg
07300977baa0e87a4eb85e6e20322584
7438a54c38ff49b9fbf1d334a389ed2fe1fba27f
60095 F20101107_AABWSU praing_r_Page_178.pro
e3ef3995ab66b4fdaf485b6882e9f4aa
0948ee2bf22a7c7c3af172efd7a9948205cc32a1
116252 F20101107_AABVPS praing_r_Page_031.jpg
6e93a6aeafb668a851a38d7a97cc1241
cfd22a17b01cec780d69cc7cab395ef27738415a
63671 F20101107_AABWTJ praing_r_Page_195.pro
9981e208544bdd17d758a79dfcae3a34
52a0dbd3b67e4be72907471e04837b02a4ac6610
53826 F20101107_AABWSV praing_r_Page_179.pro
3bff571d01a089b15dc4b37069315b30
ae96e207ac497d79314e1065ca8f2d2af82f821a
48703 F20101107_AABVQH praing_r_Page_045.pro
6fbf26b33e3b228b178d5875d03dc776
fb345eeb043531a71d7306820b49c72b4855ac5f
F20101107_AABVPT praing_r_Page_033.tif
4438e2b19ecb5a1fb7bb2bf3214e6d9404b7e8d3
46122 F20101107_AABWTK praing_r_Page_196.pro
84f911f7d4de507c13a429955e6092729acdf62b
67831 F20101107_AABWSW praing_r_Page_180.pro
0da152858a2f7232af32a4ce99a51104
540804c31acc6d9d26e3c1796f77b8c78ed3a7b3
1051945 F20101107_AABVQI praing_r_Page_086.jp2
1d03213e7011acf6f805980e6732aa55
6d0861728d9621c2d02977ab0dcd1e8d71b1ca10
127732 F20101107_AABVPU praing_r_Page_195.jpg
05e07f6d9e1a8c2626ee284b1f660fed
eaf29b72fe3e868a4fb93270174831971285d7f5
2356 F20101107_AABWUA praing_r_Page_007.txt
4b9ec144010fd83abcb2d7322193c2ef
675766b566b022f49624a05ab5bd78fb73651fb6
64585 F20101107_AABWTL praing_r_Page_197.pro
2077d489489c9c0c66d8a689c996f2ff
f4006239ab4f66cb3b4274754d4957f83100662a
53946 F20101107_AABWSX praing_r_Page_181.pro
b9127a632897ace41df742f89e4bb7cf
fc6d988ca30cb7caf2018e68e556081c7863df10
2438 F20101107_AABVQJ praing_r_Page_058.txt
11b0a567d1d1632aab41d79989657bef
bbcf67fde87e1f7fd68ced95c129fc954eb20a8f
F20101107_AABVPV praing_r_Page_043.tif
327b92086c22ed4e59c4fb1cbbe79807
14c9cb0b61e3d132b6271e002565285cdd4233f3
1864 F20101107_AABWUB praing_r_Page_008.txt
2a148d429fb6f164075d9341007c89bd6e687e8f
50066 F20101107_AABWTM praing_r_Page_198.pro
947468cb0828b3d0bef32055a015e873
e172a445625cb2898ddb354f44d467db0fa3008a
60869 F20101107_AABWSY praing_r_Page_182.pro
2ed144d779c7f70b942dcc9829e334fe
55422 F20101107_AABVQK praing_r_Page_067.pro
8ff5cfcb4b3c47973880bcbe3685664d
2288 F20101107_AABVPW praing_r_Page_096.txt
3419aae2e34a69962d96291c3de4a665
3063b7cc7f865cc2785b8422008fcb31bb22ab03
3095 F20101107_AABWUC praing_r_Page_009.txt
d87fed88b820ddc550513e2138761cebd249b7d7
61041 F20101107_AABWTN praing_r_Page_199.pro
839ea2a8cb34a370e2796098653a564e
153b821d3c5a0bfe0339dfec7dfffa79e059c775
42472 F20101107_AABWSZ praing_r_Page_183.pro
a4dd085a28515e52ee966b157791f3c9
2901ce3d513868a5cc3a822a20307eb59b907970
F20101107_AABVRA praing_r_Page_045.tif
96796374781f48844c138fe1f2f8c97e
407ee463919fb1ea756d7a3c89a595b36d545aaa
1051908 F20101107_AABVQL praing_r_Page_099.jp2
08900ca3cce18204942cc965b88bd3fa
326f0942d7ed04e2003c76e1169f48afa0faf1b6
36626 F20101107_AABVPX praing_r_Page_024.QC.jpg
eb935d49bf814e41cc7b670a09723928
4c13fc3e10f34288351c992b2384bc9ab3f6f44a
3034 F20101107_AABWUD praing_r_Page_011.txt
25faff56a38eb0b84152c129f932c81561d3a9bc
66381 F20101107_AABWTO praing_r_Page_201.pro
db1a0b67d467d5a2d90191cf41464801
dde13629fc94e35d0c516199b17aba9f4d58b2bc
F20101107_AABVRB praing_r_Page_199.jp2
67da0d218ddffbc1b3c4b102005a00b9
4c088400db6627fdb733698e1ae3800719f9fe14
F20101107_AABVQM praing_r_Page_041.jp2
a6e995882220a18e435b2d2f30709b83
68ec01cf0fbe55f4a4debe8e7f6d1532a4ec7b27
8097 F20101107_AABVPY praing_r_Page_149thm.jpg
e2145aa8230683a06141cea7b3fa98fd
0e47c88878dc2bc146880114182ab01a8a2067d2
1289 F20101107_AABWUE praing_r_Page_012.txt
db6cae517dd44829fd5b16875f7cdfea
cd2bf337e4e9f03dd4ec89957117df41f8d387b7
64888 F20101107_AABWTP praing_r_Page_202.pro
f8d22ea9afd7c03d5c2c0c7c0228a9d6
eed49bb0444c5a3f86720f617be435ca9ecb470c
7885 F20101107_AABVQN praing_r_Page_144thm.jpg
69135c70b58f69515c984e541fffff24
dd560e3fe82a697eed70ef563360e602d1c37f04
F20101107_AABVPZ praing_r_Page_060.tif
835e457c0c9fc950bc1c675f64ac13fe
114596 F20101107_AABVRC praing_r_Page_113.jpg
2e7bf32a46589316032a52a1c62c7c68
810e3e246797295e68259e1b65921a17d080e588
2320 F20101107_AABWUF praing_r_Page_013.txt
ebf1753b0ff6e689b1be66f29ba16a20
905d3310f143fe02ae5f5f4d66ff7f236f9a1d56
63521 F20101107_AABWTQ praing_r_Page_203.pro
2232003f75735a42b41603a99e8692f6
ba5c11921f07505627890126f2779d9f3862ba92
7316 F20101107_AABVQO praing_r_Page_004.QC.jpg
83ecb0fe49d83258e799089f6b2d500bd9a75f2b
F20101107_AABVRD praing_r_Page_168.jp2
cc8057375701febffe0fdb0f15d17f1a
2624 F20101107_AABXAA praing_r_Page_188.txt
8f2da9271a4ee2d678fbd4a0c1ce974a
71763d40e6ddfa373abc58a0b448d125b5bc7344
938 F20101107_AABWUG praing_r_Page_014.txt
fe7178815471627154f28cc0463e6b9c
6387772f5bb1f5d974f089b43feab9e58c643901
69835 F20101107_AABWTR praing_r_Page_204.pro
5d382f4b79084f8275d78948a327ccbd
696503b6fc073f052b285f59ca69a3550161eafe
2421 F20101107_AABVQP praing_r_Page_132.txt
3421d44f2e609bd5110c211aba074906
29065 F20101107_AABVRE praing_r_Page_008.QC.jpg
8ed27356811ccccf34f35e22765ab1f5304636a0
1022 F20101107_AABXAB praing_r_Page_189.txt
5e1f87c99e8b30c36e967e2d7aa902dc
76b5e2938f49d8388f6e070acf68d85e9342c2c4
2413 F20101107_AABWUH praing_r_Page_015.txt
7c607b50c722ab8ff322b2102c1c2d044fd5b8dd
17021 F20101107_AABWTS praing_r_Page_205.pro
c72dde56278c29af839117d9fab53d8b
F20101107_AABVQQ praing_r_Page_173.tif
f099c8b143eaecb2c3b7cbc216b19ab1
56f4b49531441478df5e33766a43cf972b7e1ab3
F20101107_AABVRF praing_r_Page_085.tif
dfc12bc4a51e58aba5030c97cd4e4d6e
6df916ea2320f7c6cb204116176848e41e2142a0
1101 F20101107_AABXAC praing_r_Page_190.txt
6631c8f70763b85f9a59e990ed67faa5
75ed0eec822dfdc37ed5cc2cdae1ec66e74affb2
2629 F20101107_AABWUI praing_r_Page_016.txt
82a817606596c7d926c45d5d4bd6c4e90d8fd26d
41196 F20101107_AABWTT praing_r_Page_206.pro
7d8b2d604889180ae26b74449428e02c
F20101107_AABVQR praing_r_Page_186.jp2
7a3e5b3144b2007a4e07cb4455a980e1
aa3899940a83bbe60f8475c4a70db369baf69488
2487 F20101107_AABVRG praing_r_Page_028.txt
38e600ea9c537e491fddc8d3a75f0f7f
1ec15c5bd48b5d7d478491c8326765a2d298daef
808a3c67abf27264edfe604386ced1c9
30580abede405eca2d1b0f309193521419f16845
2505 F20101107_AABWUJ praing_r_Page_017.txt
a921701aa8e03d4b82ce1d31dc4231e9
f8fdac2483612055153a86b53e59c2c7689802bd
544 F20101107_AABWTU praing_r_Page_001.txt
585cf8114a09dd0ed8a1701722145dee
d95415848a367964d85c88438d0c1be028cdd9c6
2321 F20101107_AABVQS praing_r_Page_166.txt
b8f88759ecbdfa7819e5cb7fa0896ba4
00207c5e196ff77e2e1f567bb87b1e84d2135e79
1801 F20101107_AABVRH praing_r_Page_174.txt
46566c216dd752c61c6dcfc9faea313b
5d3000b4c3ae96349370b4c08958a2ab1c2d9594
2544 F20101107_AABXAE praing_r_Page_192.txt
0d4262d6a92856f74d0cd877e7aca374
69a28c7b909ffa344c667dde953bd5875718159d
83 F20101107_AABWTV praing_r_Page_002.txt
0ba9b6ecc67b76ae6e6702187a00a494
b79a45ac45da3dc1d0cf01be31549b6a8afce6c4
116531 F20101107_AABVQT praing_r_Page_020.jpg
20509d14f1ae04d3d0561f2ed0375707
e6f32750707f69a28041e9e299e9b97bb79ec590
2419 F20101107_AABXAF praing_r_Page_193.txt
e7ab25bd4ccef2bda0c15ee3ebbf3e4a
01756c73b7c3c6d74f184f159c0a91eb56af5440
2641 F20101107_AABWUK praing_r_Page_018.txt
c0a5868cb3f6b3394f1f42346b84f894
df3afa833ac571c7cc8e0c11c0c218c433ef8dba
204 F20101107_AABWTW praing_r_Page_003.txt
f252b4439c9cc2590e94fd751e2f3296
54bea7f52f159bcf56ca599f1c177d6409f5d697
F20101107_AABVQU praing_r_Page_181.tif
790d8c7959891753cfc57f4227a53af1e38a5b57
F20101107_AABVRI praing_r_Page_070.txt
5f62aa5a830040346f6f4927c6a5bbc1
1647 F20101107_AABXAG praing_r_Page_194.txt
8ae52f4abc29896bcaac90916c873dd27102b88b
2377 F20101107_AABWVA praing_r_Page_036.txt
070e190336cc9f50b503eb65779ed972
5c82ac65303508cac9177488eabbd91635c00a77
2394 F20101107_AABWUL praing_r_Page_019.txt
8c7054763c6dfc807939e65a0d509ce9
f86e922dc365c3dc0cc580d4427834f8e22b2224
428 F20101107_AABWTX praing_r_Page_004.txt
2a0f47f392d9ee30d37ba7b7c13d050c
0f6e316aa0b8e170be8491edbf76e9f11c8ba5c0
F20101107_AABVQV praing_r_Page_171.tif
287ce2f6454b5e7399aca2d6b4f4e101
14c6ef059956ab7a82e37096e43f6be70b8580ca
F20101107_AABVRJ praing_r_Page_175.tif
3a5b6f3b4ca89f9b94db4b813f767fb6
8c6468fedbcf3518fc4846982313d8db618622ef
2503 F20101107_AABXAH praing_r_Page_195.txt
ec47ae45f23431783fe6e796982f5657
f4d534f0505d89897b18acf183454c2f4711c5a2
2443 F20101107_AABWVB praing_r_Page_037.txt
650592181caefe1d54e333599f7c4356
7956fe677e30e0ef4638a045e8827170f0f815c3
2417 F20101107_AABWUM praing_r_Page_020.txt
c468aa13f76f23f13e20dbd2bafc72f9
864fffe76e467fa6df2a3c301d90519c38dc2b1d
2988 F20101107_AABWTY praing_r_Page_005.txt
c993363cb22f0ed2104a66b1982b2679
68f31be1b86450e873d4889c115f609dc711c214
1051944 F20101107_AABVQW praing_r_Page_018.jp2
0b6dc8e9111f73429e61462eb55d05a3
41ce2fcaa27868e55bc07ebf9dd34a45b03060cb
128237 F20101107_AABVRK praing_r_Page_146.jpg
29161cf60318a0753747d1a9abcdec42
2528 F20101107_AABXAI praing_r_Page_197.txt
41ac156f9db1bba84a110468c438fa01
4eb3576345eebac985f8751514f9e9d34402eb96
1876 F20101107_AABWVC praing_r_Page_038.txt
89cf74c39eeeb052c998fe99e4938bf2b5c988f6
2332 F20101107_AABWUN praing_r_Page_021.txt
0c6921930da47e0513bc2b9a81bfa591
f079930ca136af123584ca2e073bc37eaf88491d
3718 F20101107_AABWTZ praing_r_Page_006.txt
9ef25f224fff517e009143ef22b7940b
2906709cd511d55614f1b3fd855ff24dd9e9b551
19760 F20101107_AABVQX praing_r_Page_076.QC.jpg
e27c1a4ba8ea608b0ce5516483be143d
0681176f94e0b2702d788b7e35e6c403768a4ddd
F20101107_AABVSA praing_r_Page_072.tif
b414de1753c425af78baf41e36fc98d1
4eeede8c0e53891e6dd34a6ec6c263eaf554dfc8
F20101107_AABVRL praing_r_Page_042.tif
c0e68284a29d1fdc6e5dd39440911723
4758a0825574f4e0bc336013b27719c42e657019
1985 F20101107_AABXAJ praing_r_Page_198.txt
82c18a685c3d886362cbf81e2dfe5103
1921 F20101107_AABWVD praing_r_Page_039.txt
3b3cb453676964e72c5d3e0b2e6780a9
01687b342581677f55446eb8462e8b0ce6d59542
2508 F20101107_AABWUO praing_r_Page_022.txt
b07b89b22830eb5cea53feb402af619d
6838 F20101107_AABVQY praing_r_Page_080thm.jpg
73bb5590d6137c8d60980e9038e6cf6f
31ee6f986cf9b59a5f1af7369fd069a5b38555e1
108464 F20101107_AABVSB praing_r_Page_084.jpg
3423aecdf97a1c73f31bde0c0d5fef64
ebddeb4e7ca2517f738c8bc9d5a5fd663352cc2d
38967 F20101107_AABVRM praing_r_Page_070.QC.jpg
b85f3f99109627ca69ec9571917dd9e3
a2a24aa2489274c47d375f4dc8133e395fc812cc
2469 F20101107_AABXAK praing_r_Page_199.txt
72b494f3726515ba7e937991794eaef8
c61829725a11dc3586cff3ae8cae5b01d9b3b973
2157 F20101107_AABWVE praing_r_Page_040.txt
b8d838b5f6ff24655daa6e9fa008ea63
1489c77ac3aca5bc3a8a5796975317354f220562
2109 F20101107_AABWUP praing_r_Page_023.txt
c7d8b11f7829495e79ef5079eaea07a5
b68e42244ddc29f0052300cb4b44d10d6eacbd73
8495 F20101107_AABVQZ praing_r_Page_178thm.jpg
c1bccb6b38236822d6633180890bea78
8070986efbf57d65a58ff1df65d1cd06e9efe5bf
26910 F20101107_AABVSC praing_r_Page_131.QC.jpg
bbb7d7ca27a1a9a5620c8259d537057a
13b0da5b1070c3a8172f00ac0b86398feffd40a5
1051860 F20101107_AABVRN praing_r_Page_069.jp2
916b409b242b019a6e3c59835f9dea3f
3f96efc319e769b84c752819f8046d3655c42c5c
1774 F20101107_AABXAL praing_r_Page_200.txt
6280c19bd0929089e920810c43048cd8
63ff439e167593394274701a67d95734fdaf9f13
F20101107_AABWVF praing_r_Page_041.txt
025738bc2d2bc4cfd903f0a1bff645f4
d8a4d8ee80de55b159cab323788e46832389b2c5
2264 F20101107_AABWUQ praing_r_Page_024.txt
1bb769f30b7b561a99cda4af878e63ee
a0a81099a38c2f00e5d59d4b45defdf245c23bbe
40815 F20101107_AABVSD praing_r_Page_078.pro
02b0e415207d7fee270847370aabb24c
f5467b71b7d1874a68e251cc52422c6e7a0b0730
13102 F20101107_AABVRO praing_r_Page_095.QC.jpg
edc45b00b4da9dbcbaf392e9563814d6
9576 F20101107_AABXBA praing_r_Page_001.QC.jpg
4f3d8b237307c17ff01b384241180336
dc58f84d6034834c14ed3d3955c9843ea8cbb283
2668 F20101107_AABXAM praing_r_Page_201.txt
3b512c46be7530b35fa0af4c7a90f37d
6ea594b41af54fa5f851c03c1bcbc664f8ca090f
2925 F20101107_AABWVG praing_r_Page_042.txt
fe8edf4a6c2e76d72baa29dd1240a4dcdf6ab163
2539 F20101107_AABWUR praing_r_Page_025.txt
8d9fb9924791e191943570a96a8f32f8
2133 F20101107_AABVSE praing_r_Page_085.txt
93216d12bb03f0cea566508db0f9982e
74a56b6e7ef5b90a0fac0e170bac77b3db47cb6e
91927 F20101107_AABVRP praing_r_Page_183.jpg
88bb76d3f3f292517b5c498fc1d5bdab
e5ed207a330efe796f2b5ca3e6890cc91af729e1
495 F20101107_AABXBB praing_r_Page_002thm.jpg
4b4343aff92fb70bda412df93a6b7e4b
75552a6c2e69c41e2e36a5312000cf449818d38c
2611 F20101107_AABXAN praing_r_Page_202.txt
5975781d46d7a90218dbaeda748e060a
17de6927ab0b312a22b84b858098a1d961e068ea
2519 F20101107_AABWVH praing_r_Page_043.txt
cce195d9de2c3e75b403a7758efed0f5
1923cb69fafc2f4f48f655c939e99f401cc7714b
2439 F20101107_AABWUS praing_r_Page_026.txt
463e1620f744ee3f42d3f622eb1f2756
1673a0af09644b65193985dbb8f65aa6953d682c
38851 F20101107_AABVSF praing_r_Page_139.QC.jpg
07f2e8815bb178822128df8e0caa3804
b3793eb06c26db0ff9043ec98e592041e21f9abd
26709 F20101107_AABVRQ praing_r_Page_127.QC.jpg
332129f5b04ce6f9f6eb6109a50462ec
da3bb309cdbe19ce4c76e65978bda88d6eedc9f0
2477 F20101107_AABXBC praing_r_Page_003.QC.jpg
41b0bf9fc11b391951e172f5737d374ae12351e9
2561 F20101107_AABXAO praing_r_Page_203.txt
96f0cf86340fe9bbffa871b11ffd32f1
767e396afba1f9a9a0df1431e0015a3d1a22e01b
2336 F20101107_AABWVI praing_r_Page_044.txt
7e7c0b4d55d1c56eb957646e49ce7d7c542bafb7
2584 F20101107_AABWUT praing_r_Page_027.txt
2deab1b11d4d07db35fdd797de278670
5d3a79d27fd2b411b9b61a0d54d7981c66dc4419
237277 F20101107_AABVSG UFE0022558_00001.mets FULL
d56505e1e14f8cc759a46b9c84a55b19
8ae000fbc41cab37ea6732f057aa725b7da06cc7
9499 F20101107_AABVRR praing_r_Page_116thm.jpg
c96a52a1afa148bbc377cd56b3886fdd
a1a269a2dc365edd5318b182f9d3884fced09b50
912 F20101107_AABXBD praing_r_Page_003thm.jpg
2e040cd8cbdbcd910f0a5fdd84a7145f
2798 F20101107_AABXAP praing_r_Page_204.txt
8b3b052b0bfd03d1d998cb14fa5a8ea1
2140 F20101107_AABWVJ praing_r_Page_045.txt
83b6c99dbca078c4df61437b0633825b781003bf
289 F20101107_AABWUU praing_r_Page_029.txt
6ae1e588ac75b590c9d0aafc29b6a785
ab25447813c5ceb114ef8f427268752cd9b88061
F20101107_AABVRS praing_r_Page_150.tif
9623b95bc3854e394b75720432161caf
dc511ce0a7c4c743b385da00d1b63b1776500275
1874 F20101107_AABXBE praing_r_Page_004thm.jpg
9da2530221508f662df85dd367e9035c
cbbe160f71211f0ab036290464493255730036dd
691 F20101107_AABXAQ praing_r_Page_205.txt
c127a495f5e666cdb9a2f3688f723d16
7440aa492a2f8968d2c8f325e8ded0213fdc078c
1948 F20101107_AABWVK praing_r_Page_046.txt
d5cdce5eef122e35717b1c44512cc2d8f97377da
2227 F20101107_AABWUV praing_r_Page_030.txt
efa222ac3378d6f3353109e64cb5f1ed
34847 F20101107_AABVRT praing_r_Page_112.QC.jpg
0f2b33251ed7cf4f5f8abb02670d3317
35837 F20101107_AABXBF praing_r_Page_005.QC.jpg
8b041bc697c973b16f3bdbaf72880c53
bf70cb225f3416acf0be1657332f05bd13f319b6
1681 F20101107_AABXAR praing_r_Page_206.txt
a6dc79fa83e1d5ca69418e8bfd163dcdec5993c8
2274 F20101107_AABWUW praing_r_Page_031.txt
dac39ce9ba8e8db8db826d993022408a
8305 F20101107_AABVRU praing_r_Page_163thm.jpg
e35b4b105812fd50ee154167ff60fce1
7449 F20101107_AABXBG praing_r_Page_005thm.jpg
aa5cb5139387c253163a47ec4675f73a
3a803a2fc42c79857275fd2ab31be89ca9d1556c
F20101107_AABXAS praing_r_Page_001thm.jpg
2ebbe4bc1ab2be667d899d11dc20b1b1
f5e44501b34fee6de854810f611c92312dd8b47c
2268 F20101107_AABWWA praing_r_Page_064.txt
8cf06077553e11233223ba2ce6ff205b
f73e378886c0c484137deec67e35cc52b8f3888b
2390 F20101107_AABWVL praing_r_Page_047.txt
50ce8c2abeede4db2527edcf9fe4cd1c
12bcb7a3764c31418d729f027d1745beb91e2e18
1996 F20101107_AABWUX praing_r_Page_032.txt
69ff93f402c050271d845a8a0fd3811a
5c797832ca1afc965c7cddb625a92c61f20ea6c8
32140 F20101107_AABVSJ praing_r_Page_001.jpg
5dd7ec59ff8a689395ff436b84928a70
20c11ef30034903ca98669cefc2ef08ce9bdfff1
65335 F20101107_AABVRV praing_r_Page_157.pro
7d97903d3cb1c5de30ce6ec55b0239c5
1d3f14de0a3ffddd2f0fbe7bc4f66a3cac533079
42124 F20101107_AABXBH praing_r_Page_006.QC.jpg
5ab4bf4a6584cecc36d1a2bfa6ba4563
485578b555c2662a5983f68a1729855ee03f58c5
1577691 F20101107_AABXAT praing_r.pdf
461cebc8d88b0fde0a4952801126080c
14eaa25b440674309451a380f571b745edd3ec33
2563 F20101107_AABWWB praing_r_Page_065.txt
547db5427cfd4d1f8843374b59b3747c
2251 F20101107_AABWVM praing_r_Page_048.txt
f5a0299dd383fab1032a71d1d95e6d27
a7f49fb998712f431bd9e6d83af65fdca3650b4f
1823 F20101107_AABWUY praing_r_Page_033.txt
72d210d401cc0ee055d4759d6c00f8695f88d1a6
3842 F20101107_AABVSK praing_r_Page_002.jpg
3bee167916b16c34ea772235690fa270
e6f54a6fe0544d66c6bed973995c0fcca7dc0de6
61010 F20101107_AABVRW praing_r_Page_155.pro
6a5947f6e725ac008a9ffe807e4d7da3
43d3bd3ebf32fa1571f85221c1bfbaca8437f757
8917 F20101107_AABXBI praing_r_Page_006thm.jpg
6d5a7282f846feba7b61d1b0d6eee766
7872 F20101107_AABXAU praing_r_Page_055thm.jpg
b48fa2ab4b666e089537f71692d5f484
56dc01fff44fc5053b5f47f496f5d250a5c1949b
2323 F20101107_AABWWC praing_r_Page_066.txt
9382b6d822c7c6eb8fbf1f6cd66910c8
a08332c9c2ce25349dbef6e94972fe49fe7f3b20
2656 F20101107_AABWVN praing_r_Page_049.txt
9b2ec249428fa0719fa2cfb4956e24bb
b26f48730331f9a1fcc95b3af4e6406e7dde4f09
2033 F20101107_AABWUZ praing_r_Page_035.txt
cb86925a373ca466f5c9f0f4ea896a9b
c5f7ab5c3e5c2ed3d40dd9e1ce97e770eba07b52
123280 F20101107_AABVTA praing_r_Page_021.jpg
6b4504195bfd61012e66fbd9da9a6f77
21801 F20101107_AABVSL praing_r_Page_004.jpg
a3d7c354222d83060b2230b8605d2dca
582567a42a22609e1cb0746735efb96c85a8dbbd
21208 F20101107_AABVRX praing_r_Page_131.pro
f6558b17eb84e5676f57e2cdfdcf7bae
42cd53bb5c9537f8d39cb92a695065b7c4266683
28580 F20101107_AABXBJ praing_r_Page_007.QC.jpg
2337 F20101107_AABWWD praing_r_Page_067.txt
e9f0ba5dfc3dd96c70486c480f7b666a9e602779
2054 F20101107_AABWVO praing_r_Page_050.txt
944ef3a7ce14c126b01910b7b00046dfcb684108
112734 F20101107_AABVTB praing_r_Page_022.jpg
78fa6c46ed102c654178c46c94afdea7
22745eb708eb9d44bcdc3de2b8d0c92aa1236c27
125439 F20101107_AABVSM praing_r_Page_005.jpg
34213c61482bd235eda608807f8795f6
8c68f977781f350f10a1f96961aebf0f4a8b90ab
23667 F20101107_AABVRY praing_r_Page_014.pro
b106232035f06755da2db09a83bf67d4
2a12e57aab087e29b65a7d2e8c3091a58e12fee1
F20101107_AABXBK praing_r_Page_007thm.jpg
0263905fb47483bc33deb2c50f04671a
35beb017c1216b20a1596e9ba9a3e1012e626d98
9315 F20101107_AABXAV praing_r_Page_068thm.jpg
059a1f20e8393ff0261c5d9715415be1
2608 F20101107_AABWWE praing_r_Page_068.txt
6a58362c52cb41ba47e63f47c2cf338503d3a16a
1784 F20101107_AABWVP praing_r_Page_051.txt
84f3eb7cc480f4e5a569025db0e3b4b0
bfdb03e5e383fa2f1cfed4c4bef12d79d3166aff
107305 F20101107_AABVTC praing_r_Page_023.jpg
831cf9ee4a5bc097d47c2bf5a096ab71
fb7ff971d2ba521152e6c67d82f24755ab505a44
158882 F20101107_AABVSN praing_r_Page_006.jpg
6460d466d0e40b25dbcf70f8e89e7b4c
0b8129f1f0d2023c063a30d69bcbe3169d430c71
7634 F20101107_AABVRZ praing_r_Page_074thm.jpg
1ff7cb5b8dc49ac0ce11c47c113eb5fb
563a6e58e37fb4f83cd97d0e71a59264dab1e151
6484 F20101107_AABXBL praing_r_Page_008thm.jpg
7ba7a037403db6324782f67dc08e205b
debd4c5463b3f0032e50dbd4ea2f06044ff049c6
11341 F20101107_AABXAW praing_r_Page_205.QC.jpg
efd51228822c280c0450a1092536f9d5
88bc0dc99b742ed868a73c7f48d3c4b98642dcd2
2430 F20101107_AABWWF praing_r_Page_071.txt
44100e36635e4035d09d7026850cd46f2f939bcf
1399 F20101107_AABWVQ praing_r_Page_052.txt
6c4ca6efc936ce66faa122429f6be17e
52df6437a73c0e73fa104c16eb1d2a4d5cc212b0
116749 F20101107_AABVTD praing_r_Page_024.jpg
f85a774bf3ca695f9737ff6774ddc72b
4694c308934cacda5c6765b16648bf46603136c3
103224 F20101107_AABVSO praing_r_Page_007.jpg
73550fe67ecff6759a7e6e5b6620f004
1586a5d215a474c7a3496a2557b7c055d156f098
40852 F20101107_AABXCA praing_r_Page_016.QC.jpg
7c4f72858e67a9e9a9e103f631398aaf
43811 F20101107_AABXBM praing_r_Page_009.QC.jpg
0a8477b54be7c150740da40e4803e452
a51c674ba2e8ac6409faf11486e4e89fb8292c39
36587 F20101107_AABXAX praing_r_Page_093.QC.jpg
f9365537d081d21fc1dc8fc326c489fe
074a341bf83d4cb05476139d982bc15c7a5a17ec
2196 F20101107_AABWWG praing_r_Page_072.txt
0db79ba62762cb41e8f6558b21f00e14
2435dbd63a50e6bd270e76f5b1c232974e4de505
2497 F20101107_AABWVR praing_r_Page_054.txt
bf3a0dd4b462e1c2b73d7681203961ac
e2089de780a78f40775c61b0b4d561b235a146fb
130004 F20101107_AABVTE praing_r_Page_025.jpg
0b922a384f868b5756c6bb2f06f6acfb
5922cacb62f7e7200a392de19e25bb8e5973fee3
101569 F20101107_AABVSP praing_r_Page_008.jpg
54e5372ee44211a5ed2146f0065de116
940a7d8e811c9ab07605ce5b1636810d49713a6f
9027 F20101107_AABXCB praing_r_Page_016thm.jpg
cc68eda5feb692697d1e9e9b1f48ef5d
5028771194dbc88fb32edbc591da142644670a18
9704 F20101107_AABXBN praing_r_Page_009thm.jpg
29d72dde95e9402bd0c8d4b1f3173cb2
6ce546bd49415cdf40bbb6ceec9df23faba74541
8036 F20101107_AABXAY praing_r_Page_179thm.jpg
d9bd91387b35db54163a69137eda830b55dfcee7
F20101107_AABWWH praing_r_Page_073.txt
a812e9805d0dd6e620e903a1ee416874
277e9cf7f7bb7cd3dfddaa50b24f12831a87ceb5
5032 F20101107_AABWVS praing_r_Page_055.txt
6e12bdc451b1d8658bcb66f2b482162f
b119ff84e1df2cd5051834309e99612bb5cb94b5
132467 F20101107_AABVTF praing_r_Page_027.jpg
8bb77f7bb8365067bf489afe0566e666
a232f0243116cce86d1b79429f35dbdac86b3067
162743 F20101107_AABVSQ praing_r_Page_009.jpg
d9796fcaa182bd8f7d8ac05743fcda5f
3d1b9ba47db0450b39166cd73b4b9f5ee212f437
38922 F20101107_AABXCC praing_r_Page_017.QC.jpg
bf5e3880b1aa8379d46d2b88f71b9305
e93eab5d7e69615fd75844fb234d97c5f801c517
44270 F20101107_AABXBO praing_r_Page_010.QC.jpg
fe7395f37f0f49220a9578b73f875a58
fc161098effafac7bdd1e49cce94f77a6eba3af3
307226 F20101107_AABXAZ UFE0022558_00001.xml
2fe67681ff6d53facb99d6247f80b109
0b2be965a7f13a9c87b199deac863b2a616830d2
1605 F20101107_AABWWI praing_r_Page_074.txt
ba2d991bb27e803564aa62b6677cd42a
23a6a116dca9172159ea0ed1392e92f94fe9d546
2621 F20101107_AABWVT praing_r_Page_056.txt
7cf60c1df69df3ac986256999b660c2dbb339b1c
127956 F20101107_AABVTG praing_r_Page_028.jpg
78e9f79af76b1ac15e5261765997d006e700d203
151393 F20101107_AABVSR praing_r_Page_010.jpg
46938cef12fdb16314997eb6b4236b53
9072df184bbfc169bd6968343b39d2c26b81bbca
8761 F20101107_AABXCD praing_r_Page_017thm.jpg
68f2b92864eb04607112b19c503f4c87
bb59ba79a817581e20a6d3a2088dc48a4f616146
9755 F20101107_AABXBP praing_r_Page_010thm.jpg
84ea8386b5e715b5d331f9c4ef4cf677
2170 F20101107_AABWWJ praing_r_Page_075.txt
af91e3049e8938f3b8de2bb1707d73e8
29c92af755ca852b87a0507bb93b62bf9834b26c
2396 F20101107_AABWVU praing_r_Page_057.txt
eabdcf80e41c9925ec0452781b00d8b2
6b86d2968887bc7b0fb93de34d1ccbb35955cbd1
17153 F20101107_AABVTH praing_r_Page_029.jpg
b0baf964cf5ed4e99019eda953835a39
4893aaef06448f9e402c1253f8db546cc758b343
152491 F20101107_AABVSS praing_r_Page_011.jpg
3ce97159fe35b7a2e7da12aebc2e3e82
58ac1952ff0230506ca6028f7dc4e121d4360055
41546 F20101107_AABXCE praing_r_Page_018.QC.jpg
8ecfc0f8edbf5382d968ac032260e54b434bca14
44631 F20101107_AABXBQ praing_r_Page_011.QC.jpg
75f2ae39a58fc1263c1a3974da447814
454177bdf8ec99c2f24075f37f253dea69015a41
1189 F20101107_AABWWK praing_r_Page_076.txt
e2fc596e0e24218d0bbdd2a31c375bb7
3c7c2998381c7ff95145156564bc2e6d7b5f26df
2515 F20101107_AABWVV praing_r_Page_059.txt
64244208c6222124afaf5a45776e92b5
8b0f16094c8dd864e4acbc906e38e80b3d05fa83
110471 F20101107_AABVTI praing_r_Page_030.jpg
bbbe7f6e2046533a37a401397b6e28c2
9dbf743268dafa1e340d9e8e7c37950c25b86531
109722 F20101107_AABVST praing_r_Page_013.jpg
7ac8f60f49c29f1d0e2cf65184740219
1d751dae688cc63038c16cb68ce5e399128739dc
9313 F20101107_AABXCF praing_r_Page_018thm.jpg
e764c179c532a60e771ff35f79a61566
ea9caa8c7da2705353eac72bc4f44fb813d00ae9
9459 F20101107_AABXBR praing_r_Page_011thm.jpg
5a8f815bd11cf3f0c13c20f84b6892c9
910c471e2838bf33cdb693af7364bbb06d5390c6
F20101107_AABWWL praing_r_Page_077.txt
953016fc773798a86f7bd8c9fbd2ae60
0cef721542f03c197282ef7caf0f0134859b30d6
2759 F20101107_AABWVW praing_r_Page_060.txt
f576a06bef6d7835b0b75f750f94de03
96000 F20101107_AABVTJ praing_r_Page_032.jpg
4c33efd93cda8b6aa13e57cc01575581
acb1b0f25475a3e64ddd58ca68d34c1a6dd71836
48920 F20101107_AABVSU praing_r_Page_014.jpg
229a673f71e9a5bb8e4ec4c828aa2dce
f0f6b6372a53d0410615e4ccb1560cfd4bb2af8c
38333 F20101107_AABXCG praing_r_Page_019.QC.jpg
a6990d9b0a324717b50abeb4c13b3edb
21448c49185d330d35a9c0b1db63fb9c102bb979
21991 F20101107_AABXBS praing_r_Page_012.QC.jpg
4580340dd41d1e7bf668fb1c0269f36f
38aa84eaec36586a75bd2ca3b45618b84399952b
2359 F20101107_AABWXA praing_r_Page_093.txt
1ffb651ee73b25e425f10775fdf01c19
bd93ef9b7a35d632561f8be094a89c75808ea9ea
2678 F20101107_AABWVX praing_r_Page_061.txt
bb00dd3357ebbf232e04311b9dfe1d8b
92b40ca946883228d6faaa914f38a87973fd0c9c
117031 F20101107_AABVSV praing_r_Page_015.jpg
ba1bd4e5f22b6e2375929f298b127ae5
a440e06dae816c27222eb65e5caa750a667e6658
8653 F20101107_AABXCH praing_r_Page_019thm.jpg
e7b8d0cbdb20c16d9430d877dd6b43b5
50f3a536c20622b2f835c04585c93e25d689b8ba
4723 F20101107_AABXBT praing_r_Page_012thm.jpg
0aeeafdd808af8c0084fba5315100867
e51fbdf956c3e33c26bddee81418f5f836992bf8
2027 F20101107_AABWXB praing_r_Page_094.txt
058c2a4c8a5170d6ef63770e8649fa96
07898a98b1c42e52e29c7d4eda31eeaa2dd036c6
1750 F20101107_AABWWM praing_r_Page_078.txt
6185e856a6f105c37fc2c3a32a57ce1d
89b09429f3b921a68316bc3ccec0201e09ff21cb
2471 F20101107_AABWVY praing_r_Page_062.txt
64d29db72fe79bc4bd410670d87f0982
6675c29b032379c8b1cc9fc00473c4894271e170
66087 F20101107_AABVTK praing_r_Page_033.jpg
8b5a9c8fc7555277b3fc00881dd46f1d
4b21e5143278cb04a58801d2878ebcfe37bdd90a
128774 F20101107_AABVSW praing_r_Page_016.jpg
b53c8acef4e9793f4b28853263a40d60
8798 F20101107_AABXCI praing_r_Page_020thm.jpg
11ecd565268f6478c5491a80c160b97f
5c2ed8194297a50d8f2c53bbdd8944d0a696157d
33346 F20101107_AABXBU praing_r_Page_013.QC.jpg
f76d2122d66a2b1457cbb9603e462857
3238fba04e0059788a3631c9dd0181b5e90b828c
772 F20101107_AABWXC praing_r_Page_095.txt
0c102d7eeecd571ea7fa6d757db74e4c
0468278f9ceb59bd988829c9d7c15a372630accc
1886 F20101107_AABWWN praing_r_Page_079.txt
6f15a18dd1130ea788f94c5ec517a50c
58a152ba9b5edbcc2df7d60d1aabd3af86c544b9
2491 F20101107_AABWVZ praing_r_Page_063.txt
1bbcd198292696bb1aee6e84b9fe3444
13a4299150d32ff0c7aa0f9795c22de80c329347
95495 F20101107_AABVTL praing_r_Page_035.jpg
f555f061c10d967c04a279cb63bf15e3
9bcb5f7d9fa0d027bdf2a4594a00d03d131b0683
121533 F20101107_AABVSX praing_r_Page_017.jpg
e8ed2a2ec7446ac4f12cfe99b119f139
23c1307614fff3916bc1f142e67c1befded7df7d
78362 F20101107_AABVUA praing_r_Page_052.jpg
1cd65a4ba42766639fa0613fbd2a6542596a4f8a
38457 F20101107_AABXCJ praing_r_Page_021.QC.jpg
5297c1143a0203ac188681818c7b68fd
2228b49f32b734a5093a4413358b13c7904e1a73
7606 F20101107_AABXBV praing_r_Page_013thm.jpg
90271cffa17846d417e5c73f4164fcef
c5dcd55e0a295a2eeaa75484865c90523464701b
2453 F20101107_AABWXD praing_r_Page_097.txt
6f3673966bbdd6a6eff11946df06a87f
1529ac66aec9964aab216109d892782afa6cf5d5
1582 F20101107_AABWWO praing_r_Page_080.txt
1ca3bd8ab8dbb6fc194ac77b582f6304
77ce909bf2b3a081e37edbb13e9e1641f8d5884f
108670 F20101107_AABVTM praing_r_Page_036.jpg
09e8f0f3a1bdd2c0c3381b2fea8ecd4f
0258e3acf9c79af52f37a117035c3300bcb30f14
130240 F20101107_AABVSY praing_r_Page_018.jpg
b6af06f60297aa7861e07f8ed25e5eb8
119115 F20101107_AABVUB praing_r_Page_053.jpg
4dff0fe17c678a3c60dc44e57ce5c794
cdb856c25bca465e957ea78e60c421df6a2315fe
9316 F20101107_AABXCK praing_r_Page_021thm.jpg
245d5b1888713ba86a394410de1765d8
48bef3799b9edf85d92d6d6320a073bed567c090
2197 F20101107_AABWXE praing_r_Page_099.txt
8d1bd9f3532b7d9316f27e21cf932524
1a6d52e283b712ed8b638f4b6302c1b64417f833
1881 F20101107_AABWWP praing_r_Page_081.txt
5b0fbf08771b6925a0d7427684f1503b
ec6eb45e2393aaca982b204806b08384659222fe
120947 F20101107_AABVTN praing_r_Page_037.jpg
1ac8029f14d1063137717a0135ac7bdc
1c952fa672f2d34cf73eab020b7c1cce7b04fe63
121059 F20101107_AABVSZ praing_r_Page_019.jpg
d67a0ded528a4e8e862b1c4506567f12
1f26e225a6c2d8dd4f45ae71538108aedf0d593c
127631 F20101107_AABVUC praing_r_Page_054.jpg
e52518e87df52727dba9cd43025f4c1e
36116 F20101107_AABXCL praing_r_Page_022.QC.jpg
f93d7495e2a6e22f7cbfba1aaab5c5bf
70dcdf1209467d606009a71807db7f97979b2d0a
15535 F20101107_AABXBW praing_r_Page_014.QC.jpg
bb026302638e8eb92e1e13f9e973b996
90a50cecb50fc0c8be554ed6cc11d7209c2b86a2
2019 F20101107_AABWXF praing_r_Page_100.txt
9246eccb2fec515e0cc5e0657170465e
741672900610c62e87bb8ac9c5e8ae53466dab95
1962 F20101107_AABWWQ praing_r_Page_082.txt
69ccb53ffc6ac6c6136483397fb1d2f2
83530 F20101107_AABVTO praing_r_Page_038.jpg
13b710d026090b05994eaaedc740228b
0381233d8e1ca6f345f0c9b01df9862e2c2cc171
116649 F20101107_AABVUD praing_r_Page_055.jpg
984a6bab47f716dd27c27e59486afe97
5005d7c67e7f225da8b4c69f6a016a4fe1f2c1c6
8550 F20101107_AABXDA praing_r_Page_030thm.jpg
eb02266d5f448e67723ed7272c276116
bbd1a6d604171e81fc22223341f8771039e3df6d
8585 F20101107_AABXCM praing_r_Page_022thm.jpg
f91a7789a0961abb1dd6bb3765c5f019
f344a8871dfd9084bc876b06bc00fae6b35a3ce8
3689 F20101107_AABXBX praing_r_Page_014thm.jpg
cf59f7524dfd09edd88aa3c3e99040b6
16e496a57056f86a4f3518325ffd73af2e37765d
1943 F20101107_AABWXG praing_r_Page_101.txt
e4324d264cfabd572a3ce23b5ede7585
f93e9d212ae6bb213353b4eb1cb8c2fd4a90da37
F20101107_AABWWR praing_r_Page_083.txt
95427a30f412d27b77e4daed7aeaf10b
60fdc688c7bf1c337d3372595afa5a48ec09942f
90614 F20101107_AABVTP praing_r_Page_039.jpg
a62b08710354d59bbc76a2c5b9753330
29fb6d65ddcb72972524ffdf88f7778c8dc6baef
121870 F20101107_AABVUE praing_r_Page_056.jpg
0cd2deffab5282e6a4fed9c993b58703
ea5104e0e1df0b5a8af7f7fd1ea0c1bb3d8b3249
36866 F20101107_AABXDB praing_r_Page_031.QC.jpg
962b9c9951ce71e3f90b9e1e66b6977b
278715b2ce43cdb684eaa0af3c017eab4a26b022
34672 F20101107_AABXCN praing_r_Page_023.QC.jpg
53b82267fc65948956ee7c86196291dc9ecf8664
36592 F20101107_AABXBY praing_r_Page_015.QC.jpg
281101479c6309d08e515d5141fbcff0
1795 F20101107_AABWXH praing_r_Page_102.txt
8f06be87165ed40fe40056dac67fcebd
d3e04849706bc42a141f72b4285e8a3d3a496f23
F20101107_AABWWS praing_r_Page_084.txt
a27ed63134fe09bfae3589eedb7d73c1a0900239
111584 F20101107_AABVTQ praing_r_Page_040.jpg
75ced9803d4fb0f6ff0873166bceaaa6
1a74d9c4effd2d311ecd3ffa524286d34df42ef3
109929 F20101107_AABVUF praing_r_Page_057.jpg
12441c72c8e73f98c78382fbe402d5e5
d1b0bafa72177d15ea29f7fb504f1ab2617cd626
8704 F20101107_AABXDC praing_r_Page_031thm.jpg
b73fc02ab5b48920bb62bba1f476b521
d57160c67ca582f949ae95102421aede6d82ef7f
8121 F20101107_AABXCO praing_r_Page_023thm.jpg
86d49893e8ee8621a0deef6b181fd78b
c301235e7ec3b7236346719fd1364fac815d86a1
8267 F20101107_AABXBZ praing_r_Page_015thm.jpg
366198ef80b9c3d19db9977f44c44933
fc836a4aaaebd22a73b4155eaa0b3f8535c765c4
2241 F20101107_AABWXI praing_r_Page_103.txt
f4d4a504ec43679386112757301e607c
c301a4d714dd7a879c3c7924fe68ed63a06bbd91
2373 F20101107_AABWWT praing_r_Page_086.txt
84aa45d1599bf9cf7398b9770b02d4d9
70d3ae60b7ee06f2289b2f7bfcbd3183e861d30f
125545 F20101107_AABVTR praing_r_Page_041.jpg
36a943dc41de703e6b563016b60f3b0d
3c95caee145569572353ab38a2f3c97208e0b736
F20101107_AABWAA praing_r_Page_025.jp2
b80bafb571b7848804e4f93c3cecdcd9
2dc80f25103aa635128697b9bff7a845973295d8
125167 F20101107_AABVUG praing_r_Page_059.jpg
c950cd303b3d33dd25c327279bc65bc6
caced375d69d0dea2647734092645cf8fd59164d
31286 F20101107_AABXDD praing_r_Page_032.QC.jpg
6fc00a40a26b6094f5ae4a01d66f5b9f
8336e978518007671c8817766d07f2d6e381cf1e
41125 F20101107_AABXCP praing_r_Page_025.QC.jpg
0dffe41b0c6b6ffbea6518db3c17ff3b
ba1aaf799e0b55a2d6b7e349e82eca0f76aab70a
2270 F20101107_AABWXJ praing_r_Page_105.txt
13eb0527c497fa7fceaff22b2674715b
40277df26f75cfbdeb2a57a498cc1d50a90ec2be
1663 F20101107_AABWWU praing_r_Page_087.txt
1f82eb7502d35a7ff22a84f972cd7fb6
599f7c6327262a20945bbcc4c5ccef6da1c3c2c3
117946 F20101107_AABVTS praing_r_Page_044.jpg
7abd6747c97b1b5dc954317b0ed3a732
F20101107_AABWAB praing_r_Page_026.jp2
107291 F20101107_AABVUH praing_r_Page_060.jpg
2d5acb65d33c34f3972aa88f362c7256
9a2425a3b6b542fe8ea32836a39cb1f794e197c9
7352 F20101107_AABXDE praing_r_Page_032thm.jpg
8a543d2e2f0716b51fb0376bf24e57b8
faa18b2c1a3349a48a853f47cbc29e53b8f07964
9273 F20101107_AABXCQ praing_r_Page_025thm.jpg
182e57fa7a906d7a6feec13b62308909
88b4e91df964a709f43b651aff5ab1b7e9916eed
2599 F20101107_AABWXK praing_r_Page_106.txt
8a65bef8d1fab6bedf5631aee6d3714c
739986f813644d63afb5defb1f1d83ed583dac90
1925 F20101107_AABWWV praing_r_Page_088.txt
595efe86c02c955dae9ca24b53d1103e
a32130643f5871e9008b0d9c200564228634bd97
97786 F20101107_AABVTT praing_r_Page_045.jpg
b50fcdf2f2a4f24f812f0a732e8d2b78
F20101107_AABWAC praing_r_Page_027.jp2
8d58e7523f3592ac52af324f95d8b12c
132857 F20101107_AABVUI praing_r_Page_061.jpg
afe7e1d8f1f1556083dd38a34445bd3e
f2afefa454b466eba64ea6fc2698b03d4c765001
22232 F20101107_AABXDF praing_r_Page_033.QC.jpg
f394c37f37333c86d583de64c48a7e10
32861 F20101107_AABXCR praing_r_Page_026.QC.jpg
350a3740985559425c2889c08f188f1b
2433 F20101107_AABWXL praing_r_Page_107.txt
a2334b010720f2173df5e75537622696
1c4062ee37493ee7ddd41cec8e9af7ee3fe014c4
1794 F20101107_AABWWW praing_r_Page_089.txt
c9732afa3f030dc4f102fffd6b6afc99
8a3a576204c0c0d1a006ede84cc3bb364dee3984
91008 F20101107_AABVTU praing_r_Page_046.jpg
c94d53dea4eb7a1c9de155f5ee0f338e
0aa56a5221ac0e6a084628c3208c7a52eb0c17ba
2bf366083464529708461c5af9fac376
c745d5c41c40850702014084890d4ff91a019e52
117128 F20101107_AABVUJ praing_r_Page_062.jpg
561d977994f85c7cecf6af4c214f3e0c
e5b9156cfc94514303517a12fe9670c26a0f5e87
6382 F20101107_AABXDG praing_r_Page_033thm.jpg
8cf13067b84382a6033059726ccebe1a1ef3ea6e
8656 F20101107_AABXCS praing_r_Page_026thm.jpg
9112f0f6bffccf2e9ddc6d89a6952c25
2556 F20101107_AABWYA praing_r_Page_123.txt
698def305e1523bf27b76c5537da1451b4a2d6ce
2558 F20101107_AABWXM praing_r_Page_108.txt
2a8fb72fbaf903d09818b97ab8aef81d
723861f1c9d5e76c160ed72401a10d9f7929c542
1756 F20101107_AABWWX praing_r_Page_090.txt
4c0cf2d3a5c96f799172d4140dcd57e3
b4f92bc0f2ea3093030e15b32c2486f7668402f7
118991 F20101107_AABVTV praing_r_Page_047.jpg
d869cee0013f2d4939fedd99688a4e3d
cd227bf5fe43fa91d829a49886c8cefe275f3ec8
176538 F20101107_AABWAE praing_r_Page_029.jp2
0718153fb93234bd78f6c3024d11b3f5
17cf03785b45f2bc7cc5e2e1b2ec99d5d9dd5f2f
125132 F20101107_AABVUK praing_r_Page_063.jpg
5150d0cc355cd1e5e78cacb47a8a53af
6f413b351008eb9c977ee64ac0756ca3c14bd979
39827 F20101107_AABXDH praing_r_Page_034.QC.jpg
c9650915ea532159d36602aa557d0b46
15229c444ab282426553b5b19f72529c18b8193d
42029 F20101107_AABXCT praing_r_Page_027.QC.jpg
2b6d573c17f025ce1942b4b4dee62a24
76a9b9f6a87c5c5754587cf6a99ce0ce7b4d3ef2
F20101107_AABWYB praing_r_Page_124.txt
6eb60af4098963087c4d641a38ceb7fbaf0e9c77
2002 F20101107_AABWWY praing_r_Page_091.txt
f889f682ce1164e0656e15536ea6eb89
9ec0eaabd8a36e34266a9918b0a8e83358e1a6b9
95499 F20101107_AABVTW praing_r_Page_048.jpg
050c71fac0a92df213c40f0fce3fce82
f4f544c3d73bf09c580be96b6c9aa1ee5ec72ceb
1051916 F20101107_AABWAF praing_r_Page_030.jp2
42080e625466a874343eb20cc5d59961
4a9c03c00d849d487ec87f0a50d771f8b3292c8a
9069 F20101107_AABXDI praing_r_Page_034thm.jpg
2d1e9ae5bdd41d40d8aeb721f4757481
f9629109ed34e1bc8b258a066b04215aa07ba649
9449 F20101107_AABXCU praing_r_Page_027thm.jpg
2b1d93a9fa4f3a0ff58fc3c38b93244b
1607 F20101107_AABWYC praing_r_Page_127.txt
90e469087edbb73103323ebda9d0bbf6
d9da5e7dda67b039b05760ccaa4a8296340fe6b1
2520 F20101107_AABWXN praing_r_Page_109.txt
d442eb58c4aaf0ff795a6a08dc778466
f27212ea4fa4b1c91ff7237cbc91cbb685a4c81f
2237 F20101107_AABWWZ praing_r_Page_092.txt
6f0c7b41ffc6284daa6c7d7e755893db111d267e
133148 F20101107_AABVTX praing_r_Page_049.jpg
9fd49166e811b43bc24bf5b060782b1b
e619b21148d6b60acc025f754e2c6a4595c3c969
F20101107_AABWAG praing_r_Page_031.jp2
0689b8561b50bb0498485dd5dd2612b8
87007 F20101107_AABVVA praing_r_Page_081.jpg
f0697428b7f647472008215d181d8d8c
19cc459eb59abfcb0f8f554605676673eb5f9dfc
112191 F20101107_AABVUL praing_r_Page_064.jpg
c1c39bd56d342bdb102cae2a34b0bb08
13399bfa9eaeefe32eaee2be07374d0c783dac71
30793 F20101107_AABXDJ praing_r_Page_035.QC.jpg
11fa31b75bcc0c92c3e4411c2d55ac9e
6d2b52ea1518851e2dcb3426b971393546f32c82
40451 F20101107_AABXCV praing_r_Page_028.QC.jpg
93526cf068825822372e6d0a771bc1ea
e6662e1393715f8c573450755b1475ac09b13361
2686 F20101107_AABWYD praing_r_Page_128.txt
888b6efc55e373be26e1b0b9c3c52e1d
57c4a367934c14491498459d4d488c1057e0bebd
2457 F20101107_AABWXO praing_r_Page_111.txt
60725a0d0c289df864730cb275ec8236
356a1cb446685cb607e0ab217314ca5417b6649f
98659 F20101107_AABVTY praing_r_Page_050.jpg
1e2f000ccc4075ba32bd3dfc4cd7ec06
cd263b81bd880a6455c7e8b2ee25946c2853ab45
1051953 F20101107_AABWAH praing_r_Page_032.jp2
f6de20a8e96ddd15031d72ef60974799
84603 F20101107_AABVVB praing_r_Page_082.jpg
42b4dd50135e435f1a75e1b2b9c088c2
1477a2980020955240a404471de21cc110d4523e
103568 F20101107_AABVUM praing_r_Page_065.jpg
b3a1619d8f4ee1e88d5b2c465a6a0fd3
8393 F20101107_AABXDK praing_r_Page_035thm.jpg
6ce5382aeb60a0f6638560c5a41ac98e
e5b064ba64856b9f09cfcca9cc056f10b7b23836
9218 F20101107_AABXCW praing_r_Page_028thm.jpg
1e57a4464bcf3afeb575b20e768bfb02
df7605038b3102d583239ec1ee7cdee6cff5221c
2622 F20101107_AABWYE praing_r_Page_129.txt
4e617e8901130c8e648ac54137271b52
2291 F20101107_AABWXP praing_r_Page_112.txt
7429ab782fd8abe80870956f161d5328
409dc7cff55d3caefa0859397730903998ec8ee7
91038 F20101107_AABVTZ praing_r_Page_051.jpg
951799e3ee492932419cf556735c0da9
F20101107_AABWAI praing_r_Page_034.jp2
82625 F20101107_AABVVC praing_r_Page_083.jpg
f939d590404c9ccef4fd336ca0359cf8d66b4aca
103094 F20101107_AABVUN praing_r_Page_066.jpg
df019cd5196c8686d68998706baacf2c
92ab9c54b395889c267dd7c0b1ba3737056bf9ff
34783 F20101107_AABXDL praing_r_Page_036.QC.jpg
87b29a3c7a744915cd029f5f390091ef
b72fb3daf33fa1636a59a57cc55802c79325e6de
F20101107_AABWYF praing_r_Page_130.txt
4444757740305fbe9690a6fd0b050b9d8a1ab847
2347 F20101107_AABWXQ praing_r_Page_113.txt
d054647f929918e6f4aece7399d7e01c
9518f5461f5e54a092cb3d5cf56bb3a947927112
1024111 F20101107_AABWAJ praing_r_Page_035.jp2
16f17b9bceec3fc498a0cfeec89b6a53
6468275b72d16b47c2c8aa33a1b66599ff44ae06
99592 F20101107_AABVVD praing_r_Page_085.jpg
235a13d9c95e0dc1f916d75e844fa029
7c22fc63f3f274dbfb159ac8ed4af10f6506b793
131809 F20101107_AABVUO praing_r_Page_068.jpg
15e7b7bdf9348fa1f5ec678e2c9e7064
7ecf8066e28e8a97959ed2680a357ac1d6358496
36581 F20101107_AABXEA praing_r_Page_044.QC.jpg
d7a85cc78b962f7965c95a4b961ec959
7b2d7c0aaa4968cf9667cf112a636593a235e0a5
8228 F20101107_AABXDM praing_r_Page_036thm.jpg
865274f23f947f845ee3e244cf3e8693
c41495710e8a32f33a8ce5f5b0c53ba3b3ff69b6
5886 F20101107_AABXCX praing_r_Page_029.QC.jpg
142d5625d8728a644bb52be88c2aa2fb
1125 F20101107_AABWYG praing_r_Page_131.txt
a395df0b21cc2bda1a13478fb27fa92b
9ceb48028fe32e7c386536c3d28ebba7eaa4f830
2639 F20101107_AABWXR praing_r_Page_114.txt
915829124b963a90510effd8046f3f69
00a2af4bdac884706ec8f07894306f17fd87c408
1051928 F20101107_AABWAK praing_r_Page_036.jp2
112961 F20101107_AABVVE praing_r_Page_086.jpg
7f5aa5089a6eea69d070a8206cc7dd86
120353 F20101107_AABVUP praing_r_Page_069.jpg
c7a8d9e775b41e5f88a2c9858a780932
9bb801d6d0eacf8c0c0a1775ec49ba058770361b
8995 F20101107_AABXEB praing_r_Page_044thm.jpg
7704d5bbf7d0b5ed318da1d2f26a374a
343b692ab9b10af1bc6955025d743f341f5cec99
37683 F20101107_AABXDN praing_r_Page_037.QC.jpg
7bac07b69ffc7e5a1f16d57e560907dd
0b0ea1be82f19080689bc8d6322151a5f4788d54
1777 F20101107_AABXCY praing_r_Page_029thm.jpg
2e42577cb489bfdffedb4a35b5c02c4c
2191 F20101107_AABWYH praing_r_Page_133.txt
21427bae40509e1092ceea91a5c654e8
2161 F20101107_AABWXS praing_r_Page_115.txt
e16d732982f9e36785a60651b68c790d
f1dc1d295b08433a43ed77365a491c5b8076770d
F20101107_AABWAL praing_r_Page_037.jp2
8bb8e6b2e43570bec44a483f22a265a9
b38b6f2c48b5c5f4a66db593c320f7fe81c9cd57
69959 F20101107_AABVVF praing_r_Page_087.jpg
9d222c1844587bd60173e8c948872d68
fc8e988764c0431b718eb71ba5765f93e70db4b5
124847 F20101107_AABVUQ praing_r_Page_070.jpg
2d05f2e00afae0fae3eced6c6d37e119
192aa3ef672a1c337c8d6eb65c29239b6c814817
31774 F20101107_AABXEC praing_r_Page_045.QC.jpg
959610f948300cfa3c1f617a964a7099
c3a834d703f5f78ca196f7d54da71a2cfd6f834a
8922 F20101107_AABXDO praing_r_Page_037thm.jpg
00950db9a87fb825291c4a6bc61df510
35390 F20101107_AABXCZ praing_r_Page_030.QC.jpg
8d955963703ff630a229570db4822992
685901815d0913f2195e3bb3f9f77aed1403fa8d
2617 F20101107_AABWYI praing_r_Page_134.txt
b7d22faa40f0f36e19bf1b8796756cc8
989b7ec16baedaccbd0c21f4bb40e96eba802f25
F20101107_AABWXT praing_r_Page_116.txt
478cfa2e6d6aac6965a2600a837e2bfe
7e874d91b5ed7aeb07cb934db0fd107919141719
885749 F20101107_AABWAM praing_r_Page_038.jp2
5b9fed6b437ea4e5ab764cc44d08d4a3
a0977b0c0e225f9fbd2ce618abffe5fdcb90b3d4
93421 F20101107_AABVVG praing_r_Page_088.jpg
53bbd2be53a241858688fd4202f237ef
85f7245d1d1d83571d552265a940ca416b440219
118947 F20101107_AABVUR praing_r_Page_071.jpg
69b60966b745859247bd2f056263ec22
6f37a50f518bd1478924b7ea027840f85e923f45
F20101107_AABWBA praing_r_Page_054.jp2
ba389bea582b9ef3aff6dabbf3064a171b2191ae
7985 F20101107_AABXED praing_r_Page_045thm.jpg
aec84b8f13eb29bdd17d7964ab015ac3d2755f0b
26710 F20101107_AABXDP praing_r_Page_038.QC.jpg
40245684bc94ca9324b28e67791c31f3348e457d
996 F20101107_AABWYJ praing_r_Page_135.txt
b09b4fe834443570e616104c8a58a80b
45d848f1b9fe55fbb78cdc511a9a683a6013b65b
2425 F20101107_AABWXU praing_r_Page_117.txt
a0b8ea06bfe67f8024239d2d794f27a4
15f4e76b3ea70d13c1d027fb649186dacde42732
991667 F20101107_AABWAN praing_r_Page_039.jp2
a209e679b8c96f4689bf9342bf923d84caae3161
93001 F20101107_AABVVH praing_r_Page_089.jpg
6025db3b0de6263c95ac1cfbc7cbc338
901ded3f30865fc2cf4143681971490d4de7ef97
106219 F20101107_AABVUS praing_r_Page_072.jpg
026e36e34af62ccf9e3dcee36f3591c9
efb4d757d6aa1d0a79336cbb5fbf112fcccdb94f
1051781 F20101107_AABWBB praing_r_Page_055.jp2
90aeea3bb1d7d72612d618f153998410
a81b7d2c2421f1cc075e15323df64d271b590d87
28076 F20101107_AABXEE praing_r_Page_046.QC.jpg
ed3ebc0a649e731810d1bcfd174fa466
fe598a664ab55eb5fb8c005ddca75c238711386b
6662 F20101107_AABXDQ praing_r_Page_038thm.jpg
16a9bf5ae807b32e8d1b169993bd2101
8bbe05eb122f798ea87d06c25bfc9b947e22bf2e
2566 F20101107_AABWYK praing_r_Page_136.txt
710bb93bbc790cca5879424565b902de
0c8d43ae8017323966dbff193580da5ae324120a
2348 F20101107_AABWXV praing_r_Page_118.txt
21cec904824930a9449ed94867b5d277
b83c947c8e78fc89078b66be414978480cab8575
1051921 F20101107_AABWAO praing_r_Page_040.jp2
03e60dd1e6ff08d8c5c0cee17c4d78af
86209 F20101107_AABVVI praing_r_Page_090.jpg
eb6f84a2051aefe11a7a6bf55c829208
b4d5801f9d770ebedf7855367e71aed200d81d57
126475 F20101107_AABVUT praing_r_Page_073.jpg
b18d5862c34897a7c4166e5811cd112f
db4433f0161d94eb03afc8085b489a9f8d02fe2b
F20101107_AABWBC praing_r_Page_056.jp2
4e8091882420a1dd43eb6bb234d8569f
947cb56154d62fb4ac7c7c00e2e11f2e68b9100a
7245 F20101107_AABXEF praing_r_Page_046thm.jpg
0795fe36cccc88957a105da169683728
79d4ec09cda1b4d2dca8185bb58153bd2980d96c
29085 F20101107_AABXDR praing_r_Page_039.QC.jpg
d50a1d603a125fd439d5e666f25e8a62
F20101107_AABWYL praing_r_Page_137.txt
b21dbf3158b8cb4d47238e544217cd0b
21c931036649bb92e3e5b7120b4862312b14b42c
2204 F20101107_AABWXW praing_r_Page_119.txt
bb76535b9e4e2205d09a749c745fc759
7e501f28f775e255cd70862ee5dc45d860b237c2
F20101107_AABWAP praing_r_Page_042.jp2
b2e2b25af1d8b0d8e4aede7907ae84d3
eb9ea29065476d691d1e2fb6fda3f7c008b78381
93062 F20101107_AABVVJ praing_r_Page_091.jpg
8e4877cae95bae42a09c9bb14a66e5d6
104757 F20101107_AABVUU praing_r_Page_075.jpg
4cde04b859ed0f5a8eb7680161d7707a
F20101107_AABWBD praing_r_Page_057.jp2
e61826d6977cdbf0be585d790eb70fd7
e96702fe52a0fbced4fc961c4e509c06260a40fb
37769 F20101107_AABXEG praing_r_Page_047.QC.jpg
77998a42a6575135b3f3de869d587c1d
d85446d6469b84f7e855451aa63729c9781f9508
7296 F20101107_AABXDS praing_r_Page_039thm.jpg
abf955c2aca380dc77ea1292b3ef252b
d420d2734cbe5421b33078d26c498636516cdc88
2848 F20101107_AABWZA praing_r_Page_155.txt
4f746988f8e3272f72f01c629cf6bda6
05dc966f0536bf27766838a7379fe8e85d5855ee
F20101107_AABWYM praing_r_Page_139.txt
6753af85c65dd24c78c89e3a973d85c7
2071 F20101107_AABWXX praing_r_Page_120.txt
ec79fc29609f003dd3398fa8ab0b2bce
377513269f341d5a624d0b52c2781f7f15a127b8
F20101107_AABWAQ praing_r_Page_043.jp2
6ec823497eebd7b025b12dbf7934db7f
f12f9443395ca9b90cf2622469269672f7cae86d
106224 F20101107_AABVVK praing_r_Page_092.jpg
2746e4d820b650a8cc90752377ce18a1
a7d8773be7f864880243e1b7a25c1567ccf63acc
55949 F20101107_AABVUV praing_r_Page_076.jpg
2fa94169003c06d5e5df7ef71946627e
4934e3da88258b587c374b21c3aa98e843a79401
F20101107_AABWBE praing_r_Page_058.jp2
e5fed1d8d629100c922e3046696744db
a7758beaba8ce6a8005589c17ebdf29d0678bf4c
8471 F20101107_AABXEH praing_r_Page_047thm.jpg
e4a0541745139868babc1163e1da97f0
417e970539848f3fe544584e0f78923c0ec6b92d
34981 F20101107_AABXDT praing_r_Page_040.QC.jpg
86088aed4c9f9bcc2a1441ba7a9a7e27
8282c3898b8f2fbe819e568b529c353aa5f8c88e
2554 F20101107_AABWZB praing_r_Page_157.txt
bc4a765d8864c8322eecd58dab3c79b6
6bbe35b4450a66771c3afc4d0dd769d1a91e36ce
2531 F20101107_AABWYN praing_r_Page_140.txt
8a2147a212f21bdd9324b034b1e53b3e
9ed3551fce6abc5774b63a61bc2094af3f701c62
2420 F20101107_AABWXY praing_r_Page_121.txt
3e9fec259284dcdbc6a8d86556978ec6
be050fcc245a5ba1b59a52a585fa73fb30fc06e6
F20101107_AABWAR praing_r_Page_044.jp2
75486ba00ec8640f8e420811bef704efd5cb4b41
114472 F20101107_AABVVL praing_r_Page_093.jpg
69f3a3176cd365a12c47ab7a49e4da29
118583 F20101107_AABVUW praing_r_Page_077.jpg
2bc05d9ce6002fa6aa4417cca3072459
0c3753ee13fb301475d5b549da41c50f3e8bbce0
1051965 F20101107_AABWBF praing_r_Page_059.jp2
0e9602c36876bbb8337db0b632ea24e2
435529c954b69da207b1d65fb28440c2876c679a
31134 F20101107_AABXEI praing_r_Page_048.QC.jpg
13086371712b4a6e501c2b56675e64853ecf8995
8186 F20101107_AABXDU praing_r_Page_040thm.jpg
5f9a5b989d6e39252b28233ff12cd53c
9fdeba2ffe2b9b9178c63eecfa000858a06ee893
2402 F20101107_AABWZC praing_r_Page_158.txt
cc98dfdd508c1002737a1f66d30b14d8
b81dde58436e854f17ff6e7692948cd1ba00109a
1608 F20101107_AABWXZ praing_r_Page_122.txt
f7fd398c48cedcc95331303917d3e5b0
49bd225c9fb00a65a33709638e4588523a8633b6
F20101107_AABWAS praing_r_Page_045.jp2
8b42e9b79f7ee01a79efc548ece4707d
91fe8e93a45594ee78c76fd46e5d647b3c1c2325
83044 F20101107_AABVUX praing_r_Page_078.jpg
0b3425aaf0183d31b6f40767d7eea52875cb8041
1051924 F20101107_AABWBG praing_r_Page_060.jp2
127402 F20101107_AABVWA praing_r_Page_109.jpg
e99aa68a273cccb46db78ce77011af9c
7812 F20101107_AABXEJ praing_r_Page_048thm.jpg
39773 F20101107_AABXDV praing_r_Page_041.QC.jpg
f0472276b3d1d9a488219820ea6c9c9d
c30c59c9941c3bb64c08f6d93c105bd144eedc69
2675 F20101107_AABWZD praing_r_Page_160.txt
534b5f1d72566dde6b9e4701b7d1b603
2522 F20101107_AABWYO praing_r_Page_141.txt
a0ac1468826f4161bd092e54b1bf9377
7998cbea337baac7fb2cc7dbbb2ae53f320a5d18
930896 F20101107_AABWAT praing_r_Page_046.jp2
86ec4c37e85ce7f8c83666bb133fb0a8
0479b4c491aea99aa92cd36c3d9a087b491fac47
96709 F20101107_AABVVM praing_r_Page_094.jpg
7f3c47cb061b877263327dc3686db2cd
83abd049d78369f0e4db8829e81b58cce34f33e6
90579 F20101107_AABVUY praing_r_Page_079.jpg
9bc7c180322c50378969af62caeecdf5
aec1dfb536d240dac0db5af1e5edf728548479a7
F20101107_AABWBH praing_r_Page_061.jp2
1daff3489f89d95e2911b4776b0c0334
a8bee1034b6a05e43e8042c08f5bda515398dcfb
121380 F20101107_AABVWB praing_r_Page_111.jpg
0a5e00f367423eac13b048324369a31b
3fed9c932a2462f84ba9a87464b045bd03fce8de
42467 F20101107_AABXEK praing_r_Page_049.QC.jpg
40442be213cfff936a67830e836447df
06246b904bd600ddb7964444bea0629eaac230a0
9397 F20101107_AABXDW praing_r_Page_041thm.jpg
fbdda217629a817a9574e4842cbc956b
0125b1ececee1cf4bd0aacf66092466c9fa7875a
3216 F20101107_AABWZE praing_r_Page_161.txt
25cd40d425e7a17056e4d4e9cbe8c2fd
e9b3d17db596d7af1915e1b4c38daae200241e90
1926 F20101107_AABWYP praing_r_Page_142.txt
0cb0f4af8e2393104bfd3a5b941432dc
66e25ff2f7aeefaecb8fa5ec5601623e3823b45d
F20101107_AABWAU praing_r_Page_047.jp2
56aaac6989d03aaec15b15ee08ddb1f6
07044b5c3d20935d83968f494245c7e52c8501a7
40649 F20101107_AABVVN praing_r_Page_095.jpg
8c12ee35fec7e5a9cf46af19b94a01ca
8b524cc1b636d23749747cf45941efeaec825040
68561 F20101107_AABVUZ praing_r_Page_080.jpg
b315b78e79ed08aec9d2f86753316c8e
92dcc987f6b74c9a563895b092b5f6ce2d9f39ff
F20101107_AABWBI praing_r_Page_063.jp2
bd32660677b302f2101a436e381e4a4e
00e01eb13411710719d0b34cbe85979cc0dab447
109592 F20101107_AABVWC praing_r_Page_112.jpg
51c650a3b2f36b37ddd34ef927bbf0fc
7fc8a4a00196c798486dd378605f951abd97415c
30999 F20101107_AABXEL praing_r_Page_050.QC.jpg
304138a49c09c9a80dc07e451a31062e
d9f2e44f8a4c32f6dd73c572a197f0d63ee73bb0
32429 F20101107_AABXDX praing_r_Page_042.QC.jpg
7d83d2a91ed2bcb3ea918cae874d9039
F20101107_AABWZF praing_r_Page_162.txt
2a4c93c0e162555158cc5aa6cbb7dd10
8608ac3003308ede41ce340c457e3b1b7601a12b
2295 F20101107_AABWYQ praing_r_Page_143.txt
338cb33ab9b8870caf74b9ee182e0e470f3ed937
1050460 F20101107_AABWAV praing_r_Page_048.jp2
5d5a1bb6a6b35180aababb5304a9cb2b
e3f9738765ebe72ddcca550307bb2810262af8a9
111564 F20101107_AABVVO praing_r_Page_096.jpg
6c4001ffb19446fb48cf1247378bcd01
c59d2525448e374ee4d5bea8004a198291fe3404
F20101107_AABWBJ praing_r_Page_064.jp2
19e7cc549f8c5dfc9844b0d73d925cfc
28f34ed1effc7f7bd35513a1a958e7cfa7372bb8
130087 F20101107_AABVWD praing_r_Page_114.jpg
7255806d0d7c3f7601bb563033566370
40132 F20101107_AABXFA praing_r_Page_059.QC.jpg
6ec6b28233e31e31988a26b184c06bfe
7705 F20101107_AABXEM praing_r_Page_050thm.jpg
3ac7e4e646060d36c576142e5b09d92f
82c473c0db09b886495071b4566b15d200cd18c4
2193 F20101107_AABWZG praing_r_Page_163.txt
8373e6f437dac4b2ec7625268e17c521
0d91d538b9228b3b309849560bc9ab4b89f3975b
2166 F20101107_AABWYR praing_r_Page_144.txt
5b7500edc84c08e7b5531e4862ae4fba
885a9b779e59fb86fa69802070528796b0035152
123977 F20101107_AABVVP praing_r_Page_097.jpg
cff1d9e8748b98be9f59d59623f4a480
5b4d485065c60ff22d9e782a8bd945293dec454e
1051917 F20101107_AABWBK praing_r_Page_065.jp2
91b409f9f85b04a531305ace7ae54e55cc9e57a5
100408 F20101107_AABVWE praing_r_Page_115.jpg
d1e5c0f134a3fdf8df0b9ece4d575c06
1e7a4435d74de9dda98454729de06dd101e8ffb2
9146 F20101107_AABXFB praing_r_Page_059thm.jpg
5c16cb17aa34c07cb7be5064e71e06e0
c18fb8b156f4c5630325b4ec01d0df4571b0f1b2
28817 F20101107_AABXEN praing_r_Page_051.QC.jpg
ece2ca422fa85d54574c55ab60c88677
a6b4667220f304632008647918e8ffe2350ff27e
8261 F20101107_AABXDY praing_r_Page_042thm.jpg
584498c0a67bb8b866c1e490216cafb4
F20101107_AABWZH praing_r_Page_165.txt
7990cb759f90567b09c5ec7f355b486f
5f4267c1652a24f11a58540e9b9e876174b29e1f
2504 F20101107_AABWYS praing_r_Page_146.txt
7593df6d96e87f9d6a6e5f0552a27fcc
8d77a04cc375fa66e393a3549db6735dfed710e5
F20101107_AABWAW praing_r_Page_050.jp2
d6a3e61e7c01026d87578367cb15fb56
110509 F20101107_AABVVQ praing_r_Page_098.jpg
ce0d03c822ddb86c8e4a4fae25592db1
c1e61e637ed57cd8231a54a88bc2bc6cc2ca9e0f
1051943 F20101107_AABWBL praing_r_Page_066.jp2
6e1b6f816efee6acc15de1e2b939fe3f
55903cb9c9161e49c05d30a256194c32a70ecd59
131576 F20101107_AABVWF praing_r_Page_116.jpg
6029739c3eb529c5aed425823207cf8a
28113 F20101107_AABXFC praing_r_Page_060.QC.jpg
ca93ae72f7540613aa1bf2044cf5cab0
c7459c3cb13e6fd57c8d87de9a983b533708ab35
6864 F20101107_AABXEO praing_r_Page_051thm.jpg
3c63166ae0abdca884a7ea73d174f643
6d96c8e592d8a56219fb6ddece184a84698c3279
8863 F20101107_AABXDZ praing_r_Page_043thm.jpg
6c2caff9b70fe3231bdb0d5b6212cf4e
2dea7766c7f56eb74c2dcd00e1926226ef4fc889
2761 F20101107_AABWZI praing_r_Page_167.txt
0b43005494d9e218415f4a57684beceb
78562a35f09dd2a70a35d00f7c74b23183707642
1976 F20101107_AABWYT praing_r_Page_148.txt
8cf2fb5dc4284b3c4087c9f122fc9283
ec22ce538fedf0daf2f26a7c25851f8387596373
102952 F20101107_AABVVR praing_r_Page_099.jpg
d3335865a2c4dd2249f44d4caeef20c9
37d50e435b957a7f90d21e87f9150d3eeb04734b
879642 F20101107_AABWCA praing_r_Page_083.jp2
5fc0a9c95326c4d3e33686664233f265
c735d07c02e6b85e9912f615d74115211e257e72
F20101107_AABWBM praing_r_Page_067.jp2
3c9f14572024e90c6778f1f684045000
3ce3e245c5817c76c0b0d64e12a350037dfbd439
120552 F20101107_AABVWG praing_r_Page_117.jpg
171a66972e38a126eeb30e4b897b860c
bff5feca8f7c081fb8ed92ed496625d943d90425
962528 F20101107_AABWAX praing_r_Page_051.jp2
05a2106b8de24fb35d327a945a2373ea
cf3a844cea8dbaf37eeb2f9220387a2fd10fc2b0
6717 F20101107_AABXFD praing_r_Page_060thm.jpg
2f56ba25b6f60e695f17c5fa78cbc328
9a086f2e6b724c87f51352b4ea599b516b17bcce
25161 F20101107_AABXEP praing_r_Page_052.QC.jpg
f5c835b97e5bfab2f85d058246a553eff82f0606
2729 F20101107_AABWZJ praing_r_Page_168.txt
f036a253e5c02d591513ecd422f4ece1
3fc8ea846df81c16c66a3354deacc0c94ee6b9db
2049 F20101107_AABWYU praing_r_Page_149.txt
5c2894ec23db223c87046fdf35e9cafb
da2514257b29b11e114723efc0c6f4acb473baf8
103372 F20101107_AABVVS praing_r_Page_100.jpg
04e0d9c0a81882ea2a1e92e7b583fbcd
40c30ff41492fc163864e6e18a915d3fe97ed693
F20101107_AABWCB praing_r_Page_084.jp2
43c9040d80cf7f77da3bba846a98bdfe
F20101107_AABWBN praing_r_Page_068.jp2
6b9851d78f5d1a1d48cc60615fb61741
ec33c7c794fa78b68780796f3267b6edc25ac1a8
117517 F20101107_AABVWH praing_r_Page_118.jpg
de2b86edb3b8e5c5cb7a2ce773fc682d
46267e1af585e10e61304e497cc3fdd3424ecc13
818423 F20101107_AABWAY praing_r_Page_052.jp2
12b91cb875dd982a4d2fbc1cd45af976
6007253531133baa816ee438434feff38e3eaf4f
41870 F20101107_AABXFE praing_r_Page_061.QC.jpg
40ebfe5bc69a2177d30581aa65849ed8
09f34f751c07f0c51c0f58d9fd510907a77d078d
38281 F20101107_AABXEQ praing_r_Page_053.QC.jpg
fbcce87161f39de9948f6a9a27bc3d36
e542d158d4322bdf43b18270a2abf68036ac3cec
2479 F20101107_AABWZK praing_r_Page_169.txt
b7d6169f382593322ee98665c5bd89da
09b3460653b40419f589271a99cedf1296db26f4
2613 F20101107_AABWYV praing_r_Page_150.txt
aa08456fd1f167801c779c75520998be
f876320f8dbaa8ff2161bc6d731d9555e3d8aedd
87014 F20101107_AABVVT praing_r_Page_101.jpg
6b19c06149fa2843a249e75c241887d3
c3d1855181f69446859921212ea2201ea7468076
1040115 F20101107_AABWCC praing_r_Page_085.jp2
f027ef8daa4b5cfcda49deaa65eeda65
F20101107_AABWBO praing_r_Page_070.jp2
111559 F20101107_AABVWI praing_r_Page_119.jpg
a0d07f198992e6e610f2359eae1164d8
7bdc9f03771ff92a5e2c4874eb9d24b75c1ebe67
1051915 F20101107_AABWAZ praing_r_Page_053.jp2
b01071d37e99918a7eb1a7b78133deed
98ac82ed20fb1176097679e373945de4d22a28f5
9373 F20101107_AABXFF praing_r_Page_061thm.jpg
18a20812eedf10054d1bb96e17a2338e
0071d1f2ae9407b1b4934f742fed0217298319ec
8814 F20101107_AABXER praing_r_Page_053thm.jpg
5965cc4939b5bee01c211523f1e685f0
2245 F20101107_AABWZL praing_r_Page_170.txt
6e0ed9dd6ce5d50afa1a1001c16aabde
2498 F20101107_AABWYW praing_r_Page_151.txt
67d8a9fa238c6fb85633c2679f3cfc49
24f7ec88c94b0beb44e3a2a9b17239b23918257f
85291 F20101107_AABVVU praing_r_Page_102.jpg
f78fb1dffd06471b41e55248cc00f0eb
bec6c1908b77d4a4c95902ed799a83bb10abb6e6
767675 F20101107_AABWCD praing_r_Page_087.jp2
F20101107_AABWBP praing_r_Page_072.jp2
a342d1a2dc54812efe15ede73ac4e605625d97c8
92121 F20101107_AABVWJ praing_r_Page_120.jpg
11c346937edda9a7522bcbdef783ed53
d6b9804fab7915c8f961d58111723920ecfba33d
8822 F20101107_AABXFG praing_r_Page_062thm.jpg
3ac656997f5c0543a7819c90638cfecc
64a73ab7b37c5f2d47bd02700a00703a2f5de18b
40623 F20101107_AABXES praing_r_Page_054.QC.jpg
423301d7f07492442f4d586f233b794e
2214 F20101107_AABWZM praing_r_Page_171.txt
229d7336af6156b43e43920df71e9755
ba48477bb83525dffccfe8e36b5101ed87297431
2467 F20101107_AABWYX praing_r_Page_152.txt
bbebd822473c424f8fc215f79f8f91e9
db15d8950fb7f1495245f57091feaa6f40b428ee
105171 F20101107_AABVVV praing_r_Page_103.jpg
21b58b832a8d29a01da2350bb47ba48c
04e6fc2bf649b784285ba4e87f1f923c989c703c
969611 F20101107_AABWCE praing_r_Page_088.jp2
85eaa54d59dccb722d28e98994be26b0
56606a869bd6fd29a5ea10e28c7ac881bb550909
F20101107_AABWBQ praing_r_Page_073.jp2
81b7652cec39c00698fe023497cc0acb84f30cbb
70810 F20101107_AABVWK praing_r_Page_122.jpg
665242147e8c4bc36c019080bc7b2475
8aa3a542653fca0e20cbaac1a01c2131ae99743c
39454 F20101107_AABXFH praing_r_Page_063.QC.jpg
d0055373a9fbb50e3020e74a4a4b872c
285825364bcec2d26c32cd90a0b4c9a6406bc585
F20101107_AABXET praing_r_Page_054thm.jpg
22c3bf0671dd6dc74eedaaca359bee1c
74b2af7878e56e886316965bf43ef79f274297c2
2273 F20101107_AABWZN praing_r_Page_175.txt
66cd3f1d9c2cbc1d4e65748eb9415b8c
1631 F20101107_AABWYY praing_r_Page_153.txt
175ab958095bbfa4b7bbdf76ff408dd464d313f7
107649 F20101107_AABVVW praing_r_Page_105.jpg
0dd184251acabeeeccc781dbcdd5435f
978615 F20101107_AABWCF praing_r_Page_089.jp2
f2a23a6cd5824802159076e7dc901f86
965995 F20101107_AABWBR praing_r_Page_074.jp2
b4eba44b3fd0f5e4ca7eb5d67abd31e1
d6b838e5f87d70aaf7a040e4c56eab7a18d88ab9
126938 F20101107_AABVWL praing_r_Page_123.jpg
e92bfbf274d26b666bb31e695e86264c
26d7ea79e3926dbf12ea7db9ed4408c53723c27f
9152 F20101107_AABXFI praing_r_Page_063thm.jpg
f20f7dc0fb381807f1a40fc58b136c26
76001ea74d4c9a9d58ea2b29994e6680b7d0fdf0
38466 F20101107_AABXEU praing_r_Page_056.QC.jpg
bd31bc62ed09378d74a81d214d43d269
4b2a8cd48318b001229829db69b105aa5b66b46b
2192 F20101107_AABWZO praing_r_Page_176.txt
3822970e002e37daa87818e9f6fed30d
2529 F20101107_AABWYZ praing_r_Page_154.txt
04229aea23f02a1e9d3733c19bc9bee1
9f26c5b3bd0d1231ee55016482f13dd50ec53a53
128432 F20101107_AABVVX praing_r_Page_106.jpg
96a6bc4d06b4029cff612db956581bf9
69e312ac0c142d87a1d96ec5bb0098295930a872
951212 F20101107_AABWCG praing_r_Page_090.jp2
9dae1a8f3a047e1e08dbff39af5b4f3f
bce5f7046108d23816095a6a2deebbe07533a83f
126172 F20101107_AABVXA praing_r_Page_141.jpg
51f7af5b4eb28ddb19f294eeee0dcf4b
ecf9917e1d95547509916504a7714e13bf9b5feb
F20101107_AABWBS praing_r_Page_075.jp2
da12e443dbfc8d3a9887abd94182c45a
83db42af7db528a6fc6f9cb5f89088be98c5c545
85510 F20101107_AABVWM praing_r_Page_125.jpg
a3e801ce8b5aa875ca35482f8849aaaa
7649f371b67cf6f8f82c1f8644af892e8219733d
35980 F20101107_AABXFJ praing_r_Page_064.QC.jpg
d0ea363ae3c4530aec84175ca5b88ea7
befce0e5623a59f640309b345d0eb8beb9e57b6b
F20101107_AABXEV praing_r_Page_056thm.jpg
cfaac1ca53995e2e9e810eabd2e9dac0
1d1b66483cbc322f19a0fa0729831c4698844a39
122690 F20101107_AABVVY praing_r_Page_107.jpg
9cb217bc5f2c916bf394011353c7bc5d
1027340 F20101107_AABWCH praing_r_Page_091.jp2
ddcb56d596218e7e925af8d45733b1d6
20f9cb22b86b5d31485f1724d4e007ca6df118b1
90256 F20101107_AABVXB praing_r_Page_142.jpg
6481c633ff2bd9f4ae6e33e41a31769c
65ee9705787156d9ff5ee85b419a03f5927b2ee3
668535 F20101107_AABWBT praing_r_Page_076.jp2
c1596de2d3c78192c61532ddafff0d828362ea90
32820 F20101107_AABXFK praing_r_Page_065.QC.jpg
bc96fbdff6ddee6318c2f1e0bccce7e3
7b8b1df0ccbd0efd9a2329127099bef5c1571471
35409 F20101107_AABXEW praing_r_Page_057.QC.jpg
5d96c03487953d251a35c3f15c2eb70c
ebc397f4d8c535511c6a963512aede5e4707c902
2593 F20101107_AABWZP praing_r_Page_177.txt
311a20ed513f84ebb00ef92cd68b997e
f1a2d60403db7b1ea4881a63ca458daa0ddfc469
129425 F20101107_AABVVZ praing_r_Page_108.jpg
376a89531675b1277e6c3b09d16a4c9d
32a982a18f2ee2c9457074cdc2ec109d95cdceff
1051911 F20101107_AABWCI praing_r_Page_092.jp2
4c10a6e3489da515796bdf997631bf10
109382 F20101107_AABVXC praing_r_Page_143.jpg
866ce1c1ea95b75636140b858146b2f1
734b1fd4d405904722cd97bcf2083cd333135478
F20101107_AABWBU praing_r_Page_077.jp2
eefe54958e87e4bf72c35d0cf497349e
6681067a531ac07b347471feee0228156846662f
103736 F20101107_AABVWN praing_r_Page_126.jpg
61978b4db099a93d770447963e276692
fb2848ec86fbe21569c49e4a4aa5588c033297d6
8224 F20101107_AABXFL praing_r_Page_065thm.jpg
9acf916c61c369c0d51fea4e23a86745
f9dd264091db05f25fc4c23e1af519c6f4a013f7
8446 F20101107_AABXEX praing_r_Page_057thm.jpg
9287217e1f436993e0f9e41cb825192a
5403cc775c78b12067505a32d37c86c72fd2abf5
2364 F20101107_AABWZQ praing_r_Page_178.txt
4ab6184c3c107d991c3c7ed6ae63ecd2
858b3418668eb8d3b2ab889aa6552bc8e990beb9
1051959 F20101107_AABWCJ praing_r_Page_093.jp2
04f739db88e27a8cc11897511fea6811
103779 F20101107_AABVXD praing_r_Page_144.jpg
3d7b28d8ed483c3612588d075324ba80
7ed1f66c52bd9a89141be3841c8f8a298eba62b9
876451 F20101107_AABWBV praing_r_Page_078.jp2
bfb93169a07d276076240eacfaf16e17
93945 F20101107_AABVWO praing_r_Page_127.jpg
865d79c7f5ccc2f0d3918188517f76a3
8916 F20101107_AABXGA praing_r_Page_077thm.jpg
3885bd3eb900255166dd0034c8ca57f9
bfeeb1de1eeb3cbdb8033d7a15c05c4369a9ef40
7725 F20101107_AABXFM praing_r_Page_066thm.jpg
20cf14996a1677172e7b9e3287f4a271
0e43e16dd1c0f6d8099e5eb232da1ca3a2611541
38856 F20101107_AABXEY praing_r_Page_058.QC.jpg
53a4042472283ddab74569ca7ca0465a
bd5a5b92747c75b1a45937d45e854408dc1693eb
2138 F20101107_AABWZR praing_r_Page_179.txt
501595b19a0bc51c4669a23e0dea3f51
1045600 F20101107_AABWCK praing_r_Page_094.jp2
9fe4216d3b10b99c19778521659fa781
8cb3defea5bb7640b403c523c8fc82af324f4070
107220 F20101107_AABVXE praing_r_Page_145.jpg
c8ea2dd6b57581ce9f5e79374e05e495
33562a26e9de38b2710302093b0fa9a0c3a113f8
973862 F20101107_AABWBW praing_r_Page_079.jp2
b180f12be79b37655e2c64c3de99b8c1
97767ff9957f843de4cd1d5afbe434bde481d400
133046 F20101107_AABVWP praing_r_Page_128.jpg
7ec857bd60b1c57ac56f6cf29e9fefa2
26729 F20101107_AABXGB praing_r_Page_078.QC.jpg
9c5f250770cb36c5c2a44004655289b8
35648 F20101107_AABXFN praing_r_Page_067.QC.jpg
0fac037d82cbc747a353c1b7bedefeb2
e346b7bfc1c567f7aecc0265f3791c870d2b53cd
2717 F20101107_AABWZS praing_r_Page_180.txt
a0b3f584c99da4b7d513915ed56f20be
9b4d3ffe392142b10bb59a367dbc3fc979444b8f
410295 F20101107_AABWCL praing_r_Page_095.jp2
cbc167ccdbb5537270fbfe8491605b2e
eb43625fffcd362738c44bb4f53850747ab52943
110172 F20101107_AABVXF praing_r_Page_147.jpg
eec062ce9c1ac589fc3c0bbcd68b53de
0dbfcd7862fdabe3cdb5a047ec306f1072fdf852
128872 F20101107_AABVWQ praing_r_Page_129.jpg
1f53aaa74b30520be2dda9f9fd8d8042
F20101107_AABXGC praing_r_Page_078thm.jpg
a9e82e1b9c19015ca1a2c411841c401f
bb94d654493487e94c8ded0f790983f4099b4713
37658 F20101107_AABXFO praing_r_Page_069.QC.jpg
4f6de19edd8d82cbcce49f77d4b03aae
45d42af6905ac8a2dce8c9bab0dd26e42b790ae9
8976 F20101107_AABXEZ praing_r_Page_058thm.jpg
c4dd8e7f2e88dc27eb4e083eb8c2f2cc
dd7bc5532d66d6fbd642078457f4692c3794e3b7
F20101107_AABWZT praing_r_Page_181.txt
2cbccea286e628eccedd93302ea7e118
fc6243e296a7917654a7c74b90b63bcd2bb2fd24
1051938 F20101107_AABWCM praing_r_Page_097.jp2
96753be4d0e21b50baa823bc4c4d98b4
4e3f80a23e2a97ff01e46eb36436e38c8226bf03
91993 F20101107_AABVXG praing_r_Page_148.jpg
c7b7f3f324e125b98b6975050e287955
c7cbb3143f80ca59e729b65b7b82862da779228a
794774 F20101107_AABWBX praing_r_Page_080.jp2
2f2e1ba5e80e15b1bd82d27e9f9c374e
494c70690085882a89b4480ca457cd8d4b3b34b1
95305 F20101107_AABVWR praing_r_Page_131.jpg
cf77d5f6e0e862771ee8a1d025446c23
9c40e43b79975ca448302dac88c18ee15f867104
F20101107_AABWDA praing_r_Page_112.jp2
f44aba4026f9a700f6edb5756a2f7bf6
dcc14b2936724a145f53d6f6708f2be6fe623ba2
29364 F20101107_AABXGD praing_r_Page_079.QC.jpg
911f483a8983e28d3cceeb579a29b6bf
e4672f2b38a3076966e7fe3ab906862e445f05cb
8908 F20101107_AABXFP praing_r_Page_069thm.jpg
90f30d46bd742c38fb5e6e2827c0b742
F20101107_AABWZU praing_r_Page_182.txt
76aaff878f6d10cfa41dc97bae14c909
ac4fea2eb2aff77620f09b6d59e881ec1ba2e375
1051883 F20101107_AABWCN praing_r_Page_098.jp2
71af9cfbd323aed4ac24088dbe4d3c59
2c5a8caec62bbae68fa352d1f5dd4be42ba37118
95108 F20101107_AABVXH praing_r_Page_149.jpg
1e3fb54b7725946460e331cc9fbea176
908443 F20101107_AABWBY praing_r_Page_081.jp2
777b010f9e5387167d0ef85d65b6a272
4e9ec9ce9fd7e18096c2d856c2dda541e9c2702f
116820 F20101107_AABVWS praing_r_Page_132.jpg
10bff70eb6f99d3a0097239ccaa534d9
f5158e606f11a4d7cedd33c751a8b424dfe0ed10
F20101107_AABWDB praing_r_Page_113.jp2
b9a4b0feb741e50c797465d93fe09ae4
72c4c5a6ce5f29355ee4df1293cd5a8ac0eddaaf
7555 F20101107_AABXGE praing_r_Page_079thm.jpg
8072987291d0d3b0306bf86018fbd4b8
b8008a195aaf04663582e410668a05413a69f86b
9018 F20101107_AABXFQ praing_r_Page_070thm.jpg
0f17e15d6796db0e2d7e9ce7b2399c17
a65d7e9d0f66ff30db75c8c0a2f8156c76968b4e
1754 F20101107_AABWZV praing_r_Page_183.txt
57c2fc04c765c1afe368cd02490d1440
0e4f52e04f81b9c0495b83bf6923a713d7124fcb
F20101107_AABWCO praing_r_Page_100.jp2
e9ba2972b60fa4c7115b74300348d009
a93757cfce988848d35eb89f6dd941383ab17872
134779 F20101107_AABVXI praing_r_Page_150.jpg
1caa9b97ab694a746524ed1c218ffd5dd6772b95
964303 F20101107_AABWBZ praing_r_Page_082.jp2
437221c1a08be27be6ef9d798faa7e21
d22a8871c1bbdac77a23d3bc2c6cf2e96ce36988
106767 F20101107_AABVWT praing_r_Page_133.jpg
776d2bfcd3fa2a827913a95e49f55a77
49cf34a76a1a57271190418610d95160e0ab2e89
F20101107_AABWDC praing_r_Page_114.jp2
2449b228fd70b3fc5da50195934b3f7b
4556eafe9bf00d1bb83bea435fd926a6d5495d50
22609 F20101107_AABXGF praing_r_Page_080.QC.jpg
33453 F20101107_AABXFR praing_r_Page_072.QC.jpg
a649e6e63197a9698ba3ef97f00774da
707c5e5f327103de50fe4161f724e8cefeb6a9fa
F20101107_AABWZW praing_r_Page_184.txt
99bf5df4bb3a583d7dbf56fd90fe862e
f038ac6877d8cbca8f141f77fd833980b069fc00
972166 F20101107_AABWCP praing_r_Page_101.jp2
1b5856ec8c278878e7947a96a12d4136
835cd84a2b9b6744508ba7932830a43f71986939
123799 F20101107_AABVXJ praing_r_Page_151.jpg
10c228a6bf0d7eeee7d225db2d5535a2
82951c2488a35abd9f6db8b2169804698e297fe7
130543 F20101107_AABVWU praing_r_Page_134.jpg
dbdf20aba17de5af5918a6559dc4fc01
F20101107_AABWDD praing_r_Page_115.jp2
a0d3b8991a213ca20e56b4ab40ae83562d4e7ce9
27547 F20101107_AABXGG praing_r_Page_081.QC.jpg
e18dd0581c2d78fd4e02b5e0817dc7ba
4bff5bc2c9298f7e3063fc3d492b1b0e299a85c7
8269 F20101107_AABXFS praing_r_Page_072thm.jpg
6ed3cff587c714b5ccb2ee10a9b68017
6765c3ddaa6d19f4f35e3da26522d86be001f9b5
1339 F20101107_AABWZX praing_r_Page_185.txt
c7254458328ef4c4ca237317f7a37df5
f9485bcbdc145233f0850bc3ac2d30e08b9afe35
926301 F20101107_AABWCQ praing_r_Page_102.jp2
db13d92f13bb251244809b69d1778634
122349 F20101107_AABVXK praing_r_Page_152.jpg
d2fa83fd2a593481b916f8acbb1151010b9071a0
79164 F20101107_AABVWV praing_r_Page_135.jpg
f4d72c16ca315aa33ae4a7f5110e72c8
f3621314063bf07c269544168cc57f4a765c7075
F20101107_AABWDE praing_r_Page_116.jp2
dec8469899a308df15dfd3e1802caafa
7110 F20101107_AABXGH praing_r_Page_081thm.jpg
6c8f7d249736dbb6e767ab99ca6995db
0455419c512f390dd3d204d3ed6dc2da8ed731a7
40412 F20101107_AABXFT praing_r_Page_073.QC.jpg
f89c0eac2c03d19ef7d535f583e18127
F20101107_AABWZY praing_r_Page_186.txt
c16d6c54f39de1a289bc455d477910d6
F20101107_AABWCR praing_r_Page_103.jp2
7a2b9e02b50c233322b9f483fd039149
b836c65498c201764086a7bb34cfdd9f5a15b668
70301 F20101107_AABVXL praing_r_Page_153.jpg
7658944f4d30f2432a5b619d98078f75
a725043ebfa78247d5935ac5bb68243f2be341f7
126621 F20101107_AABVWW praing_r_Page_137.jpg
a856e387a0b67dca723734d2a370ba4d
27ee031e95165071a12017d2023c9c8028e151eb
F20101107_AABWDF praing_r_Page_117.jp2
417c12479491f1e72b72a025fcdd4e89
4d61138b0737d7efffa450ce52a4cf0c0abfdc9f
28602 F20101107_AABXGI praing_r_Page_082.QC.jpg
42d689d0b1776826f7272a7fd1a1f59a
873981a853da1f718d582d0974ec4480ab1efe2f
9306 F20101107_AABXFU praing_r_Page_073thm.jpg
f5b24d2846fdb688673e7cf1074f5e66
661 F20101107_AABWZZ praing_r_Page_187.txt
9ea52a177fe748d4fab29f8c36c7b2a2
c76752688dfa591b09d23e04c77865b0285d7de1
112641 F20101107_AABVYA praing_r_Page_171.jpg
6b42985671edd554393b6f2ab25efc0d
18c4fc3f4e6fbbc5f4d6d6ffeb619700b03b3ee5
F20101107_AABWCS praing_r_Page_104.jp2
189b9e045bdd17348467b32d0e947792
fdc057f3d3689cd1d0c27f7846e8d663468b1182
109761 F20101107_AABVXM praing_r_Page_154.jpg
fa5e726c590e4e60638be50c22e41718920fb413
102497 F20101107_AABVWX praing_r_Page_138.jpg
530375eef5466a81a79081a55f1b72c5
8895d70be36184a0d558341903b478363fcb3675
F20101107_AABWDG praing_r_Page_118.jp2
5eaa76a4ec5f981a4e21d1ac04c9e436
f5fa7fba1ebb829951da6474a605118c2696a52a
26577 F20101107_AABXGJ praing_r_Page_083.QC.jpg
873c975cba68eeeeb7422239cff42d78
ec27c9f7b5982f8c82860f5908cac999ac6a5f54
30309 F20101107_AABXFV praing_r_Page_074.QC.jpg
12689b65273b82624b647e4762eafa6c8a0b2cbd
102047 F20101107_AABVYB praing_r_Page_172.jpg
bdfda8a25e7897fed4c15e095901dc67
549c52e35778dc89ce31e1da3d843bd1d2042779
F20101107_AABWCT praing_r_Page_105.jp2
ccf6c45ea3e446e422b910bbd77d0d1c
816d04f852b3c5e2f515e0c99900ceacb7cd78f1
112473 F20101107_AABVXN praing_r_Page_155.jpg
cf2fe91a30c227f6a4d71bf46d40aa90
2429fd4c705080c50d77493cbd69754131a86a8e
122150 F20101107_AABVWY praing_r_Page_139.jpg
bce333f91fd6554babb26b7cccb004c7
19afa542fba0e241333130611c369ba63073a4e0
F20101107_AABWDH praing_r_Page_119.jp2
5c760f2c25068a4e8a30094091f893df
a87368b74b79226bee25655d0b2da251077cb1f9
34709 F20101107_AABXGK praing_r_Page_084.QC.jpg
e4108e19147dc509fe0af9c38e4bf745
33142 F20101107_AABXFW praing_r_Page_075.QC.jpg
f1cb219da0b81d613af09ff864347942
0e8ebdb97e8d5b2ebc880c2a23f006db470b210a
124624 F20101107_AABVYC praing_r_Page_173.jpg
dffd7463ce0d974d7837359bb230a7ea
7664d9b4d81cdbc8bcc090d5644be6e5d40b05c0
F20101107_AABWCU praing_r_Page_106.jp2
c1decb0c3ec613f0196b7ea26860c63b
cf05003a8c9d501d4c807ee6550841b4ed9ece15
125284 F20101107_AABVWZ praing_r_Page_140.jpg
7e18f25a00df77faca9b9609bda85428
3206d9e37592f7e3eecf6d52135e78d08d726b51
1012095 F20101107_AABWDI praing_r_Page_120.jp2
c052177b5e4ec3a12ae303e3c7381705
cd1dd49f2aa449206017ae77579ea84fae827069
8650 F20101107_AABXGL praing_r_Page_084thm.jpg
8005 F20101107_AABXFX praing_r_Page_075thm.jpg
23b6ff0e9fe659b6d317dbdd2fb19de8e99c0721
88415 F20101107_AABVYD praing_r_Page_174.jpg
d6005fedf946e75b9d298b3f743f0db0
b3874ce02720858663443cbc6ec26da6cc9d19e2
1051949 F20101107_AABWCV praing_r_Page_107.jp2
e980017ce435ba4d22190bca545617ce
196f6395efd49bc036dc18b45439e89b9512709b
103773 F20101107_AABVXO praing_r_Page_156.jpg
db9a3ed2fdcd0f5226df4306af0988c6
a2e638b0d57f372d880c3d49bb70dcbefd8bb7c1
F20101107_AABWDJ praing_r_Page_121.jp2
2cc2d316c6bde8d8a02f9e5d894933a8
8032 F20101107_AABXHA praing_r_Page_092thm.jpg
3fbe2e390019f221a85505a365532466
06bb4897ab1a67bac980207248190487daf755f4
31587 F20101107_AABXGM praing_r_Page_085.QC.jpg
05482d0a5c9e73bd7895f84cc20455b2
40cb960e19f7803cf5674c72d2ce7361f044b99f
5092 F20101107_AABXFY praing_r_Page_076thm.jpg
41c3e4bb2400dc8f66dfb2a9d4dc0870
50927eb713572201bb68ae8fa4b6607ff3422cab
106680 F20101107_AABVYE praing_r_Page_175.jpg
377656547a774a656a259d9ded65405a
93b0b98de4567d0ded329606a5fbac83b03727e8
F20101107_AABWCW praing_r_Page_108.jp2
00ba203bd3678806da23cb238d71e53f
116951 F20101107_AABVXP praing_r_Page_158.jpg
7f93f5b3a37d7cf074f079bde7643da6
d0a12808e0617b4f396131955690a9887e3dbd8c
792059 F20101107_AABWDK praing_r_Page_122.jp2
aea6570a33d81c5b9cdaa81e40206bfd
8536 F20101107_AABXHB praing_r_Page_093thm.jpg
4251846f764033171608287a8bb148ffca3cb293
8169 F20101107_AABXGN praing_r_Page_085thm.jpg
258b59e7879123f11d1bfd897d962daa
6839714b51ee254c0590c0a85b7a70193a814aeb
37628 F20101107_AABXFZ praing_r_Page_077.QC.jpg
a8b1fd57a99670a083a6737685665975
07c64b86db42c3f687364a83c61d66a120449016
95459 F20101107_AABVYF praing_r_Page_176.jpg
6bf4f79a493f24511c3170b328e0f08d
d919c2bd14772c9c585d0db14c9c5f35b26682e4
F20101107_AABWCX praing_r_Page_109.jp2
e24dd40c889e2bffd20d3b8db461ab1e
a638623a70d932ca150a7877fc39e2da199e74e8
83266 F20101107_AABVXQ praing_r_Page_159.jpg
7727e2f48176a5573257e7e29f9e5737
987fb5e60187be62fae7c98231d76bfcfc2f7227
F20101107_AABWDL praing_r_Page_123.jp2
edc28b81c60865e938b281bd7a75a81e
218012934a45528bcf7575cf2521b94bdd293ee6
31056 F20101107_AABXHC praing_r_Page_094.QC.jpg
d102689cc903025e1afc0b9661c2eac8
cac663d852a7edaf4a7fc64415d4075bca6a3052
36189 F20101107_AABXGO praing_r_Page_086.QC.jpg
e29d116c0d65a06e5f3b6d28c15f4f9c
cf1aee953a319e74ec5cf1a71cf90ebe1f83ce73
126656 F20101107_AABVYG praing_r_Page_177.jpg
2565c6bdd494e5d3a63ddb75231a31f5
d4a25ce0006c57e7653cd424a09aba11bc7742df
124955 F20101107_AABVXR praing_r_Page_161.jpg
d05cf9d06a54bd9848f5d6ac6b0800f12f5aa0a0
F20101107_AABWEA praing_r_Page_138.jp2
eab8a5cfee55f0de93e93acc86f10295
71b8cd3f8c6b1412c8c66eda75ed879ce0ace029
F20101107_AABWDM praing_r_Page_124.jp2
551b84e689b582cf23cef33a96b254b3
f2b08a563c38e992662e3179a79b1295687d5c09
7499 F20101107_AABXHD praing_r_Page_094thm.jpg
a0b61485a9c360050af3ca93d78eede6
8e0735e6072508d1f1d23f7df39408f05e6d5eab
8508 F20101107_AABXGP praing_r_Page_086thm.jpg
9f488fb9fe1e2a70b9f5e9b84aaec104
84b6aeaba1ee316e3135567e5e8721856236f07a
115952 F20101107_AABVYH praing_r_Page_178.jpg
c5e984ea31de35d2dabb1bea1c36c18f
F20101107_AABWCY praing_r_Page_110.jp2
5d5f64c91345d583b39c08529a8523b6
d8df4c7f33c2201887eb477c0bda529a5c506333
81011 F20101107_AABVXS praing_r_Page_162.jpg
558fe28d8f539de1e8bd2e6e1e1c6f9a
95da1344f8e851fc960619ebae4e2d2f3147b433
F20101107_AABWEB praing_r_Page_139.jp2
286d5c4e386e5e23c36faf2b3359a635
0325ea5338f9c674d2a90acaa0fb3e425d6de615
942224 F20101107_AABWDN praing_r_Page_125.jp2
01eea7a824ce37d54e954645f878b56a
1e15831fbf0c697d589dbd97686651dc974d3e77
3283 F20101107_AABXHE praing_r_Page_095thm.jpg
e86116acb4db1749800700684997e4a3
ccc738bc668ff98ec6089a1b2967ce30f45bea23
23521 F20101107_AABXGQ praing_r_Page_087.QC.jpg
e59e1b87f24cfaa4b1f55ef5674c40e8
a9289888c6b089d9ae1f9e789d403beb1bfedf71
110422 F20101107_AABVYI praing_r_Page_179.jpg
82d9618f54a0ac9678f0e75746262b60
62c8f4827379956c57b8fd3f3a2214db6324ff4a
F20101107_AABWCZ praing_r_Page_111.jp2
ae79d566892599d4262bea7a4bd6dec0
3a8805d3b1cdbf71c10e1c7ff8b98cf4df1c44aa
107164 F20101107_AABVXT praing_r_Page_163.jpg
ab47dc3323c29a32fb2f023523d6681e
254bbdbaf0017384825a495bec733fcb3d392561
F20101107_AABWEC praing_r_Page_140.jp2
2e773ffb4fd92019d81e707e4614f44b
14ba9b6310840f48e565656b82b35932437fc1f0
1051922 F20101107_AABWDO praing_r_Page_126.jp2
218d303916c8b444c47b61ab56b5f391
32da9e3417a31714892a1ed7fb4b9996983b3325
36176 F20101107_AABXHF praing_r_Page_096.QC.jpg
7e928d930e66f08d816b57c99bcccc5ca5438840
6478 F20101107_AABXGR praing_r_Page_087thm.jpg
f038d52b876e9c7a075e98736d1f559c
b977d3c08e1e20e76c0d0b074274b73c45217463
135942 F20101107_AABVYJ praing_r_Page_180.jpg
ea6f15259b0e813b095f014929ffff69
112227 F20101107_AABVXU praing_r_Page_164.jpg
62b8a8482d02c43e2c92884d7cb60fceaa4f1311
F20101107_AABWED praing_r_Page_141.jp2
de38e2ccabccfd5435f3567d2144004f
aa0a5d3ddbbf96bf34c6d28ab6925d7f4fa102f0
F20101107_AABWDP praing_r_Page_127.jp2
b16a9205f4906677e02a62f91ae8653d

MOVING BALLOON ALGEBRA:
DESIGN, IMPLEMENTATION, AND DATABASE INTEGRATION OF
A SPATIOTEMPORAL DATA MODEL FOR
HISTORICAL AND PREDICTIVE MOVING OBJECTS

By

REASEY PRAING

A DISSERTATION PRESENTED TO THE GRADUATE SCHOOL
OF THE UNIVERSITY OF FLORIDA IN PARTIAL FULFILLMENT
OF THE REQUIREMENTS FOR THE DEGREE OF
DOCTOR OF PHILOSOPHY

UNIVERSITY OF FLORIDA

2008

@ 2008 Reasey Praing

To my dear family who provides me with love, encouragement, and support, making this

milestone possible

ACKNOWLEDGMENTS

I thank the chair and members of my supervisory committee for their mentoring, my

colleagues for their intellectual support, and the Computer Science department as well as the

National Science Foundation for their financial support. I thank my parents, my sisters and

brother for their loving encouragement, which motivated me to complete my study.

page

ACKNOWLEDGMENTS .. ................ ................ 4

LIST OF TABLES ...................................... 8

LIST OF FIGURES ................. ............. ....... 9

ABSTRACT ................................... ....... 13

CHAPTER

1 INTRODUCTION .................................. 15

1.1 Motivation ...................... .............. 15
1.2 Problem Statement ................... .......... 15
1.3 Goals and Solutions ................... .......... 17

2 RELATED WORK ..................... .............. 20

2.1 Spatial Data Modeling ................... ......... 20
2.1.1 Spatial Objects ................... ......... 20
2.1.2 Topological Relationships ......... ..... ........ 21
2.2 Spatiotemporal Data Modeling ................... ....... 23
2.2.1 Historical Movements of Moving Objects ................ 23
2.2.2 Predictive Movements of Moving Objects . . . .. 25
2.3 Implementation Aspects of Spatial and Spatiotemporal Data Models ...... 27
2.4 Database Integration .................. ............. .. 28

3 ABSTRACT MODEL OF THE MOVING BALLOON ALGEBRA ......... .. 30

3.1 Modeling Historical and Predicted Movements . . ..... 30
3.1.1 Continuity of Movement .................. .. .... .. 31
3.1.2 Modeling Historical Movements of Moving Objects . . .... 40
3.1.3 Modeling Future Predictions of Moving Objects . . .... 40
3.1.3.1 Handling the uncertainty of the future positions and extent of
moving objects .................. .. .... .. .. 41
3.1.3.2 Data types for future predictions of moving objects . 45
3.2 Modeling Moving Balloon Objects .................. ...... .. 47
3.2.1 Balloon Data types ...... . . . .. 47
3.2.2 Spatiotemporal Balloon Data Types .... . . .... 50
3.3 Operations of the Moving Balloon Algebra .... . . .... 53
3.3.1 Operations on Historical Movements ... . . .. 53
3.3.2 Operations on Future Predictions ................... ... 54
3.3.3 Operations on Balloon Objects ................ .... .. 58
3.3.4 Operations on Moving Balloon Objects . . . 59
3.4 Spatiotemporal Predicates .............. . . .... 62

3.4.1 Modeling Balloon Predicates ................... ..... ..63
3.4.1.1 General mechanism for balloon predicates . . ... 63
3.4.1.2 Specification based on traditional spatiotemporal predicates .65
3.4.1.3 Canonical collection of balloon predicates . . ... 68
3.4.2 Reasoning About Actual Future Interactions . . ..... 69
3.5 Querying Using the Moving Balloon Algebra .................. ..71
3.5.1 Interoperating with Prediction Models .................. ..71
3.5.2 Spatiotemporal Queries .................. ....... 72

4 DISCRETE MODEL OF THE MOVING BALLOON ALGEBRA ........... 77

4.1 Non-Temporal Data Types.... ........ ....... ......... .. 77
4.1.1 Base Data Types and Time Data Types .................. ..77
4.1.2 Spatial Data Types. .................. ........ 79
4.2 Basic Spatiotemporal Data Types .................. ....... .. 82
4.2.1 Temporal Units for Base Types ................... .... 84
4.2.2 Temporal Units for Spatial Data Types .................. ..85
4.2.2.1 Unit point .................. ......... .. 86
4.2.2.2 Unit line ............. . . .... 88
4.2.2.3 Unit region ......... . . . .... 90
4.3 Balloon Data Types and Spatiotemporal Balloon Data Types . . ... 91
4.3.1 Balloon Data Types ............. . . .... 91
4.3.2 Spatiotemporal Balloon Data Types .................. ..93

5 IMPLEMENTATION MODEL OF THE MOVING BALLOON ALGEBRA ...... 96

5.1 Data Structures .................. ................ ..96
5.1.1 General Requirements of Database-Compatible Data Structures . 97
5.1.2 Data Structures for Spatial Data Types .................. ..97
5.1.3 Data Structures for Spatiotemporal Data Types . . .... 103
5.1.3.1 Data structures for basic spatiotemporal data types ...... .104
5.1.3.2 Data structures for balloon and spatiotemporal balloon data
types ........ ..... .. .. ............ 106
5.2 Algorithms for Topological Predicates on Complex Spatial Objects . ... 108
5.2.1 Basic Algorithmic Concepts .................. ....... 109
5.2.1.1 Parallel object traversal .... . . . ..109
5.2.1.2 Overlap numbers. .......... . . .....111
5.2.1.3 Plane sweep ................. . . 111
5.2.2 The Exploration Phase for Collecting Topological Information . 117
5.2.2.1 The exploration algorithm for the point2D/point2D case . 119
5.2.2.2 The exploration algorithm for the point2D/line2D case . 119
5.2.2.3 The exploration algorithm for the point2D/region2D case 123
5.2.2.4 The exploration algorithm for the line2D/line2D case . 125
5.2.2.5 The exploration algorithm for the line2D/region2D case . 129
5.2.2.6 The exploration algorithm for the region2D/region2D case 133
5.2.3 The Evaluation Phase for Matching Topological Predicates . ... 137

5.2.3.1 Direct predicate characterization: a simple evaluation method 137
5.2.3.2 The 9-intersection matrix characterization method ....... .140
5.2.3.3 Type combination dependent 9-intersection matrix characteri-
zation ........ ....... .. ...... 141
5.2.3.4 The 9-intersection matrix characterization for region/region case 146
5.2.4 Optimized Evaluation Methods .................. ..... ..151
5.2.4.1 Matrix thinning for predicate verification . . .... 152
5.2.4.2 Minimum cost decision tree for predicate determination . 157
5.2.5 Interface Methods for Topological Predicates . . . 165
5.3 Algorithms for Spatiotemporal Predicates .... . . ... 166
5.3.1 The Algorithmic Scheme ............... ..... 166
5.3.2 Time-Synchronized Interval Refinement . . . 171
5.3.3 Function-Valued Interval Refinement and Development Determination 174
5.3.4 Pattern Matching with Query Predicate . . . 178
5.4 Algorithms for Balloon Predicates .................. ...... ..180
5.5 Database Integration ............... . . . ... 182
5.6 Case Study: Application to Hurricane Research . . . 185

6 MODEL AND IMPLEMENTATION ASSESSMENT . . . .... 191

6.1 Topological Predicates: Assessment, Testing, and Performance Study ....... .191
6.1.1 Qualitative Assessment .................. ....... 191
6.1.2 Testing ....... .. ......... ....... ....... 192
6.1.3 Performance Study and Analysis .............. . .. 193
6.2 Spatiotemporal Model Assessment ........ . . . ......196

7 CONCLUSIONS ................... . . ..... 199

REFERENCES ...................... . . . 201

BIOGRAPHICAL SKETCH ................. . . ..... 206

LIST OF TABLES

Table page

3-1 Operations on historical movements and future predictions of moving objects. . 55

3-2 Value of the operation pointsetconf(cp(o), 3, instant) for each combination of cp(a)
and 3 whether it is always 0, denoted by a value 0, or a meaningful value, denoted by
a value M. ...... ............. .................. .. 56

3-3 Operations on balloon objects and moving balloon objects. .. . ..... 60

3-4 Assigning naming prefixes to pairwise combinations of interactions. . ... 67

3-5 Number of balloon predicates between balloon-pp, balloonpr, and balloonrr objects. 69

3-6 Inferring the types of interaction between actual objects from the types of interaction
between their predictions. .................. ............ 70

5-1 Static and dynamic halfsegment sequences of the regions RI and R2 in Figure 5-6. 116

5-2 Possible segment class constellations between two consecutive segments in the sweep
line status ................... ........... ........ 136

5-3 Summary of complete and thinned out 9IMs for the topological predicates of all type
combinations ............... ............... . .. 156

5-4 MCDT pre-order representations for all type combinations on the basis of equal prob-
ability of occurrence of all topological predicates. ................... ..161

5-5 Summary of the MCDTs for all type combinations on the basis of equal probability
of occurrence of all topological predicates. ................... . 164

5-6 Interval endpoint ordering. .................. ........... 173

LIST OF FIGURES

Figure page

2-1 Examples of spatial objects. A) A simple point object. B) A simple line object. C)
A simple region object. D) A complex point object. E) A complex line object. F) A
complex region object. .................. .. ........... 21

2-2 The 9-intersection model and topological predicates. A) The 9-intersection matrix.
B) The numbers of topological predicates between two simple/complex spatial objects. 22

2-3 Examples of moving objects. A) A single-component moving point object. B) A single-
component moving region object. C) A multi-component moving point object. D) A
multi-component moving region object. ................ ........ 24

2-4 Examples of spatiotemporal functions for moving points. A) Partially disappear. B)
Instantly appear. C) Have instantaneous jumps. D) Have spatial outliers. Examples
of spatiotemporal functions for moving regions. E) Partially disappear. F) Instantly
appear. G) Have instantaneous jumps. H) An example of a spatiotemporal predicate. 26

3-1 Examples of 0-continuous temporal functions. A) simultaneous movement. B) A merg-
ing situation. C) A splitting situation. D) A combined merging and splitting situation. 35

3-2 Examples of 0-discontinuous temporal functions. A) An instantaneous jump in an
mreal object. B), C) Two constellations with time instants at which the function is
event-)-discontinuous. .................. .. ........... 36

3-3 Moving point object given by a temporal function with a local minimum and a local
maximum. ................... ............ ....... 38

3-4 Modeling potential future positions of spatiotemporal objects. A) For a hurricane's
eye at now+12 hours. B) Within the 12-hour period. C) For a vehicle at now+15 min-
utes. D) Within the 15-minute period. E) For a vehicle with a constant speed at now+15
minutes. F) Within the 15-minute period.. ................. ....... 42

3-5 Representing the future prediction of a hurricane's eye using a moving region with a
moving confidence distribution. The gradient indicates varied degree of confidence. .. 45

3-6 Examples of valid future predictions. A) A continuousfpoint object. B) A continu-
ousfregion object. C) A discontinuous region object. An example of invalid future
predictions. D) A dimensionally collapsed object with multiple types. . ... 46

3-7 Example of a historical temporal domain time that starts from -- and ends at tc in-
clusively. ................... ........... ..... ... 48

3-8 Example of a future temporal domain time that starts exclusively from tc and ex-
tends indefinitely towards +. .................. .......... 48

3-9 Example of a moving balloon object of type mballoonpr. .. . . 52

3-10 Examples of predictions at a time instant. A) A point-based prediction with a discrete
probability distribution. B) A line-based prediction with a one-dimensional contin-
uous distribution. C) A region-based prediction with a two-dimensional continuous
distribution. .................. .................. .. .. 57

3-11 Relations between traditional moving object data model and balloon data model. . 64

3-12 Possible relationships between parts of balloon objects A and B. A) When A's current
instant is earlier. B) At the same time. C) Later than that of B's. . . ... 65

3-13 Future crossing situation between a balloonpp object P and a balloonpr object R. 66

3-14 Movement of the eye of hurricane Katrina. ................... ....... 74

4-1 Representations of a line object. A) In the abstract model. B) In the discrete model. 80

4-2 Representations of a region object. A) In the abstract model. B) In the discrete model. 82

4-3 A discrete representation of a moving point object. A) A temporal unit. B) A sliced
representation .................. .................. .. 83

4-4 Representing a moving line object. A) A uline value. B) A discrete representation of
a moving line object. .................. .. ............ 89

4-5 Example of a region value. .................. ......... 90

5-1 Examples of the order relation on halfsegments: h < h2 . . ..... 100

5-2 A line2D object L and a region2D object R .................. ... .103

5-3 Example of the segment classification of two region2D objects . . ... 112

5-4 Changing overlap numbers after an intersection. ............... ..113

5-5 Splitting of segments. A) two intersecting segments. B) two partially coinciding seg-
ments (without symmetric counterparts). C) A segment whose interior is touched by
another segment. Digits indicate part numbers of segments after splitting. ...... .115

5-6 Sweep line status. A) Before the splitting (S4 to be inserted). B) After the splitting.
The vertical dashed line indicates the current position of the sweep line. . ... 115

5-7 Algorithm for computing the topological feature vectors for two point2D objects 120

5-8 Boundary point intersections. A) Boundary points (in black) and connector points (in
grey) of a line2D object. B) A scenario where a boundary point of a line2D object ex-
ists that is unequal to all points of a point2D object. C) A scenario where this is not
the case .................. ... ................... .... 120

5-9 Algorithm for computing the topological feature vectors for a point2D object and a
line2D object .................. ............. .. 122

5-10 Algorithm for computing the topological feature vectors for apoint2D object and a
region2D object ................. . . 125

5-11 Algorithm for computing the topological feature vectors for two line2D objects . 127

5-12 Algorithm for computing the topological feature vectors for a line2D object and a
region2D object ................. . . 131

5-13 Special case of the plane sweep. .................. ........ 132

5-14 Algorithm for computing the topological feature vectors for two region2D objects 135

5-15 The 9-intersection matrices. A) Matrix number 8 for the predicate meet between two
line objects. B) Matrix number 7 for the predicate inside between two region objects. 138

5-16 Algorithm for computing the thinned out versions of the n", intersection matrices
associated with the topological predicates between two spatial data types aX and 3 153

5-17 Complete and thinned out matrices for the 5 topological predicates of the point/point
case ............... .... ................. ..........154

5-18 Complete and thinned out matrices for the 14 topological predicates of the point/line
case ............... .... ................. ..........155

5-19 Complete and thinned out matrices for the 7 topological predicates of the point/region
case ............... .... ................. ..........155

5-20 Complete and thinned out matrices for the 33 topological predicates of the region/region
case ............... .... ................. ..........155

5-21 Minimum cost decision tree algorithm .................. ....... 159

5-22 Minimum cost decision trees. A) For the 5 topological predicates of the point/point
case. B) For the 7 topological predicates of the point/region case. C) For the 14 topo-
logical predicates of the point/line case under the assumption that all topological pred-
icates occur with equal probability. .................. ......... 162

5-23 Spatiotemporal predicate evaluator algorithm. .................. ..170

5-24 Time-synchronized refinement of two unit interval sequences: two sets of time inter-
vals on the left side, and their refinement partition for development evaluation on the
right side. ................... ........... ........ 171

5-25 Time-synchronized interval refinement algorithm. ................... ..172

5-26 Next Algorithm ................... . . .174

5-27 Intersecting unit segments of two moving points representing the development Dis-
joint > meet > Disjoint and thus requiring a further interval refinement. . ... 174

5-28 Function-valued interval refinement algorithm. .................. ..175

5-29 Unit intersection algorithm. .............. . . . 176

5-30 Pattern matching algorithm. ............... . . ....... 179

5-31 Balloon predicate evaluator algorithm. ................. ......... 181

5-32 Registration of a data type and an operation in Oracle. ..... . . ..... 183

5-33 The integration of algebra in extensible DBMSs ... . . ..... 185

5-34 Creating a table using a user-defined type. ................... ....... 185

5-35 Using a user-defined function in SQL query. ............. . 185

5-36 Visualization of hurricane Katrina using the Moving Balloon Algebra. . ... 187

5-37 Visualizing hurricane Katrina. A) Katrina's prediction #7 in object-based perspec-
tives. B) Temporal analysis perspective on August 27, 2005 at 12:00 GMT. ..... 189

5-38 Hurricane analysis. A) Hurricane prediction analysis between 2003 and 2007. B) Hur-
ricane Kate (#1312). C) Hurricane Lisa (#1329). ................ ..190

6-1 Predicate verification without and with matrix thinning ..... . . 194

6-2 Predicate determination without and with MCDT ................. ..196

Abstract of Dissertation Presented to the Graduate School
of the University of Florida in Partial Fulfillment of the
Requirements for the Degree of Doctor of Philosophy

MOVING BALLOON ALGEBRA:
DESIGN, IMPLEMENTATION, AND DATABASE INTEGRATION OF
A SPATIOTEMPORAL DATA MODEL FOR
HISTORICAL AND PREDICTIVE MOVING OBJECTS

By

Reasey Praing

August 2008

Chair: Markus Schneider
Major: Computer Engineering

Spatiotemporal databases deal with geometries changing over time. Recently, moving

objects like moving points and moving regions have been the focus of research. They represent

time-dependent geometries that continuously change their location and/or extent and are

interesting for many disciplines including the geosciences, geographical information science,

moving objects databases, location-based services, robotics, and mobile computing. So far,

a few moving object data models and query languages have been proposed. Each of them

supports either exclusively historical movements relating to the past or exclusively predicted

movements relating to the future. Thus, the query support for each model is limited by the type

of supported movements. This presents a problem in modeling the dynamic nature of a moving

object when both its known historical movement and its predicted future movement are desired

to be simultaneously managed and made available for spatiotemporal operations and queries.

Furthermore, current definitions of moving objects are too general and rather vague. It is unclear

how a moving object is allowed to move or evolve through space and time. That is, the properties

of movement (like its continuity) have not been precisely specified. It is also unclear how, in

a database context, future predictions of a moving object can be modeled taking into account

the inherent uncertainty of future evolution. Moreover, implementations of spatiotemporal data

types and operations are rare and their integration into extensible database management systems

has been so far nonexistent. In this research, we present a new type system and query language

called Moving Balloon Algebra consisting of a moving object model that is able to represent

the dynamic nature of moving objects while providing integrated and seamless support for both

historical and predicted movements of moving objects. The goal is to go beyond existing moving

object models by collectively integrating existing functionalities as well as introducing new ones.

From a conceptual standpoint, this algebra provides a formal definition of novel spatiotemporal

data types, operations, and predicates as well as introduces new types of spatiotemporal queries.

Beside these conceptual contributions, an implementation of the algebra is provided in the form

of a database-independent type system library, and its integration into a relational database

management system is demonstrated.

CHAPTER 1
INTRODUCTION

1.1 Motivation

Within the past decades, we have seen significant changes in computing technology. One

of the most apparent changes is the propagation of computing from the stationary desktop

environment to the mobile outdoors. This revolutionary development has enabled many important

types of emerging applications including global positioning services, location-based services,

tracking systems, fleet management, and air traffic control. The property that these applications

have in common is that they all deal with objects that change their positions and/or extent over

time; they are commonly known as moving objects. The importance of moving objects in these

emerging applications has generated a lot of research interest across many disciplines including

the geosciences, geographical information science (GIS), artificial intelligence, robotics, and

mobile computing. Much of the research has also focused on modeling and managing moving

objects in database systems; these systems are termed moving objects database systems (MODS)

and are special instances of spatiotemporal database systems (STDBS).

1.2 Problem Statement

Although some important results have already been achieved with respect to the modeling

and management of moving objects in databases, the current state of the art still reveals a

number of shortcomings both at the conceptual and the implementation levels. At the conceptual

level, we have identified three main problems. The first problem concerns an appropriate

modeling of movement itself. Most approaches model moving objects as functions from time

to some non-temporal data type. For example, temperature curves are modeled as functions

from time to the real numbers. This concept is very useful since it can be used to define a type

constructor to construct temporally dependent data types from non-temporal data types. For

example, spatiotemporal data types such as moving point, moving line and moving region can

be constructed from the spatial data types point, line, and region respectively. However, these

temporal functions should not be arbitrary but appropriately restricted so that they accurately

and realistically represent the behavior of moving objects in the real world. For example, the

continuity property of movements must be specified such that an unrealistic behavior like

instantaneous, positional jumps are not allowed in the model. Unfortunately, restrictions like this

have been so far neglected in existing moving objects models.

The second problem relates to the modeling of predictive movements of moving objects. A

few specialized models have been proposed to support queries regarding future predictions of

moving objects. However, these models are restricted to moving points only and are tailored to

specific application domains and fixed prediction methods. All models anticipate future object

movements through certain assumptions on the objects' inertia, trajectories, and environmental

or contextual constraints. Their prediction methods are almost always entirely based on the

past and current movements of the objects, thus neglecting external factors or domain-specific

parameters which may significantly affect the future movements of moving objects. For instance,

information such as atmospheric pressures, temperature zones, wind and ocean currents plays a

major role in predicting the future evolution of a hurricane. This requires highly specialized and

sophisticated prediction models and algorithms beyond those in which only the past and current

object movements are considered as system parameters. In fact, the development effort for such

prediction models is a discipline by itself and a task of domain experts. In addition, different

application domains may require different prediction models. For example, to predict the

future spread of a forest fire, one may consider a different set of parameters such as the volume

of fire fuel (for example, dry brush), surface slope, and the capability of responsive actions

from firefighters in addition to atmospheric conditions such as wind and humidity. Thus, it is

impossible to define a one-size-fits-all prediction model for all applications. However, we can

assume that the nature of the outputs of different prediction models is the same, or at least very

similar. Such an output consists of a description of a predicted movement as well as a measure

of confidence (for example, probability, fuzziness, roughness) expressing the reliability of the

prediction. We can represent the predicted movement through spatiotemporal data types. We do

not see it as the capability and the task of a database system to predict the future movement of

a moving object. Hence, it is reasonable to emphasize the needed separation between moving

object models in databases and domain specific prediction models. Existing models inseparably

interlace both aspects with each other, are only able to deal with a specific problem area or object

motion, and lack the ability of a general treatment of predicted movement.

The third problem is the lack of an integrated, seamless, and unified model that can simul-

taneously represent the historical and the future movements of a moving object in databases.

At a time instant t, a moving object does not only have a history of its movement up to its state

at t but it can also have a future prediction starting at t. So far, existing models support either

historical movements or future movements only but not both together. But modeling the past and

future movements of an object requires both concepts. This means that special attention is needed

to accommodate both concepts in a single model so that they can be applied to the same object

without conflicting each other and so that spatiotemporal operations and predicates on moving

objects can be applied to the entire temporal domain.

At the implementation level, implementations of spatiotemporal data types are rare and are

generally done as part of research prototype database systems. A general problem is that many

useful concepts and their implementations in such research prototypes, which are tailor-made

for a certain problem area and utilize a specialized infrastructure, cannot be easily transferred

to commonly used commercial database management systems (CDBMS). Therefore, these

implementations and the prototypes offering them do not find an adequate appreciation due to

their incompatibility with commonly used CDBMS. This effectively limits the accessibility and

usability of such implementations. To address this problem, an implementation of spatiotemporal

data types and operations must be database-independent and at the same time can be integrated

into any extensible DBMS through its extensibility mechanism.

1.3 Goals and Solutions

The goal of this research is to solve these currently existing problems by introducing

a new concept called Moving Balloon Algebra (MBA) to support both historical and future

movements of moving objects in a homogeneous and integrated model. This algebra or type

system incorporates a complete framework of abstract data types for historical and predictive

moving objects and provides a precise and conceptually clean foundation for their representation

and querying. In such a framework, the definitions of the structure of entities (for example,

the values of spatial data types) and of the semantics of operations can be given at different

levels of abstraction. For example, the trajectory of a moving point can be described either as a

smooth curve or as a polyline (a set of singly connected line segments) in the two-dimensional

space. In the first case, a curve is defined as a (special) infinite set of points in the plane without

fixing any finite representation. In the second case, a polyline determines a specific finite

representation, which finitely approximates the infinite point set making up the trajectory of

the moving point. We distinguish these two kinds of design and call them abstract and discrete

modeling respectively (for a more detailed discussion, see [19]). Basically, the advantage of the

abstract level is that it focuses on the essence of the problem, is conceptually clean and simple,

and is not impeded by computer-specific constraints resulting from the finiteness of computer

systems. The advantage of the discrete level is that its finite representations are defined by taking

into account the limitation of computer systems while maintaining the conceptual constraints set

forth by the abstract model. In general, several finite representations are possible for the same

abstract concept. For example, curves could also be represented as splines at the discrete level.

Another design level also exists called implementation level. In this level of modeling, specific

data structures and algorithms can be defined based on the finite representation set forth by the

discrete model. For example, data structures such as arrays or lists of line segments may be

used to implement the polyline representation of curves, and algorithms such as the plane sweep

algorithm or other segment intersection algorithms can be used to implement operations between

polylines. The design of the Moving Balloon Algebra described in this research is presented at

each of these three abstraction levels.

The Moving Balloon Algebra is based on the metaphor of a balloon to model our knowledge

of a moving object at a specific time instant: the string and the body of a balloon object represent

the known past movement and the predicted future movement of a moving object respectively.

For example, the movement of the eye of a hurricane is usually illustrated using a shape that

resembles a balloon. The past movement of the eye (a moving point) can be seen over time as a

movement along a line or a curve which resembles the string of a balloon. The position of the

eye at a time instant in the future can be anywhere within an area of uncertainty. Thus, the future

prediction of the eye can be seen as a moving region of uncertainty that resembles the body of

a balloon. Finally, the connection point between the string and the body of a balloon object at a

time t represents the state of the moving object at t. Hence, a balloon object is static in the sense

that it represents the knowledge about the past and the predicted movements of a moving object

at a time t. As the object moves, a new present state is recorded as part of the string, and the body

of the balloon object is updated with a new prediction. This dynamic is represented by a moving

balloon object. The corresponding abstract data types may be used as attribute types in relational,

object-relational, or object-oriented DBMS.

With this model, we solve the first two conceptual problems by providing a precise and for-

mal definition of moving (balloon) objects along with appropriate specifications of the properties

of their movements. We solve the third conceptual problem by seamlessly modeling the dynamic

of both the past (as facts) and the future (as predictions) through balloon objects. Beside already

available concepts that we intend to preserve and refine (like the approaches in [22, 32]), we in-

troduce new functionality such as the ability to analyze the accuracy of predictions over time. We

also offer an interface for cooperating with specific (for example, probabilistic, fuzzy) prediction

models for moving objects. Finally, we address the implementation problem by designing an im-

plementation model of the Moving Balloon Algebra that can be used to implement the algebra as

a type system library which can be integrated into an extensible DBMS. In this research, we are

mainly interested in the fundamental models, semantics, and their implementations in databases.

Other optimization and filtering concepts such as spatiotemporal indexing techniques are beyond

the scope of this research.

CHAPTER 2
RELATED WORK

Besides the concept of time, spatial objects form the conceptual foundation of moving

objects. We summarize the state of the art of spatial data modeling and sketch the relevant

concepts of spatial data types and topological predicates in Section 2.1. Then, in Section 2.2, we

delineate the state of the art of spatiotemporal data modeling and present the important concepts

of spatiotemporal data types and spatiotemporal predicates. In Section 2.3, we discuss current

implementation aspects of spatial and spatiotemporal data types. Finally, in Section 2.4, we

explore the current integration of such implementation in database systems.

2.1 Spatial Data Modeling

Research on spatial data modeling has received a lot of interest in the past fifteen years due

to the fact that it is the foundation for many research directions in spatial and spatiotemporal

databases as well as GIS. We address the different types of spatial objects and the topological

relationships between these objects.

2.1.1 Spatial Objects

The development of data models for spatial data can be subdivided into two generations of

models. The first generation offers simple object structures like single points, continuous lines,

and simple regions (Figure 2-1A-C) [12, 29, 48]. Since these simple geometric structures are

unable to represent the variety and complexity of geographic phenomena, the second generation

of data models provides more expressive representations of spatial objects that allow support for

multi-component objects as well as objects with holes [5, 44, 59, 62]. They are represented by

complex spatial data types for complex points, complex lines, and complex regions (Figure 2-1D-

F). Their formal definition can, for example, be found in [59]. Informally, a complex point object

is a finite set of single points. A complex line is defined as an infinite point set that structurally

consists of a finite set of blocks. Each block contains a finite number of simple lines. A complex

region is defined as an infinite point set that structurally consists of a finite set of faces. Each face

has an outer simple region and contains a finite set of disjoint simple regions called holes.

A B C D E F

Figure 2-1. Examples of spatial objects. A) A simple point object. B) A simple line object. C) A
simple region object. D) A complex point object. E) A complex line object. F) A
complex region object.

The object definition of each spatial data type distinguishes three components: the interior,

boundary, and exterior. For example, the boundary of a line object consists of its endpoints. Its

interior consists of the line part that connects the endpoints. The exterior of a line object consists

of all points of the plane that are not part of the interior or boundary. The boundary of a region

object is the line object defining its border. The interior of a region object consists of all points

enclosed by the border. The exterior contains all points that are neither part of the boundary nor

the interior. These concepts, which are formally defined in [59], are leveraged for the modeling of

topological relationships discussed in the next subsection as well as the interactions of predicted

moving objects described in Section 3.4.2. We use this complex spatial data model as the basis

for our Moving Balloon Algebra due to its expressiveness of representation and its closure

property under spatial operations.

2.1.2 Topological Relationships

Topological relationships like overlap, disjoint, or inside refer to qualitative descriptions of

the relative positions of two spatial objects and are preserved under affine transformations such

as translation, rotation, and scaling. Quantitative measures such as distance or size measurements

are excluded in favor of modeling qualitative notions such as connectivity, adjacency, disjointed-

ness, inclusion, and exclusion. Some of the well known topological relationships models are the

RCC model [56] based on spatial logic and the 9-intersection model [13, 15] based on point set

topology. The 9-intersection model defines topological relationships based on the nine possible

intersections of the boundary (3A), the interior (A'), and the exterior (A ) of a spatial object A

with the corresponding components of another object B. Each intersection is tested with regard to

the topologically invariant criteria of non-emptiness. The topological relationship between two

spatial objects A and B can be expressed by evaluating the 3 x 3-matrix in Figure 2-2A.

Topological relationships have been first investigated for simple spatial objects (Figure 2-

2B), that is, for two simple regions (disjoint, meet, overlap, equal, inside, contains, covers,

coveredBy) [9, 14], for two simple lines [7, 15], and for a simple line and a simple region [16].

Topological predicates involving simple points are trivial. The two works in [8] and [17] are the

first but restricted attempts to a definition of topological relationships on complex spatial objects.

In [8], the TRCR (Topological Relationships for Composite Regions) model only allows sets of

disjoint, simple regions without holes. Topological relationships between these composite regions

are defined in an ad hoc manner and are not systematically derived from the underlying model.

The work in [17] only considers topological relationships of simple regions with holes; multi-part

regions are not permitted. A main problem of this approach is its dependence on the number of

holes of the operand objects.

The work in [59], with two precursors in [2] and [58], gives a thorough, systematic, and

complete specification of topological relationships for all combinations of complex spatial data

types. Details about the determination process and prototypical drawings of spatial scenarios

visualizing all topological relationships can be found in these publications. This approach, which

is also based on the 9-intersection model, is the basis of our topological predicate implementation

in Section 5.2. Figure 2-2B shows the increase of topological predicates for complex objects

AOnB # 0 AOnaBEB0 A nB -0\ point line region
A n BA 0 DAnOeB#0 A n B 0 point 2/5 3/14 3/7
NB ANB A NB line 3/14 33/82 19/43
A- nB" f A- naB / A- nB- f
region 3/7 19/43 8/33

A B

Figure 2-2. The 9-intersection model and topological predicates. A) The 9-intersection matrix.
B) The numbers of topological predicates between two simple/complex spatial
objects.

compared to simple objects and underpins the need for sophisticated and efficient predicate

execution techniques.

2.2 Spatiotemporal Data Modeling

Within the past decade, a number of spatiotemporal data models have been proposed [49].

Among them, a few moving object models have been recently designed that are of significant

interest for many new emerging applications [34]. Moving object models can be distinguished

with respect to the type of movement they support. In Section 2.2.1, we first discuss an existing

moving object model and a corresponding spatiotemporal predicate (STP) model that support

the past evolution of moving objects. Then, in Section 2.2.2, we take a look at a number of data

models as well as STP models that support specific types of near future developments of moving

objects.

2.2.1 Historical Movements of Moving Objects

An approach to represent the past movement of moving objects is proposed in [32, 61]. The

past development is a historical fact that is modeled as a function from time to space [18, 25].

For an arbitrary non-temporal data type a, its corresponding temporal data type is provided by a

type constructor t(a) which is a function type that maps from the temporal domain time to a, that

is, t(a) = time -- a. By applying the type constructor t to the spatial data types point, line, and

region, we obtain the corresponding spatiotemporal data types named point for moving points,

line for moving lines, and region for moving regions [19]:

point = t(point) = time point

line = t(line) = time line

region = (region) = time region
A moving object, in general, yields a complex (that is, possibly multi-component) spatial

object (Section 2.1.1) at each time instant at which it is defined; a single-component spatial

object as a function value at a time instant is thus a special case. Figures 2-3A and 2-3B show

single-component moving point and moving region objects respectively while Figures 2-3C and

x x x x
A B C D

Figure 2-3. Examples of moving objects. A) A single-component moving point object. B) A
single-component moving region object. C) A multi-component moving point object.
D) A multi-component moving region object.

2-3D illustrate corresponding multi-component objects. An application example for Figure 2-3D

is a brush fire that originates at different locations at different times.

The type constructor z is defined in a very general way and allows any kind of temporal

function. For instance, we could define a function that maps each time instant represented by

a rational number to the point (1, 1) and each time instant represented by an irrational number

to the point (2,2). However, this does not describe movement, and hence the question is which

spatiotemporal functions represent valid movements. For example, the unrestricted definition of t

also allows a moving point to move continuously (Figures 2-3A, 2-3B), disappear for periods of

time (Figure 2-4A, 2-4E), appear instantly (Figures 2-4B, 2-4F), have spatial outliers (Figure 2-

4D), or have instantaneous jumps (Figures 2-4C, 2-4G). A definition is missing that precisely

states which spatiotemporal functions represent allowed movements and which functions do

not conform to our intuitive understanding of movement. Furthermore, this approach does not

support future predictions of moving objects. In our model, we employ a similar approach of

using a type constructor to construct spatiotemporal types for representing historical movements

of moving objects. However, we take the extra step of precisely specifying the properties of

object movements as well as describing how an object moves and evolves in the past and how its

future predicted movement and extension can be represented.

Based on the moving objects model just described, the STP model presented in [22]

provides spatiotemporal predicates for past movements and is able to characterize the temporal

time 1

time 1

time i

development and change of the topological relationship between spatial objects evolving over

time. A spatiotemporal predicate stp(a, b) between two moving objects a of type r(a) and b

of type T(3) is defined as an alternating sequence of topological predicates that only hold for a

period of time (1' ri ,d predicates) and that can hold for an instant of time (instant predicates).

For example, consider a predicate Cross that checks whether a moving point (for example, an

airplane) crosses a moving region (for example, a hurricane). Such a predicate can be defined as

Cross := Disjoint> meet >Inside> meet >Disjoint where Disjoint and Inside are period predicates,

meet is an instant predicate, and the symbol > is a temporal composition operator and signifies

a development or a temporal change of relationship. Figure 2-4H depicts the spatiotemporal

predicate Cross. In other words, a spatiotemporal predicate between two moving objects is a

temporal composition of period and instant predicates between the two objects. The STP model

is only able to capture the temporal development of topological relationships between historical

moving objects. But it is unable to represent the uncertainty of the topological relationships

between predicted moving objects as well as the combination of past and future developments of

topological relationships.

2.2.2 Predictive Movements of Moving Objects

With regard to the future movement of moving objects, current models are restricted to

specific types of motion. The MOST model [60], which is based on the concept of motion vector,

is able to represent near future developments of moving objects through the assumption on the

objects' inertia that the current motion direction does not change in the near future. Although this

model is able to represent the near future movement of a moving object, the predicted movement

is limited to a single motion concept that cannot be modified. The aspect of uncertainty such

as the probability of occurrence is not part of the model. Other models are able to capture the

uncertainty aspect of future movements through the use of a trajectory or motion plan with a

constant [26] or variable uncertainty threshold [43]. The approach in [38] makes use of a concept

called "space-time prism" to model the uncertainty of movement between known states of an

object's trajectory with certain assumptions on the object's velocity. Another approach presented

A B C D
time time time time

Disjoint
-- ---meet
Inside
---------- Y -- Y Y Y

X X X X

E F G H

Figure 2-4. Examples of spatiotemporal functions for moving points. A) Partially disappear. B)
Instantly appear. C) Have instantaneous jumps. D) Have spatial outliers. Examples of
spatiotemporal functions for moving regions. E) Partially disappear. F) Instantly
appear. G) Have instantaneous jumps. H) An example of a spatiotemporal predicate.

in [36] models and predicts future movements of moving objects in a constrained network

environment. It is important to note that an aspect which all of these models have in common is

that either they try to predict the future movement by assuming a specific prediction technique

or they are designed to handle a specific type of motion only. As emphasized in the Introduction,

the goal of our effort here is not about how to predict a specific type of movement but about how

to provide general purpose data model support for movements (including future predictions) in

databases.

With regard to the modeling of spatiotemporal predicates for future predictions, the model

presented in [26] captures the uncertainty aspect of the future topological relationship between a

moving point and a static region. The future movement of a moving point is defined by a future

motion plan or trajectory and a threshold value signifying an acceptable deviation of the actual

movement from the trajectory. The application of a threshold around a future trajectory creates a

trajectory volume which represents the set of all possible future motion curves. A spatiotemporal

predicate (for example, sometimes inside) is then defined based on the topological relationship

time 4

time e

time A

time 4

(for example, inside) between the spatial projection of such a trajectory volume and a static

region. Depending on this relationship, the uncertainty of a future spatiotemporal predicate

can be captured and represented by using any combination of the prefixes sometimes, al a .

possibly, and definitely. While this model is able to model future spatiotemporal predicates to a

certain extent, it is limited to only those relationships between a moving point and a static region.

In contrast, our spatiotemporal predicate model is a general model which supports both the past

and future relationships between any combination of spatiotemporal data types.

2.3 Implementation Aspects of Spatial and Spatiotemporal Data Models

As far as spatial data model is concerned, so far only a few models have been developed

for complex spatial objects. The works by [6, 30, 31, 59, 62] are the only formal approaches;

they all share the same, main structural features. The OpenGIS Consortium (OGC) has proposed

similar geometric structures called simple features in its OGC Abstract Specification [45]

and in its Geography Markup Language (GML) [46], which is an XML encoding for the

transport and storage of geographic information. These geometric structures are described

informally and are called MultiPoint, MultiLineString, and MultiPolygon. Another similar but

also informally described spatial data type specification is provided by ESRI's Spatial Database

Engine (ArcSDE) [24]. Further, database vendors have added spatial extension packages that

include spatial data types through extensibility mechanisms to their database systems. Examples

are the Informix Geodetic DataBlade [35], the Oracle Spatial Cartridge [47], and DB2's Spatial

Extender [11]. These implementations offer limited sets of named topological predicates for

simple and complex spatial objects. But their definitions are unclear and their underlying

algorithms unpublished. The open source JTS Topology Suite [37] conforms to the simple

features specification [45] of the Open GIS Consortium and implements the aforementioned eight

topological predicates for complex spatial objects through topology graphs. A topology graph

stores topology explicitly and contains labeled nodes and edges corresponding to the endpoints

and segments of a spatial object's geometry. For each node and edge of a spatial object, one

determines whether it is located in the interior, in the exterior, or on the boundary of another

spatial object. Computing the topology graphs and deriving the 9-intersection matrix from them

require quadratic time and quadratic space in terms of the nodes and edges of the two operand

objects. This is rather inefficient and thus is not suitable for supporting the implementation of

high-level predicates such as spatiotemporal predicates. In Section 5.2, we prodive our solution

for an efficient implementation of topological predicates on complex spatial objects which

requires linearithmic (loglinear) time and linear space.

Unlike those of spatial data models, implementations of spatiotemporal data models are

very rare and, in most cases, only exist in the form of research prototypes. An example of

such an implementation can be found as part of the SECONDO prototype system [4]. The

spatiotemporal module of SECONDO is developed based on the approach in [32, 61, 18, 25]

which only supports the past movement of moving objects. However, our main interest here is on

the modeling and implementation of a moving object algebra which can support both the past and

predicted movements of moving objects.

2.4 Database Integration

Beside the conceptual modeling and implementation of spatial and spatiotemporal algebra,

an important yet often neglected aspect of algebra development is the ability to integrate such

algebra into a variety of extensiblee) DBMSs. Most of the existing implementations of spatial and

spatiotemporal data models are either database-incompatible (for example, JTS Topology Suite)

or database-specific (for example, Informix Geodetic DataBlade, Oracle Spatial Cartridge, DB2's

Spatial Extender, SECONDO spatiotemporal module). These database-specific implementations

are inflexible in the sense that users' data must be stored in the corresponding DBMS. This is

generally a proprietary issue on the part of database vendors or, in the case of SECONDO, a

design decision. It does not necessarily suggest any required storage dependency on the part of

the algebra. In fact, an implementation of an algebra can and should be storage-independent.

An attempt to address this problem and to make more flexible use of a spatial algebra can be

seen in the case of the ESRI's Spatial Database Engine which provides support for data storage

in a number of DBMSs including Oracle, DB2, and SQL Server. However, their proprietary

database integration mechanism is not published. As part of this research, we aim at providing an

implementation of the Moving Balloon Algebra which is storage-independent and describing a

mechanism for integrating the algebra into any extensible DBMS (Section 5.5).

CHAPTER 3
ABSTRACT MODEL OF THE MOVING BALLOON ALGEBRA

In this chapter, we describe the abstract model which is the highest level of abstraction of

the Moving Balloon Algebra' Here, we specifically focus on the essence of the conceptual

modeling problem without impeded by any representation constraint. We present the abstract

model by first describing how we can model and specify corresponding data types for historical

and predicted movements taking into account the continuity property of movement and the

inherent uncertainty of predicted movement. These concepts are then used to define high-

level data types for our algebra. This includes the introduction of balloon objects to represent

snapshots of the knowledge of movement and the concept of a moving balloon object to model

the continuous stream of these snapshots over time. Next, we present operations on the Moving

Balloon Algebra followed by our spatiotemporal predicate model. Finally, we describe how our

algebra can be used in different types of spatiotemporal queries.

3.1 Modeling Historical and Predicted Movements

In this section, we specify the characteristic features of spatial object movement and deal

with the problem of handling past and future movements in a database context. In Section 3.1.1,

we describe how spatial objects can move by identifying some fundamental properties of

movement. Especially, we define what continuous movement of a spatial object means. The

knowledge gained from this section enables us in Section 3.1.2 to directly derive (abstract) data

types for historical movements of moving objects. Modeling future movement means dealing

with the future and is inherently afflicted with the feature of uncertainty. In Section 3.1.3, we

present our view of this problem in a database context and present (abstract) data types for

predicted movements as a solution. All these concepts will be used in Section 3.2 to model

1 The research work in this chapter has been included in one of our technical reports [53] in
preparation for a journal submission.

balloon objects and eventually moving balloon objects for representing the dynamic development

of moving objects that potentially extend from the past into the future.

3.1.1 Continuity of Movement

Fundamental properties of movement and evolution are continuous location change,

continuous growing, and continuous shrinking of moving objects as well as the appearing,

disappearing, splitting, and merging of moving object components. Modeling these aspects

requires a concept of time and space. Since we are interested in continuously changing objects,

we define our data type time as isomorphic to the set R of real numbers. A special temporal

variable now keeps the permanently changing present time. In regard to space, we consider the

two-dimensional Euclidean space R2. Thus, we concern about moving objects describing the

development of two-dimensional spatial objects over time. We further take into account that

spatial data types also include the empty object (I) which represents the nonexistence of a spatial

object [59]. We can, for example, then express that the intersection of two disjoint region objects

is the empty region object.

To model the change of objects over time, we adopt our own modeling approach from

[19, 22, 32] and define a temporally changing entity as a function over time. That is, we model

values of a nontemporal type a that change over time as a function of type

t(a) = time -+ a

t is a type constructor that constructs the temporal counterpart for a given nontemporal

data type. Type r(a) then denotes all functions from time to a. We call an element of t(a) a

temporal function or a temporal object. In case that a = real holds, z(real) denotes a data type

for temporal real numbers. These can, for example, be used to represent temperature curves.

Similarly, we obtain data types for temporal Booleans, temporal integers, and temporal strings.

If ac E {point, line, region}, we obtain spatiotemporal data types for moving points, moving lines,

and moving regions. That is, we denote (spatial) change over time as movement. We also name all

mentioned types mbool, mint, string, real, point, line, and region respectively.

Temporal functions should not be arbitrary since they do not necessarily adequately model

change or movement. A first observation is that temporal objects can disappear or (re)appear.

Hence, temporal functions are, in principle, partial functions. However, we prefer that they

yield a value at each time. Therefore, we supplement them to total functions in the following

way. We say that f cE t() is defined at time t if f(t) 4 I, and we define the domain of f as

dom(f) = {t E time I f(t) 4 1}. Further, if f is undefined at time t, we set f(t) := I. This allows

us to comfortably model situations where temporal objects (re)appear (f(t) IL) or disappear

(f(t) = I).

A second observation is that temporal objects can show a continuous evolution. For moving

spatial objects, continuity is even the essential feature. Continuous evolution can, in general,

be described by a continuous function for which, intuitively, small changes in the input result

in small changes in the output. This leads us to the question how the change between two non-

spatial objects, that is, between two Boolean values, two integer numbers, and two real numbers,

can be specified, and, much more interestingly, how the change between two spatial objects, that

is, between two points, two lines, and two regions, can be characterized in the Euclidean space.

Each characterization should also capture discrete changes. For this purpose, Definition 3.1

introduces a dissimilarity measure 4 for each data type.

Definition 3.1 : Let dist(p, q) denote the Euclidean distance between two single points

p and q, and let dist(p, Q) be the distance from p to the closest point in a point object Q. Let

length(L) return the length of a line object L, and let area(R) return the area of a region object R.

For any type ca E {bool, int, string, real, point, line, region}, a dissimilarity measure 4 : ax o -+ R

is defined as follows:

0 ifx=y
(i) Vx,y a e {bool,int,string},x 7 I,y y 1: (x,y) = ifx
1 otherwise

(ii) Vx,y E o= real,x I ,y I : P (x,y) = x-yl
(iii) VPI,P2 E ot= point,Pi I,P2 : I (Pi,P2) = C dist(p,P2)+
pCP \P2
Sdist(pPI)
pCP2\P1
(iv) VL1,L2 E a = line,L1 I ,L2 I (L1, 2) = length(Li\L2)+

length(L2\L1)

(v) VR1,R2 a = region,R1 I,R2 I : )(RI,R2) = area(Ri\R2)+
area(R2\RI)

Next, by leveraging this notion of dissimilarity, we specify the concept of a limit of a

temporal function f at a time instant t. A one-sided or two-sided limit can only be defined if a

one-sided or two-sided time interval belongs to dom(f). Therefore, in Definition 3.2, we specify

two predicates dfb and dft that check whether f is defined at t from the bottom and from the top

respectively.

Definition 3.2 : Let R+ = {r R I r > 0}, ao E {bool, int, string, real,point, line, region},

f cE r() = time -+ a, and t E time.
(i) dfb(f,t) := 3 ER+VO <8 (ii) dft(f,t) := 3 ER+VO<8
Definition 3.3 now determines the limit of a temporal function f at a time instant t.

Definition 3.3 : Let oa E {bool, int, string, real,point, line, region}, f cE r() = time -+ a, and

t E time.

(i) We say the limit from the bottom off at t is L, and write lim o f(t ) = L
if, and only if, db(f,t) AVy R+ 3 cR+ VO < < : (f(t 8),L) < y

(ii) We say the limit from the top off at t is L, and write lim~ f(t + 6) = L

if, and only if, dft(f,t) AVy R+ 3e eR+ VO < < : V(f(t+ 8),L)
(iii) We say the limit off at t is L, and write lim o f(t 8) = L

if, and only if, lim 0 f(t 8) = limo0 f(t + 8) = L

Note that f does not have to be defined at t and that the limit specifications require the

existence of a one-sided or two-sided time interval for which f is defined. Based on the concept

of limit, we are now able to approach a definition of continuity for a temporal object at a

time instant. For temporal objects based on a non-spatial data type, the notion of continuity

is quite standard. These objects have the feature that, at each time instant of their domain,

we obtain a single value (like a single string value or a single integer value) that evolves over

time. For temporal objects based on the three (discrete) types bool, int, and string, we can

immediately conclude that there are no continuous changes possible since a smooth transition

is impossible. Either their values are stepwise constant for some time, or a discontinuity occurs

whenever a value changes. For real numbers, we apply the classical definition of real-valued

continuous functions. If a temporal object f based on any non-spatial data type has a jump

discontinuity at a time instant t, we assume that the function value f(t) = lim ,o f(t + ). Thus,

f(t) / lim-0 f(t 8). Figure 3-2A gives an example of this situation. The dashed line at time

t represents an instantaneous jump and connects the movement before and after the jump. The

hollow circle indicates that this is not the function value at time t; it is given by the full circle.

The situation is different for temporal objects based on spatial data types, that is, for moving

(spatial) objects. At each time instant of its domain, a moving object may include multiple simple

spatial values. A point object may consist of several single points, a line object may include

several blocks, and a region object may incorporate several faces (Section 2.1.1). This can,

for example, be illustrated with Figure 2-3C in which any plane parallel to the (x,y)-plane and

between the two dashed lines intersects the moving point object in a set of one, two, or three

points; each set forms a point object. Similarly, in Figure 2-3D, a plane parallel to the (x, y)-plane

between the two upper dashed lines intersects the moving region object in a set of two faces

making up a region object. The multiple simple values of a moving object at a time instant may

move simultaneously over time, stay separate from each other, interact, coincide, merge, split,

partially stop to exist, or partially start to exist. The goal of the following definitions is to allow

these different behaviors.

In Definition 3.4, we specify the important concept of continuity at a time instant for a

moving object. It rests on the limit concept of Definition 3.3.

Definition 3.4 : Let ao c {point, line, region}, f E t(a) = time oa, t E time, and f(t) # 1.

Then
(i) f is 0-continuous from the bottom at t if, and only if, lim 0 f(t ) f(t)

(ii) f is 0-continuous from the top at t if, and only if, lim 0 f(t + o) f(t)

(iii) f is O-continuous at t if, and only if, lim f(t ) f(t

(iv) f is O-discontinuous at t if, and only if, f is not 4-continuous at t

time time time time

x x x x
A B C D

Figure 3-1. Examples of 4-continuous temporal functions. A) simultaneous movement. B) A
merging situation. C) A splitting situation. D) A combined merging and splitting
situation.

This definition implies, for example, that the moving objects in Figure 2-3A and Fig-

ure 2-3B are 4-continuous on the open intervals indicated by the dashed lines. They are 4-

discontinuous at the time interval endpoints since they are 4-continuous from the top at the lower

endpoints, and O-continuous from the bottom at the upper endpoints. We find similar situations

in Figure 3-1A (simultaneous movement), 3-1B (a merging situation), 3-1C (a splitting situa-

tion), and 3-1D (a combined merging and splitting situation) which also satisfy the property of

4-continuity in the open time intervals and 4-discontinuity in the time interval endpoints. Note

that in Figure 3-1D, the moving point object is 4-continuous at the time instant when its two

components intersect.

time time time
- ---- --- ^ .

S. t-t Y

real x x
A B C

Figure 3-2. Examples of )-discontinuous temporal functions. A) An instantaneous jump in an
mreal object. B), C) Two constellations with time instants at which the function is
event-)-discontinuous.

The discontinuities at the time interval endpoints are allowed and are examples of topolog-

ical events. They arise here since the moving objects are undefined outside these time intervals.

Another view is that components of a moving object start to exist at lower interval endpoints and

cease to exist at upper interval endpoints. Discontinuities can also be found in Figures 2-3C and

2-3D as well as in Figures 2-4A to G. Surprisingly, most discontinuities describe a meaningful

and thus correct temporal behavior of moving objects and have to be permitted. The reason is that

multiple simple spatial values of the same moving object may evolve independently. Intuitively,

a topological event arises in Figures 2-3C and 2-3D when the number of basic simple values

changes at a time instant. Figures 3-2B and 3-2C illustrate this in more detail. The moving object

in Figure 3-2B is )-continuous from the top but not from the bottom at ti (change from zero to

one component) and t2 (change from one to two components) as well as )-continuous from the

bottom but not from the top at t3 (change from two to one component) and t4 (change from one

to zero components). Figure 3-2C shows a case when a moving object is neither )-continuous

from the top nor from the bottom at a time instant t (change from two components before t to

three components at t to two components after t). Figures 2-4A and 2-4E represent moving

objects that are alternately continuous and discontinuous on disjoint time intervals, that is, they

are represented by partial functions. Figures 2-4B and 2-4F illustrate the case of an instantly

appearing moving object with isolated (time, spatial object) pairs. We allow this kind of dis-

continuity although it is debatable whether a moving object can exist at a time instant only. Our

main motivation to allow this situation consists in desired closure properties of spatiotemporal

operations. If, for example, two moving point objects intersect in a single point at a time t, we

would like to be able to represent the intersection result as a moving point object. Similarly, a

time-slice operation should be able to yield a region object at time t as a moving region object.

We also permit the cases in Figures 2-4C and 2-4G as valid moving objects. The reason is that

instantaneous jumps can also be interpreted as the termination of one component and the emer-

gence of another component at the same time instant. Figure 2-4G also shows two interesting

situations where the bottom region of an upper component is located in the top region of a lower

adjacent component. The function value at such a time instant is the larger region. Again, it is

doubtful whether such an instantaneous shrinking (or growing) can happen in spatial reality but

closure properties require the acceptance of such situations. A union of three moving region

objects, each representing one of the three components, leads to the moving region in Figure 2-

4G. We denote all aforementioned situations of permitted discontinuous topological events as

event-4-discontinuous.

A situation we do not allow is a spatial outlier at a time instant t as in Figure 2-4D. It is

given by a temporal function that does not represent a realistic movement since intuitively it

deviates from its general route and returns to it for a time instant only. Definition 3.5 provides the

full definition of event-'-discontinuity.

Definition 3.5 : Let a E {point, line, region}, f E r(a) = time -- a, t E time, and f(t) # I.

Further, let 1 = limo 0 f(t 8) if it exists, and let u = limo 0 f(t + 8) if it exists. Then f is

event-o-discontinuous at t if one of the following conditions holds:

(i) -dfb(f,t) A mdft(f,t)

(ii) -dJ(f ,t) A dft(f,t) # uC f(t)

(iii) dJb(f,t) A -dft(f,t) C f(t)

(iv) dJb(f,t) A dft(f,t) A u l = uUlC f(t)

(v) dfb(f,t) A dft(f,t) A u = 1 uc f(t)

Definition 3.5(i) means that f is isolated at t. Definitions 3.5(ii) and (iii) prevent a spatial

outlier at an end point t of a time interval of the domain of f. In both cases, the limit must be

part of the function value at t. If a spatial outlier occurs in the middle of a time interval, we have

to distinguish two cases. If the limits from the top and from the bottom are different, they must

be part of or equal to the function value at time t (Definition 3.5(iv)). If the limits are equal, the

common limit must be properly contained in f(t) since equality would mean 4-continuity at t in

contrast to our assumption (Definition 3.5(v)).

time

t, --- y
ti -- -- -2

x
Figure 3-3. Moving point object given by a temporal function with a local minimum and a local
maximum.

An interesting observation is that the property of monotonicity with respect to the time axis

does not play a role for the definition of movement. The reason is that complex (and not simple)

spatial objects are the basis of constructing moving objects. Figure 3-3 shows a temporal function

of a moving point object with a local minimum at t, and a local maximum at t2. The only valid

interpretation of this figure is that at t\ two new components arise at the local minimum. The left

of these two components merges and terminates with the outermost left component at t2.

Based on Definitions 3.4 and 3.5, we are now able in Definition 3.6 to specify the desired

properties of the type constructor T for representing valid moving objects. The notations [a, b] and

]a, b[ represent closed and open intervals respectively with endpoints a and b.

Definition 3.6 : Let a E {point, line, region} and r(a) = time -- a. We restrict T to contain

only temporal functions f E (a) that fulfill the following conditions:
(i) 3n E N: dom(f) = UI [t2i1, t2]

(ii) V 1 < i < n :tzi- < tzi

(iii) V 1 < i < n : t2i < t2i+1

(iv) V 1 < i < n :t2i- = t2i t2i2 < t2i-

(v) V 1 < i < n :t2i-1 = t2i t2i < t2i+l

(vi) V 1 < i < n Vt2i < t < t2i : f is 4-continuous at t

(vii) V 1 < i < n Vt e {t2i-, t2i} : f is event-)-discontinuous at t
Function f is then called a moving object, and r(a) for some a is called a spatiotemporal data

type.

Definition 3.6(i) implies that the lifespan of a moving object must be given by a finite

number of time intervals. Definition 3.6(ii) allows that the endpoints of a time interval coincide.

Definition 3.6(iii) requires that the domain of a moving object is a sequence of adjacent or

disjoint time intervals. If a time interval should be degenerate and represent a time instant,

Definitions 3.6(iv) and (v) ensure that the instant does neither coincide with the right endpoint

of its preceding time interval nor with the left endpoint of its next time interval. The reason is

that a moving object component has to be isolated if it only exists for a time instant. The last two

definitions require 4-continuity within time intervals and event-)-discontinuity at time interval

endpoints.

From now on, we will use the type constructor T and all the types and concepts derived from

it in the sense of Definition 3.6.

3.1.2 Modeling Historical Movements of Moving Objects

Acquiring knowledge of the historical locations and movement (trajectories, routes) of

moving objects is important for many spatiotemporal analysis tasks in order to learn from the

past. For example, hurricane research benefits from the observation of former hurricanes in order

to understand their structure and behavior and to learn from them for the future. By studying the

past, fire management is able to identify critical areas having a high probability of a fire outbreak

and to analyze the spread, merge, and split of fires over time.

Our modeling of historical movement assumes full knowledge about the past locations and

extent of moving objects in their time domains (that is, when they are defined). By using partial

temporal functions, lacking knowledge is expressed by time intervals when such functions are

undefined. Spatiotemporal data types for historical moving objects can be directly modeled

on the basis of the t constructor. We define a type constructor 0 with 0(c() C t(a) for oa E

{point, line, region} in Definition 3.7.

Definition 3.7 : Let oa E {point, line, region}.

0(a) = {f e T(a) IVt e dom(f) : t < now}

We use the spatiotemporal data types point = O(point), line = O(line), and region =

O(region) to describe historical movements of moving points, moving lines, and moving regions

respectively. Due to their precise specification, these types replace the spatiotemporal data types

point, mline, and region discussed in Section 2.2.1.

3.1.3 Modeling Future Predictions of Moving Objects

Predicting the locations and movement of moving objects in the near future is of great

importance for many spatiotemporal applications and usually called location management [34].

Examples are the anticipation of possible terrorist activities, homeland security in general to

protect territory from hazards, fire outbreak and hurricane prediction to determine evacuation

areas, and disaster management to initiate emergency preparedness and mitigation efforts.

In Section 3.1.3.1, we present our approach for handling future predictions of moving

objects. Taking into account the inherent uncertainty of the future, we explore how the future

positions and extent of a moving object can be represented. We present corresponding spatiotem-

poral data types in Section 3.1.3.2.

3.1.3.1 Handling the uncertainty of the future positions and extent of moving objects

Unlike movements in the past for which we assume to have precise knowledge, future

predictions involve the inherent feature of uncertainty with regard to the future locations and/or

extent of moving objects. From a database perspective, this feature raises two main issues. The

first issue is how to predict future spatial evolution and deals with the development of prediction

methods that can be employed for the forecast of future movement. The second issue is how to

handle the computed data as the result of the prediction and deals with generic data modeling and

representation techniques for predictions. A general property of prediction methods is that they

are domain and application specific. For example, meteorology, fire management, and homeland

security all require quite different prediction models with different input parameters. Hence, it

is impossible to implement the large number of employed and future prediction methods from

different disciplines in a database context. Any selection of a particular collection of prediction

methods would be highly restrictive and unfavorable due to their limited applicability. Further,

we aim at providing a general purpose model, tool, and solution. We therefore think that only the

second issue should be supported by a database system but not the first issue. This means that

application domains should develop prediction models outside of the database system. However,

we consider it imperative that a database system provides data modeling and persistence support

for representing, storing and querying predicted spatiotemporal data. Based on this view, we

focus on the data modeling aspect of the future predictions of moving objects and how this

type of data can be represented and queried in databases; we leave the task of prediction to the

application domains.

We consider a few examples in order to understand the uncertain nature of moving objects

in the future and the requirements of their representation. The central issue is the representation

time area of potential positions time I potential positions over time time road segment
now+12h ---- hE Z now+12h ----- ---- now+15m ---
now +8h -
now +4h -
now -------- now --------- now --------

X X X
x x x
A B C
time road segments over time time potential positions time positions over time
now+15m ------------- -- now+15m ------------ now+15m
now+l0m I-------------- now+lOm
now+5m ------------ now+5m
now now now -

X X X
D E F

Figure 3-4. Modeling potential future positions of spatiotemporal objects. A) For a hurricane's
eye at now+12 hours. B) Within the 12-hour period. C) For a vehicle at now+15
minutes. D) Within the 15-minute period. E) For a vehicle with a constant speed at
now+15 minutes. F) Within the 15-minute period.

of the potential future positions and/or the extent of a predicted moving object since both its

positions and its extent are afflicted with uncertainty. For example, the position of the eye of a

hurricane at 12 hours from now may possibly be anywhere within a predicted region (Figure

3-4A). That is, this region represents all potential future positions of the hurricane's eye at 12

hours from now. Likewise, if we are interested in the future positions for a certain period in the

future, for example, from the present time to 12 hours in the future, then the actual position can

be anywhere within a predicted volume if we adopt a three-dimensional interpretation (Figure

3-4B). This volume represents the geometric union of the predicted regions at all time instants

during the 12-hour period. It can also be interpreted as the development of a predicted region

over a period of time. Hence, it resembles a moving region which can be represented by using

our spatiotemporal data type (region).

Similarly, if we want to model the future position of a vehicle traveling in a road network,

we can only state that the position of the vehicle at 15 minutes from now will be somewhere

between mile marker 10 and 15. That is, the corresponding segment of the road represents the

potential positions of the vehicle at 15 minutes from now (Figure 3-4C). Similar statements can

be made for other time instants such as at 5 minutes and 10 minutes. By forming the geometric

union of the predicted road segments at all time instants during the 15-minute period, we obtain

a surface in the three-dimensional space (Figure 3-4D). This surface represents all potential

positions of the vehicle during the 15-minute period. The surface can also be regarded as the

development of a predicted road segment over a period of time. Hence, it has the same feature as

a moving line and can thus be represented by using our spatiotemporal data type <(line).

In case that the vehicle always maintains a constant speed, we can more precisely say that its

position at 15 minutes from now will be at a specific point (if the road does not split) or among a

set of points (if the road splits) (Figure 3-4E). In this case, the potential positions of the vehicle

over a period of time can be modeled as a moving point and can thus be represented by our

spatiotemporal data type (point) (Figure 3-4F).

So far, we have assumed that a point object moves. If we consider an object with extent

like a line object, its future prediction over time can be described by either a moving line or a

moving region depending on the environment and the nature of its movement. For example, if

we treat a train as a line object due to its possibly very long length, the future prediction of its

extent in a railroad network at a time instant in the future can be represented by a line object. For

a period of time, the development of the prediction can be represented by a moving line object

of type <(line). If we consider the movement of the boundary between fresh water of a river and

salt water of an ocean where the river flows into, we may use a region to represent the potential

whereabout of the boundary at a time instant in the future. This is because the movement of the

boundary in an ocean is unrestricted. For a period of time, the development of this region can be

represented by a moving region object of type (region).

The other type of object with extent other than a line object is a region object. For a region

object such as a storm, a future prediction of its extent at an instant in the future is always a

region. This is because it is counter-intuitive to predict the extent of a storm to be a line object or

a point object. Thus, over a period of time in the future, the temporal evolution of this region can

be represented by a moving region object of type z(region).

In our discussion of future spatiotemporal evolution, we have exclusively concentrated on

its geometric aspects. Like historical spatiotemporal evolution, it can also be modeled by moving

objects of type z(a). However, we have so far completely neglected the uncertainty afflicted with

it. That is, our concept so far does not specify the relative chance or degree of cilfidi ld c with

which a point will eventually represent the position or part of the extent of a predicted moving

object at a future time instant.

To do this, we require a concept of ctlfid, l c distribution (C) in Definition 3.8 such that

each point of a predicted spatial object as the function value of a predicted moving object at a

particular time instant is associated with a degree of confidence.

Definition 3.8 : The confidence distribution C(c) of a spatial object of type a representing

the set of future positions or extent of a moving object at a time instant is defined as C(c) =

a -+ 2(0,1] such that the degree of confidence of every point of the spatial object is between 0

(exclusively) and 1 (inclusively).

The above definition allows any type of distribution for C(c). For example, C(c) can be a

probability distribution over a describing the probability density (confidence level) of each point

in o. Moreover, C(c) can also be a fuzzy set indicating the level of membership for each point

in a. To apply this concept of confidence distribution to a moving object for representing future

predictions over time, we can use the concept of spatiotemporal mapping to temporally lift C

over time to define a moving clr ifidn, ,c distribution (MC) as shown in Definition 3.9.

Definition 3.9 : The moving confidence distribution MC(c) of a spatial object of type

a representing the set of future positions or extent of a moving object is defined as MC(o) =

time -+ C(o) = time -- (a -- 2(0,1).

Here, we do not restrict how MC(u) develops over time since the confidence distribution

information is domain specific, thus it may take any shape or form depending on a given

prediction model. To adequately describe the future prediction of a spatial object, we need

two objects. The first object is a moving object representing the temporal evolution of the set

of potential positions or extent of a spatial object in the future. The second object is a moving

confidence distribution expressing the uncertainty of the movement.

time

now+12h -------

now .. y
now --------------- y

x

Figure 3-5. Representing the future prediction of a hurricane's eye using a moving region with a
moving confidence distribution. The gradient indicates varied degree of confidence.

To illustrate the concepts presented, consider the example of a hurricane. We can model the

set of potential positions of the eye of this hurricane using an region object (Figure 3-4B). By

applying a moving confidence distribution on the region object, we obtain a new kind of object

which represents the set of potential future positions, each with a degree of confidence, of the

hurricane's eye (Figure 3-5). This means that the future movement trajectory of the hurricane's

eye is predicted to be a part of this object. We define the data types for this kind of objects in the

next section.

3.1.3.2 Data types for future predictions of moving objects

Provided that a combination of a moving object and a moving confidence distribution

together represents the future prediction of a moving object, we can use this concept to define our

future prediction data types. Thus, a future prediction data type can be constructed using the type

constructor (p defined below.

Definition 3.10 : Let a be a spatial data type and MC(c) be a moving confidence distribu-

tion on a. The future prediction data type (p(a) is defined as (p(o) = t(a) x MC(o) such that for

each f = (m,p) E cp(o), m is defined whenever p is defined.

Applying this definition to the spatial data types point, line, and region, we obtain three

future prediction data types fpoint,fline, and region.

point = p(point) = z(point) x MC(point)

line = p(line) = z(line) x MC(line)

region = p(region) = z(region) x MC(region)

Since each future data type is defined partially using our spatiotemporal data type z(a), its

validity also depends on the validity of the moving object represented by z(a). Examples of valid

and invalid future movements are depicted in Figure 3-6.

time time time time
potential routes potential regions

now y now now y nOW OW -y

x x x x
A B C D

Figure 3-6. Examples of valid future predictions. A) A continuousfpoint object. B) A continuous
region object. C) A discontinuous region object. An example of invalid future
predictions. D) A dimensionally collapsed object with multiple types.

It is important to understand that these future data types are defined only for future pre-

dictions of moving objects. They do not make any reference or assumption on the historical

spatiotemporal data types of the moving objects. For example, an object of typefregion can

be used to represent the future prediction of either a moving point, a moving line, or a moving

region. To model the nature of movement of a moving object properly, we require both the past

model and the future model. We will see in the next section that not all combinations of the past

and future data types represent valid movements.

3.2 Modeling Moving Balloon Objects

In this section, we describe the development of the high-level data types for the Moving

Balloon Algebra. We first define balloon data types in Section 3.2.1 to represent snapshots (each

consisting of a history of movement and possibly a prediction) of our knowledge about moving

objects at specific time instants of their movement. Based on this concept, the spatiotemporal de-

velopment of this knowledge which is a continuous stream of these snapshots is then represented

by our spatiotemporal balloon data types defined in Section 3.2.2.

3.2.1 Balloon Data types

Generally speaking, to build a balloon, we first need to prepare the string and the body of the

balloon. Once all the parts are ready, they can then be connected to form a balloon. We perform

this step by integrating both of our historical and predictive movement concepts to define balloon

data types.

In Section 3.1.2, we have defined our model for historical movements resulting in a type

constructor 0(a). Since we use this type constructor to construct data types for historical

movements, all time intervals specified as the domain of these data types must be intervals in the

past. The latest known state of a moving object is assumed to be the current state of the object.

This means that the current state of the object changes for every update of the object's position.

Each update can either signify a continual movement of the last interval of knowledge or a period

of no knowledge followed by a new instant of knowledge. In any case, the current state of the

object is always defined as the state of the object at the last instant of the historical movement.

We denote the current state of an object by tc. It is possible that tc may be earlier (older) than the

absolute present (the current clock time now), denoted by ta. This situation can happen when

we do not have information about the state of the object at the absolute present (Figure 3-7)

possibly due to delay in obtaining sensor data. On the other hand, it is impossible for tc to be

later (younger) than the absolute present. This would mean that the object has already moved in

the future which is impossible. Hence, it is required that tc < ta holds for all moving objects. We

now define a temporal domain time for the historical movement of a moving object as a half-

infinite time domain that starts from -o and ends at tc inclusively. Thus, time = (--, tc]. We

choose to end time at tc instead of ta because if tc < ta, we may want to predict the movement

between tc and ta which is outside of time. Otherwise, this prediction would be a part of

time which contradicts our definition above. The temporal domain time is applied to all data

types representing the past movement of a moving object. It will be used as part of a temporal

composition to compose the entire temporal domain of a balloon object. Figure 3-7 illustrates an

example of a historical temporal domain time for a moving object.

defined intervals
ta time

time

Figure 3-7. Example of a historical temporal domain time that starts from -o and ends at tc
inclusively.

For future predictions of moving objects, we have defined a type constructor qp(3) which

accepts as a parameter a spatial type 3 whose value represents the set of future positions or extent

of a moving object at a specific instant in the future. Here, we would like to restrict the temporal

domain of the future data types produced by yp such that these data types describe only the future

predictions of moving objects.

prediction intervals
to ta /
t ta time

time

Figure 3-8. Example of a future temporal domain time that starts exclusively from tc and
extends indefinitely towards +-.

We define a temporal domain time for future predictions of a moving object as a half-

infinite open interval of time which starts exclusively from tc and extends indefinitely towards

+o. Hence, time =(tc, +). We choose to begin time from tc because this would allow a

prediction to be made as close to the latest known state of the object as desired irrespective to the

value of the absolute present. This temporal domain is applicable to all objects of both t(3) and

MC(3). Figure 3-8 depicts an example of time for a moving object.

Having defined time and time to restrict the temporal domains of historical movements

and future predictions of moving objects, we are now ready to define our balloon data types.

We integrate the past (0) and the future prediction (p) type constructors to form a new type

constructor Q for balloon objects which is defined on the entire time domain. This time domain

is a result of a temporal composition of time and time. Since the spatial type as the argument

of 0 refers to a different spatial object than that of the spatial type as the argument of p, we

denote the former by a and the latter by P. Thus, we have (c(a, 3) = 0(a) x qp(3). That is, for a

balloon object b = (h, f), h E 0(a) represents the past movement of a spatial object of type a and

f E q(p3) represents the future prediction of b given that the set of its potential future positions

at a future time instant is described by a spatial object of type P. As indicated earlier, not all

combinations of a and 3 constitute valid movements. For example, it is not possible to usefpoint

to represent the future extent of a moving region. If this were to be possible, this means that, at a

future time instant, the region object would have evolved into a point object. This is not possible

since our definition of movement does not allow movements involving dimensional collapse into

a different type. Therefore, the combination for which a is the region type and 3 is the point type

has been proved to be an invalid combination. The general idea here is that the set of potential

future positions or extent of a moving object at a future time instant must be a spatial object of

dimension greater than or equal to the dimension of the object that is moving. This means that

an object can move or evolve such that at a future time instant, it fits in or equal to its prediction

without collapsing its dimension. Let dim be a function that returns the dimension of a spatial

type. It is required that dim(3) > dim(a) holds for all valid combinations of a and 3. We now

define our type constructor n for balloon data types in Definition 3.11.

Definition 3.11 : The type constructor Q((a, 3) for a balloon data type describing a

balloon object whose past movement and future prediction are based on the spatial type a and 3

respectively, is defined as Q((a, 3) = 0(a) x qp(3) such that all of the following conditions hold:

(i) dim(p) > dim(a)
(ii) 0(c() represents the past movement and is defined on time

(iii) yp(3) represents the future prediction and is defined on time

In other words, Q(ca, p) is a total function defined on the complete time domain such that it

evaluates 0(a) for an instant t in time or qp(3) for t in time. By specifying a and 3, we obtain

six data types for balloon objects:

balloonpp = Q(point, point) = point xfpoint

balloonpl = Q(point, line) = point xfline

balloon_pr = Q(point, region) = point xfregion

balloon_11 = Q(line, line) = hline xfline

balloonlr = Q2(line, region) = line xfregion

balloonrr = 2(region, region) = region xfregion

Each of these balloon data types consists of a data type for past movements (the strings) and

a data type for future predictions (the bodies). Now we can use these balloon data types to

model balloon objects. A balloon object has the advantage of being able to capture both the

past movement and the future prediction of a moving object with respect to a specific time

instant representing the current state of the object. Examples of a balloon-pp, a balloonpl, and a

balloon-pr object are shown in Figure 3-6A, 3-4D, and 3-6B respectively.

3.2.2 Spatiotemporal Balloon Data Types

Having defined balloon data types to represent snapshots (including past developments and

future predictions) of a moving object with respect to a specific time instant (that is, its current

instant), we now need to model the dynamic of this object as it moves over time. It is clear that as

a moving object advances its movement, we obtain a new snapshot consisting of a new (updated)

past movement and possibly a new prediction with respect to the new current instant. Thus, the

dynamic of a moving object can be represented by a development of a balloon object. We called

this development a moving balloon object which can be represented by a spatiotemporal balloon

data type expressed as a function from time to a balloon data type. Furthermore, the property of

this function must be defined such that for each time instant t in the domain, we have a balloon

object that represents a valid snapshot of the object's dynamic. This means that (1) the current

instant tc of the balloon object at t must be the same as t and (2) The past movement history

of a balloon object at t + x (x is a positive number) is equal to the past movement history of a

balloon object at t augmented by the movement between t to t + x. We call this phenomenon

historical accumulation due to the obvious accumulation of movement. We do not make any

assumption about the dynamic of predictions since, in general, they are generated discretely and

independently by a prediction model. Due to the fact that prediction models are domain specific,

the output of these models may experience abrupt changes depending on input parameters or

the design of the models themselves. Hence, we do not pose any constraint on the dynamic of

predictions. We define a type constructor mQ for spatiotemporal balloon data types in Definition

3.12.

Definition 3.12 : A spatiotemporal balloon data type mn((a, P) describing a moving balloon

object whose past movements and future predictions are based on the spatial type a and P

respectively, is defined as:

mnl(a, 3) = time --- Qc(, (3)

such that Vf E m.Q(a, p), the followings are true:
(i) Vt E dom(f) : f(t).tc = t

(ii) VtI, t2 c dom(f), ti < t2 : the historical movement of f(t2) is a

historical accumulation of that of f(tI).

By applying the six balloon data types defined in the previous section to this definition, we

obtain six different spatiotemporal balloon data types:

mballoon pp

mballoon pl

mballoon pr

mballoon_11

mballoonlr

mballoonrr

time

t4
t3

history at t3
t2
story tl
history at tl
L to

time balloon_-p

time balloon pl

time balloon pr

time balloon_11

time balloon lr

time balloon_rr

Figure 3-9. Example of a moving balloon object of type mballoon_pr.

An example of a moving balloon object of type mballoonpr is depicted in Figure 3-9.

When working with moving balloon objects, we must distinguish the different meanings of a

time instant. With respect to a moving balloon object, a time instant t refers to an instant of the

domain of f at which we obtain a balloon object. We distinguish this time domain as the dynamic

time domain. With respect to a balloon object at a specific instant t of the dynamic time domain,

a time instant ts refers to an instant of the domain of f(t) which is the union of time and time

at which we obtain the position or extent of the object or its prediction. We distinguish this time

domain as the snapshot time domain. Now we can use these spatiotemporal balloon data types

to model not only the development of moving objects in term of historical movements but also

the development of their future predictions which are available at different time instants during

the course of the movements. This allows one to perform useful operations on these predictions

in addition to existing operations on moving objects. We discuss these operations in the next

section.

3.3 Operations of the Moving Balloon Algebra

Due to the fact that our Moving Balloon Algebra consists of a structured hierarchy of

different sets of data types, we defined operations that are applicable to these data types starting

from the most fundamental set, the data types for historical movements, to the most complex set,

the spatiotemporal balloon data types.

3.3.1 Operations on Historical Movements

The design of operations for the Moving Balloon Algebra follows the three principles set

forth in [32] which are: (i) Design operations as generic as possible; (ii) Achieve closure and

consistency between operations; (iii) Capture interesting phenomena. Each of these principles

is achieved in the existing operations defined in the traditional moving object model [32] which

is a vague, unrestrcited version of our historical movement model described in Section 3.1.2.

Thus, these operations are also applicable to our historical movement data types. Let the type

periods represents the set of all defined intervals and defined instants of a movement. Assume

also that the type intime(c) = a x instant represents the state of the movement of a spatial

object of type a at a specific instant in time. The function min(ac, 3) returns the spatial type a

or 3 whichever has the smaller dimension. The operations are classified into five categories:

projection, interaction, temporally lifted, rate of change, and predicate operations. Projection

operations return projections of the movement into either the time domain or the space range.

Interaction operations include decompositions and instantiations of the movement. Temporally

lifted operations are those non-temporal operations that have been lifted over time into temporal

operations. Rate of change operations include the different types of differentiations associated

with movement such as velocity and turning rate. Finally, predicate operations are used to answer

questions about the spatiotemporal relationship (development) between movements. Table 3-1

lists these operations along with their signatures. The semantics for these operations as they are

applied to historical movement data types are presented in [32].

Binary predicates include predicates between homogeneous types as well as heterogeneous

types. Some of the basic spatiotemporal predicates are Disjoint, Meet, Overlap, Equal, Covers,

CoveredBy, Contains, Inside, etc. Some of the complex spatiotemporal predicates include Touch,

Snap, Release, Bypass, Excurse, Into, OutOf, Enter, Leave, Cross, Melt, Separate, Spring,

Graze, etc. The detail modeling of these spatiotemporal predicates is described in [22]. For all

other operations, they have been defined in [32]. So we will not go into detail about them here.

However, what still need to be done here are: (1) determine whether and how these operations

can be applied to our newly introduced data types including the future prediction data types, the

balloon data types, and the spatiotemporal balloon data types; and (2) discover new operations for

these new data types.

3.3.2 Operations on Future Predictions

As defined in Section 3.1.3, each of our future prediction data types is composed of a

movement data type representing the moving geometry of a prediction and a moving confidence

distribution representing the uncertainty of the prediction. Thus, we can define two decomposi-

tion operations, mgeo and mconf, to obtain the moving geometry and the moving confidence from

a prediction respectively. By decomposing a prediction in this way, we can define all geometry

related operations on a prediction to have the same semantic as if these operations are applied to

the moving geometry component of the prediction. Similarly, all confidence related operations

are applicable to the moving confidence component of the prediction. These operations are

shown in Table 3-1. We only describe the modified and newly introduced operations here. Let

the type infutime(a) = a x C(a) x instant represents the state of a prediction at an instant in

time. The decomposition of this type can be done using the three operations inst, val, and conf

to obtain each of the component. The operations atinstant, initial, andfinal returns an object of

the type infutime(a) when applied to a prediction of type (p(a). The pointconf and pointsetconf

Table 3-1. Operations on historical movements and future predictions of moving objects.
Projection Operations Application to Historical Movements Application to Future Predictions
deftime, lifespan 0(a) periods (p(a) periods
locations O(point) point p(point) point
trajectory O(point) line p(point) line
traversed O(line) region (p(line) region
traversed O(region) region p(region) region
routes O(line) line (p(line) line
Interaction Operations Application to Historical Movements Application to Future Predictions
mgeo N/A q((a) r(a)
mconf N/A q((a) MC(a)
atinstant 0(a) x instant intime(a) (p(a) x instant infutime(a)
inst intime(ac) instant infutime(a) instant
val intime(ac) a infutime((a) a
conf N/A infutime(ac) C(a)
pointconf N/A qp(a) x point x instant real
pointsetconf N/A (p(a) x p x instant real
atperiods 0(a) x periods 0(a) (p(a) x periods (p(a)
initial, final 0(a) intime(a) (p(a) infutime(a)
present 0(a) x instant bool (p(a) x instant bool
present 0(a) x periods bool p(a) x periods bool
at 0(a) x p 0(min(a, )) (p(a) x p T(min(a, p))
passes 0(a) x p bool (p(a) x p bool
when 0(a) x (a bool) 0(a) (p(a) x (a bool) (p(a)
Temporally Lifted Operations Application to Historical Movements Application to Future Predictions
intersection 0(a) x p -- 0(min(a, P)) (p(a) x p T(min(a, p))
intersection 0(a) x 0(p) 0(min(a, )) (p(a) x (p(p) T(min(a, P))
union, minus 0(a) x a -- 0(a) q((a) x a t(a)
union, minus 0(a) x 0(a) 0(a) qp(a) x qp(a) t(a)
crossings O(line) x line O(point) (p(line) x line t(point)
crossings O(line) x O(line) O(point) (p(line) x (p(line) t(point)
touchpoints O(region) x line O(point) p(region) x line t(point)
touchpoints region x O(line) O(point) region x (p(line) t(point)
touchpoints O(region) x O(line) O(point) p(region) x (p(line) t(point)
commonborder O(region) x region O(line) p(region) x region t(line)
common_border O(region) x O(region) O(line) p(region) x (p(region) t(line)
nocomponents 0(a) O(int) (p(a) t(int)
length O(line) O(real) (p(line) t(real)
area O(region) O(real) p(region) -- (real)
perimeter O(region) O(real) p(region) -- (real)
distance 0(a) x p O(real) (p(a) x p t(real)
distance 0(a) x 0(p) O(real) (p(a) x (p(p) t(real)
direction O(point) x point O(real) (p(point) x point t(real)
Rate of Change Application to Historical Movements Application to Future Predictions
derivative O(real) O(real) (p(real) t(real)
turn, velocity O(point) O(real) (p(point) t(real)
Predicates Application to Historical Movements Application to Future Predictions
isempty 0(a) bool (p(a) bool
0(a) x 0(p) bool (p(a) x (p(p) bool
interaction_potential N/A p(a) x qp(p) t(real)
interactionpossible N/A qp(a) x qp(p) bool
interactionpossible N/A qp(a) x 0(p) bool

operations are domain specific operations that must be provided by the prediction model. The

semantics of these operations are different depending on the type of prediction model used.

In the case of a probability-based prediction model, the pointconf operation is used

to retrieve the density value of a given point at a given time instant during the prediction

period. Note that this density value is not necessarily the probability value of occurrence.

These two values are the same only in the case of a discrete probability distribution which is

applicable to a prediction of type p(point). This is not the case for a continuous probability

distribution which is applicable to a prediction of type p(line) or p(region). We use the operation

pointsetconf to determine the probability of occurrence (percentage of chance) that a point

as part of the moving object will fall within the given point-set at a given time instant. For a

continuous probability distribution over a line based (or region based) prediction, the probability

of occurrence is the integration of a probability distribution function (pdf) over a point-set, which

corresponds to either an area (for (p(line)) or a volume (for cp(region)) under the curve or surface,

respectively, of the pdf. Thus, the probability value for a point in these continuous distributions

is always 0 since we cannot obtain an area or a volume by integrating over a point. Similarly,

the probability value for a line in a two dimensional continuous distribution over a region-based

prediction is also always 0 since we cannot obtain a volume by integrating over a line. Table 3-2

shows the value of the operation pointsetconf(p(o), Jp, instant) when applied to different type

combinations of cp(u) and p for a, p E {point, line, region}.

Table 3-2. Value of the operation pointsetconf(p(oa), 3, instant) for each combination of cp(a)
and p whether it is always 0, denoted by a value 0, or a meaningful value, denoted by a
value M.
qp(o)\3 point line region
p(point) M M M
p(line) 0 M M
p(region) 0 0 M

To further clarify the meaning of these operations, consider predictions at a time instant

as shown in Figure 3-10. The density value of the point p in Figure 3-10A is 0.25. Since this

prediction is of the type cp(point), we have a discrete probability distribution over a finite set

of points. Thus, the probability that a point of the moving object will fall on p is 25%. Notice

that here we can only talk about the probability of a point as part of the moving object because

the probability distribution only models the probability of occurrence of a single point event.

Figure 3-10B illustrates a continuous probability distribution over a line-based prediction. The

density value of the point p in this case is 0.25. However, the probability of occurrence at p is 0

because we cannot obtain an area by integrating the pdf at p. A meaningful probability value can

only be obtained by integrating the pdf over a segment of line which is a subset of the prediction.

In this example, we show that the probability that a point of the moving object will be on the line

segment (p, q) is 30% (the area under the pdf curve between p and q). Similarly, Figure 3-10C

shows a probability of 20% that a point event will fall within a region A which is a subset of a

region-based prediction. Here, the probability value is the volume defined by A under the pdf

surface.

Pi P, P
pdf curve pdf surface

0.50 ........ .. 30% .\......... 3I

0.25 ..... 0.25 .::: ...... 2.

x x x
A B C

Figure 3-10. Examples of predictions at a time instant. A) A point-based prediction with a
discrete probability distribution. B) A line-based prediction with a one-dimensional
continuous distribution. C) A region-based prediction with a two-dimensional
continuous distribution.

Unlike a probability-based prediction model, a fuzzy-based prediction model is designed

to model the potential inclusion, called membership value, of each point of a prediction as part

of a point-set event. Thus, the point_conf operation returns the membership value for a given

point signifying the level of confidence that this point will be part of the moving object. The

pointsetconf returns the average membership value of a given point-set. Hence this operation

indicates the average degree of confidence that each point of the given point-set will be part of

the moving object.

For temporally lifted operations, all such operations produce basic spatiotemporal objects

instead of future predictions. This is because the future prediction is decomposed into its moving

geometry component before applying these operations.

With respect to predicates, the binary predicate operation between predictions has the

same semantic as the binary predicate operation between their moving geometry components.

However, with the confidence distribution information, we can also determine the degree in

which the actual moving objects can potentially interact (non-disjoint) with each other during

the period of the predictions. This is given by the interactionpotential operation which returns

a moving real number indicating the potential of interaction between the actual objects over

the prediction period. The possibility of the actual object interaction depends on the interaction

between their predictions and this is given by the interaction possible operation. This topic is

further discussed in Section 3.4.2.

3.3.3 Operations on Balloon Objects

One of the main advantages of balloon data types is that we can apply most of the operations

to the entire object (the entire time domain). These operations include deftime, lifespan, location,

trajectory, traversed, present, passes, nocomponents, length, area, perimeter distance, and

direction. The semantic of these operations can be expressed as the union, for non-temporal

return type, or temporal composition, for temporal return type, between the results of applying

the operations to both historical and future components of the balloon objects. Although most of

the operations on balloon data types can be applied to the entire object, a few of the operations,

that is, atinstant, initial, andfinal), can only be applied by first decomposing a balloon object into

its two components and then applying the corresponding operation to the component whose time

domain is relevant. For example, the atinstant operation is applied to the historical movement

component if the given instant is within the time domain of this component. Otherwise, it is

applied to the future prediction. In both cases, a decomposition operation must be applied in

advance. We define two decomposition operations, pastproj and future proj, to obtain the

historical movement and future prediction component of a balloon object respectively. By using

these decomposition operations, we can apply all supported operations described in previous

sections for these components. With respect to spatiotemporal predicates between balloon

objects, we describe a model for these predicates in Section 3.4.1. The interactionpossible and

interactionpotential operations determine whether there is any interaction and the degree of

interaction respectively between two balloon objects for the duration of their defined periods.

Let y be a spatial data type. The operations that are applicable to balloon data types are listed in

Table 3-3.

3.3.4 Operations on Moving Balloon Objects

Since spatiotemporal balloon data types represent the dynamic developments of balloon

objects over time, most of the operations on moving balloon objects operate on this dynamic

time domain. The operation deftime when applied to a moving balloon object returns the periods

of the dynamic time domain for which the moving balloon object is defined. Therefore, this

is the period of the actual movement up to the current instant and which does not include any

future prediction period beyond this instant. For example, in Figure 3-9, the defined period of

the moving balloon object is the period between to and t4. This ensures that at any instant of this

defined period, we can obtain a balloon object. In other words, the actual movement made by the

object during this defined period can be obtained from the past component of the current (latest)

balloon object (using the atperiods operation on this past component given the defined period of

the moving balloon object). In fact, this actual movement of the object which is of type 0(a) is

used to determine the results to many operations such as locations, trajectory; traversed, present,

passes, nocomponents, length, perimeter area, distance, direction, turn, and velocity.

Assuming that we have a type indytime(o, 3) := (o(a, 3) x instant representing a state

of a moving balloon object at a time instant of the dynamic time domain, the current balloon

object can be obtained by using thefinal operation and then applying the val function to extract

the balloon object from the resulting final state. Similarly, the initial state is provided by the

Table 3-3. Operations on balloon objects and moving balloon objects.

Projection Operations
deftime, lifespan
locations
trajectory
traversed
traversed
traversed
Interaction Operations
pastproj
futureproj
atinstant
inst
val
atperiods
initial, final
present
present
passes
update
update
verify_prediction_at
accuracy_at
accuracy_at
Lifted Operations
nocomponents
length
area
perimeter
distance
distance
direction
Rate of Change
turn, velocity
Predicates
isempty

interactionpotential

interactionpossible

Application to Balloon Data Types
92(a, P) periods
2 (point, point) point
92(point, point) line
92(line,line) region
Q (line, region) region
2 (region,region) region
Application to Balloon Data Types
92(a,Up) N- (a)
2(a, ) N- p(p)
N/A
N/A
N/A
N/A
N/A
92(a, p) x instant bool
92(a, p) x periods bool
2(a, p) x bool
N/A
N/A
N/A
N/A
N/A
N/A
Application to Balloon Data Types
i2(a, P) T(int)
92(line, line) t(real)
92(region, region) -- (real)
92(region, region) -- (real)
9(a, ) x 7- T(real)
20(a,I1) x XO(a2,2) T(real)
92(point, point) x point t(real)
Application to Balloon Data Types
92(point, point) -- (real)
Application to Balloon Data Types
2(a, ) bool
0(ai,p31) x 92(a2,p2) bool

90(a,3i) x 9O(a2, 2) T(real)

0((i,p31) x 92(a2,p2) bool

Application to Spatiotemporal Balloon Data Types
mi(a, p) periods
mQn(point, point) point
mn2(point, point) line
mn2(line, line) region
mKn(line, region) region
mKn(region, region) region
Application to Spatiotemporal Balloon Data Types
N/A
N/A
m(n(a, p) x instant indytime(a, 3)
indytime(a, ) -( instant
indytime(a, ) 2(a, P)
mi(a, p) x periods mi(a, p)
mn(a,p) -- indytime(a, P)
m9O(a, p) x instant bool
m9n(a, p) x periods bool
m9n(a,p) x y- bool
mi(a, p) x 9(a, p) mi(a, 3)
miO(a, ) x intime(a) x (p(p) mi2(a, p)
m9O(a, p) x instant bool
m9(a, p) bool
m~i(a, p) x instant t(real)
m~i(a, p) x instant x instant real
Application to Spatiotemporal Balloon Data Types
m~i(a, ) r(int)
mn(a, ) T(real)
mKn(region, region) -- t(real)
mKn(region, region) -- t(real)
mnO(a,P) x T7-r(real)
m0(ai, PI) x m(0(a2, p2) -- (real)
mKn(point, point) x point t(real)
Application to Spatiotemporal Balloon Data Types
mn (point, point) -- (real)
Application to Spatiotemporal Balloon Data Types
m9(a, p) bool
m9n(al,31) x mn(a2, P2) bool
miO(a, 31) x m~i(a2, P2) x instant bool
mnO(ai, P) x mno(a2, p2) T(real)
mnO(al,p3) x mnO(a2, P2) x instant t(real)
mnO(al, 1) x mn(a2, P2) bool
miO(al, p) x miO(a2, P2) x instant bool

operation initial. A more general way to access any state of a moving balloon object within its

defined period is through the use of the operation atinstant. To get a moving balloon object for a

specific period of time, we can use the atperiods operation. Other than these access operations,

an important operation that allows the realization of the dynamic of a moving balloon object is

the update operation. As the object moves in time, its history of movement is extended by a new

position or extent, and a new future prediction may be acquired. The new data can be in the form

of a new balloon object or a combination of a new state and a new prediction. In any case, the

update operation is used to update the moving balloon object to reflect the new movement.

Besides the normal set of operations, the spatiotemporal balloon data types support a special

set of operations that allows one to perform certain analysis about the accuracy of predictions.

This is one of the main features of this data model which can be of particular importance to

domain experts in research and development of prediction models. The moving balloon data

model allows one to verify whether or not, the object's actual movement stays within a specific

prediction made in the past. This is achieved by using the verify-predictionat operation. Given

a moving balloon object and a specific time instant, this operation intersects the prediction made

at this instant, if such a prediction exists, with a segment of the actual movement of the object

within the period of the prediction. If the resulting intersection is the same as the segment of the

actual movement, this means that the object's movement had always been within the confinement

of the prediction, and thus we say that this prediction provides full coverage of the movement.

Otherwise, the prediction provides only partial coverage which can be thought of as an inaccurate

or a bad prediction. An example of a partial coverage prediction is the prediction made at t2

as shown in Figure 3-9. Other predictions made at ti, t3, and t4 are full coverage predictions.

To determine whether a moving balloon object has any bad prediction, we use the operation

hasbadprediction. This operation is useful in persistent queries for monitoring the accuracy

of predictions as the object moves in time. We will discuss persistent queries and other types

of spatiotemporal queries in Section 3.5. So far, we have only discussed whether a prediction

provides partial or full coverage, but an even more interesting aspect is the quantification of the

accuracy of the prediction itself. However, there are many ways to define the semantic of such

accuracy. One way is to determine the density value of each point of the actual movement from

the prediction and then determine the mean value over the period of the prediction. We use the

accuracyat operation for this purpose.

As far as the predicate operations are concerned, the unary operation isempty is obvious.

The relationship between the entire moving balloon objects does not make much sense and is

difficult to find any practical meaning. However, the relationship between their balloon object

components such as their final balloon objects offers insight into the spatiotemporal relationship

between their past movements as well as their future predictions. Thus, we define the binary

predicate operation between two moving balloon objects to have the same semantic as the binary

predicate operation between their final balloon objects. If an instant of the dynamic time domain

is specified, the balloon objects at this instant will be used to determine the spatiotemporal

relationship. Similarly, the interaction-potential and interaction-possible operations also have

the same semantic as if they are applied to the final balloon objects or the corresponding balloon

objects at a specified dynamic time instant. Therefore, one can always determine or verify the

spatiotemporal relationship between any states (balloon objects) of moving balloon objects. We

discuss this topic in more detail in the next section.

3.4 Spatiotemporal Predicates

Since relationship between moving balloon objects does not make much sense and is very

difficult to find any practical meaning, we will only focus on the modeling of the relationship

between balloon objects.

Defining the relationship between uncertain movements of moving objects is a very complex

task. For instance, consider a prediction of an airplane that crosses a prediction of a hurricane.

It is not necessary that the airplane will always cross the hurricane; it may only get close to

or touch the actual hurricane even though its prediction crosses the hurricane's prediction.

However, there is a chance that the airplane would cross the hurricane as well. The quantification

of this chance of future interaction of the two objects depends on a complex calculation of the

moving confidence distributions of both objects. Thus, we can distinguish two different types

of information here. One is the spatiotemporal relationship between the moving geometries,

in this case the predictions, and another is the quantification of the chance that there will be an

interaction between the two (actual) objects (the plane and the hurricane) in the future. We treat

each of these types of relationship information separately so that we can present the model in

its most simplest and understandable form as possible. In Section 3.4.1, we define predicates

between balloon objects (balloon predicates) and explore their properties by focusing only on

the relationship between their moving geometries. Hence, we can treat the future prediction

component (p(3) as simply T(3). Therefore, the balloon data type constructor can be written for

this purpose as Q(ca, 3) = 0(c) x T(3). For a balloon object b = (bh, bp) E Q(ua, ), the first

moving object bh, called the history part, describes the historical movement of b. The second

moving object bp, called the prediction part, describes the moving geometry of a prediction of

the balloon object. For the treatment of the second type of information, we provide our reasoning

about the potential future interaction between the actual objects in Section 3.4.2.

3.4.1 Modeling Balloon Predicates

In order to help explaining the method for defining our balloon predicate model, we first

describe our general mechanism in Section 3.4.1.1. We then discuss how a balloon predicate

can be specified using traditional STPs in Section 3.4.1.2. Finally, we determine the canonical

collection of balloon predicates in Section 3.4.1.3.

3.4.1.1 General mechanism for balloon predicates

The approach we present here is based on two main goals. The first goal is to develop a

formalism that works independently of the balloon data types to which it is applied. It is desired

that the formalism can be equally applied to any pair of balloon objects irrespective of their

data types. The second goal concerns the importance of making use of existing definitions of

STPs [22]. Since balloon objects are constructed based on moving objects. It is only consistent

to have balloon predicates be constructed from STPs. With this goal, we can benefit from both

theoretical and implementation advantages such that the formalism and implementation of

balloon predicates can make use of the existing work done for traditional moving object data

model. Figure 3-11 shows the relationships between traditional moving object data model and

balloon object data model.

Basic Spatiotemporal Spatiotemporal
Data Types Predicate Model

Balloon Data Types Balloon Predicate Model

Figure 3-11. Relations between traditional moving object data model and balloon data model.

The general method we propose characterizes balloon predicates based on the idea that

as two spatial objects move over time, the relationship between them may also change over

time. By specifying this changing relationship as a predicate, we can ask a true/false question of

whether or not such a changing relationship (development) occurs. Thus, we can define a balloon

predicate as a function from balloon data types to a Boolean type.

Definition 3.13 : A balloon predicate is a function of the form Q(al, 31) x ((X2, P2) -

bool for ac, 13, U2, 32 C {point, line, region).

The change of relationship over time between two balloon objects indicates that there is a

sequence of relationships that hold at different times. This suggests that a balloon predicate can

also be modeled as a development (sequence) of spatial and spatiotemporal predicates. Due to the

fact that a balloon object consists of a history part followed by a prediction part, the specification

of a balloon predicate must take into account the relationships between both parts. To do this,

let us first explore how relationships between balloon objects can be modeled. Each balloon

object has a defined current state at its current instant tc which separates the history part and

the prediction part. Between two balloon objects A = (Ah,Ap) and B = (Bh,Bp), A's current

instant may either be earlier, at the same time, or later than B's current instant. In each of these

scenarios, certain sequences of spatiotemporal relationships are possible between the parts of A

and B. Here, we are only interested in the relationship between a part of A and another part of B

whose temporal domains overlap since, in this case, the two parts may be defined on the same

period of time. Figure 3-12 illustrates all the possible related pairs for each scenario between

parts of A and B.

Ah Ac Ap Ah Ac Ap Ah Ac Ap
A: I n A: I A: I t
time time time
Bh Bc Bp Bh Be Bp Bh Be Bp
B: B: I B: I-
time time time
possible pairs: (Ah,Bh), (Ap,Bh), (Ap,Bp) possible pairs: (Ah,Bh), (Ap,Bp) possible pairs: (Ah,Bh), (Ah,Bp), (Ap,Bp)
A B C

Figure 3-12. Possible relationships between parts of balloon objects A and B. A) When A's
current instant is earlier. B) At the same time. C) Later than that of B's.

Although there are four possible types of relationships between all parts of two balloon

objects, it turns out that in any case, there are at most three types of relationships that may exist

between parts of any two balloon objects. These include jhi\litr\ .7'i\l, ihi\it ,, 'pr di, lita

or prediction/history, and prediction/prediction relationships. The history/prediction and

prediction/history relationships cannot exist at the same time due to the temporal composition

between the history and prediction parts of a balloon object.

3.4.1.2 Specification based on traditional spatiotemporal predicates

If we observe more closely, all the relationships between the parts of two balloon objects

that may exist in a scenario form a development such that the entire relationship between the two

balloon objects can be seen as a sequence of these relationships between their parts. For example,

consider an airplane represented by a balloonpp object P = (Ph,Pp) and a hurricane represented

by a balloonpr object R = (Rh,Rp) (Figure 3-13). In the past, P has been disjoint from R's path

as well as part of R's prediction. However, the predicted route of P crosses the predicted future of

R.

The relationship between P and R can be described as a development or sequence

of uncertain spatial and spatiotemporal predicates which hold at different times, that is,

time
Disjoint(Pp,Rp)
meet(R -- - -
Inside(Pp,Rp) PP
meet(Pp,R -------- -----------
Disjoint(Pp,Rp) Rp
Disjoint(PRp) Y

Disjoint(PhRi Rh

x

Figure 3-13. Future crossing situation between a balloonpp object P and a balloonpr object R.

Disjoint, > meet, > Inside, > meet, > Disjoint, (the subscript indicates uncertain pred-

icates or predicates that involve predictions). However, these spatial and spatiotempo-

ral predicates may represent relationships between different parts of the balloon objects.

For instance, the first Disjoint, predicate is actually a temporal composition of three

different types of disjointedness between the corresponding parts of P and R, that is,

Disjoint (Ph,Rh) > Disjoint (Ph, Rp) > Disjoint,(Pp, Rp). The rest of the predicates represent

relationships between the prediction parts of both objects. Hence, we can expand the orig-

inal sequence as Disjoint (Ph, Rh) > Disjointu (Ph, Rp) > Disjoint, (Pp, Rp) > meet,,(Pp, Rp) >

Il\id, ,,(Pp,Rp) > meet,(Pp,Rp) > Disjoint,(Pp,Rp). In this sequence, the subsequence

Disjoint,,(Pp,Rp) > meet,,(Pp, Rp) > Inside,,(Pp,Rp) > meet,,(Pp, Rp) > Disjoint,,(Pp,Rp) can

be represented by an STP Cross,(Pp, Rp) since they are applied to the same prediction parts of

the two balloon objects. Thus, we have Disjoint(Ph, Rh) >Disjoint (Ph, Rp) > Cross,,(Pp,Rp).

As a result, we are left with a sequence of three STPs each applied to different combination

pairs of parts of the balloon objects. This example illustrates that balloon predicates can be

appropriately modeled by sequences of three STPs between the related parts of the objects.

Hence, we can specify balloon predicates based on the traditional STPs as follows:

Definition 3.14 : Let P and R be two balloon objects of type Q(ali, P1) and n((X2, 32)

respectively. A balloon predicate between P and R is a temporal composition of traditional

spatiotemporal predicates:

stp(T(al), T(a2)) > (stp(T(a1), T(32)) |st(Tr(P1), T(a2))) > stp(T(P1), T(32)).

We consider an STP between two moving objects to be meaningful if and only if there exists

a period of time for which both objects are defined. Hence, each element of the above sequence is

meaningful only if the relationship between the corresponding parts is meaningful. The predicate

of the first element in the sequence represents an interaction that did occur. The first and second

alternative predicates of the second element in the sequence represents an interaction that may

have occurred. These predicate options reflect the constraint described in Section 3.4.1.1 which

dictates that the two predicates cannot exist at the same time. The predicate of the third element

in the sequence denotes an interaction that probably will occur. Thus, the second and third

elements indicates whether there is a possibility that an interaction will occur whereas the first

element tells exactly whether or not an interaction has occurred. The combinations of multiple of

these interactions represents a more complex relationship between balloon objects. For example,

an interaction that did occur in the past and probably will occur in the future can indicate that

there is a chance that it probably oli ai \ occurs. Table 3-4 shows an example of assigning a

meaningful prefix to the name for each pairwise combination between these interactions. Other

Table 3-4. Assigning naming prefixes to pairwise combinations of interactions.
did may have probably will
did may have been probably always
may may have been probably will have
probably will probably always probably will have -

combinations with larger number of interactions also exist, but it is usually not obvious to name

these relationships. Here are some examples of balloon predicates:
didcross := Cross ((azi),t(a2))

probablywillcross := Crossu,(z(3),Z(2))

mayhave been_disjoint := Disjoint (z(at), Tz(a2)) > Disjoint, (z(a1), T(32))

probably _all\ o \_iilide := Inside(z(al),T(o2)) C>Insideu,(z(il),zT(2))

3.4.1.3 Canonical collection of balloon predicates

Having defined a model for balloon predicates, we can now search for a canonical collection

of balloon predicates. The use of traditional STPs in the definition of balloon predicates suggests

that the canonical collection of balloon predicates can be expressed in terms of the canonical

collection of traditional STPs, which is provided in [22]. Another important factor that affects the

canonical collection is whether dependencies exist between the three elements of the sequence.

More specifically, we need to investigate whether the existence of a STP as an element of the

sequence can prevent or restrict another STP from representing another element of the sequence.

According to [22], the dependency between STPs, which are parts of a continuous de-

velopment, is expressed using a development graph. This graph describes all the possible

developments of STPs which correspond to continuous topological changes of moving objects.

For example, if a moving point is inside a moving region, it must meet the boundary of the

moving region before it can be disjoint from the region. This constraint relies on the continuity

of the moving point. If we allow discontinuity such as a period of unknown movement as in the

case of the balloon model to model our limited knowledge of the movement, then such constraint

cannot be applied. Although the history part and the prediction part of a balloon object cannot

temporally overlap each other, it is possible that they can be separated by a period of unknown

movement. Further, there can also be periods of unknown movement within the history or the

prediction part of a balloon object. Due to the possible discontinuity of balloon objects, we can

deduce that each element of the predicate sequence, which is a STP between the parts of two

balloon objects, is independent of each other. Thus, all the combinations of the STPs involved

are possible. This means that the canonical collection of balloon predicates can be determined

solely based on the canonical collections of the traditional STPs involved. As provided in [22],

there are 13 distinct temporal evolutions between two moving points without repetitions, 28

between a moving point and a moving region, and 2,198 between two moving regions. With this

information, we can determine, for example, the number of distinct, non-repetitive balloon predi-

cates between two balloon)pp objects to be 13 x (13 + 13) x 13 = 4,394. Each of the three parts

Table 3-5. Number of balloon predicates between balloon pp, balloon pr, and balloonrr
objects.
balloonpp balloon-pr balloonrr
balloon-pp 4,394 14,924 43,904
balloon-pr 14,924 1,600,144 136,996,944
balloonrr 43,904 136,996,944 21,237,972,784

of the multiplication represents the number of distinct STPs for each element of the sequence.

Similarly, we can determine the number of balloon predicates between all type combinations of

balloonpp, balloonpr, and balloonrr as shown in Table 3-5. Since the numbers of STPs that

involve moving line objects are not specified in [22], we omit those calculations that involve

balloon objects which are based on moving line objects.

3.4.2 Reasoning About Actual Future Interactions

So far, we have modeled balloon predicates based on the relationships between the geome-

tries of the parts of balloon objects. This allows us to distinguish relationships involving future

predictions as uncertain relationships with respect to the moving objects themselves. Unlike

relationships between the past movement histories which indicate interactions (non-disjoint

relationship) or non-interactions (disjoint relationship) that had definitely occurred between

the moving objects, uncertain relationships only indicate the existence of a chance whether the

moving objects will interact with one another in the future. Thus in this section, we will study

how this chance of future interaction between the actual moving objects can be quantified based

on the given relationship of their predictions.

Recall that the future prediction of a balloon object represents the set of all potential future

positions or extents of the moving object. This means that a non-interaction relationship with this

future prediction component guarantees a non-interaction relationship with the actual object in

the future. However, an interaction relationship with this future prediction component can only

signify a potential interaction with the actual object in the future. For example, if the route of a

ship does not intersect the future prediction of a hurricane, this means that there is no chance that

the ship will encounter the hurricane in the future. However, if the route crosses the hurricane's

future prediction, a number of possibilities can happen. The ship will either cross, meet, or avoid

the hurricane all together. There are two interesting questions here that we need to investigate:

(1) "What are the different types of possible interactions between the actual objects in the future

given an interaction between their future predictions?" and (2) "How much of a chance that the

objects will interact in the future?"

The problem of the first question is similar to the problem of inferring the set of potential

topological relationships between two spatial objects given the topological relationship between

their bounding boxes as described in [10]. However, a future prediction is not a bounding box.

In fact, at any instant of a prediction, a moving object can be anywhere within its prediction.

This allows plenty of freedom for any possible configuration of the object within its prediction,

more specifically, within any divisible part of the interior of its prediction. This means that for an

interaction between two predictions where the interiors of the predictions intersect, all possible

types of interaction are possible between the actual objects. On the other hand, if the interiors

of the predictions do not intersect but their boundaries intersect, the actual moving objects can

either interact by sharing their boundaries or be disjoint. Finally, if the predictions are disjoint,

this implies that the actual moving objects will be disjoint as well. Table 3-6 summarizes these

interaction inferences.
Table 3-6. Inferring the types of interaction between actual objects from the types of interaction
between their predictions.
Prediction Interactions Possible Object Interactions
interior intersection any interaction possible
boundary intersection boundary intersection, disjoint
disjoint disjoint

In order to answer the second question, let us consider each type of prediction interactions.

For disjoint predictions, it is guaranteed that the object will be disjoint. Thus the chance of

interaction in this case is 0. For predictions with boundary intersection, the chance of the actual

objects sharing their boundaries at this intersection is proportional to the product of the point-set

confidence values of the intersection with respect to each object. This quantity is an infinitely

small positive number approaching 0 since the dimension of the boundary intersection is always

smaller than the dimension of the prediction. But there is still a possibility that the boundary

intersection interaction can occur between the actual objects. Similarly, in the case of predictions

with interior intersection, the chance that the actual objects will interact at this intersection

is proportional to the product of the point-set confidence values of the intersection of each

prediction. However, this quantity here is a meaningful quantity since each of the point-set

confidence values is a meaningful value. It is important to note that this quantity does not indicate

the probability of the interaction between the actual objects, but merely represents the probability

of both objects being in the intersection. But it is reasonable to say that the higher the probability

of both objects being in the intersection, the higher the chance that they will interact with one

another. We use the operation interactionpotential for this purpose. The result of this operation

is of type <(real) indicating the temporally dependent value of the chance that the objects will

be in the proximity (intersection) where interaction is possible. To determine whether there is a

possibility of interaction thus distinguishing the interior intersection and boundary intersection

cases from the disjoint case, we use the predicate interaction possible. By using the combination

of these operations together with the binary predicate operation, one can obtain the uncertainty

information of future interactions between moving objects.

3.5 Querying Using the Moving Balloon Algebra

To illustrate the query language resulting from our design, we first present how the query

procedure works by specifying the interoperability between our Moving Balloon Algebra and

prediction models in Section 3.5.1. Then we discuss how our data model supports different types

of spatiotemporal queries in Section 3.5.2.

3.5.1 Interoperating with Prediction Models

The concept of separating domain specific prediction modeling from moving object data

modeling in databases allows us to design a generic moving balloon data model which can be

used with any prediction model as long as it provides appropriate access operations for retrieving

prediction data. These operations include the pointconf and pointsetonf operations. The

signature for these operations is shown below.

pointconf : C(a) x point x instant -+ real

pointsetconf : C(a) x x instant -+ real

These two operations represent the connection point between our Moving Balloon Algebra

and domain specific prediction models. They are prediction model specific, and thus are required

to be provided by prediction models. Furthermore, they are used as a foundation for supporting

many other high level, prediction-related operations.

There are at least two types of prediction models, probability based models and fuzzy-based

models, which can be used in conjunction with our Moving Balloon Algebra. Therefore, in order

to pose queries that require retrievals of prediction data, we must first indicate the appropriate

prediction model to be used. For example, assuming that we have a moving balloon object of

type m2(point, region) representing a ship moving in an ocean. We can pose a query on this

object as follows:

USE Probability_Prediction_Model
SELECT pointset_conf(future_proj(val(final(Ship.movement))),QueryRegion.region,now(+3h)
FROM Ship, QueryRegion
WHERE Ship.name = 'SuperFreighter' and QueryRegion.name = 'RestrictedZonel'

Note that in this query, we use the pointsetconf operation as it is applied to the future

prediction data type p(region). This operation in turn invokes the pointsetconf operation for

C(region) which must be provided by the specified Probability_PredictionModel.

3.5.2 Spatiotemporal Queries

Traditionally, database queries are typically processed and answered using the current state

of the database, that is, the database state at the time the queries are entered (the concept of a

database state and database history is described in [60]). However, in spatiotemporal databases,

this is not necessarily always the case. Spatiotemporal databases manage temporally dependent

objects such as moving objects which are continuously changing. Thus, movement histories

and predictions can be stored such that they can be used to answer queries at different states of

the database. As defined in [60], there are three types of spatiotemporal queries: instantaneous,

continuous, and persistent queries. The same query can be entered as instantaneous, continuous,

or persistent, producing different results in each case. An instantaneous query entered at time t

is evaluated based on the current database state at t whereas a continuous query entered at time

t is a sequence of instantaneous queries at time t' > t evaluated at each time t'. On the other

hand, a persistent query entered at time t is a sequence of instantaneous queries at time t that

are evaluated at each time t' > t for which the database is updated. These query types can be

supported through the use of a Future Temporal Logic (FTL) query language as described in [60].

All that is needed to support these query types is an implementation of an FTL query processor

on top of our Moving Balloon Algebra. This is possible only if our algebra satisfies all the data

model requirements of FTL. It turns out that this is the case. FTL requires a data model that

can represent future developments of moving objects and that access to future states of moving

objects is available. Our Moving Balloon Algebra provides this functionality through the use of a

future prediction data type. In fact, the algebra offers much more data model support than that is

needed by FTL including historical movements as well as future uncertainty.

As an example, consider a scenario in which the U.S. coast guard rescue team needs to know

about all small ships with less that 100 feet in length which will intercept the storm Albert within

the next 3 hours. This query can be entered in FTL as follows:

RETRIEVE ship
WHERE ship.length < 100 AND storm.name = 'Albert' AND
Eventually_within_3h Inside(ship.position,storm.extent)

Here the ship is modeled as a moving balloon point with a moving point prediction, and the

storm is modeled using a moving balloon region with a moving region prediction. The temporal

operator Eventuallywithin_c (g) asserts that the predicate g will be satisfied within c time units

from the current instant. If the query is entered as an instantaneous query, the result will include

all less-than-100-feet ships that will be inside the storm within 3 hours from the current instant.

However, if the query is entered as a continuous query, this query will be evaluated continuously

as time moves on. The result will also include other small ships that do not satisfy the criteria

at the time of the query being entered, but satisfies the criteria at some future time. This kind of

continuous queries is similar to the concept of a database trigger which is useful for monitoring

certain conditions such that appropriate actions can be initiated.

Besides these query types, our data model design offers many new functionalities including

querying about the uncertainty of future predictions as well as the accuracy of such predictions.

For the purpose of illustrate these functionalities, we use a simple SQL like query language.

Consider an application scenario of a hurricane prediction. The movement of the eye of a

hurricane can be modeled as a moving balloon point with a moving region type prediction, that

is, an mballoonpr object. For the extent of the hurricane force wind, we model its movement

using an mballoonrr object. For cities, we represent their geography by a region object. Hence,

we have the following relations:

hurricanes(name:string, eye:mballoon_pr, extent:mballoon_rr)
cities(name:string, geography:region)

Figure 3-14. Movement of the eye of hurricane Katrina.

Assuming that these relations have been previously populated with all necessary data. For

the purpose of our example, assume also that hurricane Katrina is currently making its way across

the Gulf of Mexico (Figure 3-14). We can ask a query about the future prediction of the hurricane

"What area will potentially be affected by the eye of hurricane Katrina at 12 hours from now?"

SELECT val(atinstant(future_proj(val(final(eye))),now()+12h))
FROM hurricanes WHERE name="Katrina"

Following the same trend, the total area that may be affected by the hurricane force wind at

any time in the future can be determined by using the traversed operation on the final prediction

of the extent of the hurricane. Beyond these queries, we can also ask questions relating to the

degree of confidence such as "What is the chance that Katrina's eye will be on the city of New

Orleans 24 hours from now?"

SELECT pointset_conf(val(future_proj(val(final(eye)))),geography,now()+24h)
FROM hurricanes, cities
WHERE hurricanes.name="Katrina" AND cities.name="New Orleans"

Assume that a meteorologist needs to analyze existing hurricane prediction data. She can,

for example, ask for all the hurricanes that have had any bad prediction for their eye movements.

The hasbadprediction operation can be used for this purpose.

SELECT hurricanes.name

More interestingly, she can also determine the accuracy of a specific prediction, say

Katrina's prediction made 48 hours ago, at a specific time, say 1 hour ago. She can even compare

this data with the same data from a more recent prediction, say a prediction made 24 hours ago.

This allows her to verify whether, and to what degree, the prediction accuracy increases over

time. The ability to do this can help her in making necessary adjustments to the prediction model.

SELECT accuracy_at(eye,now()-48h,now()-lh), accuracy_at(eye,now()-24h,now()-lh)
FROM hurricanes WHERE hurricanes.name="Katrina"

Other than these operations, we can also use spatiotemporal predicates between moving

balloon objects. A number of approaches have been proposed for specifying and using spatiotem-

poral predicates in queries. One solution is to use the spatiotemporal query language (STQL)

[20] to support textual specifications of spatiotemporal predicates. STQL allows us to textually

formulate spatiotemporal queries that involve the use of spatiotemporal predicates. To illustrate

how spatiotemporal predicates between moving balloon objects can be used, consider the sce-

nario of airplanes which can be modeled as mballoonpp objects due to their well defined routes.

We can create the corresponding relations for these objects.

airplanes(flightNo:string, flight:mballoon_pp)

We may want to divert all airplanes whose flight will potentially cross the projected extent

of hurricane Katrina. This query requires the use of a spatiotemporal predicate potentiallycross

between moving balloon objects. For the purpose of this example, we assume that this predicate

has been defined between moving balloon objects of type mballoon-pp and mballoonrr.

SELECT flightNo
FROM airplanes, hurricanes
WHERE hurricanes.name="Katrina" AND potentiallycross(flight, extent)

Another approach for using spatiotemporal predicates between balloon objects in queries

is to employ the visual query language [23, 21]. This visual language allows a convenient and

intuitive graphical specification of spatiotemporal predicates as well as provides support for the

formulation of spatiotemporal queries with these predicates.

CHAPTER 4
DISCRETE MODEL OF THE MOVING BALLOON ALGEBRA

In this chapter, we describe how we can define a finite representation for all the data types

of the abstract model of the Moving Balloon Algebra. The main idea behind this chapter is to

determine a finite set of information (that is, defined by a discrete type) which can be used to

represent an infinite set of values (that is, defined by an abstract type). For example, we can

represent a segment which consists of an infinite set of points by two endpoints which is a

finite set of information; yet we can interpolate these two endpoints to obtain any points on the

segment. To define a finite representation for the Moving Balloon Algebra, we must define a

discrete type for each abstract type of the algebra. In doing so, our approach is to start from

the bottom, most basic level of the algebra's data type hierarchy and work our way to the top.

We describe a finite representation for non-temporal data types of the algebra in Section 4.1.

For movement over time, we make use of a concept called sliced representation to define a

finite representation for basic spatiotemporal data types in Section 4.2. Finally, we show how

the balloon data types and spatiotemporal balloon data types can be finitely represented in

Section 4.3. The work in this chapter has been included in one of our technical reports [52] in

preparation for a journal submission.

4.1 Non-Temporal Data Types

Non-temporal data types include base data types, time data types, and spatial data types. We

described their finite representation in the following subsections.

4.1.1 Base Data Types and Time Data Types

Base data types such as int, real, string, and bool normally have their corresponding discrete

types directly implemented in programming languages. The time data type instant can be

implemented using the real number implementation to express the continuous time domain. All

of the data types includes the undefined value denoted by I which represents the empty object.

The empty object is needed to represent the case that an operation yields an "empty" result.

For example, the intersection of two parallel segments yields an empty object. Therefore, any

operation such as distance involving this empty object would yield an empty value. We defined

the discrete data types for these base data types in Definition 4.1.

Definition 4.1 : Let int, real, string, and bool be the programming language types

provided for integers, real numbers, strings, and boolean values respectively. The discrete data

types int, real, string, bool, and instant are defined as:

int = int U {I} real = real U {I} string = string U {I}

bool = bool U {I} instant = real U {I}

Another time data type is the interval data type. We can represent a time interval by its

endpoints 1 (left) and r (right) and two boolean flags Ic and rc indicating whether it is left-closed

and right-closed respectively. We define the type interval in Definition 4.2.

Definition 4.2 : The type interval is defined as:

interval = {(1,r, c, rc) r E instant, c, rc E bool, < r, (1 = r) = (Ic = rc = true)}

Between two intervals, we are interested in two types of relationships namely disjointedness

Definition 4.3 : Given two time intervals i = (li, ri, Ici, rci) and j = (lj, rj, Icj, rcj), we define

their disjoint and adjacent relationships as follows:

rdisjoint(i, j) < ri < lj V (ri = lj A -(rci A lcj))

disjoint(i, j) rdisjoint(i, j) V r_disjoint(j, i)

r adjacent(i, j) + disjoint(i,j) A (ri = Ij A (rci V lcj))

With these interval relationships, we can define, in Definition 4.4, a finite set of time

intervals (an interval set) such that it has a unique and minimal representation.

Definition 4.4 : The type intervalset is defined as:

interval-set = {U C interval (i,j E U A i # j) = disjoint(i,j) A -adjacent(i,j)}

Interval sets are useful for representing time periods of movements. For example, they are

used as the return values for the lifespan operation which determines the time periods during

which a movement is defined.

4.1.2 Spatial Data Types

Based on the abstract model of spatial data types given in [59], a finite representation for

spatial data types such as point, line, and region have been studied in our implementation of

topological predicates between complex spatial objects [54, 51]. Here, we give an overview of

this representation. Recall that the type point represents complex points (that is, collections of

single points). Hence, we first define how a single point, represented by the type poi, can be

described. In two-dimensional Euclidean space, a single point can be described by a pair of

coordinates (x,y) as shown in Definition 4.5.

Definition 4.5 : The type poi is defined as:

poi= {(x,y) x,y E real} U {I}

In Definition 4.6, a value of the type point is simply define as a set of single points.

Definition 4.6 : The type point is defined as:

point = 2po0

The type line and region can be described discretely by using linear approximations. A

value of the type line is essentially a finite set of line segments. The abstract type described in

[32] defines a line as a set of curves in the plane. We can discretely represent curves by polylines

which in turn are sets of line segments. However, we can also take a less structured view and

represent a line by a set of line segments. Definition 4.7 shows how the type seg representing a

line segment can be discretely defined by its two endpoints.

Definition 4.7 : A line segment with two endpoints p and q is represented by the type seg

which is defined as:

seg = {(p,q) P,q e poi, p < q} U {I}

Now we can define the type line based on line segments as in Definition 4.8.

Definition 4.8 : The type line is defined as:

line = {S C seg Vs, t E seg : s 4 t A collinear(s, t) = disjoint(s,t)}

The predicate collinear determines whether two line segments are on the same infinite

line in a plane. Thus, if there are such segments, they must be disjoint; otherwise, they can

be merged into a single line segment. This ensures the uniqueness of the line representation.

Figure 4-1 shows an example of a line object of the abstract model and its corresponding discrete

representation.

x x
A B

Figure 4-1. Representations of a line object. A) In the abstract model. B) In the discrete model.

A region object can be represented discretely as a collection of polygonal faces with

polygonal holes. They are defined based on the concept of cycles. A cycle is a simple polygon

and is defined in Definition 4.9.

Definition 4.9 : The type cycle is defined as:

cycle = {S C segl

(i) n > 3, ISI = n

(ii) Vs, t S : s 4 t = i iintersect(s,t) A -touch(s,t)

(iii) Vp E points(S) : card(p, S) = 2

(iv) 3(so,...,sn-1) : {so,...,s,n- = S A(Vi e {0,...,n- 1} :meet(si,s(i+l) modn))}

The predicate i_intersect checks whether two segments intersect in their interior. Two

segments touch if an endpoint of a segment lies in the interior of the other segment. The function

points(S) returns all the endpoints of the segments in S, thus points(S) = {p E poi ls E S : s =

(p, q) V s = (q, p) }. The number of occurrence of an endpoint p in S is given by the function

card(p, S) = I{s E S s = (p, q) V s = (q, p) }1. Therefore, a cycle is (i) a collection of 3 or more

segments where (ii) no segments intersect or touch one another, (iii) each endpoint occurs in

exactly two segments, and (iv) all the segments together form a single cycle.

Using the definition of cycle, we define, in Definition 4.10, a face as a pair consisting of an

outer cycle and a set of 0 or more hole cycles.

Definition 4.10 : The typeface is defined as:

face= {(c,H)

(i) c E cycle,H C cycle

(ii) Vh E H : edge_inside(h, c)

(iii) Vhi,h2 E H : hi 4 h2 = edge -disjoint(hi, h2)

(iv) any cycle that can be formed from the segments of c or H

is either c or one of the cycles of H}

A cycle c is edge-inside another cycle d if its interior is a subset of the interior of d and no

edges of c and d overlap. They are edge-disjoint if their interiors are disjoint and their edges do

not overlap. However, in both case, their edges may touch at single points. The last condition (iv)

ensures unique representation, that is, it does not allow a face to be decomposed into two or more

edge-disjoint faces.

A region is then defined in Definition 4.11 as a set of edge-disjoint faces.

Definition 4.11 : The type region is defined as:

region = {F C face Vf1, f2 e F : f" # f2 = edgedisjoint(fi, f2)}

Two faces are edge-disjoint if either their outer cycles are edge-disjoint, or one of the outer

cycles is edge-inside one of the holes of the other face. Thus, two faces in a region may touch

each other at single, isolated points but must not have overlapping edges. Figure 4-2 shows an

example of a region object in both abstract and discrete representation.

Y Y

X X
x x
A B

Figure 4-2. Representations of a region object. A) In the abstract model. B) In the discrete
model.

4.2 Basic Spatiotemporal Data Types

For a finite representation of spatiotemporal data types, we use the sliced representation

concept as introduced in [25]. The idea is to represent a movement of an object by a sequence

of simple movements called slices or temporal units. A temporal unit of a moving data type a

is a maximal time interval where values taken by an instant of a can be described by a "simple"

function. Thus, a temporal unit represents the evolution of a value v of some type a in a given

time interval i while maintaining type-specific constraints during such evolution. Figure 4-3A

shows a temporal unit of a moving point object consisting of two point moving independently.

Each temporal unit is a pair (i, v), where i is called the unit interval and v is called the unit

function. In Definition 4.12, temporal units are described as a generic concept to formulate the

definition of the sliced representation. Their specialization to various data types is provided in the

next subsections where we define unit types such as ureal, upoi, point, line, and region.

Definition 4.12 : Let S be a set of unit function representations. The temporal unit type of S

is defined as:

unit(S) = interval x S

time time

y y

x x
A B

Figure 4-3. A discrete representation of a moving point object. A) A temporal unit. B) A sliced
representation.

The sliced representation is provided by a mapping type constructor which represents a

moving object as a sequence of temporal units. Its type depends on the type of the temporal units

(that is, the unit type). Figure 4-3B illustrates a slice representation with three temporal units or

slices for a moving point object. We define the mapping type constructor in Definition 4.13.

Definition 4.13 : Let U be a temporal unit type. The temporal evolution of a moving object

based on the unit type U is a mapping of U and is defined as:

mapping(U) = {((il,vl), (i2v,2),...(in, n))I

(i) Vj {l,...,n} : (ij,vj) E U

(ii) Vj {1,...,n-1}:r_disjoint(ijij+1)

(iii) Vj e {1, ...,n 1} :adjacent(ij, ij+l) => vj vj+l}

Condition (i) requires that each unit of the slice representation is of the same unit type U.

Condition (ii) imposes a restriction that each unit must be rightdisjoint with respect to the next

unit in the sequence. Condition (iii) requires that any two consecutive, adjacent units must have

different unit function representations. This ensures a unique and minimal representation since

two adjacent units with the same unit function representation can be merged into a single unit

over the combined unit interval.

By defining this mapping type constructor, we can construct discrete spatiotemporal data

types for all of our abstract types. For instance, assuming that we have temporal unit types

point, uline, and region (which we will define later in the next section), we can construct

discrete spatiotemporal data types mapping(upoint), mapping(uline), and mapping(uregion) to

represent moving point, moving line, and moving region objects respectively. Although this is

somewhat straight forward, we must be careful to ensure that each temporal unit describes a valid

development of a moving object.

Since temporal units describe certain simple functions of time, we define, in Definition 4.14,

a generic function t on each unit type to evaluate the unit function at a given time instant. This

function is essential for defining semantic requirements of each unit type as we will see later.

Definition 4.14 : Let a be a non-temporal type (for example, point), and u, be the corre-

sponding unit type (for example, point) with ua = interval x Sa, where Sa is a suitably defined

set of unit function representations for a. The function t, is defined as:

ta = Sa x instant -+ a

The function t allows us to express constraints on the structure of a unit in terms of the

constraints on the structure of the corresponding non-temporal value. It also serves as a basis for

the implementation of the atinstant operation on the unit.

4.2.1 Temporal Units for Base Types

Unlike the domain of the real type which is continuous, the domains of the types int, string,

and bool are discrete in nature. This means that a value of these domains can only change in

discrete steps. For this reason, we introduce a type constructor const in Definition 4.15 that

produces a temporal unit for a non-temporal type a.

Definition 4.15 : Let a be a non-temporal type. The constant unit type of a is defined as:

const (c) = interval x o- {I}

A unit is not allowed to contain an undefined or empty value since for such interval, we

can simply let no unit exist within a mapping. The type constructor const is used for defining

temporal unit for int, string, and bool. However it can also be applied to other data types for

applications where values of such types change only in discrete steps. The value of a constant

unit function of value v at any time instant t of a unit is trivially given by t(v, t) = v.

For the real type, we introduce a unit type real in Definition 4.16 for the representation of

moving real numbers within a temporal unit. To balance the trade-off between the expressiveness

and simplicity of the representation, the "simple" function for this unit type is chosen to be either

a polynomial of degree less than or equal to two or a square root of such a polynomial. Such

square root functions are required to express the time-dependent distance functions in Euclidean

metric. Thus, with this choice, one can implement the temporally lifted versions of the size,

perimeter, and distance operations.

Definition 4.16 : The unit type real is defined as:

real = interval x {(a, b, c,r) a,b, c E real,r E bool}

The evaluation of a unit function of real is given as:

at2 + bt + c if-ir
t ((a, b, c, r), t) =
/at2 +bt+c ifr

4.2.2 Temporal Units for Spatial Data Types

The temporal evolution of spatial objects is characterized by its continuity and smoothness

properties similar to that of the real numbers and can be approximated in various ways. Although

complex functions like polynomials of degree higher than one can be used as the basis of

representation, to strike the balance between richness and simplicity of representation, we make

the design decision to base our approximations of the temporal behavior of moving spatial

objects on linear functions. This ensures simple and efficient representation for the data types and

a manageable complexity of algorithms.

In order to describe the permitted behavior of moving spatial objects within a temporal

unit, we need to specify how type-specific constraints are satisfied during such unit. We require

that constraints are satisfied only during the respective open interval of a unit interval since the

endpoints of a unit interval indicate a change in the description of the movement. For example,

a collapse of components of a moving object can occur at the endpoints of the unit interval.

Similarly, a birth of a new component can also occur at the beginning of a unit interval. This is

completely acceptable since one of the reasons for the introduction of the sliced representation

is to have "simple" and "continuous" description of the moving value within each unit interval

and to limit "discontinuities" in the description to a finite set of instants. Thus, the sliced

representation concept also allows one to model appearances and disappearances of object

components at endpoints of intervals. This means that the sliced representation can also represent

event points which are instances when the temporal function of a moving object is event-

4-discontinuous as specified in the abstract model. In this section, we define temporal unit

types point, uline, and region. They are used to construct the spatiotemporal mappings

mapping(upoint), mapping(uline), and mapping(uregion) which describe a finite representation

for the basic spatiotemporal data types point, line, and region respectively.

4.2.2.1 Unit point

Before we can define temporal units for point, we need to define how the temporal evolution

of single points can be represented. We introduce a set MPoi which defines 3D lines that describe

continuous, unlimited temporal evolution of 2D single points.

MPoi = {(ax,ay,bx,by) ax, ay,bx,by E real}

The 4-tuple (ax, ay, bx, by) is a representation of the linear functions of the coordinates of a single

point over time such that (ax, ay) is the position of the point at t = 0 and (bx, by) is the position of

the point at t = 1. The evaluation of this representation at an arbitrary time t is given by:

t((ax, ay, bx, by), t) = (a + (bx -ax)t,ay + (by ay)t) Vt E instant

The unit type upoi for the temporal evolution of single points can then be defined in Defini-

tion 4.17.

Definition 4.17 : The unit type upoi is defined as:

upoi = interval x MPoi

To describe a moving point (that is, a moving complex point), we define the unit type point

in Definition 4.18.

Definition 4.18 : Let i = (1, r, Ic, rc) E interval, M C MPoi and |M| > 1. The unit type

point is defined as:

point = {(i,M)

(i) Vt, I < t < rVp, q EM :p 4 q l t(p, t) 4 t(q, t)

(ii) s = e = (Vp,q E M: p ~q4 q=t(p,1) t(q,1))}

Condition (i) indicates that the type-specific constraint of a point object having distinct com-

ponents (that is, single points) must be satisfied over the open interval of the unit. Condition (ii)

requires that point units which are defined only in a single time instant have distinct components

at that instant. An example of a unit point object is shown in Figure 4-3A. For a unit point (i,M),

an evaluation at time t within the interval i is given by:

t(M, t)= U {t(mt)}
mCM

We assume that t distributes through sets and tuples such that t(M, t) is defined for any set M as

shown above, and for a tuple r = (r, ..., rn), we have t(r, t) = (t(ri, t),..., t(rn, t)).

4.2.2.2 Unit line

For moving lines, we introduce a unit type uline. Here, we restrict the movements of

segments of a line such that during the unit interval of a line unit, each segment only moves along

a plane. That is, segments are not allowed to rotate during their movement. Rotating segments

create curved surfaces in 3D space which can be approximated by a sequence of plane surfaces.

This constraint allows us to keep the representation simple and easy to deal with.

Before we can define uline, we define a set MSeg as the set of all pairs of coplanar lines

produced by a pair of moving single points in 3D space, which will be used to represent moving

segments.

MSeg = { (p, q) \p, q E MPoi, p # q, p is coplanar with q}

The definition of uline as shown in Definition 4.19 is based on a set of moving segments with the

above restriction and which never overlaps at any instant within the respective open interval.

Definition 4.19 : Let i = (1, r, Ic, rc) E interval, M C MSeg and |M| > 1. The unit type uline

is defined as:

uline= {(i, M)

(i) Vt,l < t < r : t(M, t) E line- {}

(ii) = r = t(M,) c line {l})}

Similar to the conditions for the definition of point, the first and second conditions above

specify data type constraints for the open time interval and for the case where a unit is defined

only at a single time instant respectively. Figure 4-4A shows an example of a valid uline object.

Since t distributes through sets and tuples, we can use t(M, t) which represents the value of a

unit line at a time instant t to define the structural constraint that requires this value to be a valid

line composed of segments. For instance, condition (i) requires that, at each time instant t of the

time time

x x
A B

Figure 4-4. Representing a moving line object. A) A uline value. B) A discrete representation of
a moving line object.

open interval, we can obtain a segment from each of the moving segments of M.

Vt, < t < rV(p,q) M : ((p, t),t(q, t)) E Seg

It is clear that the semantic of uline can be expressed using the t function for the open interval.

However, at the endpoints of an interval, a special consideration is needed since, in these points,

moving segments can degenerate into points and different moving segments can merge or

split as shown in Figure 4-4A. To handle these situations, a regularization process is needed.

We define a separate t functions denoted by tl which removes from t(i,M) segments that

have the same left and right endpoints (that is, segments degenerated into a single point) and

merge overlapping segments into maximal ones (this is defined by a mergesegs function). Let

((1, r, Ic, rc),M) E uline. Then, the instantiation of this unit at a time instant t of the interval is

defined as:

t(M,t) = mergesegs({(p,q) E t(M,t) p < q))

An example of a discrete representation of a moving line object containing a single unit line is

shown in Figure 4-4B. It is important to note that even though we restrict the moving segment

representation such that segments of a line cannot rotate, rotation can be approximated by

triangulation since moving segments are allowed to degenerate. Thus, many possible mappings

exist between segment endpoints of the lines at the start and the end of a unit line interval as

long as the non-rotating constraint is satisfied. To get a better approximation, this unit can be

divided into smaller units by introducing additional internal instants along with their discrete

representations. It can be easily seen that arbitrary precision of representation can be achieved

with this approach.

4.2.2.3 Unit region

To represent a temporal unit of a moving region, we introduce the unit type region. Similar

to line, the fundamental of the discrete representation of the region data type is also based on

segments. Thus, we can employ the same restriction on moving segments as for uline where

rotation of segments within unit intervals is not permitted. Therefore, we can base our definition

of region on the same set of all coplanar pairs of lines, that is, MSeg, with additional constraints

to ensure that we always obtain a valid region throughout the entire unit (validity constraints).

An example of a valid region value (with allowable degeneracies) is illustrated in Figure 4-5.

Following the same structured approach for defining the region data types, we can define a

time

time i' ,~----------------

x

Figure 4-5. Example of a region value.

region based on the concept of moving cycle (MCycle) and moving face (MFace). However,

we do not need to specify the validity constraints on MCycle and MFace here as this will be

done directly in the region definition. We introduce the sets MCycle and MFace to describe the

moving version of a cycle and a face respectively, without any restriction on time.

MCycle = {S C MSeg lSI > 3}

MFace = {(c,H) c e MCycle,H C MCycle}

We can now define region in Definition 4.20.

Definition 4.20 : Let i = (1, r, Ic, rc) E interval, F C MFace. The unit type region is

defined as:

region= {(i,F)l

(i) Vt, I < t < r: t(F, t) e region- {L}

(ii) 1 = r t(F, ) region {}}

For the endpoints of the unit interval, we again need to perform a regularization process

by providing a separate function tr to obtain a valid region value and handle the degeneracies.

This function works as follows. Evaluate t(F, 1) or t(F, r) and remove all pairs of points (p, q)

(segments) that are not valid segments. Then, for all collections of overlapping segments,

partition all participating segments into fragments (for example, two overlapping segments

(p, q) and (r,s) with the endpoints ordered on the line as < p, r, q, s > produce fragments (p, r),

(r, q), and (q, s)). For each fragment, if the number of segments containing it is even, remove the

fragment; otherwise, treat this fragment as a new segment of the result.

4.3 Balloon Data Types and Spatiotemporal Balloon Data Types

Having defined a finite representation for the basic spatiotemporal data types, we can now

use this concept to define a finite representation for the balloon data types in Section 4.3.1 as well

as the spatiotemporal balloon data types in Section 4.3.2.

4.3.1 Balloon Data Types

Since the balloon data types are composed of historical movement and future prediction data

types, we will discuss these data types first. The historical movement data types such as point,

line, and region are defined based on basic spatiotemporal data types such as point, line,

and region respectively. Therefore, the sliced representation for the basic spatiotemporal data

types is sufficient to represent the historical movement data types.

For the future prediction data types, only the geometry aspect of future predictions is

relevant here since the representation of the confidence distribution aspect is domain-specific

and can be assumed to be given by prediction models. The geometry aspect of the future

prediction data types is defined using the basic spatiotemporal data types. Hence, their discrete

representation is the same, that is, they can also be discretely represented using the sliced

representation concept.

A balloon data type which consists of both historical movement and future prediction

information can then be described as a spatiotemporal mapping of both the historical part and

the predicted part such that the mapping of the historical part precedes that of the predicted

part. In other words, the last unit interval of the historical part must be r_disjoint with the first

unit interval of the predicted part. This spatiotemporal mapping for a balloon object is formally

defined in Definition 4.21.

Definition 4.21 : Let mapping(uct) and mapping(up) be the sliced representations for

a historical movement based on a unit type uc and a future prediction based on a unit type up

respectively for a balloon object of type Q(ca, P). The sliced representation of this balloon object

is a mapping mapping(ua, up) which is defined as:

mapping(uot, up) = { ((il, vI), (i2, V2), .- (in, Vn), (in+l, Vn+l),(... in+m n+m))

(i) ((il, v), (i2,V2), .. (in, vn)) e mapping(uo)

(ii) ((in+l,Vn+1),..., (in+m, Vn+m)) mapping(up)
(iii) rdisjoint (in, in+) }

This representation describes a balloon object as a sequence of n + m temporal units where

the first n units represent its historical movement (condition (i)) and the last m units represent

its future prediction (condition (ii)). Finally, the constraint that the history part must precede the

future prediction part is specified in condition (iii).

4.3.2 Spatiotemporal Balloon Data Types

At the highest level of the Moving Balloon Algebra type system, we have the spatiotemporal

balloon data types. These data types describe the temporal development of balloon objects.

Thus, we can also say that they describe the temporal development of movement history as well

as future prediction with the constraint that, at any instant of this development, the movement

history and the future prediction, if available, together form a valid balloon object. This allows us

to treat the development of each part separately.

As mentioned in the abstract concept, the development of the movement history is a

historical accumulation phenomenon which means that, as an object moves or evolves over time,

new movement information is appended to the existing movement history. Thus, the movement

history at each time instant t in the past is a part of the current history. That is, it is the history

starting from the beginning instant up to the instant t. Therefore, it is sufficient to represent

the development of movement history by the latest known movement history and providing an

appropriate, separate instantiation function th (as opposed to ta which retrieve the position or

extent value) to obtain the movement history at any time instant t of the development. Let uc be a

unit type of a spatial type a. The development of movement history is discretely represented as a

sliced representation of a unit type uci with an th function defined as:

ht = mapping(ucc) x instant --- mapping(u)

The function th allows us to express constraints on a development of movement in terms of

the constraints on the corresponding movement value. In a way, it also serves as a basis for the

implementation of the atperiod operation.

The second part of the spatiotemporal balloon data types is the temporal development of

future prediction. Since each future prediction is provided by a prediction model which is a

concept outside the control of the algebra, we cannot make any assumption on the continuity

aspect between different predictions. However, we can safely assume that each prediction is

discretely made with respect to a specific time instant and provided by a prediction model either

on a regular basis or on a request basis. In any case, each prediction is to be stored and managed

in databases such that they can be later retrieved and used in query for various analysis. This

approach allows us to maintain a collection of predictions made over the past which may no

longer be available to be requested from a prediction model since this model may be tweaked

and modified over time by domain experts. Therefore, the development of the future prediction

part of a moving balloon object can be represented by a finite sequence of future predictions,

each made at a specific time instant of the history. Definition 4.22 formally describes a finite

representation of a development of prediction.

Definition 4.22 : Let a pair (t, mapping(ua)) represents a prediction of the unit type ua

with respect to a time instant t. The development of the future prediction of the unit type ua,

denoted by mPrediction(ua), is defined as:

mPrediction(uou) = {((t, pI), (t2,p2),...(tn, n)) Vi {1, 2,...,n} :

(i) ti E instant

(ii) pi E mapping(ua)

(iii) i < n = ti < ti+1}

Since this development of future prediction is a finite sequence of discrete values of

prediction, an instantiation of the development at any time instant other than those specified

would return an empty value. However, in query where the future prediction at time t of a moving

object is need, one can choose to use the most current prediction available whose prediction

period contains t. This is because each prediction is produced to describe the future prediction of

an object's movement for a certain period of time.

By discretely representing the development of the movement history and the future predic-

tion, we effectively obtain a representation for a moving balloon object, as defined in Defini-

tion 4.23, which is a combination of the two.

Definition 4.23 : A finite representation of the spatiotemporal balloon data types

mballoon(c, f) is defined as:

mballoon(uc, up) = mapping(uc) x mPrediction(up)

This definition also requires a constraint that any instantiation at a time instant t of a moving

balloon object results in a valid balloon object. This indicates that the instantiations at t of both

parts of the object must together produce a valid balloon object.

Having defined discrete data types for each of the abstract data types of our Moving Balloon

Algebra, we can now use this discrete model as a specification to develop implementable data

structures for supporting algorithmic design and implementation of operations.

CHAPTER 5
IMPLEMENTATION MODEL OF THE MOVING BALLOON ALGEBRA

In the implementation model, we are interested in how we can implement the finite rep-

resentation set forth in the discrete model. Thus, we are interested in defining data structures

for each data types of the algebra as well as algorithms for operations and predicates. Since the

implementation of spatiotemporal data types and spatiotemporal predicates requires the use of

spatial data types and topological predicates, we first present our data structures for spatial data

types and spatiotemporal data types (Section 5.1). Then, we present our topological predicate

implementation including the algorithms for determining the topological relationship between

two spatial objects' (Section 5.2). These algorithms are then used to support the implementation

of spatiotemporal predicates between moving objects (Section 5.3) which in turn is the basis for

implementing balloon predicates (Section 5.4). Since the algebra is to be made available for use

in a database system, we also describe our mechanism for integrating the algebra into a DBMS

(Section 5.5). Finally, we provide a case study describing an application of our algebra in the

field of hurricane research (Section 5.6).

5.1 Data Structures

In this section, we describe how we can translate the concepts specified in the discrete

model into appropriate data structures for implementation in a database system. The discrete

representation of the Moving Balloon Algebra is in fact a high level specification of such data

structures. The design of the data structures is also influenced by the context of the system where

the data structures are to be implemented as well as the efficiency requirements of algorithms to

be supported. We begin with some general requirements of the data structures due to their use in

a database context. Then, we proceed to define data structures for spatial data types and finally

spatiotemporal data types.

1 Our research work on the efficient implementation of topological predicates has been pub-
lished in two journal articles [51, 54].

5.1.1 General Requirements of Database-Compatible Data Structures

Data structures for spatial and spatiotemporal data types have to satisfy a number of

special requirements. First, it is our goal that the data structures implementing the data types

are to be used in a database system to represent attribute data types within some data model

implementation. Thus, data are placed into memory under control of the DBMS. This means

that one should not use main memory pointers in the design, and that the representations should

allows easy movements of the data between secondary and main memory. These requirements

can be fulfilled by implementing each data type using DBMS large objects (LOB) which may

consist of a number of fixed size components and arrays for varying size components. All

references are internal references with respect to a LOB.

Second, our spatial and spatiotemporal data types are set-valued. This requires that a unique

order is defined on the set domains and to store elements in the array in that order. Two spatial or

spatiotemporal values, respectively, are equal if their array representations are equal. This enables

efficient comparisons.

Third, the data structure design is also affected by the requirement of the algorithms. For

instance, in spatial data model, algorithms based on the plane sweep paradigm are essential

for efficient implementation of topological predicates and set operations. These algorithms

requires a data structure with data points or segments in lexicographical order. We describe data

structures for spatial data types in Section 5.1.2. In spatiotemporal data model, the algorithm

for the atinstant operation is the most fundamental, and it is the foundation for implementing

many other operations. Hence, it is important to consider the efficiency of this operation in the

design of the data structures. For this reason, the data structures for spatiotemporal data types are

designed with the temporal unit as the major order such that a search in the temporal domain can

be done efficiently. We describe this aspect in more detail in Section 5.1.3.

5.1.2 Data Structures for Spatial Data Types

At the lowest level, we assume a number system n ensuring robust geometric computation,

for example, by means of rational numbers allowing value representations of arbitrarily, finite

length, or by means of infinite precision numbers. At the next higher level, we introduce

some two-dimensional robust geometric primitives that we assume to be implemented on the

basis of n. The primitives serve as elementary building blocks for all higher-level structures

and contribute significantly to their behavior, performance, and robustness. All objects of

robust geometric primitive types are stored in records. Here, we define the robust geometric

primitive types poi2D and seg2D which correspond the discrete type poi and seg. The type

poi2D incorporates all single, two-dimensional points we can represent on the basis of our robust

number system. That is, this type is defined as

poi2D= {(x,y) x,y E }U{e}

The value e represents the empty object as described in the discrete model and is an element

of all data types. Given two points p, q e poi2D, we assume a predicate "=" (p = q > p.x =

q.x A p.y = q.y) and the lexicographic order relation "<" (p < q <> p.x < q.x V (p.x =

q.x A p.y < q.y)).

The type seg2D includes all straight segments bounded by two endpoints. That is

seg2D = {(p,q) p,q e poi2D, p < q} U {e}

The order defined on the endpoints normalizes segments and provides for a unique rep-

resentation. This enables us to speak of a left endpoint and a right end point of a segment.

The predicates on, in : poi2D x seg2D -+ bool check whether a point is located on a segment

including and excluding its endpoints respectively. The predicates poilntersect, seglntersect :

seg2D x seg2D -+ bool test whether two segments intersect in a point or a segment respectively.

The predicates collinear, equal, disjoint, meet : seg2D x seg2D -+ bool determine whether

two segments lie on the same infinite line, are identical, do not share any point, and touch each

other in exactly one common endpoint respectively. The function len : seg2D -+ real computes

the length of a segment. The type real is our own approximation type for the real numbers and

implemented on the basis of n. The operation poilntersection : seg2D x seg2D -+ poi2D returns

the intersection point of two segments.

The type mbb2D comprises all minimum bounding boxes, that is, axis-parallel rectangles. It

is defined as

mbb2D = {(p, q) p, q E poi2D, p.x < q.x, p.y < q.y} U {f}

Here, the predicate disjoint : mbb2D x mbb2D -+ bool checks whether two minimum

bounding boxes are disjoint; otherwise, they interfere with each other.

At the next higher level, we assume the geometric component data type half min-lltl2D that

introduces halfsegments as the basic implementation components of objects of the spatial data

types line2D and region2D. A halnf m,-itni. which is stored in a record, is a hybrid between a

point and a segment. That is, it has features of both geometric structures; each feature can be

inquired on demand. We define the set of all halfsegments as the component data type

halnCmNrlni2D {(s,d) |s seg2D- {e}, d E bool}

For a halfsegment h = (s, d), the Boolean flag d emphasizes one of the segment's end points,

which is called the dominating point of h. If d = true (d = false), the left (right) end point of

s is the dominating point of h, and h is called left (right) halnf :,in:lt. Hence, each segment s

is mapped to two halfsegments (s, true) and (s,false). Let dp be the function which yields the

dominating point of a halfsegment.

The representation of line2D and region2D objects requires an order relation on halfseg-

ments. For two distinct halfsegments hi and h2 with a common endpoint p, let a be the enclosed

angle such that 0 < a < 180'. Let a predicate rot be defined as follows: rot(hi, h2) is true if, and

only if, hi can be rotated around p through a to overlap h2 in counterclockwise direction. This

enables us now to define a complete order on halfsegments. For two halfsegments hi = (sl, dl)

and h2 = (S2, d2) we obtain:

hi < h2 # dp(hi) < dp(h2) V (case 1)

(dp(h) = dp(h2) A ((-dl A d2) V (case 2a)

(di = d2 A rot(hi,h2)) V (case 2b)

(dl = d2 A collinear(s1,s2) A len(si) < len(S2)))) (case 3)

hih h

2h,

case 1 case 2a case 2b case 3

Figure 5-1. Examples of the order relation on halfsegments: h\ < h2

Examples of the order relation on halfsegments are given in Figure 5-1. Case 1 is exclu-

sively based on the (x,y)-lexicographical order on dominating points. In the other cases the

dominating points of h, and h2 coincide. Case 2a deals with the situation that hi is a right half-

segment and h2 is a left halfsegment. Case 2b handles the situation that hi and h2 are either both

left halfsegments or both right halfsegments so that the angle criterion is applied. Finally, case 3

treats the situation that h, and h2 are collinear. Two halfsegments h, = (sl, dl) and h2 = (s2, d2)

are equal if, and only if, sl = s2 and dl = d2.

We will also need an order relation between a point v E poi2D and a halfsegment h E

ihanlf, iu, mi2)D. We define v < h # v < dp(h) and v = h # v = dp(h). This shows the hybrid

nature of halfsegments having point and segment features.

At the highest level, we have the three complex spatial data types point2D, line2D, and

region2D (see Section 2.1.1 for their intuitive description and [59] for their formal definition).

They are the input data types for topological predicates and are essentially represented as ordered

sequences of elements of variable length. We here ignore additionally stored information about

spatial objects since it is not needed for our purposes. The type of the elements is poi2D for

point2D objects, hinolf, if ,i' m2D for line2D objects, and attributed half mc-tni: l (see below) for

region2D objects. Ordered sequences are selected as representation structures, since they directly

and efficiently support parallel traversals (Section 5.2.1.1) and the plane sweep paradigm (see

Section 5.2.1.3).

We now have a closer look at the type definitions. Let No := N U {0}. We define the type

point2D as

point2D= {{(p,...,pn) n e No,V1
Since n = 0 is allowed, the empty sequence () represents the empty point2D object.

The spatial data type line2D is defined as

line2D= {(h1,...,h2n)

(i) n E No

(ii) V 1 < i < 2n : hi e holf\, v, u m2D

(iii) Vhi = (si,di) e {Jh,...,h2n} 3hj = (sj,dj) e {hi,...,h2n},

1
(iv) V1 < i < 2n: hi < hi+1

(v) Vhi = (si,di),hj = (sj,dj) e {hi,..., h2n},i 4 j: equal(si,sj) V
disjoint(si,sj) V meet(si,sj)}

The value n is equal to the number of segments of a line2D object. Since each segment is

represented by a left and a right halfsegment (condition (iii)), a line2D object has 2n halfseg-

ments. Since n = 0 is allowed (condition (i)), the empty sequence () represents the empty line2D

object. Condition (iv) expresses that a line2D object is given as an ordered halnfc-,i:rntll sequence.

Condition (v) requires that the segments of two distinct halfsegments are either equal (this only

holds for the left and right halfsegments of a segment), disjoint, or meet.

The internal representation of region2D objects is similar to that of line2D objects. But for

each halfsegment, we also need the information whether the interior of the region is above/left or

below/right of it. We denote such a halfsegment as attributed halnf-c.i:rlnt. Each element of the

sequence consists of a halfsegment that is augmented by a Boolean flag ia (for "interior above").

If ia = true holds, the interior of the region is above or, for vertical segments, left of the segment.

The type region2D is defined as

region2D

(i)
(ii)
(iii)

{((hi, iai),..., (h2n,ia2n))
n ENo

V1 < i < 2n : hi E half',t 'm ui2D, iai e bool

Vhi = (si,di) e {hl,...,h2n}
3hj = (sj,dj) {hli,..., h2n}, 1 < i < j < 2n :

si = sj A di = -dj A iai = iaj

(iv) V1 < i < 2n:hi < hi+

Condition (v) refers to some additional topological constraints that all components (faces)

of a region must be edge-disjoint from each other and that for each face its holes must be located

inside its outer polygon, be edge-disjoint to the outer polygon, and be edge-disjoint among each

other. We mention these constraints for reasons of completeness and assume their satisfaction.

As an example, Figure 5-2 shows a line2D object L (with two components (blocks)) and

a region2D object R (with a single face containing a hole). Both objects are annotated with

segment names si. We determine the halfsegment sequences of L and R and let hi = (si, true) and

h( = (si,false) denote the left halfsegment and right halfsegment of a segment si respectively. For
L we obtain the ordered halfsegment sequence

L=(h, h, h, h, h, hr,, hl, hr, h', h h', hl,, h', h r, hl, hr, hl )
For R we obtain the following ordered sequence of attributed halfsegments (t = true,

f false):
R= (h t), (h f), (h f), (hl4, t), (h t), (h t), (h', f), (hl6, f), (h t), (hr, f),
(hr', f), (h t))

Since inserting a halfsegment at an arbitrary position needs O(n) time, in our implementa-

tion we use an AVL-tree embedded into an array whose elements are linked in halfsegment order.

An insertion then requires O(log n) time.

S 7 S9 S2
S 2
S4
s, ss

L R

Figure 5-2. A line2D object L and a region2D object R

If we take into account that the segments of a line2D object as well as the segments of a

region2D object are not allowed to intersect each other or touch each other in their interiors

according to their type specifications, the definition of the order relation on halfsegments seems

to be too intricate. If, in Figure 5-1, we take away all subcases of case 1 except for the upper left

subcase as well as case 3, the restricted order relation can already be leveraged for complex lines

and complex regions. In case that all spatial objects of an application space are defined over the

same realm2 [30, 57], the restricted order relation can also be applied for a parallel traversal of

the sequences of two (or more) realm-based line2D or region2D objects. Only in the general

case of intersecting spatial objects, the full order relation on halfsegments is needed for a parallel

traversal of the objects' halfsegment sequences.

5.1.3 Data Structures for Spatiotemporal Data Types

The discrete version of the spatiotemporal data types presented in Section 4.2 and 4.3

offers a precise basis for the design of data structures which form the basis for describing

the algorithmic scheme employed for spatiotemporal predicate evaluations (Section 5.3). In

fact, the discrete model is a high level specification of such data structures. In this section, we

2 A realm provides a discrete geometric basis for the construction of spatial objects and con-
sists of a finite set of points and non-intersecting segments, called realm objects. That is, a seg-
ment inserted into the realm is intersected and split according to a special strategy with all realm
objects. All spatial objects like complex points, complex lines, and complex regions are then
defined in terms of these realm objects. Hence, all spatial objects defined over the same realm
become acquainted with each other beforehand.

describe how we can translate the discrete specification of the basic spatiotemporal data types and

spatiotemporal balloon data types into appropriate data structures for implementation.

5.1.3.1 Data structures for basic spatiotemporal data types

A moving point mp E mapping(upoint) is represented as a record containing some global

object information fields and an array of units ordered by their time interval. That is,

mp = (n, s,objpbb, (upi,...,upn))

= (n, (tii,..., tik), ((x1,yI), (Xu, u)), ((unit-pbbi,ci, i, vi),..., (unit_pbbn, cn,in,vn)))
The value n stores the number of units of mp. The value Is keeps the lifespan of mp, which is

given as the subarray of disjoint time intervals tij, 1 < j < k, k < n, for which mp is defined. The

lifespan is obtained by merging the time intervals of all units. Adjacent unit intervals are then

fused to a single time interval. For the evaluation of some operations it can be helpful to use an

approximation of mp. We use the object projection bounding box objpbb for this purpose, which

represents the minimum, axis-parallel rectangle with respect to all points in the 2D space that at

some time instant belong to mp.

At the end of mp, its unit sequence is stored in a subarray containing n unit points upi

with 1 < i < n. Each unit consists of four components. The first component contains the unit

projection bounding box (by analogy with the object projection bounding box). The second

component stores the number of moving unit single point in the unit. The third component is

the unit interval ik = (k, rk, ICk, rck) with 1 < k < n where lk, rk E instant denote the left (start)

and right (end) time instant of ik and the two Boolean flags Ick and rck indicate whether ik is left-

closed and/or right-closed. We require that ik < ii for all 1 < k < 1 < n where the "<"-relationship

on intervals is defined as:

ik < ii = rdisjoint(ik, i) V r_adjacent(ik, i)
The last component describes the unit function for a unit point. It is given by a sequence of

represents the function fj(t) = (xj(t),yj(t)) = (xj,o + xj, t,yj,o + Yj,lt) with 1 < j < m. Such

functions describe a linearly moving single point. Thus, each quadruple corresponds to an

element of the set MPoi, and the sequence vk corresponds to the an element of the type point

defined in the discrete model (Section 4.2.2.1). For uniqueness and minimality of representation

radjacent(ik, ii) = (Vk # V1)

The reason for this requirement is that we can merge two adjacent units with the same unit

function representation into a single unit over the merged time interval.

The representation of a moving line or a moving region is in principle the same as for

moving points. But due to the higher complexity of these types, the unit function of a uline

or a region value is more complex. It essentially describes a line or a region whose vertices

move linearly (i.e., whose vertex positions are linear functions of time), such that for all instants

in the unit interval the evaluation of the vertex functions yields a correct line or region value

respectively.

In general, a uline unit consists of a sequence of moving unit segments where each moving

unit segment is an element of the set MSeg defined in Section 4.2.2.2. A moving unit segment

ms = (u, v) with u, vE MPoi is a pair of moving unit single points that are coplanar in the

3D space. Consequently, a moving unit segment that is restricted to a time interval forms a

trapezium, or, in the degenerate case, a triangle in the 3D space. Rotations of segments are not

permitted since this leads to curvilinear lateral surfaces (viewed from the 3D perspective) whose

computational treatment is rather difficult (see Figure 4-4 and Section 4.2.2.2). The data structure

of a moving line ml E mapping(uline) and a moving region mr E mapping(uregion) can now be

described as follows:

ml = (n, s,objpbb, ul,...,uln))

= (n, (til,.. .,tik), ((xl, ), (Xuyu)), ((unitpbbl,cl, i,vi), ..., (unitpbbn, cn,in,n)))

mr = (n, Is,obj pbb, (url,..., urn))

= (n, (til,... tik), ((x, Y), (Xu, Yu)), ((unit-pbbl, c, ii,vi),... (unit-_pbbn, cn, in, Vn)))
The values n, Is, objpbb, tij, unitpbbl, and il have the same meaning and properties as for

moving points. In particular, we have the same order on unit intervals as for moving points, and

if two consecutive unit intervals are adjacent, their unit function representations are different.

The value cl denotes the number of moving unit segments in each unit. What remains to be

explained is the structure of the unit function vi. In both cases of the moving line ml and the

moving region mr, we take the unstructured approach by representing the unit function vi as a

sequence of moving unit segments msk with 1 < k < cl for a moving line or with 3 < k < cl for

a moving region (since a region must be composed from a minimum of 3 segments). Thus, we

have vi = (msi,..., msc ). We can take this unstructured approach instead of a structured one

(with intermediate structures such as moving blocks for a moving line or moving face and hole

cycles for a moving region) because, at the spatial level, we have devised methods for validating

and computing the structure of an unstructured line or region object (which are based directly

on segments). For example, given a set of segments, we can validate whether it is a valid line

object by using a plane sweep process to check for intersecting or overlapping segments, or we

can validate whether it is a valid region object by using our cycle walk algorithm as presented

in [41]. This eliminates the need to represent intermediate structures such as blocks for a line

object or face and hole cycles for a region object since these structures are generally used for

validation purposes, and if they are needed, they can be computed from the set of segments by

using a similar flavor of our validation algorithms. Another important difference between the

representation of a moving line and that of a moving region is that a moving unit segment msk

in the case of a moving region contains an additional information ia which is a Boolean value

indicating whether the interior of the region is above the segment at all time instants of the unit

interval. This allows one to derive a region data structure representation at any time instant

of the unit interval since such a data structure are composed of attributed halfsegments (see

Section 5.1.2) which can be constructed by using this information.

5.1.3.2 Data structures for balloon and spatiotemporal balloon data types

Spatiotemporal balloon data types are defined based on basic spatiotemporal data types.

Consequently their data structures are also based on those of basic spatiotemporal data types. The

data structure of a balloon object b E mapping(uct, up) can be described as follows:

b = (t,ls,obj pbb,h,p)

The value t is the time instant of the knowledge that defines the balloon object. This instant

is typically the time instant of the last known position or extent of the moving object or the

time instant when the future prediction is produced. The components Is and objpbb represent

the combined/merged lifespan and projection bounding box respectively of both the historical

movement and the predicted movement of the balloon object. The component h represents

the historical movement which is of the type mapping(uca) and has a data structure of the

corresponding basic spatiotemporal data type. Similarly, the component p describes the predicted

movement of type mapping(up) and also has a data structure of the corresponding basic

spatiotemporal data type. As specified in the discrete model, a restriction between h and p must

be preserved such that the lifespan of h must precede that of p.

For a moving balloon object mb E mballoon(uc, up), its data structure is slightly more

complex than that of a balloon object since now we need to represent a sequence of predicted

movements. The data structure of mb can be described as follows:

mb = (n, Is, obj_pbb, h, ((ti,pl),..., (tn,pn)))

The value n stores the number of predicted movements available. The components Is and

objpbb represent the combined/merged lifespan and projection bounding box respectively

of the historical movement and all of the predicted movements. The component h represents

the development of the historical movement. Since we assume that this development obeys the

historical accumulation phenomenon stated in the abstract and discrete models, we can represent

this development by using the data structure of a corresponding basic spatiotemporal data type

and provide a special temporal instantiation function th (Section 4.3.2) to obtain any historical

movement knowledge at any instant in the past. In the last component, each of the tuple (tk pk)

with 0 < k < n represents a predicted movement pk produced at time tk. Note that the predicted

movements are optional. This is the case when k = 0 for which the sequence of predicted

movements is empty. In such case, the moving balloon object is nothing more than a basic

moving object. Hence, a moving balloon object can be classified as a high level, generalized

version of a moving object with the ability to retain the development over time of the knowledge

of the past movement and predicted movements.

5.2 Algorithms for Topological Predicates on Complex Spatial Objects

In the implementation of topological predicates on complex spatial objects, we are espe-

cially interested in answering two kinds of queries. Given two objects A and B of any complex

spatial data type point2D, line2D, or region2D, we can pose at least two kinds of topological

queries: (1) "Do A and B satisfy the topological predicate p?" and (2) "What is the topological

predicate p between A and B?". Only query 1 yields a Boolean value, and we call it hence a

vn ii ifli, tii query. This kind of query is of large interest for the query processing of spatial joins

and spatial selections in spatial databases and GIS. Query 2 returns a predicate (name), and we

call it hence a determination query. This kind of query is interesting for spatial reasoning and all

applications analyzing the topological relationships of spatial objects. It is especially important in

the implementation of spatiotemporal predicates as we will see later.

Our goal in this section is to develop and present efficient implementation strategies for

topological predicates between all combinations of the three complex spatial data types point2D,

line2D, and region2D. We distinguish two phases of predicate execution: In an exploration

phase (Section 5.2.2), a plane sweep scans a given configuration of two spatial objects, detects

all topological events (like intersections), and records them in so-called topological feature

vectors. These vectors serve as input for the evaluation phase (Section 5.2.3) which analyzes

these topological data and determines the Boolean result of a topological predicate (query 1)

or the kind of topological predicate (query 2). To speed up the evaluation process, we also

present, in Section 5.2.4, two fine-tuned and optimized approaches of matrix thinning for

predicate verification and minimum cost decision trees for predicate determination. The two-

phase approach provides a direct and sound interaction and synergy between conceptual work

(9-intersection model) and implementation (algorithmic design). Interface methods for accessing

our implementation of this concept is given in Section 5.2.5. We begin by presenting some basic

algorithmic concepts needed for the exploration algorithms in Section 5.2.1.

5.2.1 Basic Algorithmic Concepts

In this section, we describe three algorithmic concepts that serve as the foundation of the

exploration nlgiiliuid in Section 5.2.2. These concepts are the parallel object traversal (Sec-

tion 5.2.1.1), overlap numbers (Section 5.2.1.2), and the plane sweep paradigm (Section 5.2.1.3).

Parallel object traversal and overlap numbers are employed during a plane sweep. We will not

describe these three concepts in full detail here, since they are well known methods in Compu-

tational Geometry [3] and spatial databases [33]. However, we will focus on the specialties of

these concepts in our setting, including some improvements compared to standard plane sweep

implementations. These comprise a smoothly integrated handling of general (that is, intersecting)

and realm-based (that is, non-intersecting) pairs of spatial objects. An objective of this section is

also to introduce a number of auxiliary operations and predicates that make the description of the

exploration algorithms later much easier and more comprehensible.

5.2.1.1 Parallel object traversal

For a plane sweep, the representation elements (points or segments) of the spatial operand

objects have usually to be merged together and sorted afterwards according to some order

relation (for example, the order on x-coordinates). This initial merging and sorting is rather

expensive and requires O(n log n) time, if n is the number of representation elements of both

operand objects. Our approach avoids this initial oirling. since the representation elements of

point2D, line2D, and region2D objects are already stored in the order we need (point order or

halfsegment order). We also do not have to merge the object representations, since we can deploy

a parallel object traversal that allows us to traverse the point or halfsegment sequences of both

operand objects in parallel. Hence, by employing a cursor on both sequences, it is sufficient to

check the point or halfsegment at the current cursor positions of both sequences and to take the

lower one with respect to the point order or halfsegment order for further computation.

If the operand objects have already been intersected with each other, like in the realm

case [30], the parallel object traversal has only to operate on two static point or halfsegment

sequences. But in the general case, intersections between both objects can exist and are detected

during the plane sweep. A purely static sequence structure is insufficient in this case, since

detected intersections have to be stored and handled later during the plane sweep. In order

to avoid a change of the original object representations, which would be very expensive and

only temporarily needed, each object is associated with an additional and temporary dynamic

sequence, which stores newly detected points or halfsegments of interest. Hence, our parallel

object traversal has to handle a static and a dynamic sequence part for each operand object

and thus four instead of two point or halfsegment sequences. It returns the smallest point or

halfsegment from the four current cursor positions. We will give an example of the parallel object

traversal when we discuss our plane sweep approach in Section 5.2.1.3.

To simplify the description of this parallel scan, two operations are provided. Let 01 E o and

02 E p with a, 3 E {point2D, line2D, region2D}. The operation \c I 1fi [iri$$O1, 02, object, status) selects the first point or halfsegment of each of the operand objects 01 and 02 and positions a logical pointer on both of them. The parameter object with a possible value out of the set {none, first, second, both} indicates which of the two object representations contains the smaller point or halfsegment. If the value of object is none, no point or halfsegment is selected, since 01 and 02 are empty. If the value is first (second), the smaller point or halfsegment belongs to 01 (02). If it is both, the first point or halfsegment of 01 and 02 are identical. The parameter status with a possible value out of the set {endof-none, endof-first, endofsecond, endofboth} describes the state of both object representations. If the value of status is endofnone, both objects still have points or halfsegments. If it is endof-first (endofsecond), 01 (02) is exhausted. If it is endofboth, both object representations are exhausted. The operation selectnext(Oi, 02, object, status), which has the same parameters as select-first, searches for the next smallest point or halfsegment of 01 and 02. Two points (halfsegments) are compared with respect to the lexicographic (halfsegment) order. For the comparison between a point and a halfsegment, the dominating point of the halfsegment and hence the lexicographic order is used. If before this operation object was equal to both, selectnext moves forward the logical pointers of both sequences; otherwise, if object was equal to first (second), it only moves forward the logical pointer of the first (second) sequence. In contrast to the first operation, which only has to consider the static sequence part of an object, this operation also has to check the dynamic sequence part of each object. Both operations together allow one to scan in linear time two object representations like one ordered sequence. 5.2.1.2 Overlap numbers The concept of overlap numbers is exclusively needed for the computation of the topological relationships between two region2D objects. The reason is that we have to find out the degree of overlapping of region parts. Points in the plane that are shared by both region2D objects obtain the overlap number 2. Points that are shared only by one of the objects obtain the overlap number 1. All other points are outside of both objects and obtain the overlap number 0. In our implementation, since a segment sh of an attributed halfsegment (h, iah) = ((sh, dh), iah) of a region object separates space into two parts, an interior and an exterior one, during a plane sweep each such segment is associated with a segment class which is a pair (m/n) of overlap numbers, a lower (or right) one m and an upper (or left) one n (m, n E No). The lower (upper) overlap number indicates the number of overlapping region2D objects below (above) the segment. In this way, we obtain a segment ( n \ \ifi, niit of two region2D objects and speak about (m/n)- segments. Obviously, 0 < m, n < 2 holds. Of the nine possible combinations only seven describe valid segment classes. This is because a (0/0)-segment contradicts the definition of a complex region2D object, since then at least one of both regions would have two holes or an outer cycle and a hole with a common border segment. Similarly, (2/2)-segments cannot exist, since then at least one of the two regions would have a segment which is common to two outer cycles of the object. Hence, possible (m/n)-segments are (0/1)-, (0/2)-, (1/0)-, (1/1)-, (1/2)-, (2/0)-, and (2/1)-segments. Figure 5-3 gives an example. 5.2.1.3 Plane sweep The plane sweep technique [3, 55] is a well known algorithmic scheme in Computational Geometry. Its central idea is to reduce a two-dimensional geometric problem to a simpler one- dimensional geometric problem. A vertical sweep line traversing the plane from left to right 0 11 1 -0------ Figure 5-3. Example of the segment classification of two region2D objects stops at special event points which are stored in a queue called event point schedule. The event point schedule must allow one to insert new event points discovered during processing; these are normally the initially unknown intersections of line segments. The state of the intersection of the sweep line with the geometric structure being swept at the current sweep line position is recorded in vertical order in a data structure called sweep line status. Whenever the sweep line reaches an event point, the sweep line status is updated. Event points which are passed by the sweep line are removed from the event point schedule. Note that, in general, an efficient and fully dynamic data structure is needed to represent the event point schedule and that, in many plane-sweep algorithms, an initial sorting step is needed to produce the sequence of event points in (x, y)-lexicographical order. In our case, the event points are either the points of the static point sequences of point2D objects or the (attributed) halfsegments of the static halfsegment sequences of line2D (region2D) objects. This especially holds and is sufficient for the realm case. In addition, in the general case, new event points are determined during the plane sweep as intersections of line segments; they are stored as points or halfsegments in the dynamic sequence parts of the operand objects and are needed only temporarily for the plane sweep. As we have seen in Section 5.2.1.1, the concepts of point order, halfsegment order, and parallel object traversal avoid an expensive initial sorting at the beginning of the plane sweep. We use the operation getevent to provide the element to which the logical pointer of a point or halfsegment sequence is currently pointing. The Boolean predicate lookahead tests whether the dominating points of a given halfsegment and the next halfsegment after the logical pointer of a given halfsegment sequence are equal. Several operations are needed for managing the sweep line status. The operation newsweep creates a new, empty sweep line status. If a left (right) halfsegment of a line2D or region2D object is reached during a plane-sweep, the operation addleft (delright) stores (removes) its segment component into (from) the segment sequence of the sweep line status. The predicate coincident checks whether the just inserted segment partially coincides with a segment of the other object in the sweep line status. The operation setattr (get-attr) sets (gets) an attribute for (from) a segment in the sweep line status. This attribute can be either a Boolean value indicating whether the interior of the region is above the segment or not (the "Interior Above" flag), or it can be an assigned segment classification. The operation get-predattr yields the attribute from the predecessor of a segment in the sweep line status. The operation predexists (common pointexists) checks whether for a segment in the sweep line status a predecessor according to the vertical y-order (a neighbored segment of the other object with a common end point) exists. The operation predofp searches the nearest segment below a given point in the sweep line status. The predicate currentexists tests whether such a segment exists. The predicate poion-seg (poiin-seg) checks whether a given point lies on (in) any segment of the sweep line status. 2 2 S, 0 0 s Figure 5-4. Changing overlap numbers after an intersection. Intersections of line segments stemming from two lines2D objects, two region2D objects, or a line2D object and a region2D object are of special interest, since they indicate topological changes. If two segments of two line2D objects intersect, this can, for example, indicate a proper intersection, or a meeting situation between both segments, or an overlapping of both segments. If a segment of a line2D object intersects a segment of a region2D object, the former segment can, for example, "enter" the region, "leave" the region, or overlap with the latter segment. Overlap numbers can be employed here to determine entering and leaving situations. If segments of two region2D objects intersect, this can, for example, indicate that they share a common area and/or a common boundary. In this case, intersecting line segments have especially an effect on the overlap numbers of the segments of both region2D objects. In Section 5.2.1.2 we have tacitly assumed that any two segments from both region2D objects are either disjoint, or equal, or meet solely in a common end point. Only if these topological constraints are satisfied, we can use the concepts of overlap numbers and segment classes for a plane sweep. But the general case in particular allows intersections. Figure 5-4 shows the problem of segment classes for two intersecting segments. The segment class of s [s2] left of the intersection point is (0/1) [(1/2)]. The segment class of si [s2] right of the intersection point is (1/2) [(0/1)]. That is, after the intersection point, seen from left to right, s, and s2 exchange their segment classes. The reason is that the topology of both segments changes. Whereas, to the left of the intersection, s, (s2) is outside (inside) the region to which s2 (sl) belongs, to the right of the intersection, sl (s2) is inside (outside) the region to which s2 (sl) belongs. In order to be able to make the needed topological detections and to enable the use of overlap numbers for two general regions, in case that two segments from two different regions intersect, partially coincide, or touch each other within the interior of a segment, we pursue a splitting strategy that is executed during the plane sweep "on the fly". If segments intersect, they are temporarily split at their common intersection point so that each of them is replaced by two segments (that is, four halfsegments) (Figure 5-5A). If two segments partially coincide, they are split each time the endpoint of one segment lies inside the interior of the other segment. Depending on the topological situations, which can be described by Allen's thirteen basic relations on intervals [1], each of the two segments either remains unchanged or is replaced by up to three segments (that is, six halfsegments). From the thirteen possible relations, eight relations (four pairs of symmetric relations) are of interest here (Figure 5-5B). If an endpoint of one segment touches the interior of the other segment, the latter segment is split and replaced by two segments (that is, four halfsegments) (Figure 5-5C). This splitting strategy is numerically stable and thus feasible from an implementation standpoint since we assume numerically 1 2 1 2 3 1 2 1 2 1 2 --------- 1 2 A B C Figure 5-5. Splitting of segments. A) two intersecting segments. B) two partially coinciding segments (without symmetric counterparts). C) A segment whose interior is touched by another segment. Digits indicate part numbers of segments after splitting. robust geometric computation that ensures topological consistency of intersection operations. Intersecting and touching points can then be exactly computed, lead to representable points, and are thus precisely located on the intersecting or touching segments. However, as indicated before, the splitting of segments entails some algorithmic effort. On the one hand, we want to keep the halfsegment sequences of the line2D and region2D objects unchanged, since their update is expensive and only temporarily needed for the plane sweep. On the other hand, the splitting of halfsegments has an effect on these sequences. As a compromise, for each line2D or region2D object, we maintain its "static" representation, and the halfsegments obtained by the splitting process are stored in an additional "dynamic" halfsegment sequence. The dynamic part is also organized as an AVL tree which is embedded in an array and whose elements are linked in sequence order. Assuming that k splitting points are detected during the plane sweep, we need O(k) additional space, and to insert them requires O(klog k) time. After the plane sweep, this additional space is released. A B Figure 5-6. Sweep line status. A) Before the splitting (s4 to be inserted). B) After the splitting. The vertical dashed line indicates the current position of the sweep line. Table 5-1. Static and dynamic halfsegment sequences of the regions R1 and R2 in Figure 5-6. RI dynamic sequence part (h41, f) (h (42 ) RI static sequence part (h t) (h2, f) (h3, t) (h, f) (h t) (h 2,f) (h4, f) (hs,, f) (h,,, f) (h t) R2 static sequence part (h/ t) (hV2, f) (h2, f) (h3, f) (h3,f) (h ,t) R2 dynamic sequence part (hl, t) (h1,2, t) (h1,2 t) To illustrate the splitting process in more detail, we consider two region2D objects RI and R2. In general, we have to deal with the three cases in Figure 5-5. We first consider the case that the plane sweep detects an intersection. This leads to a situation like in Figure 5-6A. The two static and the two dynamic halfsegment sequences of R1 and R2 are shown in Table 5-1. Together they form the event point schedule of the plane sweep and are processed by a parallel object traversal. Before the current position of the sweep line (indicated by the vertical dashed line in Figure 5-6), the parallel object traversal has already processed the attributed halfsegments (h1 ,t), (h2,f), (hl ,t), and (hl2,f) in this order. At the current position of the sweep line, the parallel object traversal encounters the halfsegments (h3, t) and (hl4, f). For each left halfsegment visited, the corresponding segment is inserted into the sweep line status according to the y-coordinate of its dominating point and checked for intersections with its direct upper and lower neighbors. In our example, the insertion of s4 leads to an intersection with its upper neighbor v1. This requires segment splitting; we split v, into the two segments v1,1 and v1,2 and s4 into the two segments s4,1 and S4,2. In the sweep line status, we have to replace v1 by vi,i and S4 by s4,1 (Figure 5-6B). The new halfsegments (h 4,1, f), (h4,2, f), and (h4,2, f) are inserted into the dynamic halfsegment sequence of R1. Into the dynamic halfsegment sequence of R2, we insert the halfsegments (h1, t), (h1,2 t), and (h1,2, t). We need not store the two halfsegments (h,1, f) and (h1 t) since they refer to the "past" and have already been processed. On purpose we have accepted a little inconsistency in this procedure, which can fortunately be easily controlled. Since, for the duration of the plane sweep, s4 (v1) has been replaced by s4,1 (vi,l) and s4,2 (V1,2), the problem is that the static sequence part of Ri (R2) still includes the now invalid halfsegment (hr4, f) ((hl, t)), which we may not delete (see Figure 5-6B). However, this is not a problem due to the following observation. If we find a right halfsegment in the dynamic sequence part of a region2D object, we know that it stems from splitting a longer, collinear, right halfsegment that is stored in the static sequence part of this object, has the same right end point, and has to be skipped during the parallel object traversal. For the second and third case in Figure 5-5, the procedure is the same but more splits can occur. In case of overlapping, collinear segments, we obtain up to six new halfsegments. In case of a touching situation, the segment whose interior is touched is split. 5.2.2 The Exploration Phase for Collecting Topological Information For a given scene of two spatial objects, the goal of the exploration phase is to discover appropriate topological information that is characteristic and unique for this scene and that is suitable both for verification queries (query type 1) and determination queries (query type 2). Our approach is to scan such a scene from left to right by a plane sweep and to collect topological data during this traversal that later in the evaluation phase helps us confirm, deny, or derive the topological relationship between both objects. From both phases, the exploration phase is the computationally expensive one since topological information has to be explicitly derived by geometric computation. Our research shows that it is unfavorable to aim at designing a universal exploration algorithm that covers all combinations of spatial data types. This has three main reasons. First, each of the data types point2D, line2D, and region2D has very type-specific, well known properties that are different from each other (like different dimensionality). Second, for each combination of spatial data types, the topological information we have to collect is very specific and especially different from all other type combinations. Third, the topological information we collect about each spatial data type is different in different type combinations. Therefore, using the basic algorithmic concepts of Section 5.2.1, in this section, we present exploration algorithms for all combinations of complex spatial data types. Between two objects of types point2D, line2D, or region2D, we have to distinguish six different cases, if we assume that the first operand has an equal or lower dimension than the second operand3 All algorithms except for the pt'ii2D/point2D case require the plane sweep technique. Depending on the types of spatial objects involved, a boolean vector VF consisting of a special set of topologicall flags" is assigned to each object F. We call it a topological feature vector. Its flags are all initialized to false. Once certain topological information about an object has been discovered, the corresponding flag of its topological feature vector is set to true. Topological flags represent topological facts of interest. We obtain them by analyzing the topological intersections between the exterior, interior and boundary of a complex spatial object with the corresponding components of another complex spatial object according to the 9-intersection matrix (Figure 2-2A). That is, the concept is to map the matrix elements of the 9-intersection matrix, which are predicates, into a topological feature vector and to eliminate redundancy given by symmetric matrix elements. For all type combinations, we aim at minimizing the number of topological flags of both spatial argument objects. In symmetric cases, only the first object gets the flag. The topological feature vectors are later used in the evaluation phase for predicate matching. Hence, the selection of topological flags is highly motivated by the requirements of the evaluation phase (Section 5.2.3,[51]). Let P(F) be the set of all points of a point2D object F, H(F) be the set of all (attributed) halfsegments [including those resulting from our splitting strategy] of a line2D (region2D) object F, and B(F) be the set of all boundary points of a line2D object F. For f E H(F), let f.s denote its segment component, and, if F is a region2D object, letf.ia denote its attribute component. The definitions in the next subsections make use of the operations on robust geometric primitives and halfsegments (Section 5.1.2). 3 If, in the determination query case, a predicate p(A,B) has to be processed, for which the dimension of object A is higher than the dimension of object B, we process the converse predicate pCOnV(B,A) where pCOnV has the transpose of the 9-intersection matrix (see Figure 2-2A) of p. 5.2.2.1 The exploration algorithm for the point2D/point2D case The first and simplest case considers the exploration of topological information for two point2D objects F and G. Here, the topological facts of interest are whether (i) both objects have a point in common and (ii) F (G) contains a point that is not part of G (F). Hence, both topological feature vectors VF and VG get the flag poi_disjoint. But only VF in addition gets the flag poishared since the sharing of a point is symmetric. We obtain (the symbol ":,#>" means "equivalent by definition"): Definition 5.1 : Let F, G E point2D, and let VF and VG be their topological feature vectors. Then (i) vFpoi-shared] : 3 f e P(F) 3g e P(G) : f = g (ii) VFpoidisiui1] : E 3f e P(F) Vg e P(G) : f 4 g (iii) VG[poi-divi,,i1] :@ 3g e P(G) Vf e P(F) :f / g For the computation of the topological feature vectors, a plane sweep is not needed; a parallel traversal suffices, as the algorithm in Figure 5-7 shows. The while-loop terminates if either the end of one of the objects has been reached or all topological flags have been set to true (lines 7 and 8). In the worst case, the loop has to be traversed I + m times where 1 (m) is the number of points of the first (second) point2D object. Since the body of the while-loop requires constant time, the overall time complexity is O(1 + m). 5.2.2.2 The exploration algorithm for the point2D/line2D case In case of a point2D object F and a line2D object G, at the lowest level of detail, we are interested in the possible relative positions between the individual points of F and the halfsegments of G. This requires a precise understanding of the definition of the boundary of a line2D object, as it has been given in [59]. It follows from this definition that each boundary point of G is an endpoint of a (half)segment of G and that this does not necessarily hold vice versa, as Figure 5-8A indicates. The black segment endpoints belong to the boundary of G, since exactly one segment emanates from each of them. Intuitively, they "bound" G. In contrast, the 01 algorithm ExplorePoint2DPoint2D 02 input: point2D objects F and G, topological feature 03 vectors VF and VG initialized with false 04 output: updated vectors VF and VG 05 begin 06 ', /, i- ii,\i(F, G, object, status); 07 while status = endofnone and not (F [poidii\ 'iiil] 08 and VG poi_ di\tii il] and vF [poishared]) do 09 if object =first then VF [poidii\'ii 111 := true 10 else if object = second then VG poidi\iit iii := true 11 else /* object = both */ 12 VF[poishared] := true; 13 endif 14 select Jext(F, G, object, status); 15 endwhile; 16 if status = endof-first then VG[poidi\it'ii'] := true 17 else if status = end ofsecond then 18 VF poidi\_liiiiu] := true 19 endif 20 end ExplorePoint2DPoint2D. Figure 5-7. Algorithm for computing the topological feature vectors for two point2D objects grey segment endpoints belong to the interior of G, since several segments emanate from each of them. Intuitively, they are "connector points" between different segments of G. G m G G Fm Fm A B C Figure 5-8. Boundary point intersections. A) Boundary points (in black) and connector points (in grey) of a line2D object. B) A scenario where a boundary point of a line2D object exists that is unequal to all points of a point2D object. C) A scenario where this is not the case. The following argumentation leads to the needed topological flags for F and G. Seen from the perspective of F, we can distinguish three cases since the boundary of F is empty [59] and the interior of F can interact with the exterior, interior, or boundary of G. First, (the interior of) a point f of F can be disjoint from G (flag poi_disjoint). Second, a point f can lie in the interior of a segment of G (flag poioninterior). This includes an endpoint of such a segment, if the endpoint is a connector point of G. Third, a point f can be equal to a boundary point of G (flag poionbound). Seen from the perspective of G, we can distinguish four cases since the boundary and the interior of G can interact with the interior and exterior of F. First, G can contain a boundary point that is unequal to all points in F (flag bound-poidisjoint). Second, G can have a boundary point that is equal to a point in F. But the flag poionbound already takes care of this situation. Third, the interior of a segment of G (including connector points) can comprehend a point of F. This situation is already covered by the flag poioninterior. Fourth, the interior of a segment of G can be part of the exterior of F. This is always true since a segment of G represents an infinite point set that cannot be covered by the finite number of points in F. Hence, we need not handle this as a special situation. Formally, we define the semantics of the topological flags as follows: Definition 5.2 : Let F E pt'im2lD, G E line2D, and VF and VG be their topological feature vectors. Then, (i) VFpoidisi,,i1u] :> 3f e P(F) Vg E H(G) : -on(f,g.s) (ii) vF poioninterior] : 3 f e P(F) 3g E H(G) Vb e B(G) : on(f,g.s) A f 4 b (iii) vF[poionbound] : 3 f e P(F) 3g e B(G): f =g (iv) vG[boundpoi_diiiiu] :> g 3g e B(G) Vf E P(F) : f g Our algorithm for computing the topological information for this case is shown in Figure 5- 9. The while-loop is executed until the end of the line2D object (line 9) and as long as not all topological flags have been set to true (lines 10 to 11). The operations '. l tlrfirst and select-next compare a point and a halfsegment according to the order relation defined in Section 5.1.2 in order to determine the next elements) to be processed. If only a point has to be processed (line 12), we know that it does not coincide with an endpoint of a segment of G and hence not with a boundary point of G. But we have to check whether the point lies in the interior of a segment in the sweep line status structure S. This is done by the search operation poiinseg on S (line 13). If this is not the case, the point must be located outside the segment (line 14). If only a halfsegment 01 algorithm ExplorePoint2DLine2D 02 input: point2D object F and line2D object G, 03 topological feature vectors VF and VG 04 initialized with false 05 output: updated vectors VF and VG 06 begin 07 S := newsweep(); lastdp := e; 08 ', /, i- ,ii i(F, G, object, status); 09 while status 4 end ofsecond and status 4 end ofiboth and 10 not (VF [poi_di\itiiii] and VF [poion_interior] and 11 VF[poionibound] and VG[boundpoi _di\iiii]) do 12 if object =first then p := getevent(F); 13 if poiinseg(S, p) then vF [poioninterior] := true 14 else VF poidi\ it'ii] := true endif 15 else if object = second then 16 h := getevent(G); /* h = (s, d) */ 17 if d then addleft(S, s) else del_rigln(S, s) endif; 18 if dp(h) 7 lastdp then lastdp := dp(h); 19 if not lookahead(h, G) then 20 vG[boundpoi_di\iiim] := true 21 endif 22 endif 23 else /* object = both */ 24 h := getevent(G); /* h = (s, d) */ 25 if d then addleft(S, s) else del_rigl,(S, s) endif; 26 last_dp := dp(h); 27 if lookahead(h, G) then 28 VF poioninterior] := true 29 else VF [poion-bound] := true endif 30 endif 31 select_next(F, G, object, status); 32 endwhile; 33 if status = end ofsecond then 34 vF[poi_di\iiim] := true 35 endif 36 end ExplorePoint2DLine2D. Figure 5-9. Algorithm for computing the topological feature vectors for a point2D object and a line2D object h has to be processed (line 15), its segment component is inserted into (deleted from) S if h is a left (right) halfsegment (line 17). We also have to test if the dominating point of h, say v, is a boundary point of G. This is the case if v is unequal to the previous dominating point stored in the variable lastdp (line 18) and if the operation lookahead finds out that v does also not coincide with the dominating point of the next halfsegment (lines 19 to 20). In case that a point v of F is equal to a dominating point of a halfsegment h in G (line 23), we know that v has never been visited before and that it is an end point of the segment component of h. Besides the update of S (line 25), it remains to decide whether v is an interior point (line 28) or a boundary point (line 29) of h. For this, we look ahead (line 27) to see whether the next halfsegment's dominating point is equal to v or not. If I is the number of points of F and m is the number of halfsegments of G, the while-loop is executed at most 1 + m times. The insertion of a left halfsegment into and the removal of a right halfsegment from the sweep line status needs O(log m) time. The check whether a point lies within or outside a segment (predicate poiinseg) also requires O(log m) time. Altogether, the worst time complexity is O((l + m) logm). The while-loop has to be executed at least m times for processing the entire line2D object in order to find out if a boundary point exists that is unequal to all points of the point2D object (Figures 5-8B and C). 5.2.2.3 The exploration algorithm for the point2Dlregion2D case In case of a point2D object F and a region2D object G, the situation is simpler than in the previous case. Seen from the perspective of F, we can again distinguish three cases between (the interior of) a point of F and the exterior, interior, or boundary of G. First, a point of F lies either inside G (flag poiinside), on the boundary of G (flag poionbound), or outside of region G (flag poioutside). Seen from the perspective of G, we can distinguish four cases between the boundary and the interior of G with the interior and exterior of F. The intersection of the boundary (interior) of G with the interior of F implies that a point of F is located on the boundary (inside) of G. This situation is already covered by the flag poionbound (poiinside). The intersection of the boundary (interior) of G with the exterior of F is always true, since F as a finite point set cannot cover G's boundary segments (interior) representing an infinite point set. More formally, we define the semantics of the topological flags as follows (we assume poilnRegion to be a predicate which checks whether a point lies inside a region2D object): Definition 5.3 : Let F E pi'niiD, G E region2D, and VF and VG be their topological feature vectors. Then, (i) VF poiinside] : #> 3 f E P(F) : poilnRegion (f, G) (ii) VF poion2bound] :> 3f E P(F) 3g E H(G) : on(f,g.s) (iii) VF poioutside] : E 3f E P(F) Vg E H(G) : -poilnRegion(f, G) A -on(f,g.s) We see that VG is not needed. The algorithm for this case is shown in Figure 5-10. The while-loop is executed as long as none of the two objects has been processed (line 9) and as long as not all topological flags have been set to true (lines 9 to 10). If only a point has to be processed (line 11), we must check its location. The first case is that it lies on a boundary segment; this is checked by the sweep line status predicate poionseg (line 12). Otherwise, it must be located inside or outside of G. We use the operation predof-p (line 13) to determine the nearest segment in the sweep line status whose intersection point with the sweep line has a lower y-coordinate than the y-coordinate of the point. The predicate currentexists checks whether such a segment exists (line 14). If this is not the case, the point must be outside of G (line 17). Otherwise, we ask for the information whether the interior of G is above the segment (line 14). We can then derive whether the point is inside or outside the region (lines 15 to 16). If only a halfsegment h has to be processed or a point v of F is equal to a dominating point of a halfsegment h in G (line 20), h's segment component is inserted into (deleted from) S if h is a left (right) halfsegment (line 20 to 21). In case of a left halfsegment, in addition, the information whether the interior of G is above the segment is stored in the sweep line status (line 21). If v and the dominating point of h coincide, we know that the point is on the boundary of G (line 23). If I is the number of points of F and m is the number of halfsegments of G, the while-loop is executed at most 1 + m times. Each of the sweep line status operations addleft, del_right, 01 algorithm ExplorePoint2DRegion2D 02 input: point2D object F and region2D object G, 03 topological feature vectors VF and VG 04 initialized with false 05 output: updated vectors VF and VG 06 begin 07 S := newsweep(); 08 selea ,ir\ni(F, G, object, status); 09 while status = end ofnone and not (vF [poi inside] 10 and VF [poionbound] and F [poioutside]) do 11 if object =first then p := getevent(F); 12 if poionseg(S, p) then VF [poionbound] := true 13 else pred_ofp(S, p); 14 if currentexists(S) then ia := getattr(S); 15 if ia then VF [poi inside] := true 16 else VF poioutside] := true endif 17 else VF [poi_outside] := true 18 endif 19 endif 20 else h := getevent(G); ia := getattr(G); /* h = (s, d) */ 21 if d then addleft(S, s); setattr(S, ia) 22 else del_righlt(S, s) endif; 23 if object = both then vF [poionbound] := true endif 24 endif 25 select Jiext(F, G, object, status); 26 endwhile; 27 if status = end ofsecond then 28 F [poioutside] := true 29 endif 30 end ExplorePoint2DRegion2D. Figure 5-10. Algorithm for computing the topological feature vectors for a point2D object and a region2D object poionseg, predof-p, currentexists, getattr, and setattr needs O(logm) time. The total worst time complexity is O((1 + m)logm). 5.2.2.4 The exploration algorithm for the line2D/line2D case We now consider the exploration algorithm for two line2D objects F and G. Seen from the perspective of F, we can differentiate six cases between the interior and boundary of F and the interior, boundary, and exterior of G. First, the interiors of two segments of F and G can partially or completely coincide (flag segshared). Second, if a segment of F does not partially or completely coincide with any segment of G, we register this in the flag segunshared. Third, we set the flag interiorpoishared if two segments intersect in a single point that does not belong to the boundaries of F or G. Fourth, a boundary endpoint of a segment of F can be located in the interior of a segment (including connector points) of G (flag boundoninterior). Fifth, both objects F and G can share a boundary point (flag boundshared). Sixth, if a boundary endpoint of a segment of F lies outside of all segments of G, we set the flag bounddisioint. Seen from the perspective of G, we can identify the same cases. But due to the symmetry of three of the six topological cases, we do not need all flags for G. For example, if a segment of F partially coincides with a segment of G, this also holds vice versa. Hence, it is sufficient to introduce the flags segunshared, boundoninterior, and bounddisioint for G. We define the semantics of the topological flags as follows: Definition 5.4 : Let F, G E line2D, and let VF and VG be their topological feature vectors. Then, (i) VF [seg-shared] (ii) VF [interior-poishared] (iii) VF [segunshared] (iv) VF [boundoninterior] (v) VF [boundshared] (vi) VF[bouiiid-di\itii] (vii) VG[segunshared] (viii) vG[boundoninterior] (ix) VG[bouitddi\ i'im]i : 3lf C H(F) 3g e H(G) : g : E 3f C H(F) 3g C H(G) Vp E B(F) UB(G): poilntersect(f.s,g.s) A poilntersection(f.s, g.s) # p := 3f e H(F) Vg E H(G) : ic\, gl <, i(f.s,g.s) := Ef E H(F) Eg E H(G) p E B(F) \ B(G) : poilntersection(f.s,g.s) = p :z 3pc B(F) 3q B(G):p = q : 3p E B(F) Vg E H(G) : on(p,g.s) :~ 3g E H(G) Vf e H(F) : l I., I(f.s,g.s) : E 3f E H(F) 3g E H(G) 3p B(G) \ B(F) : poilntersection(f.s,g.s) = p := 3Eq e B(G) Vf e H(F) : -on(q,f.s) -S -V E a ~~G;~L, ~P ~~n ~i~ar o, ~- ~, S- oLL~%s" -3~= ~~ n Gtn~ o~ E a?~ss O Y 2~ 11 ~3 ~3 r a E a E u sE , 4, g, o-o n a S S S ~a-a ss 55 0O c~g~ E E ,s: E -s~t~ 9 " ~s-a -ro o Q9 on~ E~'C~ E a o o o N m It tr) o r- x N t o Nm m O It) ob x It It It It It It It^ It It It t--'l --'l r) tr) tr) tr) tr) tr) tr) (r) (r) (r) c c c ^O^ ^ O Oc 0 ,-i s ,-i gs a r ;e l ^ c II I s O E a !&<* ocrJs s Sj - II J CS (I -^ t i cl -'--7 -q i~ 7 E^ ^- ^e "-S a Q w- S.'II '^ e~ ~ ~~ u~ So i "yC ee -Sc 9 ^i :& & s -c ^i eas" ;^ ? a 9 aaa ^a-" E 0 C *w Se ~ f t8 .5 O 0 c 0 cm t-t 0 0r tr-~ o O Z o 't-~ 1o 00000 000zzzz -^ E a E u s 'r o~ E a4;g o~o, ES1~ o ii LLi '~ ~3 ~a S Tti ~ S -s p~cg ~3q~30 lu S S S~;SY onoo ql--qE a a *1 E-~ ^.^* a ~ ^s a - S o -@ -, j O4 n -s r - o 23~ r, o a - 4s I Es I E a z tn 0 [- ~o Z tf -s 4, LL/ S 'U S s o E~j E a ps -( ~ -T~ s - o ~ - s s o s, Es I E a The exploration algorithm for this case is given in Figure 5-11. The while-loop is executed until both objects have been processed (line 9) and as long as not all topological flags have been set to true (lines 9 to 13). If a single left (right) halfsegment of F (line 14) has to be processed (the same for G (line 36)), we insert it into (delete it from) the sweep line status (lines 15 and 16). The deletion of a single right halfsegment further indicates that it is not shared by G (line 16). If the current dominating point, say v, is unequal to the previous dominating point of F (line 17) and if the operation lookahead finds out that v is also unequal to the dominating point of the next halfsegment ofF (line 18), v must be a boundary point ofF (line 19). In this case, we perform three checks. First, if v coincides with the current boundary point in G, both objects share a part of their boundary (lines 20 to 21). Second, otherwise, if v is equal to the current dominating point, say w, in G, w must be an interior point of G, and the boundary of F and the interior of G share a point (lines 22 to 23). Third, otherwise, if v is different from the dominating point of the next halfsegment in G, F contains a boundary point that is disjoint from G (lines 24 to 25). If v has not been identified as a boundary point in the previous step (line 29), it must be an interior point of F. In this case, we check whether it coincides with the current boundary point in G (lines 30 to 31) or whether it is also an interior point in G (lines 32 to 33). If a halfsegment belongs to both objects (line 38), we can conclude that it is shared by them (line 39). Depending on whether it is a left or right halfsegment, it is inserted into or deleted from the sweep line status (line 40). Lines 41 to 45 (46 to 50) test whether the dominating point v of the halfsegment is a boundary point of F (G). Afterwards, we check whether v is a boundary point of both objects (lines 51 to 52). If this is not the case, we examine whether one of them is a boundary point and the other one is an interior point (lines 54 to 59). Lines 62 to 66 handle the case that exactly one of the two halfsegment sequences is exhausted. Let 1 (m) be the number of halfsegments of F (G). Segments of both objects can intersect or partially coincide (Figure 5-5), and we handle these topological situations with the splitting strategy described in Section 5.2.1.3. If, due to splitting, k is the total number of additional halfsegments stored in the dynamic halfsegment sequences of both objects, the while-loop is executed at most + m + k times. The only operations needed on the sweep line status are addleft and delright for inserting and deleting halfsegments; they require O(log(l + m + k)) time each. No special predicates have to be deployed for discovering topological information. Due to the splitting strategy, all dominating end points either are already endpoints of existing segments or become endpoints of newly created segments. The operation look_ahead needs constant time. In total, the algorithm requires O((l + m+ k) log(l + m+ k)) time and O(l + m+ k) space. 5.2.2.5 The exploration algorithm for the line2Dlregion2D case Next, we describe the exploration algorithm for a line2D object F and a region2D object G. Seen from the perspective of F, we can distinguish six cases between the interior and boundary of F and the interior, boundary, and exterior of G. First, the intersection of the interiors of F and G means that a segment of F lies in G (flag seginside). Second, the interior of a segment of F intersects with a boundary segment of G if either both segments partially or fully coincide (flag seg-shared), or if they properly intersect in a single point (flag poishared). Third, the interior of a segment of F intersects with the exterior of G if the segment is disjoint from G (flag segoutside). Fourth, a boundary point of F intersects the interior of G if the boundary point lies inside of G (flag boundinside). Fifth, if it lies on the boundary of G, we set the flag boundshared. Sixth, if it lies outside of G, we set the flag bounddisioint. Seen from the perspective of G, we can differentiate the same six cases as before and obtain most of the topological flags as before. First, if the interiors of G and F intersect, a segment of F must partially or totally lie in G (already covered by flag seginside). Second, if the interior of G and the boundary of F intersect, the boundary point of a segment of F must be located in G (already covered by flag boundinside). Third, the case that the interior of G intersects the exterior of F is always true due to the different dimensionality of both objects; hence, we do not need a flag. Fourth, if the boundary of G intersects the interior of F, a segment of F must partially or fully coincide with a boundary segment of G (already covered by flag segshared). Fifth, if the boundary of G intersects the boundary of F, a boundary point of a segment of F must lie on a boundary segment of G (already covered by flag boundshared). Sixth, if the boundary of G intersects the exterior of F, a boundary segment of G must be disjoint from F (new flag segunshared). More formally, we define the semantics of the topological flags as follows: Definition 5.5 : Let F E line2D, G E region2D, and VF and VG be their topological feature vectors. Then, (i) VF [seginside] (ii) (iii) VF [segshared] VF [segoutside] (iv) vF[poishared] (v) (vi) VF [boundinside] VF [boundshared] (vii) VF[botud _dii'iiu]i (viii) VG[seg unshared] : E 3f E H(F) Vg E H(G): -seglntersect(f.s,g.s) A seglnRegion(f.s,G) : E 3lf e H(F) 3g e H(G) : \,,l r i, I(f.s,g.s) : E 3f E H(F) Vg E H(G): -seglntersect(f.s,g.s) A -seglnRegion(f.s,G) :< 3lf e H(F) 3g e H(G) :poilntersect(f.s,g.s) A poilntersection(f.s,g.s) V B(F) : 3 fE H(F) : poilnRegion(dp(f),G) A dp(f) e B(F) : 3lf e H(F) 3g e H(G) :poilntersect(f.s,g.s) A poilntersection(f.s,g.s) E B(F) : E 3f c H(F) Vg E H(G): -poilnRegion(dp(f), G) A dp(f) e B(F) A -on(dp(f),g.s) : The operation seglnRegion is assumed to check whether a segment is located inside a region; it is an imaginary predicate and not implemented as a robust geometric primitive. The exploration algorithm for this case is given in Figure 5-12. The while-loop is executed until at least the first object has been processed (line 10) and as long as not all topological flags have been set to true (lines 11 to 14). In case that we only encounter a halfsegment h of F (line 15), we insert its segment component s into the sweep line status if it is a left halfsegment (line 16). If it is a right halfsegment, we find out whether h is located inside or outside of G (lines 18 to 23). We know that it cannot coincide with a boundary segment of G, since this is another case. The predicate predexists checks whether s has a predecessor in the sweep line status (line 18); it ignores segments in the sweep line status that stem from F. If this is not the case (line 22), s E a E u -s -s q o Q O '7 g, a: Y '" -so 4 -a - ~~ E a II -S -9 0*~~ -a *3 or a "~-t~~h I-~ Y'lt II 2' -3 '- S- PO U cO "'t- tfl u0 t-~ OUZ-C ~~ttl~ -~ ~Z -C zzz zz ~ SI L4 s a 'U P" 4 ~E.p g,~s~ ~"~" Eu a:LL, Ir: a "ir~4I '"; r; a U ~a S "q-S~35 ,Sso o- z ~ 9 go,, o o- -i~=~s on~ v n 0o [- oo Clo N rNNNNlrlraMmmMM -z rt I cy r cl)cL z - ~qsEE lq I7 8 -nl .L1 r~ `Na 3~ 9 " Y ~' -a~ '0 t- Uo '0 0 ' tr c -x Cl I r) l\C N m0 -t -t -t t t) t) t) t) t) tr tr tr (r (r c c c & Q 03 ~1. zza s C o~ , o-,s ''7 r, s ~ao 23~~~ Dos II E u i S4 4 i~s Eo~ LL~ -a r; r; a: -sY s-a ~YS S O O Q-3 E a %J Eo~ E, u r;, *zs oo Q-3 L~ 4 must lie outside of G. Otherwise, we check the upper overlap number of s's predecessor (line 19). The overlap number 1 indicates that s lies inside G (line 20); otherwise, it is outside of G (line 21). After this check, we remove s from the sweep line status (line 23). Next we test whether the dominating point of h is a boundary point of F (line 26) by using the predicate lookahead. If this is the case, we determine whether this point is shared by G (lines 28 to 30) or whether this point is located inside or outside of G (lines 31 to 38). Last, if the dominating point turns out not to be a boundary point of F, we check whether it is an interior point that shares a boundary point with G (lines 40 to 43). In case that we only obtain a halfsegment h of G (line 44), we insert its segment component s into the sweep line status and attach the Boolean flag ia indicating whether the interior of G is above s or not (line 46). Otherwise, we delete a right halfsegment h from the sweep line status and know that it is not shared by F (line 47). In case that both F and G share a halfsegment, we know that they also share their segment components (line 50). The sweep line status is then modified depending on the status of h (lines 52 to 53). If we encounter a new dominating point of F, we have to check whether F shares a boundary point (lines 55 to 56) or an interior point (line 57) with the boundary of G. If the halfsegment sequence of G should be exhausted (line 62), we know that F must have a segment whose interior is outside of G (line 63). If after the while-loop only F is exhausted but not G (line 66), G must have a boundary segment that is disjoint from F (line 67). Let I be the number of halfsegments of F, m be the number of attributed halfsegments of G, and k be the total number of new halfsegments created due to our splitting strategy. The while-loop is then executed at most 1 + m + k times. All operations needed on the sweep line status require O(log(l + m + k)) time each. Due to the splitting strategy, all dominating end points are already endpoints of existing segments or become endpoints of newly created Figure 5-13. Special case of the plane sweep. F G G Figure 5-13. Special case of the plane sweep. segments. The operation lookahead needs constant time. In total, the algorithm requires O((l+m+ k) log(l +m+k)) time and O( l+m+k) space. 5.2.2.6 The exploration algorithm for the region2Dlregion2D case The exploration algorithm for the region2D/region2D case is quite different from the preceding five cases, since it has to take into account the areal extent of both objects. The indices of the vector fields, with one exception described below, are not flags as before but segment classes. The fields of the vectors again contain Boolean values that are initialized with false. The main goal of the exploration algorithm is to determine the existing segment classes in each region2D object. Hence, the topological feature vector for each object is a segment classification vector. Each vector contains a field for the segment classes (0/1), (1/0), (0/2), (2/0), (1/2), (2/1), and (1/1). The following definition makes a connection between representational concepts and point set topological concepts as it is later needed in the evaluation phase. For a segment s = (p, q) E seg2D, the function pts yields the infinite point set of s as pts(s) = {r e R2 r = p + X(q p), X e R, 0 < X < 1}. Further, for F E region2D, we define 3F = UfeH(F)pts(f.s), F = {p e R2 poilnRegion(p, F)}, and F- = R2 3F F. We can now define the semantics of this vector as follows: Definition 5.6 : Let F, G E region2D and VF be the segment classification vector of F. Then, (i) vF[(0/1)] :#z 3 f H(F) :f.ia A pts(f.s) C G (ii) vF[(1/0)] : E 3f e H(F) : f .ia A pts(f.s) C G (iii) VF[(1/2)] : E 3f e H(F) :f.ia A pts(f.s) C G (iv) vF[(2/1)] : 3 f e H(F) : -f .ia A pts(f.s) C G (v) vF[(0/2)] : 3 f e H(F) 3g e H(G) : f.s = g.s A f.ia A g.ia (vi) vF[(2/0)] : E 3f e H(F) 3g e H(G) : f.s = g.s A -f.ia A -g.ia (vii) vF[(1/1)] : E 3f e H(F) 3g E H(G) : f.s = g.s A ((f.ia A -g.ia) V (-f.ia A g.ia)) (viii) vF[bound poishared] : E 3f c H(F) 3g E H(G) : f.s 4 g.s A dp(f) = dp(g) The segment classification vector VG of G includes the cases (i) to (iv) with F and G swapped; we omit the flags for the cases (v) to (viii) due to their symmetry (or equivalence) to flags of F. The flag boundpoishared indicates whether any two unequal boundary segments of both objects share a common point. Before the splitting, such a point may have been a segment endpoint or a proper segment intersection point for each object. The determination of the boolean value of this flag also includes the treatment of a special case illustrated in Figure 5-13. If two regions F and G meet in a point like in the example, such a topological meeting situation cannot be detected by a usual plane sweep. The reason is that the plane sweep forgets completely about the already visited segments (right halfsegments) left of the sweep line. In our example, after sl and s2 have been removed from the sweep line status, any information about them is lost. When S3 is inserted into the status sweep line, its meeting with s2 cannot be detected. Our solution is to look ahead in object G for a next halfsegment with the same dominating point before s2 is removed from the sweep line status. The segment classification is computed by the algorithm in Figure 5-14. The while-loop is executed as long as none of the two objects has been processed (line 8) and as long as not all topological flags have been set to true (lines 8 to 12). Then, according to the halfsegment order, the next halfsegment h is obtained, which belongs to one or both objects, and the variables for the last considered dominating points in F and/or G are updated (lines 13 to 20). Next, we check for a possible common boundary point in F and G (lines 21 to 25). This is the case if the last dominating points of F and G are equal, or the last dominating point in F (G) coincides with the next dominating point in G (F). The latter algorithmic step, in particular, helps us solve the special situation in Figure 5-13. If h is a right halfsegment (line 26), we update the topological feature vectors of F and/or G correspondingly (lines 27 to 32) and remove its segment component s from the sweep line status (line 33). In case that h is a left halfsegment, we insert its segment component s into the sweep line status (line 34) according to the y-order of its dominating point and the y-coordinates of the intersection points of the current sweep line with the segments momentarily in the sweep line status. If h's segment component s either belongs to E a" i= o E a EE ~aE S' OS u o~o o~q UU L3?L31 00 as ,"," as II-~ O -4 q S- E a F Eu E Y3 03 s+ -3f O -3S" a" u ~~L3'~ ~I ~ s" ~c~ s ~c~ E E a L~E~ 0~ 0~ E3 E3 u ~3Y ict' 2 g, q, ~~S ~~S ao ~ o~ ao ~ ,~-,f,~~~ E E s~ a ~03~Mb~~~~0~M ~ ~ tn 03O II O a 'El I 8~ "- 2,,, Qg3 ~~II - -;.r c O cD 0t- tf O zzzz zzz h GQ ' u ~ ;- ;- 0 0 ; - C~ cF ~t tfl E a t-, v 'C q -a 23~ ao II a a h a ' S Y1 ,S 4 Lt a ii a Y Y Lt z i ;I; s tntnt s C s i= t3~ CE S~e" h SU i= E a u o~a s o 4 S o~ O- ns~ sO E I~ s~ a F or to G, but not to both objects, and partially coincides with a segment from the other object in the sweep lines status, our splitting strategy is applied. Its effect is that the segment we currently consider suddenly belongs to both objects. Therefore, we modify the object variable in line 35 correspondingly. Next, we compute the segment class of s. For this purpose, we determine the lower and upper overlap numbers mp and np of the predecessor p of s (lines 36 to 37). If there is no predecessor, mp gets the 'undefined' value '*'. The segment classification of the predecessor p is important since the lower overlap number ms of s is assigned the upper overlap number np of p, and the upper overlap number ns of s is assigned its incremented or decremented lower overlap number, depending on whether the Boolean flag 'Interior Above' obtained by the predicate get_attr is true or false respectively (lines 39 to 46). The newly computed segment classification is then attached to s (line 47). The possible 19 segment class constellations between two consecutive segments in the sweep line status are shown in Table 5-2. The table shows which segment classes (ms/ns) a new segment s just inserted into the sweep line status can get, given a certain segment class (mp/np) of a predecessor segment p. The first two columns show the special case that at the beginning the sweep line status is empty and the first segment is inserted. This segment can either be shared by both region objects ((0/2)-segment) or stems from one of them ((0/1)-segment). In all these cases (except the first two cases), np = ms must hold. Let I be the number of attributed halfsegments of F, m be the number of attributed halfseg- ments of G, and k be the total number of new halfsegments created due to our splitting strategy. The while-loop is then executed at most 1+ m + k times. All operations needed on the sweep line status require at most O(log(l + m+ k)) time each. The operations on the halfsegment sequences Table 5-2. Possible segment class constellations between two consecutive segments in the sweep line status. ns 1 2 1 2 1 2 0 1 2 0 1 2 0 1 2 0 1 0 1 ms 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2 2 np 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2 2 mp 1 1 2 2 0 0 0 1 1 1 2 2 2 0 0 1 1 of F and G need constant time. In total, the algorithm requires O((l + m+ k) log(l+ m+ k)) time and O(1 + m+ k) space. 5.2.3 The Evaluation Phase for Matching Topological Predicates In the previous section, we have determined the topological feature vectors VF and VG of two complex spatial objects F E a and G E 3 with a, 3 E {point, line, region}. The vectors VF and VG contain specific topological feature flags for each type combination. The flags capture all topological situations between F and G and are different for different type combinations. The goal of the evaluation phase is to leverage the output of the exploration phase, that is, VF and VG, either for verifying a given topological predicate or for determining such a predicate. Our general evaluation strategy is to accommodate the objects' topological feature vectors with an existing topological predicate for both predicate verification and predicate determination. Section 5.2.3.1 presents an ad hoc evaluation method called direct predicate character- ization. Learning from its shortcomings, in Section 5.2.3.2, we propose a novel, systematic, provably correct, and general evaluation method called 9-intersection matrix characterization. The next two subsections elaborate on a particular step of the general method that is dependent on the type combination under consideration. Section 5.2.3.4 deals with the special region/region case while Section 5.2.3.3 handles the cases of all other type combinations. 5.2.3.1 Direct predicate characterization: a simple evaluation method The first method provides a direct predicate characterization of all n topological predicates of each type combination (see Table 2-2B for the different values of n) and is based on the topo- logical feature flags of VF and VG of the two spatial argument objects F and G. That is, for the line/line case, we have to determine which topological feature flags of VF and VG must be turned on and which flags must be turned off so that a given topological predicate (verification query) or a predicate to be found (determination query) is fulfilled. For the region/region case, the central question is to which segment classes the segments of both objects must belong so that a given topological predicate or a predicate to be found is satisfied. The direct predicate characterization gives an answer for each individual predicate of each individual type combination. This means that we obtain 184 individual predicate characterizations without converse predicates and 248 individual predicate characterizations with converse predicates. In general, each characterization is a Boolean expression in conjunctive normal form and expressed in terms of the topological feature vectors VF and vG. We give two examples of direct predicate characterizations. As a first example, we consider the topological predicate number 8 (meet) between two line objects F and G (Figure 5-15A and [59]) and see how the flags of the topological feature vectors (Definition 5.4) are used. P8 (F, G) :4z -wVF [segshared] A -vF [interior-poishared] A vF [segunshared] A 1VF [boundoninterior] A VF[bound shared] A VF[boitd _di\iiim] A VG[seg unshared] A vG[boundoninterior] A vG[botmd _di\iiim] If we take into account the semantics of the topological feature flags, the right side of the equivalence means that both objects may only and must share boundary parts. More precisely and by considering the matrix in Figure 5-15A, intersections between both interiors (-vF[seg shared], 1VF [interior-poishared]) as well as between the boundary of one object and the interior of the other object (-VF [bound-on -interior], 1VG [bound-on interior]) are not allowed; besides intersec- tions between both boundaries (VF [bound-shared), each component of one object must interact with the exterior of the other object (F [seg unshared], vG[segunshared], F [bout1d _di\i'iiim]. VG[boutmd_di\ii im]). ( 0 0 1 1 0 0 0 1 1 1 0 0 S1 11 1 1 1 A B Figure 5-15. The 9-intersection matrices. A) Matrix number 8 for the predicate meet between two line objects. B) Matrix number 7 for the predicate inside between two region objects. Next, we view the topological predicate number 7 (inside) between two region objects F and G (Figure 5-15B and [59]) and see how the segment classes kept in the topological feature vectors (Definition 5.6) are used. p7(F,G) :# -lVF[(O/1)] A -VF[(1/0)] A -VF[(0/2)] A -VF[(2/0)] A -VF[(1/1)] A -vF[boundpoi-shared] A (vF[(1/2)] V vF[(2/1)]) A -VG[(1/2)] A -VG[(2/1)] A (VG[(O/1)] V VG[(1/O)]) For the inside predicate, the segments of F must be located inside of G since the interior and boundary of F must be located in the interior of G; hence they must all have the segment classes (1/2) or (2/1). This "for all" quantification is tested by checking whether vF [(1/2)] or vF [(2/1)] are true and whether all other vector fields are false. The fact that all other vector fields are false means that the interior and boundary of F do not interact with the boundary and exterior of G. That is, the segments of G must be situated outside of F, and thus they all must have the segment classes (0/1) or (1/0); other segment classes are forbidden for G. Further, we must ensure that no segment of F shares a common point with any segment of G (-VF [boundpoishared]). The predicate characterizations can be read in both directions. If we are interested in predicate vn ,ifi, niitn. that is, in evaluating a specific topological predicate, we look from left to right and check the respective right side of the predicate's direct characterization. This corresponds to an explicit implementation of each individual predicate. If we are interested in predicate determination, that is, in deriving the topological relationship from a given spatial configuration of two spatial objects, we have to look from right to left. That is, consecutively we evaluate the right sides of the predicate characterizations by applying them to the given topological feature vectors VF and VG. For the characterization that matches we look on its left side to obtain the name or number of the predicate. The direct predicate characterization demonstrates how we can leverage the concept of topological feature vectors. However, this particular evaluation method has three main drawbacks. First, the method depends on the number of topological predicates. That is, each of the 184 (248) topological predicates between complex spatial objects requires an own specification. Second, in the worst case, all direct predicate characterizations with respect to a particular type combination have to be checked for predicate determination. Third, the direct predicate characterization is error-prone. It is difficult to ensure that each predicate characterization is correct and unique and that all predicate characterizations together are mutually exclusive and cover all topological predicates. From this standpoint, this solution is an ad hoc approach. 5.2.3.2 The 9-intersection matrix characterization method The drawbacks of the direct predicate characterization are the motivation for another, novel approach called 9-intersection matrix characterization (9IMC) that avoids these shortcomings. In particular, its correctness can be formally proved. Instead of characterizing each topological predicate directly, the central idea of our second approach is to uniquely characterize each element of the 3 x 3-matrix of the 9-intersection model (Figure 2-2A) by means of the topological feature vectors VF and VG. As we know, each matrix element is a predicate called matrix predicate that checks one of the nine intersections between the boundary aF, interior F or exterior F of a spatial object F with the boundary aG, interior G or exterior G of another spatial object G for inequality to the empty set. For each topological predicate, its specification is then given as the logical conjunction of the characterizations of the nine matrix predicates. Since the topological feature vectors are different for each type combination, the characterization of each matrix predicate is different for each type combination too. The characterizations themselves are the themes of the next subsections. The general method for predicate Vn ,rifit aiiin works as follows. Based on the topological predicate p to be verified as well as VF and VG as input, we evaluate in a loop the characteri- zations of all matrix predicates numbered from left to right and from top to bottom. The ninth matrix predicate F n G- 4 0 always yields true [59]; hence, we do not have to check it. After the computation of the value of the matrix predicate i (1 < i < 8), we compare it to the corre- sponding value of the matrix predicate p(i) of p. If the values are equal, we proceed with the next matrix predicate i + 1. Otherwise, we stop, and p yields false. If there is a coincidence between the computed values of all matrix predicates with the corresponding values of p's matrix, p yields true. The benefit of this approach is that it only requires eight predicate characterizations and that these characterizations are the same for each of the n topological predicates of the same type combination. In particular, an individual characterization of all n topological predicates is not needed. In Section 5.2.4.1, we show that this method can be even further improved. The general method for predicate determination works as follows. Based on VF and VG as input, we evaluate the 9IM characterizations of all eight matrix predicates and insert the Boolean values into an intersection matrix m initialized with true for each matrix predicate. Matrix m is then compared against the matrices pi (1 < i < n) of all n topological predicates. We know that one of them must match m. The merit of this approach is that only eight characterizations are needed to determine the intersection matrix of the topological predicate. But unfortunately we need n matrix comparisons to determine the pertaining topological predicate in the worst case. In Section 5.2.4.2, we introduce a method that eliminates this problem. But the method here is already a significant improvement compared with the necessity to compute all n direct predicate characterizations. 5.2.3.3 Type combination dependent 9-intersection matrix characterization The last, missing step refers to the characterizations of the eight matrix predicates of the 9-intersection matrix for all spatial data type combinations. A 9IMC means that each matrix predicate, which takes abstract, infinite point sets F and G representing spatial objects as arguments, is uniquely characterized by the topological feature vectors VF and VG, which are discrete implementation concepts. For this purpose, for each discrete spatial object F E oa E {point, line, region}, we determine the corresponding abstract point sets of its boundary, interior, and exterior. For the region data type, we have already done this for Definition 5.6. For F E point, we define DF = 0, F = P(F), and F = R2 P(F). For F E line, we define DF = {p e R2 card({f c H(F) p = dp(f)}) = 1}, F = UfCH(F)Pts(f.s) DF, and F = R2 DF F As we will see, each characterization can be performed in constant time, and its correctness can be shown by a simple proof. In this subsection, we present the characterizations for all type combinations except for the more complicated case of two region objects; this case is dealt with in the next subsection. The central idea in the proofs of the lemmas below is to accomplish a correspondence between a matrix predicate based on the point sets DF, F, F aG, G', and G and an equivalent Boolean expression based on finite representations like P(F),H(F), B(F), P(G),H(G), and B(G). In case of two point objects, the 3 x 3-matrix is reduced to a 2 x 2-matrix since the boundary of a point object is defined to be empty [59]. We obtain the following statement: Lemma 5.1 : Let F, G E point. Then the characterization of the matrix predicates of the (reduced) 9-intersection matrix is as follows: (i) F n G 0 > VF [poishared] (ii) F n G 4 0 > VF [poidisjoint] (iii) F n Go 0 vG[poiLdisjoint] (iv) F n G 0 < true Proof. In (i), the intersection of the interiors of F and G is non-empty if, and only if, both objects share a point. That is, Ef E P(F) 3g E P(G) : equal(f,g). This matches directly the definition of vF [poishared] in Definition 5.1(i). In (ii), a point of F can only be part of the exterior of G if it does not belong to G. That is, Ef E P(F) Vg E P(G) : -equal(f,g). This fits directly to the definition of VF [poidisjoint] in Definition 5.1(ii). Case (iii) is symmetric to (ii). Case (iv) follows from Lemma 5.1.2 in [59]. o In case of a point object and a line object, the 3 x 3-matrix is reduced to a 2 x 3-matrix since the boundary of a point object is defined to be empty. We obtain the following statement: Lemma 5.2 : Let F E point and G E line. Then the characterization of the matrix predicates of the (reduced) 9-intersection matrix is as follows: (i) F n G # 0 VF [poion interior] (ii) F n 3G # 0 > VF [poionbound] (iii) F n G- # 0 VF [poidisjoint] (iv) F n G # 0 true (v) F- n GG # 0 VG [bound poi_disjoint] (vi) F G n 0 4 true Proof. In (i), the intersection of the interiors of F and G is non-empty if, and only if, a point ofF is located on G but is not a boundary point of G. That is, Ef E P(F) 3g E H(G) Vb E B(G) : on(f,g.s) A f 7 b. This corresponds directly to the definition of vF[poioninterior] in Definition 5.2(ii). In (ii), the intersection of the interior of F and the boundary of G is non-empty if, and only if, a point ofF coincides with a boundary point of G. That is, 3f E P(F) 3g E B(G) : f = g. But this matches the definition of VF [poionbound] in Definition 5.2(iii). Statement (iii) is satisfied if, and only if, a point ofF is outside of G. That is, 3f E P(F) Vg E H(G) : -on(f,g.s). But this is just the definition of VF [poi_disjoint] in Definition 5.2(i). Statement (iv) always holds according to Lemma 6.1.2 in [59]. To be fulfilled, statement (v) requires that a boundary point of G lies outside ofF. That is, 3g E B(G) Vf E P(F) : f 4 g. This corresponds to the definition of vG[boundpoi_di\it'iui] in Definition 5.2(iv). The last statement follows from Lemma 6.1.3 in [59]. D In case of a point object and a region object, we also obtain a reduction of the 3 x 3-matrix to a 2 x 3-matrix. We obtain the following statement: Lemma 5.3 : Let F E point and G E region. Then the characterization of the matrix predicates of the (reduced) 9-intersection matrix is as follows: (i) F n G' # 0 = VF[poi-inside] (ii) F n 3G 4 0 = VF[poi-on-bound] (iii) F n G- 0 VF [poioutside] (iv) F n G # 0 true (v) F n BG 0 0 true (vi) F n G # 0 < true Proof. Statement (i) requires that a point of F is located inside G but not on the boundary of G. That is, Ef E P(F) : poilnRegion(f, G) (where poilnRegion is the predicate which checks whether a single point lies inside a region object). This corresponds directly to the definition of VF [poiinside] in Definition 5.3(i). In (ii), the intersection of F and the boundary of G is non-empty if, and only if, a point of F lies on one of the boundary segments of G. That is, 3 f E P(F) 3 (g,ia) E H(G) : on(f,g.s). This matches the definition of VF[poionibound] in Definition 5.3(ii). Statement (iii) is satisfied if, and only if, a point of F is outside of G. That is, Ef E P(F) V (g, ia) E H(G) : poilnRegion(f, G) A -on(f,g.s). This corresponds to the definition of vF [oi_outside] in Definition 5.3(iii). Statements (iv) and (v) follow from Lemma 6.2.3 in [59]. The last statement follows from Lemma 6.2.1 in [59]. o In case of two line objects, we obtain the following statement: Lemma 5.4 : Let F, G E line. Then the characterization of the matrix predicates of the 9-intersection matrix is as follows: (i) F n G 0 VF [segshared] V vF [interiorpoishared] (ii) F n G 0 0 vG[boundoninterior] (iii) F nG 0 VF [segunshared] (iv) aF n G 0 VF [boundoninterior] (v) aF n aG 7 0 VF [boundshared] (vi) aF nG 7 0 vF [bound disjoint] (vii) F nG ~ 0 4 VG [segunshared] (viii) F n G 0 vG[bounddisjoint] (ix) F nG 0 < true Proof. In (i), the interiors of two line objects intersect if, and only if, any two segments partially or completely coincide or if two segments share a single point that does not belong to the boundaries ofF and G. That is, 3f e H(F) 3g E H(G) : seglntersect(f.s,g.s) V 3f e H(F) 3g e H(G) Vp E B(F) UB(G) : piiJit ,i i (f.s,g.s) A poilntersection(f.s,g.s) # p. The first expression corresponds to the definition of VF [segshared] in Definition 5.4(i). The second expression is the definition of VF [interiorpoishared] in Definition 5.4(ii). Statement (ii) requires that an intersection point p of F and G exists such that p is a boundary point of G but not a boundary point of F. That is, f e H(F) 3g E H(G) 3p e B(G) \ B(F) : poilntersection(f.s, g.s) = p. This matches the definition of vG [bound on interior] in Defini- tion 5.4(viii). Statement (iii) is satisfied if, and only if, there is a segment of F that is outside of G. That is, 3f E H(F) Vg E H(G) : -seglntersect(f.s,g.s). This corresponds to the definition of VF [segunshared] in Definition 5.4(iii). Statement (iv) is symmetric to statement (ii) and based on Definition 5.4(iv). In (v), the boundaries of F and G intersect if, and only if, they share a bound- ary point. That is, 3p E B(F) 3 q E B(G) : p = q. This matches the definition of VF [boundshared] in Definition 5.4(v). Statement (vi) requires the existence of a boundary point of F that is not lo- cated on any segment of G. That is, 3p E B(F) Vg E H(G) : -on(p,g.s). This corresponds to the definition of VF [boutid_di\i',im] in Definition 5.4(vi). Statement (vii) is symmetric to statement (iii) and based on Definition 5.4(vii). Statement (viii) is symmetric to statement (vi) and based on Definition 5.4(ix). The last statement follows from Lemma 5.2.1 in [59]. D In case of a line object and a region object, we obtain the following statement: Lemma 5.5 : Let F E line and G E region. Then the characterization of the matrix predicates of the 9-intersection matrix is as follows: (i) F nG '0 = VF[seginside] (ii) F n aG 0 0 VF [segshared] VF [poishared] (iii) F nG G- 0 VF [segoutside] (iv) aF n G 4 0 vF [boundinside] (v) F n0 G 4 0 = VF[bound shared] (vi) aF nG 0 4 vF [bound disjoint] (vii) F n G 0 2 true (viii) F- n aG 4 0 + vG[segunshared] (ix) F n G # 0 = true Proof. In (i), the interiors of F and G intersect if, and only if, a segment of F is lo- cated in G but does not coincide with a boundary segment of G. That is, Ef E H(F) Vg E H(G) : -seglntersect(f.s,g.s) A seglnRegion(f.s, G). This corresponds to the defini- tion of VF [seginside] in Definition 5.5(i). Statement (ii) requires that either F and G share a segment, or they share an intersection point that is not a boundary point of F. That is, 3f H(F) 3g e H(G) : ',glI, i ,. i(f.s,g.s) V 3f e H(F) 3g e H(G) :poilntersect(f.s,g.s) A poilntersection(f.s, g.s) B(F). The first argument of the disjunction matches the defini- tion of VF [seg shared] in Definition 5.5(ii). The second argument matches the definition of VF [poishared] in Definition 5.5(iv). Statement (iii) is satisfied if, and only if, a segment ofF is located outside of G. That is, Ef E H(F) Vg E H(G) : -seglntersect(f.s,g.s) A -seglnRegion(f.s, G). This corresponds to the definition of VF [segoutside] in Definition 5.5(iii). Statement (iv) holds if, and only if, a segment of F lies inside G and one of the end points of the segment is a boundary point. That is, 3f E H(F) : poilnRegion(dp(f), G) A dp(f) E B(F). This corresponds to the definition of VF [boundinside] in Definition 5.5(v). In (v), we must find a segment of F and a segment of G which intersect in a point that is a boundary point of F. That is, 3f E H(F) 3g E H(G) : poilntersect(f.s,g.s) A poilntersection(f.s,g.s) E B(F). This matches the definition of vF [boundshared] in Definition 5.5(vi). Statement (vi) requires the existence of an endpoint of a segment of F that is a boundary point and not located inside or on any segment of G. That is, 3f e H(F) Vg E H(G) : poilnRegion(dp(f), G) A dp(f) e B(F) A -on(dp(f),g.s). This corresponds to the definition of VF[boumd di\'iiiu] in Defini- tion 5.5(vii). Statement (vii) always holds according to Lemma 6.3.2 in [59]. Statement (viii) is satisfied if, and only if, a segment of G does not coincide with any segment of F. That is, 3g E H(G) Vf E H(F) : -seglntersect(f.s,g.s). This fits to the definition of vF [segunshared] in Definition 5.5(viii). The last statement follows from Lemma 6.3.1 in [59]. D 5.2.3.4 The 9-intersection matrix characterization for region/region case As shown in Section 5.2.2.6, exploring the region/region case is quite different from exploring the other type combinations and requires another kind of exploration algorithm. It has to take into account the areal extent of both objects and has resulted in the concepts of overlap number, segment classes, and segment classification vector. In this subsection, we deal with the 9IMC based on two segment classification vectors. The goal of the following lemmas is to prepare the unique characterization of all matrix predicates by means of segment classes. The first lemma provides a translation of each segment class into a Boolean matrix predicate expression. Lemma 5.6 : Let F, G E region and VF and VG be their segment classification vectors. Then we can infer the following implications and equivalences between segment classes and matrix predicates: (i) vF[(0/1)] V vF[(1/0)] a aFnG- 0 (ii) VG[(O/1)] V VG[(1/0)] F Fn G G 0 (iii) vF[(1/2)] V vF[(2/1)] = F n G' o0 (iv) VG[(1/2)] V VG[(2/1)] F FnoG 0 (v) VF[(0/2)] V VF[(2/0)] j F n aG 0 A F nGO 0w (vi) VF[(1/1)] ~ F n G 0 A Fn G- 0 A F- n G 4 Proof. According to Definition 5.6(i) and (ii), the left side of (i) is equivalent to the expression 3f E H(F) : pts(f.s) C G This is equivalent to 3F n G- # 0. The proof of (iii) is similar and based on Definition 5.6(iii) and (iv); only the term G has to be replaced by G. The proof of (ii) can be obtained by swapping the roles of F and G in (i). Similarly, the proof of (iv) requires a swapping of F and G in (iii). According to Definition 5.6(v) and (vi), the left side of (v) is equivalent to the expression 3f E H(F) 3g E H(G) : f.s = g.s A ((f.ia A g.ia) V (-f.ia A -g.ia)). From the first element of the conjunction, we can (only) conclude that 3F n 3G # 0. Equivalence does not hold since two boundaries can also intersect if they only share single intersection or meeting points but not (half)segments. The second element of the conjunction requires that the interiors of both region objects are located on the same side. Hence, F n G # 0 must hold. Also this is only an implication since an intersection of both interiors is possible without having any (0/2)- or (2/0)-segments. According to Definition 5.6(vii), the left side of (vi) is equivalent to the expression 3f E H(F) 3g E H(G) : f.s = g.s A ((f.ia A -lg.ia) V (-if.ia A g.ia)). The first element of the conjunction implies that aF n aG # 0. The second element of the conjunction requires that the interiors of both region objects are located on different sides. Since the definition of type region disallows (1/1)- segments for single objects, the interior of F must intersect the exterior of G, and vice versa. This is only an implication since an intersection of the interior of one region object with the exterior of another region object is possible without having (1/1)-segments. o The second lemma provides a translation of some matrix predicates into segment classes. Lemma 5.7 : Let F, G E region and VF and VG be their segment classification vectors. Then we can infer the following implications between matrix predicates and segment classes: (i) F n G' 0 vF[(0/2)] V VF[(2/0)] V VF[(1/2)] V VF[(2/1)] V vG[(1/2)] V vG[(2/1)] (ii) F nG # 0 VF[(O/1)] V VF[(1/0)] V VF[(1/1)]V vG[(1/2)] V vG[(2/1)] (iii) F nG' 0 vF[(1/2)] V vF[(2/1) V vF[(1/1) V VG[(O/1)] V G[(1/0)] Proof. In (i), the intersection of the interiors of F and G implies that both objects share a common area. Consequently, this area must have overlap number 2 so that at least one of the two objects must have a (a/2)- or (2/a)-segment with a E {0, 1}. In (ii), the fact that F intersects G means that F contains an area which it does not share with G. That is, the overlap number of this area is 1, and F must have a (a/l)- or a (1/a)-segment with a E {0, 1}. The fact that a part of the interior of F is located outside of G implies two possible topological situations for G: either both objects share a common segment and their interiors are on different sides, i.e., G has a (1/1)-segment (covered by VF [(1/1)]), or the interior of F is intersected by the boundary and the interior of G so that G has a (1/2)- or (2/1)-segment. We prove (iii) by swapping F and G in (ii). The third lemma states some implications between matrix predicates. Lemma 5.8 : Let F, G E region. Then we can infer the following implications between matrix predicates: (i) VF [boundpoi-shared] = 3F n aG 7 0 (ii) aF G #n G- 0 F nG G 0 A F nG # 0 (iii) F nOaG#0 = F nGo 0 AF nG #0 (iv) aF n G #0 = FO n G 0 A F n G 7 0 (v) FO n G 0 = F n G 0 A F n G # 0 Proof. Statement (i) can be shown by considering the definition of boundpoishared. This flag is true if any two halfsegments of F and G share a single meeting or intersection point. Hence, the intersection of both boundaries is non-empty. The proofs for (ii) to (v) require point set topological concepts. Statements (ii) and (iii) follow from Lemma 5.3.6 in [59]. Statements (iv) and (v) result from Lemma 5.3.5 in [59]. o The following theorem collects the results we have already obtained so far and proves the lacking parts of the nine matrix predicate characterizations. Theorem 5.1 : Let F, G E region and VF and VG be their segment classification vectors. Then the matrix predicates of the 9-intersection matrix are equivalent to the following segment class characterizations: (i) FnG n G 0 # vF[(0/2)] V VF[(2/0)] V VF[(1/2)] V VF[(2/1)] V vG[(1/2)] V vG[(2/1)] (ii) FnaOG 0 vG[(1/2)] V vG[(2/1)] (iii) FnG 0 vF[(0/1)] V vF[(1/0)] V VF[(1/1)] V VG[(1/2)] V VG[(2/1)] (iv) 3F n G 0 vF[(1/2)] V vF[(2/1)] (v) F n OG 4 0 = VF[(0/2)] V VF[(2/0)] V VF[(1/1)] V vF[boundpoi shared] (vi) 3F n G 0 VF[(0/1)] V VF[(1/0)] (vii) F- G # 0 vF[(1/2)] V VF[(2/1)] V VF[(1/1)] V VG[(O/1)] V VG[(1/O)] (viii) F-n GJ 0 + VG[(O/1)] V VG[(1/O)] (ix) F n G # 0 < true Proof. For (i), the forward implication corresponds to Lemma 5.7(i). The backward implication can be derived from Lemma 5.6(v) for (0/2)- and (2/0)-segments of F (and G). For (1/2)- and (2/1)-segments, Lemma 5.6(iii) and 5.6(iv) imply DF n G 4 0 and F n G 4 0, respectively. From these two implications, by using Lemma 5.8(iv) and 5.8(v), we can derive in both cases F n G 4 0. Statements (ii) and (iv) correspond to Lemma 5.6(iv) and 5.6(iii), respectively. For (iii) [(vii)], the forward implication corresponds to Lemma 5.7(ii) [5.7(iii)]. The backward implication for (iii) [(vii)] requires Lemma 5.6(i) [5.6(ii)] and Lemma 5.8(ii) [5.8(iii)] for the (0/1)- and (1/0)-segments ofF [G], Lemma 5.6(vi) [5.6(vi)] for the (1/1)-segments of F (and hence G), as well as Lemma 5.6(iv) [5.6(iii)] and Lemma 5.8(v) [5.8(iv)] for the (1/2)- and (2/1)-segments of G [F]. For (v), the forward implication can be shown as follows: if the boundaries of F and G intersect, then either they share a common meeting or intersection point, that is, the flag VF [boundpoishared] is set, or there are two halfsegments of F and G whose segment components are equal. No other alternative is possible due to our splitting strategy for halfsegments during the plane sweep. As we know, equal segments of F and G must have the segment classes (0/2), (2/0), or (1/1). The backward implication requires Lemma 5.6(v) for (0/2)- and (2/0)-segments ofF (and hence G), Lemma 5.6(vi) for (1/1)-segments ofF (and hence G), and Lemma 5.8(i) for single meeting and intersection points. Statement (vi) [(viii)] corresponds to Lemma 5.6(i) [5.6(ii)]. Statement (ix) turns out to be always true since our assumption in an implementation is that our universe of discourse U is always properly larger than the union of spatial objects contained in it. This means for F and G that always F U G C U holds. We can conclude that U (F U G) 7 0. According to DeMorgan's Laws, this is equivalent to (U F) n (U G) 4 0. But this leads us to the statement that F n G- 0. o Summarizing our results from the last two subsections, we see that Lemmas 5.1 to 5.5, and Theorem 5.1 provide us with a unique characterization of each individual matrix predicate of the 9-intersection matrix for each type combination. This approach has several benefits. First, it is a systematically developed and not an ad hoc approach. Second, it has a formal and sound foundation. Hence, we can be sure about the correctness of topological feature flags and segment classes assigned to matrix predicates, and vice versa. Third, this evaluation method is independent of the number of topological predicates and only requires a constant number of evaluations for matrix predicate characterizations. Instead of nine, even only eight matrix predicates have to be checked since the predicate F n G 0 yields true for all type combinations. Fourth, we have proved the correctness of our provided implementation. Based on this result, we accomplish the predicate n -,i alii 'ii of a topological predicate p with respect to a particular spatial data type combination on the basis of p's 9-intersection matrix (as an example, see the complete matrices of the 33 topological predicates of the region/region case in Figure 5-20 and the complete matrices for the remaining cases in [50]) and the topolog- ical feature vectors VF and VG as follows: Depending on the spatial data type combination, we evaluate the logical expression (given in terms of VF and vG) on the right side of the first 9IMC according to Lemma 5.1, 5.2, 5.3, 5.4, 5.5, or Theorem 5.1, respectively. We then match the Boolean result with the Boolean value at the respective position in p's intersection matrix. If both Boolean values are equal, we proceed with the next matrix predicate in the 9-intersection matrix; otherwise p is false, and the algorithm terminates. Predicate p yields true if the Boolean results of the evaluated logical expressions of all 9IMCs coincide with the corresponding Boolean values in p's intersection matrix. This requires constant time. Predicate determination also depends on a particular combination of spatial data types and leverages 9-intersection matrices and topological feature vectors. In a first step, depending on the spatial data type combination and by means of VF and VG, we evaluate the logical expressions on all right sides of the 9IMCs according to Lemma 5.1, 5.2, 5.3, 5.4, 5.5, or Theorem 5.1, respectively. This yields a Boolean 9-intersection matrix. In a second step, this Boolean matrix is checked consecutively for equality against all 9-intersection matrices of the topological predicates of the particular type combination. If n,,p with a, P3 {point, line, region} is the number of topological predicates between the types a and 3, this requires naB, tests in the worst case. 5.2.4 Optimized Evaluation Methods Based on the exploration phase and leveraging the 9-intersection matrix characterization, we have found a universal, correct, complete, and effective method for both predicate verification and predicate determination of topological predicates. So far, we have focused on the general applicability and universality of our overall approach. In this section, we show that it is even possible to fine-tune and thus improve our 9IMC approach with respect to efficiency if we look at predicate verification and predicate determination separately. Section 5.2.4.1 delineates a novel method called matrix ;:himiiiig for speeding up predicate verification. Section 5.2.4.2 describes a fine-tuned method called minimum cost decision tree for accelerating predicate determination. 5.2.4.1 Matrix thinning for predicate verification The approach of matrix ;himi;ii'i (MT) described in this subsection is based on the observa- tion that for predicate verification only a subset of the nine matrix predicates has to be evaluated in order to determine the validity of a given topological relationship between two spatial objects F and G. For example, for the predicate 1 (disjoint) of the region/region case, the combination that F n G = 0 A 3F n 3G = 0 holds (indicated by two O's) is unique among the 33 predicates. Consequently, only these two matrix predicates have to be tested in order to decide about true or false of this topological predicate. The question arises how the 9-intersection matrices can be systematically "thinned out" and nevertheless remain unique among the n,p topological predicates between two spatial data types oc and 3. We use a brute-force algorithm (Figure 5-16) that is applicable to all type combinations and that determines the thinned out version of each intersection matrix associated with one of the n,,p topological predicates. Since this algorithm only has to be executed once for each type combination, runtime performance and space efficiency are not so important here. In a first step (lines 8 to 10), we create a matrix pos of so-called position matrices corre- sponding to all possible 9-intersection matrices, that is, to the binary versions of the decimal numbers 1 to 511 if we read the 9-intersection matrix (9IM) entries row by row. Each "1" in a position matrix indicates a position or entry that is later used for checking two intersection matrices against each other. A "0" in a position matrix means that the corresponding entries in two compared intersection matrices are not compared and hence ignored. 01 algorithm MatrixThinning 02 input: Three-dimensional 9IM im. im[i, m] c {0, 1} 03 denotes entry (, m) (1 < 1,m < 3) of the ith 04 9IM (1 < i < na,)- 05 output: Three-dimensional thinned out 9IM tim. 06 tim[i,l,m] c {0,1,*}. '*' is 'don't care' symbol. 07 begin 08 Create three-dimensional matrix pos of 'position' 09 matrices where pos[j, ,m] E {0, 1} denotes entry 10 (l,m) of the jth possible 9IM (1 < < 511); 11 Sort pos increasingly with respect to the number of 12 ones in a matrix; 13 Initialize all entries of matrices of tim with '*'; r := 1; 14 // Compute thinned out matrices 15 for each i in 1... na,p do 16 j := 1; stop := false; 17 while j < 511 and not stop do 18 k:= 1; unequal : true; 19 while 1 < k < na,p and i 4 k and unequal do 20 equal := im[i] and im[k] have the same values 21 at all positions (1, m) where pos [j, m] = 1; 22 unequal : unequal and not equal; inc(k); 23 endwhile; 24 if unequal then // Thin out im[i] by pos [j]. 25 for each 1, m in 1... 3 do 26 ifpos[j,l,m] = 1 27 then tim[r, m] := im[i,l, m] endif 28 endfor; 29 inc(r); stop := true; 30 else inc(j); 31 endif 32 endwhile 33 endfor 34 end MatrixThinning. Figure 5-16. Algorithm for computing the thinned out versions of the nR,p intersection matrices associated with the topological predicates between two spatial data types ca and P Because our goal is to minimize the number of matrix predicates that have to be evaluated, in a second step, we sort the position matrices with respect to the number of ones in increasing order (lines 11 to 12). That is, the list of position matrices will first contain all matrices with a single "1", then the matrices with two ones, etc., until we reach the matrix with nine ones. At the latest here, it is guaranteed that an intersection matrix is different to all the other np 1 intersection matrices. Hence, our algorithm terminates. In a third step, we initialize the entries of all nap thinned out intersection matrices with the "don't care" symbol "*". The fourth and final step computes the thinned out matrices (lines 15 to 33). The idea is to find for each intersection matrix (line 15) a minimal number of entries that together uniquely differ from the corresponding entries of all the other ncp 1 intersection matrices. Therefore, we start traversing the 511 position matrices (line 17). For all "1"-positions of a position matrix we find out whether for the intersection matrix under consideration another intersection matrix exists that has the same matrix values at these positions (lines 20 to 21). As long as no equality has been found, the intersection matrix under consideration is compared to the next intersection matrix (lines 19 to 23). If an equality is found, the next position matrix is taken (line 30). Otherwise, we have found a minimal number of matrix predicates that are sufficient and unique for evaluation (line 24). It remains to copy the corresponding values of the 9-intersection matrix into the thinned out matrix (lines 25 to 28). 0|0 0|* 1 1* 0| 0|0 1|* 0* 00 1|* 0* 11 1|1 0|* 1|1 1: 0|* 0|* 0* 2: 0|* 0* 0* 3: 0|* 0|* 0| 4: 0 |* 0 5: 0 0 0* 1|* 0|* 1|* 0|0 0|* 1|* 11 0 1|* 0|0 0|* 1|* 1|1 0|* 1|* Figure 5-17. Complete and thinned out matrices for the 5 topological predicates of the point/point case. Note that for the same intersection matrix it may be possible to find several thinned out matrices with the same number of matrix predicates to be checked such that each of them represents the intersection matrix uniquely among the np intersection matrices. Our algorithm always computes the thinned out matrix with the "lowest numerical value". The complete and 00 00 1|*\ 1: 0* 0|* 0 2: 1|* 00 1* 0|0 1|1 1|1 6: 0* 0* 0|* 7: 1* 11 1|* ( 1|1 1|1 0|0 11: 0| 0| 12: 1|* 00 1|* 1|* 0|* 0|0 0|* 1|* 0|0 0|* 1|* 0|0 3: o0| 1|* 8: 0|* S1|* 111 13: 0|* S1|* 0|0 0|0 1|* 0|0 0|* 4: 0|* 0* 0|* 1| 9 1|* 11 1|* 1|* 1|* 0|0 1|* 0|* 14: 0|* 0|* 0|* 1|* 1|* 1|1 1|* 0|0 1|1 1 5: 0* 0* 0|* 1|* 00 1* 1|1 0|0 1|1 10: 0|* 0* 0* 1|* 1 1 1|* Figure 5-18. Complete and thinned out matrices for the 14 topological predicates of the point/line case. 0|0 0|0 11 11 1|* 0|0 00 N 0|* 3: 0|* 0|* 10 4: 0|* 0* 0* 1|* 1| 1| 1 1|* 1|* 1* 11 1 0|* 1|* 1|1 00 1|1 5: 0* 0* 0|* 1* 1| 11* Figure 5-19. Complete and thinned out matrices for the 7 topological predicates of the point/region case. thinned out matrices for the point/point case are shown in Figure 5-17, for the point/line case in Figure 5-18, for the point/region case in Figure 5-19, and for the region/region case in Figure 5- 20. The complete and thinned out matrices for the line/line case and the line/region case can be found in [50]. Definition 5.7 defines the measures we use to summarize and interpret these results. 00 1 1|* 1,* 6: 0|0 1\. S1|* 11: 0|* S0|0 /I* 16: 1|1 S1|* 1.* 21: 0|* S0|0 1|* 26: 0|0 1 1|* 31: 1|1 S1|1, 1* \ 1* 1* / 0|0 0|* 11* 11* \ 11 1* / 11) 111* ) 0|0 11 0|0 1|, 111 1* 0|0 1* 0|0 0|* 1|* 1* \ 1I* 11 1'* \ 11 N 11* / 1* 0|0 1|* 11) 0|0 1|* 11* \ 111 1* / 0|0 3: 0| * 13: o(, 1|8 1|* 8: 1|1 S 1|1 /111 13: 0|0 1|* 11. 1|* 1|* 23: 0|0 1|. 1|* 28: 1|. 1|1 /1|* 33: 1|1 1|1. 1* \ 1* 1* / 0|0 0|* 1* / 1* \ 11 1* / 1* \ 111 1* / 1|* 0|0 1* / 1* \ 1* 1* / 111 1|* 11 1* / 0|0 4: 0|* 1|* 9: 1|1 1 * 1|* 14: 1|1 1|* 1|0* 19: 0|* 1|* 24: 0|* 0|0 1|* 29: 1|1 S1|* ii)\ 1Y ) i* ) i0 ii) U) 1* 5: 0* 0|0 111 10: 0|0 1 * 1 * 15: 1| 1|* 1|* 20: 0|0 1|* 1|1. 25: 0|0 S 1|1 S1|* 30: 1|1 S1|* 0|0 0|* 1* 11 0|0 1* ) 1|* ) 1* \ 1*| 1* / 1* \ 111 1i* 1|* 0|0 1I* Figure 5-20. Complete and thinned out matrices for the 33 topological predicates of the region/region case. (00 1: 0|* (1* 6: 0| ( 1|* 1)* 0|* 1|* 0|0 0|* 1|* 0|0 2: o0| S1|* 111 7: 0|* S1|* Definition 5.7 : Let IMMT be a thinned out 9IM, and cnt be a function that counts the number of relevant matrix predicates of IMMT. Let n(,p with a, P E {point, line, region} be the number of (thinned out) 9IMs of the topological predicates between the types a and 3, and nk be the number of thinned out 9IMs for which k (with 1 < k < 9) matrix predicates have to be evaluated. Let the cost, that is, the total number of matrix predicates to be evaluated for a and 3, be Cc,p without matrix thinning and CMT with matrix thinning. We then denote with RACMT the reduced average cost in percent when using matrix thinning. We obtain: (i) cnt(IMMT) = {(l,m) 11 < l,m < 3,IMMT[1, m] e {0, 1}}| (ii) nk = IM 1 < i (iii) na,p = l9 k (iv) CC,p = 8 n,p (v) ACa,p = C,p/na,p = 8 (vi) Cc = 1 k ,p (vii) AC, = Cf,/na,p (vii) ACMT CMT /0 MT (viii) RAMT = 100 ACA/ACa,p = 100.C /CaM , ACM denotes the average number of matrix predicates to be evaluated. Table 5-3 shows a summary of the results and in the last two columns the considerable performance enhancement of matrix thinning. The reduction of matrix predicate computations ranges from 27% for the line/line case to 75% for the point/point case. Table 5-3. Summary of complete and thinned out 9IMs for the topological predicates of all type combinations. n with k Type combination nc,p 1 2 3 4 5 6 7 8 9 C,p ACa,p CMT ACMT RACM point/point 5 1 3 1 0 0 0 0 0 0 40 8 10 2.00 25.00 line / line 82 0 0 2 12 4 50 12 2 0 656 8 474 5.78 72.26 region/region 33 0 6 6 10 11 0 0 0 0 264 8 125 3.79 47.35 point/line 14 0 0 6 8 0 0 0 0 0 112 8 50 3.57 44.64 point/region 7 0 3 4 0 0 0 0 0 0 56 8 18 2.57 32.14 line / region 43 0 0 5 18 12 7 1 0 0 344 8 196 4.56 56.98 5.2.4.2 Minimum cost decision tree for predicate determination In Section 5.2.3, we have seen that, in the worst case, n,,p matching tests are needed to determine the topological relationship between any two spatial objects. For each test, Boolean expressions have to be evaluated that are equivalent to the eight matrix predicates and based on topological feature vectors. We propose two methods to improve the performance. The first method reduces the number of matrix predicates to be evaluated. This goal can be directly achieved by applying the method of matrix thinning described in Section 5.2.4.1. That is, the number n,,p of tests remains the same but for each test we can reduce the number of matrix pred- icates that have to be evaluated by taking the thinned out instead of the complete 9-intersection matrices. The second method, which will be our focus in this subsection, aims at reducing the number n,,p of tests. This method is based on the complete 9-intersection matrices but also manages to reduce the number of matrix predicates that have to be evaluated. We propose a global concept called minimum cost decision tree (MCDT) for this purpose. The term "global" means that we do not look at each intersection matrix individually but consider all n,,p intersection matrices together. The idea is to construct a full binary decision tree whose inner nodes represent all matrix predicates, whose edges represent the Boolean values true or false, and whose leaf nodes are the n,,p topological predicates. Note that, in a full binary tree, each node has exactly zero or two children. For searching, we employ a depth-first search procedure that starts at the root of the tree and proceeds down to one of the leaves which represents the matching topological predicate. The performance gain through the use of a decision tree is significant since the tree partitions the search space at each node and gradually excludes more and more topological predicates. In the best case, at each node of the decision tree, the search space, which comprises the remaining topological predicates to be assigned to the remaining leaves of the node's subtree, is partitioned into two halves so that we obtain a perfectly balanced tree. This would guarantee a search time of O(lognci,p). But in general, we cannot expect to obtain a bisection of topological predicates at each node since the number of topological predicates yielding true for the node's matrix predicate will be different from the number of topological predicates yielding false for that matrix predicate. An upper bound is the number 8, since at most eight matrix predicates have to be checked to identify a topological predicate uniquely; the ninth matrix predicate yields always true. Hence, our goal is to determine a nearly balanced, cost-optimal, full binary decision tree for each collection of nB,p intersection matrices. If we do not have specific knowledge about the probability distribution of topological predicates in an application (area), we can only assume that they occur with equal distribution. But sometimes we have more detailed information. For example, in cadastral map applications, an adequate estimate is that 95% (or even more) of all topological relationships between regions are disjoint and the remaining 5% are meet. Our algorithm for constructing MCDTs considers these frequency distributions. It is based on the following cost model: Definition 5.8 : Let Mcp be an MCDT for the spatial data types a, P3 {point, line, region}, wi be the weight of the topological predicate pi with 1 < i < na,p and 0 < wi < 1, and di with 1 < di < 8 be the depth of a node in Mcp at which pi is identified. We define the total cost CMCDT of Mc,p as cMCD p n,,p CAf D= E wi di with L wi = 1 i=1 i=1 That is, our cost model is to sum up all the weighted path lengths from each leaf node representing a topological predicate to the root of the MCDT. If all topological predicates occur with equal probability, we set wi = The issue now is how to find and build an optimal MCDT with minimal total cost C"CDT on the basis of a given probability distribution (weighting) for the topological predicates. If all topological predicates occur with equal probability, this problem corresponds to finding an optimal MCDT that requires the minimal average number of matrix predicate evaluations to arrive at an answer. Figure 5-21 shows our recursive algorithm MCDT for computing a minimum cost decision tree for a set im of na,p 9-intersection matrices that are annotated with a weight representing the corresponding predicates's probability of occurrence, as it is characteristic in a particular 01 algorithm MCDT 02 input: list im= ((imi,wi),..., (imn,,, ,)) of 9IMs 03 with weights, list mp of the eight matrix predicates 04 output: MCDT Mp,p 05 begin 06 best_node := new_node(); stop :=false; 07 discriminator := \, /, tui \i,(mp); 08 while not eol(mp) and not stop do 09 node := new node); 10 node.discr := discriminator; node.im := im; 11 if noofelem(im) = 1 then /* leaf node */ 12 best-node := node; bestjnode.cost := 0; 13 stop := true; 14 else 15 /* Let im = ((imk, Wk),.. .,(im,, Wk) 16 with 1 < ki < ... < kn < na,p- */ 17 partition(im, discriminator, iml, imr); 18 if no of elem(im) # 0 and 19 noofelem(imr) # 0 then 20 copy(mp, new-mp); del(newmp, discriminator); 21 node.lchild := MCDT(iml, newmip); 22 node.rchild := MCDT(imr, newmp); 23 node.cost := node.lchild. cost + node.rchild.cost 24 + k wi; 25 if node.cost < bestnode.cost 26 then bestjnode := node; endif; 27 endif; 28 discriminator := select _ne.t(imp); 29 endif 30 endwhile; 31 return bestnode; 32 end MCDT. Figure 5-21. Minimum cost decision tree algorithm application (line 2). Later these matrices become the leaves of the decision tree. In addition, the algorithm takes as an input the list mp of eight matrix predicates (we remember that the exterior/exterior intersection yields always true) that serve as discriminators and are attached to the inner nodes (line 3). This list is necessary to ensure that a matrix predicate is not used more than once as a discriminator in a search path. During the recursion, the while-loop (lines 8 to 30) terminates if either the list mp of matrix predicates to be processed is empty or the list im of 9-intersection matrices contains only a single element. For each matrix predicate used as a discriminator, the operation newnode creates a new tree node node (line 9). The matrix predicate discriminator as well as the list im annotate the tree node node (line 10). If im has only one element (line 11), we know that node is a leaf node representing the topological predicate pertaining to the single element in im. The cost for this leaf node is 0 since its current depth is 0 (line 12). Otherwise, if im consists of more than one element, we partition it into two lists imi and imr (line 17). The partitioning is based on the values of each 9-intersection matrix in im with respect to the matrix predicate serving as the discriminator. If such a value is 0 (false), the corresponding 9-intersection matrix is added to the list iml; otherwise, it is added to the list imr. A special case now is that im has not been partitioned so that either iml or imr is empty (condition in lines 18 to 19 yields false). In this case, the discriminator does not contribute to a decision and is skipped; the next discriminator is selected (line 28). If both lists imi and imr are nonempty (lines 18 to 19), we remove the discriminator from a new copy newmp of the list mp (line 20) and recursively find the minimum cost decision trees for the 9-intersection matrices in iml (line 21) and in imr (line 22). Eventually, all recursions will reach all leaf nodes and begin returning while recursively calculating the cost of each subtree found. The cost of a leaf node is 0. The cost of an inner node node can be expressed in terms of the cost of its two nonempty subtrees node.lchild and node.rchild processing the lists iml and imr respectively. The depth of each leaf node with respect to node is exactly one larger than the depth of the same leaf node with respect to either node.lchild or node.rchild. Therefore, besides the costs of these two subtrees, for each leaf node of the subtree with root node, we have to add the leaf node's cost (weight) one time (lines 23 to 24). These weights are stored in node.im. The cost of node is then compared with the best cost determined so far, and the minimum will be the new best option (lines 25 to 26). Eventually, when all the matrix predicates have been considered, we obtain the best choice and return the corresponding minimum cost decision tree (line 31). Table 5-4 shows the results of this algorithm by giving a textual pre-order (depth-first search) encoding of all MCDTs for all type combinations on the basis of equal probability Table 5-4. MCDT pre-order representations for all type combinations on the basis of equal probability of occurrence of all topological predicates. Type combination MCDT pre-order representation point/point 2 3 0 1 4 5 line /line a 0- 33 a 34 35 1 2 43 a 44 45 S3 4 46 a 47 48 0- 0- 36 37 38 5 6 - 49 a 50 51 7 8 52 53 54 0 9 10 a 11 12 13 14 15 16 0- 39 40 O 41 42 - 55 56 a 57 58 0- 59 60 a 61 62 0 0- 17 18 19 20 0- 21 22 a 23 24 D 0- 25 26 a 27 28 0- 29 30 31 32 o 0- 63 64 65 66 67 68 69 a 70 71 72 73 74 a 0- -a 75 76 77 78 -a 79 80 a 81 82 region / region a 0- 0- 5 6 2 10 1 3 4 11 12 13 7 a 8 9 0- 15 16 14 17 18 o 0- 21 -22 23 -0 19 20 24 25 26 0- 27 28 29 0- 30 31 3 32 33 point/line a 1 2 3 4 5 6 0- 7 8 a 9 10 S- 11 12 13 14 point/region 0 1 0- 2 3 0- 4 5 0- 6 7 line /region 0- 5 6 o 1 8 9 o 2 10 11 0- 3 4 7 0- 12 13 a 0- 14 15 0- 18 19 0- 20 21 a -a 26 27 28 0- 32 33 a 34 35 0- 36 37 a 0- 16 17 0- 22 23 0-24 25 0- 29 30 31 0- 38 39 40 41 42 43 of occurrence of all topological predicates. The encodings allow an easy construction of the MCDTs. Since MCDTs are full binary trees, each node has exactly zero or two child nodes. We leverage this feature by representing an MCDT as the result of a pre-order tree traversal. The pre- order sequence of nodes is unique in this case for constructing the decision tree since inner nodes with only one child node cannot occur. Each inner node in the pre-order sequence is described as a term XY where X, Y E {, -, }. Such a term represents a matrix predicate AX n BY 4 0 serving as a discriminator. For example, the term XY = a denotes the matrix predicate A n aB 4 0 (prefix notation for boundary). Each leaf node represents the 9-intersection matrix number of a topological predicate. The matrix numbers are specified in the Figures 5-17, 5-18, 5-19 and 5-20 as well as in [50, 59]. Figures 5-22 shows a visualization of the MCDTs of three spatial data type combinations on the assumption that all topological predicates occur with equal probability. The MCDTs for the other type combinations have been omitted due to their very large size. Each inner node is annotated with a label XY where X e {A aA,A } and Y E {B 3B,B }. A label represents a matrix predicate X n Y 4 0 serving as a discriminator. For example, the label XY = A B denotes the matrix predicate A n aB 4 0. If the evaluation of a matrix predicate yields false, we move to the left child; otherwise, we move to the right child. Each leaf node represents the 9-intersection matrix number of a topological predicate. The following definition specifies measures that we use to summarize and interpret these results. We are especially interested in the average number of matrix predicates to be evaluated. AOB AOBo A AB SAaB AOaB 2 3 1 ARB 1 AB AB AB- 4 5 2 3 4 5 6 7 A B AOBo AOaB AOaB A aB AB AOR A AB 1 2 A aB A aB A aB A aB A- B A-aB 3 4 5 6 7 8 9 10 11 12 13 14 C Figure 5-22. Minimum cost decision trees. A) For the 5 topological predicates of the point/point case. B) For the 7 topological predicates of the point/region case. C) For the 14 topological predicates of the point/line case under the assumption that all topological predicates occur with equal probability. Definition 5.9 : Let CMCDT denote the total cost of an MCDT Mcp according to Def- inition 5.8. Let nc,p with a, 3 E {point2D, line2D, region2D} be the number of 9IMs of the topological predicates between the types a( and 3, IMi with 1 < i < n(,p be a 9IM, and dk be the cP, number of topological predicates associated with leaf nodes in Mp of depth k (with 1 < k < 9). Further, let Ca,p be the cost without using an MCDT, ACQ,p be the average cost without using an MCDT, AC"MDT be the average cost when using an MCDT, and RACMCDT be the reduced average cost in percent when using an MCDT. The measures are defined as: (i) d, = I{IMi ll (ii) na,p = l0 dl,p (iii) C,p = 8 n,p (iv) ACa,p = 4.(n,p + 1) (v) AClMDT = CMCDT /n (vi) RACMCDT 100 ACMCDT/ACp To determine the average cost ACB,p without using an MCDT in (iv), we observe that the best case is to check 8 matrix predicates, the second best case is to check 16 matrix predicates, etc., and the worst case is to check all 8 na,p matrix predicates. The average number of matrix predicates that has to be checked without using an MCDT is therefore 8 (1 + 2 + ... + na,p)/n, = 4 (na,p + 1). ACMDT in (v) yields the average number of matrix predicates to be evaluated. Table 5-5 shows a summary of the results and in the last two columns the considerable performance enhancement of minimum cost decision trees. The reduc- tion of matrix predicate computations ranges from 90% for the point/point case to 98% for the line/line case. The MCDT approach is similar to a technique introduced in [10] for topological predicates between simple regions. However, their method of determining a binary decision tree rests on the thinned out 9-intersection matrices and results in a near optimal algorithm and solution. The reason why optimality is not achieved is that a topological predicate can have multiple, equipollent thinned out matrices, that is, thinned out matrices are not unique. Therefore, using a specific set of thinned out matrices as the basis for partitioning the search space can only lead to an optimal decision tree for this set of thinned out matrices and may not be optimal in the general case. Our algorithm rests on the complete 9-intersection matrices. It produces an optimal Table 5-5. Summary of the MCDTs for all type combinations on the basis of equal probability of occurrence of all topological predicates. d, with k Type combination na,p 1 2 3 4 5 6 7 8 9 C,p AC,p CMCDT ACADT RACCDT point/point 5 0 3 2 0 0 0 0 0 0 40 24 12 2.40 10.00 line / line 82 0 0 0 0 0 48 30 4 0 656 332 530 6.46 1.95 region / region 33 0 0 0 3 22 8 0 0 0 264 136 170 5.15 3.79 point/line 14 0 0 2 12 0 0 0 0 0 112 60 54 3.86 6.43 point/region 7 0 1 6 0 0 0 0 0 0 56 32 20 2.86 8.94 line / region 43 0 0 0 3 15 19 6 0 0 344 176 243 5.65 3.21 decision tree (several optimal trees with the same total cost may exist) for the specified set of 9-intersection matrices and the given probability distribution. One can verify this by applying our algorithm to the eight 9-intersection matrices for two simple regions and the same probability distribution as specified in [10]. Our algorithm produces an optimal tree with the total cost of 2.13 while the so-called "refined cost method" in [10], which uses thinned out matrices, produces a tree with the total cost of 2.16. We can observe the following relationship between MCDTs and thinned out matrices: Lemma 5.9 : For each combination of spatial data types a and 3, the total cost of its minimum cost decision tree (given in Table 5-5) is greater than or equal to the total cost of all its thinned out matrices (given in Table 5-3), that is, CMCDT > CMT aP -aP Proof. The proof is given by contradiction. Assume that for a spatial data type combination the total cost of its MCDT is less than the total cost of all its thinned out matrices. Consequently, there must be at least one path from the root to a leaf in the MCDT that contains a smaller number of matrix predicates than the number of matrix predicates in the thinned out matrix for the topological predicate associated with that leaf. This implies that we can identify this topological predicate with a smaller number of matrix predicate decisions than the number of matrix predicates in its thinned out matrix. But this contradicts the definition of a thinned out matrix. O 5.2.5 Interface Methods for Topological Predicates To verify the feasibility, practicality, correctness, and efficiency of the concepts presented, we have implemented and tested our approach. Details of our topological predicate implementa- tion is provided later in Section 5.5. A qualitative assessment, performance study and analysis of this implementation is presented in Section 6.1. Here, we specify a set of function interfaces for our topological predicate implementation so that they can be used to support our spatiotemporal predicate implementation to be described in the next section. The topological predicate implementation provides three specific interface methods TopPredExploration, TopPredl, rif aniiri. and TopPredDetermination and one universal interface method TopPred for providing the functionality of the exploration phase and the evaluation phase as well as the combined effect of both phases. The method TopPredExploration explores the topological data of interest for two interacting spatial objects. This interface is overloaded to accept two spatial objects of any type combination as input. Depending on the input object types, it executes one of the six plane sweep based exploration algorithms from Section 5.2.2. The output consists of two topological feature vectors which hold the relevant topological information for both argument objects. The methods TopPredl', rvi aniiin and TopPredDetermination handle predicate verification and predicate determination queries respectively. Both interfaces are overloaded and take two topological feature vectors as input. Both methods leverage the general evaluation method of 9-intersection matrix characterization from Section 5.2.3. The interface method TopPredVerifi- cation takes a predicate identification number as an additional input parameter. It corresponds to the matrix number (specified in [59] and used in Figures 5-17 to 5-19 and 5-20) of the topo- logical predicate to be evaluated. The method implements the optimized evaluation technique of matrix thinning from Section 5.2.4. The output is the Boolean value true if the topological relationship between the two spatial objects corresponds to the specified predicate; otherwise, the value is false. The interface method TopPredDetermination implements the optimized evaluation technique of minimum cost decision trees from Section 5.2.4 and outputs the matrix number of the topological predicate corresponding to the topological relationship between the two spatial objects. The universal interface method TopPred is overloaded to accept two spatial objects of any type combination and an optional predicate identification number as input. If the optional argument is specified, it triggers a predicate verification process by invoking TopPredExploration followed by TopPred', riifit aniii and returns a Boolean value as a result. Otherwise, a predicate determination process is to be executed, and thus it invokes TopPredExploration followed by TopPredDetermination and returns a predicate identification number corresponding to the topological relationship between the two spatial objects. This universal interface will be used in the next section to leverage the support for our spatiotemporal predicate implementation. 5.3 Algorithms for Spatiotemporal Predicates Spatiotemporal predicates between moving objects are not limited in their number since more elementary predicates can always be combined to more complex predicates and thus describe more complicated developments through specific construction operators like temporal composition, temporal alternative, and others (Section 2.2 and [22]). To formulate a specific algorithm for each newly constructed predicate would thus be very inefficient and troublesome. Hence, the idea is to devise a generic algorithmic scheme that can be leveraged for query evaluation and that is applicable also to developments which have so far not been defined. 5.3.1 The Algorithmic Scheme For the evaluation of a spatiotemporal predicate describing a development of topological relationship, it is helpful to conceptually consider moving objects as entities in the three- dimensional (3D) space. A moving region is then considered as a volume, a moving line as a \lurf, ,. and a moving point as a (3D) curve4 A first, coarse approach to a generic algorithmic 4 Note that volumes, surfaces, and curves do not have an arbitrary structure in our case. That is, each moving region, moving line, or moving point can be mapped to a volume, surface, or curve respectively, but not vice versa. For a discussion, see [22]. scheme works as follows: Taking the 3D counterparts of two moving objects being the operands of a spatiotemporal predicate, we compute their 3D geometric intersection. We do this in a way so that we obtain a sequence of time intervals together with the information about the corresponding parts of the two moving objects (each of which might be undefined), of their intersection, and of their topological relationship for each time interval. For example, in the moving point/moving region case, in a specific time interval (that can degenerate to a time instant), either the curve is inside the volume, or the curve runs along the volume border, or the curve is outside the volume, or one or even both objects are undefined. The essential point is that for each change in the topological relationship a new time interval is reported. The intersection procedures for other combinations of volumes, surfaces, and curves are analogous. This means that in principle we could compute the evolution of topological relationships between two spatial objects over time by using algorithms from computational geometry and from constructive solid geometry. We aim at avoiding their, though logarithmic, still considerable complexity and to find a more efficient solution. In any case, the validity of a spatiotemporal predicate can then be checked by matching the predicate against the computed evolution. Due to our sliced representation of moving objects as a sequence of units, from a 3D perspective a region value corresponds to a unit volume, a uline value to a unit \IIr/'lI and a point value to a unit curve. Together with some optimizations, a spatiotemporal query predicate can be evaluated by a refined algorithmic scheme including the following steps: 1. Time-synchronized interval refinement: Since the unit intervals of both operand objects are usually incompatible, meaning that the start and end points of the intervals of the first operand often do not coincide with any start and end points of the intervals of the second operand, an interval refinement has to be computed covering all start and end points of unit intervals of both operands. An optimization is based on the fact that a spatiotemporal predicate is only defined at time instants and during periods in which both operand objects are defined. Hence, those time intervals can be skipped in which only one of the operands is defined5 Finally, both operand objects are synchronized in the sense that for each unit 5 The case that both objects are undefined cannot occur because these time intervals are not explicitly stored in the object representations. in the first object there exists a matching unit in the second object with the same, possibly reduced unit interval, and vice versa. 2. Function-valued interval refinement: Each pair of matching units in both objects has possibly to be further refined depending on the evolutions represented by the two unit functions. This is the case if both 3D unit objects intersect or touch each other and thus change their topological relationship. As a result, we will have computed the finest interval granularity needed for the determination of the topological relationship between two matching units. 3. Development determination: For each pair of matching units we now determine the unique, basic spatiotemporal predicate (period predicate) or topological relationship (instant predicate). We then sequentially collect the topological relationships of all matching units and in total obtain the development of the two operand objects of the spatiotemporal query predicate. 4. Pattern matching with query predicate: This step includes a pattern matching process between the development computed and the query predicate asking for evaluation. It results in one of the Boolean values true orfalse. Note that this step is not required for a query to determine the development. To enhance the comprehensibility of the algorithmic scheme, we have deliberately delin- eated its steps in a consecutive and separated manner. For example, steps 2 and 3 can easily be combined because during the computation of the intersection of two 3D unit objects (step 2) the spatiotemporal predicates can be directly derived (step 3). Even a completely interleaved execution of the algorithmic steps is possible since steps 1 to 4 can be nested. This leads to a slight increase in the algorithmic complexity but is a little faster by a constant factor, although it does not change the runtime complexity, as we will see later. The algorithmic scheme is independent of the predicate sequence of the development induced by the operand objects of the query predicate, and it also does not depend on the query predicate itself. Steps 1 and 4 are generic in the sense that they do not depend on the types of the operand objects. For steps 2 and 3, type combination-specific intersection detection algorithms and type combination-specific topological predicate determination are needed respectively. The fact that we employ a single algorithmic scheme for computing all spatiotemporal pred- icates necessitates and implies that their evaluation procedure during query processing is different from other, built-in or user-defined predicates. At the descriptive level, both spatiotemporal pred- icates (like Disjoint, Cross) and other predicates (like the comparison operators <, <, >, >) are used in selection and join conditions of SQL queries and are syntactically represented as boolean functions. At the physical level, other predicates are usually implemented by executable boolean functions, i.e., program code fragments, which explicitly calculate the predicates. However, spa- tiotemporal predicates describing developments represent topological patterns and are mapped to string patterns. We assume that the query string pattern of a spatiotemporal predicate being asked is a sequence of basic spatiotemporal predicates and topological predicates in development normal form (see [22]). In step 4, such a query string pattern is then matched against the actual development of two moving objects under consideration, which is also represented by a string. In the following, we describe a version of the algorithmic scheme, called STPredEvaluator (Figure 5-23), where first step 1, then steps 2 and 3 together, and finally step 4 are executed consecutively. The starting point is a given spatiotemporal query predicate Q(mol, mo2) applied to two moving objects mok E {mapping(upoint), mapping(uline), mapping(uregion) } with k E {1, 2}. We assume that the DBMS first checks and keeps in the flag qwc whether Q contains either the instant predicate true or period predicate True. These predicates are defined as a kind of "wildcard" predicates to express "don't care" parts of developments in case that a development is only partially defined. First we perform a prechecking on the input objects. In case that one of the operand objects is empty, or their lifespans do not intersect (operation Tlntersects), we return false as the result. All checks can be done in constant time, except for the lifespan check which takes O(di + d2) time if di and d2 denote the numbers of intervals of lsi and Is2. Note that checking their projection bounding boxes for disjointedness is not sufficient to return a false value here if they are disjoint. This is because the predicates disjoint and Disjoint are also relationships that can be asked to be evaluated. Furthermore, there are also different types of disjoint relationships between complex objects as identified in [59]. algorithm STPredEvaluator(mo\ mo2, Q, qwc) input: two moving objects mo ( = (n, ls, objpbbi,...) and mo2 = (n, s2, objpbb2,...), topological string pattern Q that has to be checked with respect to mo\ and mo2, flag qwc indicating whether Q includes wildcards true or True output: true if Q matches actual development; false, otherwise begin if n = 0 or m = 0 or not Tlntersects(lss, 1s2) then return false else Rfihi dlii, i 'al\ := TimeSynchronizelntervals(mo\, mo2); (O'bi, \Development,owc) := FunctionValuedR, fii ( m, mu(Rlfim, dini, nia'l\o return PatternMatching(Q,qwc,Oli, iDevelopment,owc) endif end STPredEvaluator. Figure 5-23. Spatiotemporal predicate evaluator algorithm. The algorithm TimeSynchronizelntervals yields a sequence of matching units with concor- dant, possibly reduced unit intervals. As we will see in Section 5.3.2, its runtime complexity is O(n + m+ b) where n and m are the numbers of unit intervals of mo\ and mo2, respectively, and b is the number of matching unit intervals. The algorithm FunctionVl h, dR, fin, i, nt further refines this sequence depending on the unit functions; it returns the so-called object development and a boolean flag indicating the existence of the wildcards true or True in the unit development. In Section 5.3.3, we will show that this takes O(bnmax (z2ax -+ log nmax)) where Zmax is the maximum number of moving unit segments or moving unit single points (both also known as unit elements) in a unit of mo\ and mo2 and nmax is the maximum number of changes in the topological relationships between unit elements of matching units. The algorithm PatternMatching checks the query string and the actual object development string for matching pattern. The flags qwc and owc indicate whether the corresponding strings contain wildcards. In Section 5.3.4, we will show that for the case that both strings do not comprise wildcards this requires O(v + w) time where v and w are the lengths of the strings. Finally, the runtime complexity of the algorithm STPredEvaluator is the sum of the runtime complexities of its subalgorithms. 5.3.2 Time-Synchronized Interval Refinement It is obvious that the computation of the time-synchronized interval refinement requires a parallel scan through the unit sequences and hence unit interval sequences of both object representations. During the traversal, intersections of unit intervals of both moving objects have to be detected. The effect is that temporally overlapping and thus matching units of both objects are reduced to their common time interval and that some intervals of both objects are totally or partially dropped (Figure5-24). But due to reasons of efficiency, we will not copy matching parts and construct two reduced moving objects. Instead, we will take an additional interval sequence data structure and only store common intervals with pointers to the matching units of the two moving objects for later use. time Ti : III Figure 5-24. Time-synchronized refinement of two unit interval sequences: two sets of time intervals on the left side, and their refinement partition for development evaluation on the right side. The implementation of the parallel scan through the unit interval sequences of both moving objects turns out to be not so trivial as it seems at first glance. For example, the deployment of Allen's thirteen different temporal predicates [1], which uniquely characterize the possible topological relationships between two intervals, is feasible but leads to a large number of case distinctions and predicate evaluations that make a complete treatment error-prone and lengthy. Our approach leads to shorter, faster (by a constant factor), and more comprehensible code and is able to handle closed, half-open, and open intervals. It collects the start and end points of the intervals of both objects in temporal order and then determines the intersection intervals. In the following algorithm (Figure 5-25), the notation "()" denotes the empty sequence, "o" sequence concatenation, the function eos tests whether the end of a sequence has been reached, the algorithm TimeSynchronizelntervals(mol mo2) input: two moving objects mol = (n,..., ((..., ii,...),..., (..., in,...))) and Mo 2 = (m ..., ((.... ...), ..., (..., ia,...))) output: a list R, fii, dii, i i in\ containing all intersection intervals of matching units of both objects together with pointers (i.e., unit numbers) to these units begin // Step 1: Create the temporally ordered list of all interval left and right endpoints TList := (); // Let ki be the current unit number of object i with i E {1,2}, left be a flag indicating // whether the left or right interval endpoint is considered, ti be the start or end time of the // interval, and cli be a flag indicating whether the interval is left-closed or right-closed. (ki, left1, ti, cl1) := (1, true, mol.il.l, mtol.i .lc); (k2, left2, t2, 2) := (1, true, mo2.i1.1, mo2.i.l c); while kl < n and k2 < m do if tI < t2 then TList := TList o((1, ki, left1, ti, cll)); next(1, ki, left1, ti, cll) else if tl > t2 then TList := TList o((2, k2, left2,t2, 12)); next(2, k2, left2, t2, c2) else // t = t2 if left1 and cll and not ( not left2 and not C12)) or (not left1 and cll and left2 and not C12) or (not left1 and not c11) then TList := TList o((l, ki, left,, ti, cli)); TList := TList o ((2, k2, left, t2, c12)); else TList := TList o((2, k2, left2, t2, c2)); TList := TList o ((1, k, left, ti, cll)); endif next(l, ki, left1, tI, cli); next(2, k2, left2 t2, 12) endif endwhile; // Step 2: Compute the intersection intervals of the matching units of both moving objects R, fiii, dbli r al\ := (); OverlapNo := 0; while not eos(TList) do (id, k, left, t, cl) := GetNextElem(TList); if left then Incr(OverlapNo); if OverlapNo = 1 then if id = 1 then kl := k else k2 := k endif else //OverlapNo = 2 if id = 1 then (1,p, q, cl) := (t,k, k2,cl) else (1,p, q, cl) := (t, k, k, cl) endif endif else Decr(OverlapNo); if OverlapNo = 1 then (r, cl) := (t, cl); R, enfidi dlf, i r := Rfiii, di, rol\ o((, r, ,cl, p,q)) endif endif endwhile; return R, fii dlri ii 'nl\ end TimeSynchronizelntervals. Figure 5-25. Time-synchronized interval refinement algorithm. operation GetNextElem yields the next element of a sequence, the term (al,..., an) := (b, ..., bn) stands for the statement list a1 := bl;...; an : bn, and the operations Incr and Decr increment and decrement an integer value respectively. The operation next positions on the next time instant of an ordered interval sequence and is discussed in more detail below. In step 1 of the algorithm, in the case where t, and t2 coincide, each of both time instants may indicate a left-closed ("["), left-open ("("), right-closed ("]"), or right-open (")") interval. This results in 16 possible combinations for both time instants. For each combination we have to decide the order of the two time instants in the list TList of interval endpoints. This is needed in step 2 of the algorithm to determine the refined intervals and, in particular, to detect time intervals which have degenerated to time instants. The decision process is illustrated in Table 5-6 which in the first two lines lists all combinations of closed and open, left and right interval endpoints and which in the third line determines their order. The notation "1, 2" means ti must precede t2 "2, 1" means the inverse, and "112" means that the order is arbitrary. Table 5-6. Interval endpoint ordering. th [ [ [ [ ] ] ] ] ( ( ( ( ) ) ) ) t2 [ ] ( ) [ ] ( ) [ ] ( ) [ ] ( ) order 1,2 1,2 1,2 2,1 2,1 112 1,2 2,1 2,1 2,1 112 2,1 1,2 1,2 1,2 112 Due to at most 2 (n + m) different interval endpoints, the runtime complexity for step 1 is O(n + m) where n and m are the numbers of intervals of mo\ and mo2, respectively. We now present the algorithm Next for the next operation (Figure 5-26) which positions on the next time instant of the unit interval sequence of one of both moving objects and which needs 0(1) time. In step 2 of the algorithm, the temporally ordered list of all interval left and right endpoints is traversed for determining the intersection intervals. This is done by computing overlap numbers (see Section 5.2.1.2, here applied to the one-dimensional case) indicating the number of intervals covering a time instant. Only time instants and intervals with overlap number 2 belong to the result. The runtime complexity for step 2 and also for the whole algorithm TimeSynchronizelntervals is O(n + m + b) (= O(n + m) since bn + m) where b is the ascertained number of matching unit intervals. algorithm Next(id, k, left, t, cl) input: id E { 1,2} indicating moving object mo\ or mo2, current unit number k output: updated unit number k, left or right end time t of an interval, flag left indicating whether t is the left boundary of an interval, flag cl indicating whether the interval is closed at t begin if left then left =false; if id = 1 then t := mol .ik.r; cl := mo1 ik.rc else t := m02.ik.r; cl := mo2.ik.rc endif else left = true; k := k+ 1; if id = 1 and k < n then t := mo .ik.1; cl := mo .ik-l else if id = 2 and k < m then t := mo2.ik.1; cl := mo2ik.lc endif endif end Next. Figure 5-26. Next Algorithm. 5.3.3 Function-Valued Interval Refinement and Development Determination So far, we have identified b matching units of mo\ and mo2 together with their common time intervals. But each pair of matching units has possibly to be further refined due to intersecting or touching 3D unit objects. These situations imply a change of their topological relationships and have thus to be taken into account for the computation of the development (Figure 5-27). We do not store this further refinement explicitly but only make our conclusions with respect to the development in the respective unit. time x Figure 5-27. Intersecting unit segments of two moving points representing the development Disjoint > meet > Disjoint and thus requiring a further interval refinement. We also have to take into account that parts of the whole development to be computed may be undefined. Hence, two consecutive time intervals may be separated by "temporal gaps". In this case, we have to use the "wildcard" period predicate True or the "wildcard" instant predicate true for expressing this. The algorithmic schema can be formulated as shown in Figure 5-28. algorithm FunctionValuedRefinement(R, fiih dWiii i oal$$
input: Rfini dlul it nl\ = ((li, ri, ci, rci, pi, qi),..., (lb, rb, Icb, rcb, Pb, qb)) where li and
ri denote the left and right endpoints of the possibly reduced intervals of matching units, Ici and
rci whether the intervals are left-closed and right-closed respectively, and pi and qi are
pointers (unit numbers) to the matching units of mor or mo2 respectively
output: ObjectDevelopment as a string containing the development of mor and mo2
begin
ObjectDevelopment := ""
for each j in 1...b do
UnitDevelopment := Unitlntersect(lj, rj, lcj, rcj, pj, qj)
if j > 1 then
if rj = lj and not rcj 1 and not Icj then
ObjectDevelopment := ObjectDevelopment o "true"
else if rj 1 < lj then
ObjectDevelopment := ObjectDevelopment o "True"
endif
endif;
ObjectDevelopment := ObjectDevelopment o UnitDevelopment;
endfor;
(ObjectDevelopment,owc) := NormalizeDev(UnitDevelopment);
return (ObjectDevelopment,owc);
end FunctionVatlldRfin, nit l.

Figure 5-28. Function-valued interval refinement algorithm.

For each refined interval, we determine the unit development of the corresponding units of

the two moving objects by calling the Unitlntersect algorithm. This algorithm returns the unit

development specified by the two 3D unit objects. The algorithm are described in Figure 5-29. It,

in particular, have to take care of the degenerate case that the unit interval is a time instant. The

function NormalizeDev transforms the computed development into development normal form

(see [22]) and simultaneously checks whether the development contains the wildcards true or

True.

In the algorithm Unitlntersect, the term eval(vj, t) denotes an evaluation function that is

applied to the unit function vj for unit j at time t. This function yields a 2D spatial object. The

function InstantPred and PeriodPred annotates a topological predicate identification number

algorithm Unitlntersect(l, r, Ic, rc, p, q)
input: left endpoint I and right endpoint r of the common time interval of two matching units,
flags Ic and re whether the interval is left-closed and right-closed respectively,
and pointers p and q to the matching units
output: a string representing the unit development of the two matching units
begin
o1 := eval (vyp, 1); o := eval (vyp, r); o\ := eval(vq, 1) ; or := eval(vq, r);
if I = r then // Ic and re must be true
return InstantPred(TopRel(ol, o1))
else if not BBIntersects (unit pbbp, unit pbbq) then
/Take a sample at half way of the interval to determine the type of disjoint
return PeriodPred(TopRel(eval (vp, (1 + r)/2), eval(vq, (1 + r)/2)))
else
// Step 1: Compute contacts between any pair of moving unit segments and/or
// moving unit single points (unit elements)
TList := (1, r);
for each i in 1...zi do // z is the number of unit elements of the first unit
for each j in 1...Z2 do // Z2 is the number of unit elements of the second unit
(c, t, t2) := Contact(p, i, Vq, j); ith resp. jth unit element of vp resp. Vq
if c then TList := TList o(ti); TList := TList o(t2) endif
endfor
endfor;
// Step 2: Sort list of time instants (events) and remove duplicates
TList := sort(TList); TList := rdup(TList);
I Step 3: Evaluate TList (we assume it has n elements) and determine development
UnitDevelopment := "";
if Ic then UnitDevelopment := InstantPred(TopRel(o1 o~)) endif
for each j in 2...n do
// Take a sample at a time between tj and tj
tp := TopRel(eval(vp, (tj 1 +tj)/2), eval(vq, (tj + t)/2));
UnitDevelopment := UnitDevelopment o PeriodPred(tp);
I Determine the topological relationship at tj
if tj < r or (tj = r and re) then
tp := TopRel(eval(vp, tj), eval(vq,tj));
UnitDevelopment := UnitDevelopment o InstantPred(tp)
endif
endfor;
return UnitDevelopment;
endif
end Unitlntersect.

Figure 5-29. Unit intersection algorithm.

(returned by TopRel) to indicate an instant predicate or a period predicate respectively and returns

its string value. In the first step, for each unit element of Vp, we scan the unit elements of vq to

find time intervals when such two unit elements intersect or meet each other.

The time instants when two unit elements start and stop to intersect or meet each other

represent topologicall events" since they indicate possible changes of topological relationships

between the two units. That is, a local change of the topological relationship between two

unit elements does not necessarily imply a global change in the topological relationship of the

two units of the moving objects. This depends on the definition of the topological predicates

(Section 2.1.2 and [39, 42]). For example, if two components of two region values overlap for

some period within the common unit interval, a local change of the topological relationship of

two other components from Disjoint to meet in the same period will not have a global effect

on the topological relationship of the two region values; it is still Overlap. The topological

relationship of two unit elements does not change between the start time and end time of their

"contact". For all pairs of unit elements, the function Contact returns a triple (c, ti, t2) where c is

a flag which indicates whether both unit elements intersect or touch or meet, i.e., contact, each

other. The values ti and t2 are the start and end times of a contact which are stored in a list for

further processing. The exact nature of the contact is not relevant here, because it is only a local

event and has to be globally evaluated anyway.

In a second step, the list of time instants obtained from the first step is sorted (function sort),

and duplicates are removed (function rdup).

In a third step, the list TList of topological events is evaluated and the unit development is

determined. Since a temporal unit value can consist of several components, the components of

two unit values may be spatially arranged in many different ways and thus lead to many different

unit developments. Therefore, we employ the following global algorithmic strategy: We apply

the algorithm TopRel to all time instants of TList and hence obtain the topological relationships at

these times. We know that the topological behavior between two consecutive time instants ti and

t2 in TList is constant because a topological change would otherwise entail a contact situation at

a time between t\ and t2. However, we do not know and also cannot uniquely infer what kind of

basic spatiotemporal relationship exists between t\ and t2. As an example, let us assume that at

both times t, and t2 we find the topological relationship meet between two region values. What

can have happened in between? Three alternatives are possible leading to either the development

meet > Disjoint > meet or the development meet > Overlap > meet or the development meet >

Meet > meet, which is equal to Meet. To solve this problem, we take a "sample" and compute

the topological relationship at time (t\ + t2)/2. Then we determine the corresponding period

predicate by means of the function PeriodPred. This is done for all consecutive pairs of time

instants in TList.

The computation of the spatial object at times I and r at the beginning of the algorithm

takes time O(zi logzi) and O(2 logz2), respectively, where zi and Z2 denote the number of unit

elements of the two units. Hence, the algorithm TopRel requires time O((zi + Z2) log(zi + z2)).

Step 1 includes two nested loops executing the function Contact, which runs in constant time.

In total, this step requires O(zi Z2) time. Step 2 needs O(nlogn) time for sorting the n elements

of TList and removing the duplicates. Step 3 computes approximately n times the function

TopRel, which requires O(n (zi + z2) log(zi + z2)) time. Hence, the algorithm Unitlntersect

needs time O(zi -Z2 + nlogn + n (zi + Z2) log(zi + Z2)). With z = max(zl, z2), this is equal to

O(z2 + nlogn + n zlogz) = O(n (z2 + log n)). In this case, this leads to a runtime complexity of

O(bnmax (ziax + lognmax)) for the algorithm FunctionlValut dRtfin mn, nt where b is the number

of matching unit intervals, Zmax is the maximum number of unit elements in a unit of both moving

objects, and nmax is the maximum number of changes in the topological relationships between

unit elements of matching units.

5.3.4 Pattern Matching with Query Predicate

At this stage, the actual temporal topological behavior, i.e., the development, of the two

moving objects under consideration is known and represented as a string, called the development

string. The reason for this kind of representation is to reduce the problem of evaluating a

spatiotemporal predicate finally to a string matching problem between the development string

and the query string.

The string matching problem can arise in four variants with different algorithmic and

runtime complexities depending on the existence of the wildcards true (t) and True (T) in the

development string and/or the query string. First, both the development string and the query

string do not contain wildcards. Second, the development string but not the query string includes

wildcards. Third, the query string but not the development string includes wildcards. Fourth, both

strings contain wildcards. This leads to the algorithm PatternMatching shown in Figure 5-30.

algorithm PatternMatching(Q, qwc, D, dwc)
input: a query string Q which is checked against a development string D, flags qwc and
dwc indicating whether Q and D, respectively, contain wildcards
output: a boolean value indicating whether the query string matches the development string
begin
if not qwc and not dwc then // case 1
return (Q = D)
else if not qwc and dwc then // case 2
return REPM(Q,D)
else if qwc and not dwc then // case 3
return REPM(D, Q)
else if qwc and dwc then // case 4
return EqualRegExpr(Q, D)
endif
end PatternMatching.

Figure 5-30. Pattern matching algorithm.

In the first case, the string matching problem can be solved by a string equality test and

needs time O(v + w) where v is the length of Q and w is the length of D. All other cases

incorporate the wildcards true and True. We can therefore consider strings containing these

wildcards as (simplified) regular expressions. The cases 2 and 3 are special instances of exact

regular expression pattern matching problems where exactly one of the argument strings, either

the query string or the development string, includes wildcards. The problem here is to find

out whether the string without wildcards matches one of the strings specified by the regular

expression. This is computed by a predicate REPM (see [28] for detail) and requires O(vw) time

if v is the length of the string and w is the number of symbols contained in the regular expression.

The fourth case takes two regular expressions and determines whether they are equal. Two

regular expression are equal if and only if they produce the same language. An algorithm for this

problem, EqualRegExpr, is given in [27] (unfortunately without runtime complexity analysis).

5.4 Algorithms for Balloon Predicates

Balloon predicates between balloon objects are defined as a sequence of certain and un-

certain spatiotemporal predicates. Certain spatiotemporal predicates denote developments of

relationship between historical movements of balloon objects whereas uncertain spatiotemporal

predicates represent developments of relationship that involves predicted movements. Therefore,

the evaluation of a balloon predicate between two balloon objects rests heavily on the determina-

tion of spatiotemporal predicates. In any case, the development between two balloon objects can

be obtained by determining the developments between their historical and predicted components.

An algorithm for evaluating a balloon predicate essentially consists of two steps:

1. Development determination: First, we determine the development between the historical
movements of the two balloon objects and mark it as certain development. Then, we
determine the development between the historical movement of the first balloon object and
the predicted movement of the second balloon object, or vice versa, and mark it as uncertain
development. Finally, the uncertain development between the predicted movements are
determined. The temporal composition of these developments produces the development of
the balloon objects.

2. Pattern matching with query predicate: This step consists of a pattern matching process
between the development computed and the query predicate asking for evaluation. It results
in one of the Boolean values true or false. Note that this step is not required for a query to
determine the development.

Figure 5-31 shows an algorithm BPredEvaluator for evaluating a balloon predicate. In

the first step, we determine the development between the historical movements by calling

the operation STDevDetermination. This operation works the same way as the algorithm

STPredEvaluator presented in Section 5.3.1 with the exception that it does not employ the

pattern matching process at the end. Thus, it returns the development between the two argument

objects. The function CertainDev and UncertainDev annotate the development as a certain and

algorithm BPredEvaluator(bol, bo2, Q, qwc)
input: two balloon objects bo1 = (tt,ls, ob jpbbl,hi, pi) and bo2 = (t2, ls2,objpbb2, h2 P2),
topological string pattern Q that has to be checked with respect to bol and bo2, flag
qwc indicating whether Q includes wildcards true or True
output: true if Q matches actual development; false, otherwise
begin
if not Tlntersects(lsl, ls2)
then return false
else
ObjectDevelopment := CertainDev(STDevDetermination(h1,h2));
dev := ""
if tl < t2 then
dev := UncertainDev(STDevDetermination(pl,h2));
else if tl > t2 then
dev := UncertainDev(STDevDetermination(hl,p2));
endif; ObjectDevelopment := ObjectDevelopment o dev;
ObjectDevelopment := ObjectDevelopment o UncertainDev(STDevDetermination(pl,p2));
(ObjectDevelopment,owc) := NormalizeDev(ObjectDevelopment);
return PatternMatching(Q,qwc,ObjectDevelopment,owc)
endif
end BPredEvaluator.

Figure 5-31. Balloon predicate evaluator algorithm.

uncertain development respectively and then returns the corresponding string value. Depending

on the relative comparison between tl and t2 (local present instants that separate the historical

and predicted movements), the corresponding development between the historical movement

of an object and a predicted movement of the other object is determined and appended to the

object development. Next, we append the development between the predicted movements of both

balloon objects and normalize the object development. The final step is to employ the pattern

matching process by calling PatternMatching and return the final result.

With an implementation of this algorithm, one can pose a query consisting of both tempo-

rally certain and uncertain developments. For example, assume that the prefixes c and u denote

certain and uncertain development respectively. A query string "cDisjoint uDi\iim'" asked to

verify whether the development has always been and will always be disjoint. A query string

"True ulnside True" asked whether the development Inside exists sometimes in the future.

These are just a few simple examples. Many more elaborated and complex query strings can be

constructed to express more complex scenarios.

5.5 Database Integration

It is one of our main objectives that our implementation of the Moving Balloon Algebra

would be available as an extension package to any extensible DBMS. The benefit of this feature

is not only to broaden the availability and usability of the algebra but also to show a way for other

algebra to be database system independent as well. This requirement entails a number of design

criteria that need to be taken into account when developing such an algebra.

First, one should design and develop an algebra, its data types and operations from an

abstract data types point of view. This allows a clear and comprehensible design of the data types

and operations as well as a seamless transformation of the design into implementable classes and

methods.

Second, one should consider a number of requirements pertaining to the extensibility

option of DBMSs of interest. These includes the ability to create user-defined types (UDT) and

user-defined functions (UDF), large object (LOB) management, external procedure invocations,

programming language and type library compatibility, and storage or object size limitations.

Third, the mechanism and the environment in which operations are executed should be taken

into account. Some criteria includes whether operations will be internally executed in memory

by requiring all argument objects to be entirely loaded in main memory (memory execution) or

externally executed by loading only required parts of argument objects from a database at a time

factors such as the nature of the operations, the amount of available main memory, the size of

argument objects, the speed of the database communication link, etc.

With these criteria in mind, our approach has been to develop the algebra in three abstraction

levels (abstract, discrete, and implementation levels) to allow for a clear and comprehensible

specification of the data types and operations. Our specific implementation of the Moving

Balloon Algebra, which results in a software library package called MBA, is done by using an

object-oriented approach. As far as DBMS extensibility mechanism is concerned, most of today's

popular commercial DBMSs satisfy most of our extensibility requirements. For example, Oracle

DBMS allows users to create and register UDTs and UDFs which can be implemented externally

in a type library system. It also provides an application programming interface called Oracle Call

Ili, i~r, c (OCI) to facilitate such implementation. In Figure 5-32, we show how we can register

one of our moving balloon data types mballoonpp and an operation getFunctionCount (returns

the number of unit functions in a moving balloon object) in Oracle.

CREATE OR REPLACE LIBRARY MBA_lib AS 'libMBAOra.so';

CREATE OR REPLACE PACKAGE MBA_pkg AS
function mballoonpp_getFunctionCount(b blob) return pls_integer;
END;

CREATE OR REPLACE PACKAGE BODY MBA_pkg AS
function mballoonpp_getFunctionCount(b blob) return pls_integer
as external
language C WITH CONTEXT
name "mballoonpp_getFunctionCount"
library MBA_lib
parameters(CONTEXT, b OCILobLocator);
END;

CREATE OR REPLACE TYPE mballoonpp AS Object (
stData blob,
member function getFunctionCount return pls_integer

CREATE OR REPLACE TYPE BODY mballoonpp is
member function getFunctionCount return pls_integer is
num pls_integer := MBA_pkg.mballoonpp_getFunctionCount(stData);
BEGIN
return num;
END;
END;

Figure 5-32. Registration of a data type and an operation in Oracle.

In this case, our moving balloon objects are stored in binary large objects (blob). An

invocation of the getFunctionCount operation requires a locator (a pointer to a blob) to be passed

as an argument. Since only a locator to a blob is passed instead of the entire blob, this allows for

a flexible execution of the operation in either memory execution or database execution mode. To

take advantage of this, our algebra implementation allows both types of execution for operations

on objects stored in a database. The type of execution, specifically how an object is loaded to

perform an operation, is dictated by the choice of storage option for the object at construction.

Our implementation offers three different storage options for our moving balloon objects namely

memory, blob, and mSLOB options.

In the memory storage option, objects are not persistent in that they only exist in memory

for the duration of the program execution. This option is also required for memory execution

mode of database objects where objects are loaded entirely into memory. The blob storage option

allows objects to be stored persistently and directly in database blobs. This option facilitates

memory execution mode since each blob needs to be loaded completely into memory to construct

a memory based object through a deserialization process. This option is preferable for small-

sized objects that do not require frequent update (update operations require writing back to

database blobs through a serialization process). To enable database execution mode, our mSLOB

storage option makes use of an intermediate layer called mSLOB for storage management.

mSLOB is our implementation of a multi-structured large object management concept for

multi-structured objects stored in blobs. Thus, it allows us to read and write any component of

our objects on demand without the need to load the entire objects into main memory. Therefore,

the mSLOB storage option is preferable for large objects and frequently updated objects.

Figure 5-33 illustrates the application system architecture in which a number of algebra can be

integrated in a DBMS with or without mSLOB.

With our algebra integrated in a DBMS and our UDTs and UDFs registered, we can now

create tables using our registered types, populate data, and pose query using our registered

functions. For example, we can create a simple table to store our mballoonpp objects as shown in

Figure 5-34.

Application

Figure 5-33. The integration of algebra in extensible DBMSs

CREATE TABLE mbpptable(
id integer primary key,
description varchar2(64),
mbpp mballoonpp

Figure 5-34. Creating a table using a user-defined type.

Assuming that we have populated this table with a few moving balloon objects. We can

then pose a query (Figure 5-35) on this table in SQL using our UDF getFunctionCount to get the

number of unit functions in each object.

SELECT id, description, mb.mbpp.getFunctionCount()
FROM mbpptable mb;

Figure 5-35. Using a user-defined function in SQL query.

5.6 Case Study: Application to Hurricane Research

So far, we have presented our Moving Balloon Algebra at all abstraction levels as well

as its implementation in a software package MBA which is integrated into an Oracle DBMS.

Thus, we have effectively made our algebra available for use in many real world applications. In

this section, we show how our algebra can be used in the field of hurricane research and how it

transforms the way we look at hurricane data.

Hurricanes are some of the most powerful and deadliest forces of nature. According to the

National Hurricane Center, 1385 tropical storms and hurricanes had been recorded between 1851

and 2007 in the Atlantic region alone. One of the main objectives of hurricane research is to

study the behavior of tropical cyclones (tropical storms and hurricanes) in order to anticipate their

movements and provide necessary advisories (storm warnings and watches) to the general public.

The research is a part of the efforts to reduce the effect of these deadly storms on humanity.

Traditionally, storm data including its movements (also known as best track data) are

collected and stored in a text file in a specific format called HURDAT. From this data, researchers

employ sophisticated prediction models to predict the position of the storm at every 12-hour

interval within up to 120 hours in the future. This is essentially a prediction which is used to

produce a public advisory. This is done every 6 hours for which the best track information of

the storm is available. Thus, for a storm that lasts for a week or so, there can be as many as 20

advisories or predictions. As one may have noticed, this type of data fits very well with our

model of moving balloon objects.

It is important to notice also that the limitations of currently existing moving object

management technology have a big impact on the complexity of prediction data and their

management. Due to the lack of a comprehensive moving object model with support for

predicted movements and the lack of moving object management in database, so far, hurricane

predictions have only been made in regards to the future positions of the center of a storm (the

movement of which is a moving point), and these data are generally stored in normal files. This

effectively limits richness of representation as well as limits the querying possibility for the

predicted data.

With the use of our Moving Balloon Algebra in a database system, a more complex

representation of hurricane predictions can be supported, managed, and offered for querying

purposes. For example, instead of providing a prediction as a series of positions, researchers

can now provide a prediction as a moving region. Therefore, the movement of the eye of a

hurricane can be represented as a moving balloon object based on a moving point history and

moving region predictions. So far, this has not been available in hurricane research, and thus

researchers frequently use the average errors between their predictions in the past and the best

track information to visualize their current prediction of a storm and show the area of uncertainty

around their predicted positions (which would otherwise be modeled as regions of uncertainty

in our algebra). By using this approach, we can construct a moving balloon object with moving

region predictions for each storm data available.

II'

Figure 5-36. Visualization of hurricane Katrina using the Moving Balloon Algebra.

I STALrim (Spatio-Tempoml Algebm Viemr) <

I STAL~im (SpstiTpoml Algebm Vi-) 42berfin>

STAL~iew (Spatio-Temporal Algebr Vimer)

STALPim (Spatio-Temp-l Algebm Vi-)

Using our visualization program to view hurricane data represented using our algebra in an

Oracle DBMS, we can obtain at least two different perspectives which allow for a detail analysis

of the data. For example, in an object-based perspective, Figure 5-36A and 5-36B show hurricane

Katrina as a balloon object on August 26, 2005 at 00:00 GMT and August 29, 2005 at 00:00

GMT respectively. Figure 5-36C shows Katrina as a moving balloon object consisting of her

track and all 28 of her predictions over the course of her lifetime drawn on top of one another.

We can switch the visualization to a temporal oincl \i\ perspective mode where we can analyze,

at any specific instant, the position of the eye as well as the state of the predictions. Figure 5-36D

shows Katrina's eye position when making landfall in New Orleans on August 29, 2005 at 11:00

GMT and the state of all of its available predictions at the time. In this particular figure, we take

a snapshot of the movement and all available predictions at the instant of the landfall. Each ring

represents a predicted uncertainty region with respect to a specific prediction. As one may notice,

here we see that the position of Katrina's eye is in the intersection of all the rings meaning that all

of these previous predictions are valid and accurate to some degree at this instant. If at any instant

the eye's position is outside of a ring, this means that the previous prediction corresponding

to the ring is not accurate. As part of our algebra, we provide an operation hasbadprediction

to check for inaccurate predictions within a moving balloon object. This operation makes use

of our spatiotemporal predicate implementation to determine whether the eye's position ever

leaves any of the predicted regions. In the case of hurricane Katrina, prediction #7, #8, and #9 has

been found to be inaccurate. Figure 5-37A shows an object-based perspective of the complete

track and prediction #7 which was produced on August 25, 2005 at 12:00 GMT. Figure 5-37B

illustrates a temporal analysis perspective of the eye's position and the uncertainty region of

prediction #7 on August 27, 2005 at 12:00 GMT when the actual position of the eye starts to

stray outside of the predicted region.

By performing this kind of analysis for all of the North Atlantic storms over the past 5

years (2003 2007 for which prediction data are available), we can determine for each storm

the number of accurate and inaccurate predictions as shown in Figure 5-38A. In total, 82 storms

847,244)

A B

Figure 5-37. Visualizing hurricane Katrina. A) Katrina's prediction #7 in object-based
perspectives. B) Temporal analysis perspective on August 27, 2005 at 12:00 GMT.

have been recorded, and 1863 predictions have been produced of which 655 (or about 35%) have

been found to be inaccurate. We have also discovered that most of the storms that have high

percentage of inaccurate predictions often experience certain behaviors such as making 90 degree

turns and u-turns (e.g., hurricane Kate (#1312) as shown in Figure 5-38B), or forming a loop

(e.g., hurricane Lisa (#1329) as shown in Figure 5-38C). It is clear that this type of information

would be useful for researchers to study such behaviors and make necessary adjustments to their

prediction model.

I STL~i (SptioT~p~al lgera Ve-)belin 1

-Mr~ l~rr~y~sm~ru -Te;nmpora Alebr Vi

Hurricane Prediction Accuracy (2003 2007)
65
S60 g Total Inaccurate Predictions
STotal Accurate Predictions
55

50
45--

40-

35-

30-
25-

20-

15-
10-

5-

1302 104 1306 138 1310 1312 1314 1316 131 138 0 1322 1334135 213 1330 1332 1334 1336 1340 1342 13441B 134 135 1353 135 1357 i3 13 13 4 1366 137 10 1372 1374 1376 137 130 1B 2 13
1303 1305 1307 139 1311 1313 1315 1317 1319 1331 133 13 27 13 13 1331 1331335 1337 133 1341 1343 1345 1347 1347 1353 41356 1359 13 3M 1363 1357 1 379 1371 1373 5 1377 17 1301 1331 S 135
Storm ID

Figure 5-38. Hurricane analysis. A) Hurricane prediction analysis between 2003 and 2007. B)
Hurricane Kate (#1312). C) Hurricane Lisa (#1329).

0
I
o

STA~i (ptT F- M~b Ve-

77 ----- -.l 16mV-, 1rf,

CHAPTER 6
MODEL AND IMPLEMENTATION ASSESSMENT

In this chapter, we provide an assessment of our Moving Balloon Algebra and its imple-

mentation. The assessment is presented at two levels. We first provide an assessment of our

topological predicate implementation concept. Then we discuss an assessment of our spatiotem-

poral model.

6.1 Topological Predicates: Assessment, Testing, and Performance Study

Since an efficient topological predicate implementation is essential for supporting a

spatiotemporal predicate implementation, we have given a considerable attention to this part

of our implementation. To verify the feasibility, practicality, correctness, and efficiency of the

topological predicate implementation concepts presented, we have implemented and tested our

approach. In order to have full control over the implementation and the testing of our concepts,

we have implemented them in our own algebra package SPAL2D (Spatial Algebra 2D) for

handling two-dimensional spatial data. This package is then used to provide support for our

spatiotemporal predicate implementation as part of the Moving Balloon Algebra (MBA) package.

6.1.1 Qualitative Assessment

Although it is usually accepted that some kind of plane-sweep algorithm is sufficient for

implementing topological predicates, our research has demonstrated that the decision on an

appropriate and sophisticated implementation strategy is of crucial importance. The possible ad

hoc approach of implementing a separate algorithm for each of the topological predicates results

in a large number of algorithms possibly up to the total number of topological predicates of a

type combination. Even though this approach is relatively straightforward, it suffers from many

problems including large system implementation, non-guaranteed correctness of the algorithms,

error-proneness, redundancy, testing and evaluation difficulties, and performance degradation.

An essential problem of the ad hoc approach is the difficulty in handling predicate determination

queries. No particular algorithm is suitable for this task, thus requiring a linear iteration through

the large number of algorithms for all topological predicates.

Unlike the ad hoc approach, our approach does not suffer from these problems. In our

implementation, only a single, generic, and parameterized plane-sweep algorithm is employed

for all exploration algorithms. Only a single exploration algorithm is implemented for all

topological predicates of each type combination. This implementation strategy allows us to

sharing, manageable system testing, and efficient handling of both predicate determination and

verification queries. This centralized approach is possible because, instead of considering each

topological predicate individually, we look deeper into their common definition blocks which are

the nine matrix predicates of the 9-intersection matrix. This leads us to a systematic method. By

creating a bidirectional link between the matrix predicates and topological feature vectors, we

are able to give a unique characterization for each matrix predicate. This unique characterization

frees us from providing algorithms for each topological predicate in case of predicate verification

and from evaluating all topological predicates in case of predicate determination. Furthermore,

the correctness of the method is formally proven. Last but not least, based on the concept of

topological feature vectors, predicate matching techniques such as matrix thinning and minimum

cost decision trees can be used to increase the efficiency of answering predicate verification and

predicate determination queries respectively.

6.1.2 Testing

For testing the results of the exploration phase, our collection of test cases consists of 184

different scenes corresponding to the total number of topological predicates between spatial

objects. A special test case generation technique has been leveraged to check the functionality of

the exploration algorithms and the correctness of the resulting values of the topological feature

vectors. The vector values have to be independent of the location of the two spatial objects

involved. In order to check this, this technique is able to generate arbitrarily many different

orientations of a topologically identical scene of two spatial objects with respect to the same

sweep line and coordinate system. The idea is to rotate such a scene iteratively by a random

angle around a central reference point. Special test cases like vertical segments are considered

too. For the 184 explicitly constructed base cases, we have generated at least 20,000 test cases

for the topological predicates of each of the six type combinations by our random scene rotation

technique. In total, more than 120,000 test cases have been successfully generated, tested, and

checked for predicate verification and predicate determination and indicate the correctness

of our concepts and the ability of our algorithms to correctly discover the needed topological

information from any given scene.

For testing the results of the evaluation phase, we take the topological feature vectors as

input for the 9-intersection matrix characterization method and the optimization methods of

matrix thinning and minimum cost decision trees. The correctness of all methods has been

checked by a technique known as gray-box testing, which combines the advantages of two other

techniques called black-box testing and white-box testing. The black-box testing technique

arranges for well defined input and output objects. In our case, the input consists of two correct

topological feature vectors as well as a matrix number of the topological predicate to be verified

in case of predicate verification. This enables us to test the functional behavior of the three

method implementations. The output is guaranteed to be either a Boolean value (predicate

verification) or a valid matrix number of a topological relationship predefined for the type

combination under consideration (predicate determination). The white-box testing technique

considers every single execution path and guarantees that each statement is executed at least

once. This ensures that all cases that are specified and handled by the algorithms are properly

tested.

All cases have been successfully tested and indicate the correctness of our concepts and the

ability of our algorithms to correctly verify or determine a topological predicate.

6.1.3 Performance Study and Analysis

Three main reasons impede a comparison of our concepts with available commercial

and public domain implementations of topological relationships. First, in Section 2.3 we have

seen that all available implementations of topological relationships mainly focus on the eight

predicates disjoint, meet, overlap, equal, inside, contains, covers, and coveredBy that have

80

70

60

50

40

30

20

10

00
PP PV PP PV PL PV PL PV PR PV PR PV LL PV LL PV LR PV LR PV RR RR
MT MT MT MT MT PV PV MT

1 2 3 4 5 6 7 8 9 10 11 12 13 14
Predicate number

B

U 0.95
a)
0.9C
.U 0.85
E
S0.8C
0.75

0.,
U
LLIJ .:

S0.4C
< 0.35

1234567891111111111222222222233333333334444444444555555555566666666667777777777888
0123456789012345678901234567890123456789012345678901234567890123456789012
Predicate number

C

Figure 6-1. Predicate verification without and with matrix thinning

been generalized to and unified for all combinations of complex spatial data types. Hence,

a comparison to our much more fine-grained collection of 184 (248) topological predicates

(Section 2.1.2) is not possible. Second, studying the corresponding documentation, we have

not found a formal definition of the semantics of these eight generic predicates for all type

combinations. Third, an implementation of our collection of topological predicates and predicate

execution techniques is not trivial in the context of commercial implementations since their

algorithms and program code are not publicly available and their system environments are very

special. For example, the algorithms for the eight topological predicates have not been published.

u
y,
0

E

0.

0.

0.

0
E0 o.

U o.

Q, 0.
0)
0.

V.-JU

Instead, we have performed a performance study that underpins the strengths of our ap-

proach by quantitatively comparing the performance of our non-optimized alternative (only

9IMC) with our optimized evaluation techniques (9IMC plus matrix thinning, 9IMC plus min-

imum cost decision tree). Our study shows that our approach does not only provide qualitative

(in terms of correctness) but also quantitative benefits by applying optimization methods for

the evaluation of topological predicates. For each type combination, we measure and calculate

the average execution time for verifying and determining each predicate both without and with

optimization. Of course, we cannot expect a time gain of one or more orders of magnitude since a

plane sweep is involved in all exploration algorithms, which prevents a better performance [50].

For predicate verification (PV), Figures 6-1B and 6-1C illustrate the average execution time

for each predicate of each type combination without and with matrix thinning (MT). The overall

average for each type combination is shown in Figure 6-1A. The performance improvements

from using matrix thinning are quite noticeable and range from 13% execution time reduction for

the line/line case up to 55% for the point/point case.

Similarly, for predicate determination (PD), Figures 6-2B and 6-2C show the average

execution time for each predicate of each type combination without and with the use of minimum

cost decision trees. The overall average for each type combination is shown in Figure 6-2A. The

results indicate significant performance improvements from using minimum cost decision trees.

The improvements range from 75% execution time reduction for the point/region case up to 91%

for the line/line case.

Although the execution time reductions are remarkable for both predicate verification and

especially predicate determination and clearly reflect the trend, the empirical results shown in

Figures 6-1 and 6-2 are not as optimistic as the computational results given in Tables 5-3 and

5-5. The reason that we cannot reach these lower bounds in practice consists in programming

and runtime overheads such as extra conditional checks, construction of thinned out matrices

and minimum cost decision trees, and their traversals. However, even with these overheads, it is

evident that our approach provides considerable performance optimizations.

u 1.7
S1.6-
2 1.51
E 13

C- 0.9 / PP PD
S/ / --PPPDMCD
lr 0.2 A ..

> 0.1

1 2 3 4 5 6 7 8 10 11 12 13 14
Predicate number

3

2

9
8
7 LL PD
6-LL PD MCDT

4 *I RR PD
5 ------- --- f 4 ^ T X \---------------- / ^ ^------------------------------H LR PD M CDT -

4No z RR PD MCDT

2- *A
0- uY l^
1 lii6 Y t|^

1234567891111111111222222222233333333334444444444555555555566666666667777777777888
0123456789012345678901234567890123456789012345678901234567890123456789012
Predicate number

C

Figure 6-2. Predicate determination without and with MCDT

6.2 Spatiotemporal Model Assessment

So far, we have presented our Moving Balloon Algebra as a generic spatiotemporal data

model that provides modeling and querying support for historical and predicted movements of

moving objects in databases. To our knowledge, our algebra is the first of its kind to provide

such modeling capability along with the corresponding implementation. Since there has been no

existing model let alone implementation that provides the features offered in our algebra, it is not

possible to make any direct comparison. Most of the existing models (Section 2.2) only provide a

small subset of features, and their modeling capability is generally very restrictive. Furthermore,

7.0
U 6.5
6.0
.y o .5 -------- ------
-- 5.5
E 5.0
1 4.5
E 4.0
J 3.5
.030
U2.5

15

PP PD PP PD PLPD PL PD PRPD PRPD LLPD LL PD LR PD LR PD RRPD RR PD

U
PC

0
~ 1

E

0
E
H
. 1:
X
C
a0
w
Ci
0)

MCDT MCDT MCDT

MCDT MCDT MCDT

these models are frequently presented in conceptual terms without any supporting implementa-

tion. Even if we want to compare only the common features, there is no implementation to based

upon. Hence, the only thing we can do is to provide a qualitative assessment of our model and

discuss its modeling capability against that of the existing models.

With respect to the traditional moving object model defined in [32, 61], our historical

movement model is a restricted version of this model. We defined a more precise and appropriate

model for representing the reality of moving objects. This is done by imposing the continuity

property on movements of moving objects. As far as the MOST model [60] is concerned,

this model uses a specific technique/concept, that is, motion vector, to provide the near future

positions of moving points without taking into account the uncertainty aspect of the future

prediction. In fact, this model can be considered as a prediction model for moving points that

provides moving point type predictions. Thus, we can support the MOST model through the

use of our spatiotemporal balloon data type mballoonpp. In addition to the capability of the

MOST model which can keep track of the current position and the current prediction of a moving

point, our algebra can also keep track of the past positions as well as past predictions. Since the

algebra provides data modeling support for the MOST model, this means that it also supports the

FTL query language which is used for entering different types of spatiotemporal queries such as

continuous and persistent queries.

In regard to the uncertainty modeling of moving objects, the model described in [26]

provides data modeling support for the future prediction of a moving point through the use

of an uncertainty threshold. This threshold is applied to a future trajectory or a future motion

plan of a moving point creating a trajectory volume representing the set of all possible future

motion curves. It is obvious that this trajectory volume can be represented in our Moving

Balloon Algebra using the future prediction data typefregion. Thus, the dynamic of the moving

point in this model can be represented in our algebra using the spatiotemporal balloon data

type mballoonpr. Consequently, the spatiotemporal predicate model defined in [26] is a

subset of our balloon predicate model since it is only defined between the future movement

of a moving point and a static region. A static region is just a special case of a moving region.

Our balloon predicate model can express the spatiotemporal relationship between all types of

moving objects. Thus, our model has a higher expressive power and is able to express every

relationship that is expressible by this model. For instance, consider the spatiotemporal predicate

Sometime-DefinitelyInside between an uncertain trajectory UTr = (T, r) and a static region R

where T is the future trajectory and r is the uncertainty threshold. Let PMCT denote a possible

motion curve of UTr. The spatiotemporal predicate Sometime -efinitelyinside is defined in

[26] as Sometime JefinitelyJnside(UTr, R) = (t) (VPMCT) : inside(R, PMC, t). The spatial

predicate inside determines whether the value of PMC7 at t is inside the region R. In our model,

the object UTr can be modeled as anfregion object with a uniform confidence distribution.

Likewise the static region R can be temporally lifted into an object of type region as well.

Thus, the spatiotemporal predicate Sometime DefinitelyJnside can be characterized in our

model as SometimeJ)efinitelyJnside(UTr, R) = (3t E time)(Vp E val(atinstant(UTr,t))) :

inside(p,val(atinstant(R,t))). By following this approach, we can also characterize other

spatiotemporal predicates found in [26] in our model.

As a result of this discussion, we have shown the relationship between our Moving Balloon

Algebra and the currently existing moving object models. In addition to providing a more precise

and appropriate way to represent the reality of moving objects, our data model also provides a

more generic set of spatiotemporal data types, in comparison to existing moving object models,

to support a wide variety of moving objects. Furthermore, our algebra can support existing

functionalities which are available in existing models as well as introduce new ones.

CHAPTER 7
CONCLUSIONS

Although there have been several spatiotemporal data models proposed in the past for

handling moving objects, each of them supports either historical movements relating to the

past or predicted movements relating to the future but not both together. Furthermore, their

model specifications are either too general and vague or too specific and restricted to only a

certain problem. The existing moving object model for historical movements is rather vague in

their definition of moving types. The models for future movements of moving objects tend to

emphasize on using specific prediction methods and combining prediction methods with moving

object models in a top-down vertical approach to address a specific problem only. To properly

model the development and evolution of historical and predicted movements of moving objects,

it is required that we have a clear understanding of how objects move or evolve. Furthermore,

modeling the future predictions of moving objects requires that we take into account the inherent

uncertainty aspect of the future. Finally, modeling the dynamic movements including both the

past histories and the future predictions of moving objects requires that we additionally maintain

the consistency of the movements at all time.

The Moving Balloon Algebra presented in this research satisfies these criteria while

addressing all of the shortcomings of current models. Our main contribution is a new integrative

spatiotemporal data model for supporting both historical and predicted movements of moving

objects in databases. As part of the model, we present new sets of spatiotemporal data types

including balloon and spatiotemporal balloon data types for representing all types of movements.

With these data types, new sets of spatiotemporal predicates and operations become available

which open up a new realm of querying possibility. Furthermore, the separation between

our data model and domain specific prediction models allows for flexible interoperability

with different kinds of prediction models without sacrificing the genericity of the model. The

algebra is presented in three different levels of abstraction in order to provide a clear and

comprehensive specification for implementation. This approach has proved beneficial for

developing a conceptually clean and implementation friendly algebra. We have also shown, as

part of our contribution, a mechanism for developing a storage-independent algebra such that

it can be integrated into any extensible DBMS. This effectively increases the accessibility and

usability of an algebra.

Given the lack of a comprehensive moving object model and corresponding implementation,

this research and hence our contribution can be considered as a substantial advancement in

the field of spatial and spatiotemporal database systems research. The result of this research

offers unprecedented support for moving object management. Such support is often desperately

needed in many disciplines including the geosciences, geographical information science (GIS),

artificial intelligence, robotics, mobile computing, and climatology. Among many potential

applications, as an example, we have shown how our research can provide leverage for moving

object management in the field of hurricane research. Such leverage can provide a whole new

perspective to approach existing problems and thus can potentially open up a whole new realm of

research.

Although it is evident that our contribution may have already been of much beneficial to the

research community, a number of topics may be of interest for future investigations. It would also

be interesting to see how such a Moving Balloon Algebra can handle the vagueness or fuzziness

aspects of imprecise spatial model. Furthermore, whether such an algebra and it corresponding

concepts can be used to support other related research topics such as spatiotemporal data

warehousing and spatiotemporal data mining still remains to be explored.

REFERENCES

[1] J. F Allen. Maintaining Knowledge about Temporal Intervals. Communications of the ACM
(CACM), 26,:832-843, 1983,.

[2] T. Behr and M. Schneider. Topological Relationships of Complex Points and Complex
Regions. In Int. Conf on Conceptual Modeling, pages 56-69, 2001.

[3] M. de Berg, M. van Krefeld, M. Overmars, and 0. Schwarzkopf. Computational Geometry:
Al gl, ii1 im\ and Applications. Springer-Verlag, 2nd edition edition, 2000.

[4] Martin Breunig, Can Tiirker, Michael H. Bihlen, Stefan Dieker, Ralf Hartmut Gilting,
Christian S. Jensen, Lukas Relly, Philippe Rigaux, Hans-J6rg Schek, and Michel Scholl.
Architectures and Implementations of Spatio-temporal Database Management Systems. In
Spatio-Temporal Databases: The CHOROCHRONOS Approach, pages 263-318, 2003.

[5] E. Clementini and P. Di Felice. A Model for Representing Topological Relationships
between Complex Geometric Features in Spatial Databases. Information Systems, 90:121-
136, 1996.

[6] E. Clementini and P. Di Felice. A Model for Representing Topological Relationships
between Complex Geometric Features in Spatial Databases. Information Sciences, 90(1-
4):121-136, 1996.

[7] E. Clementini and P. Di Felice. Topological Invariants for Lines. IEEE Trans. on Knowledge
and Data Engineering, 10, 1998.

[8] E. Clementini, P. Di Felice, and G. Califano. Composite Regions in Topological Queries.
Information Systems, 20:579-594, 1995.

[9] E. Clementini, P. Di Felice, and P. van Oosterom. A Small Set of Formal Topological
Relationships Suitable for End-User Interaction. In 3rd Int. Symp. on Advances in Spatial
Databases, LNCS 692, pages 277-295, 1993.

[10] E. Clementini, J. Sharma, and M.J. Egenhofer. Modeling Topological Spatial Relations:
Strategies for Query Processing. Computers and Graphics, 18(6):815-822, 1994.

[11] J.R. Davis. IBM's DB2 Spatial Extender: Managing Geo-Spatial Information within the
DBMS. Technical report, IBM Corporation, 1998.

[12] M. J. Egenhofer, A. Frank, and J. P. Jackson. A Topological Data Model for Spatial
Databases. In 1st Int. Symp. on the Design and Implementation of Large Spatial Databases,
pages 271-286. Springer-Verlag, 1989.

[13] M. J. Egenhofer and R. D. Franzosa. Point-Set Topological Spatial Relations. Int. Journal
of Geographical Information Systems, 5:161-174, 1991.

[14] M. J. Egenhofer and J. Herring. A Mathematical Framework for the Definition of Topologi-
cal Relationships. In 4th Int. Symp. on Spatial Data Handling, pages 803-813, 1990.

[15] M. J. Egenhofer and J. Herring. Categorizing Binary Topological Relations Between
Regions, Lines, and Points in Geographic Databases. Technical report, National Center for
Geographic Information and Analysis, University of California, Santa Barbara, 1990.

[16] M. J. Egenhofer and D. Mark. Modeling Conceptual Neighborhoods of Topological
Line-Region Relations. Int. Journal of Geographical Information Systems, 9(5):555-565,
1995.

[17] M.J. Egenhofer, E. Clementini, and P. Di Felice. Topological Relations between Regions
with Holes. Int. Journal of Geographical Information Systems, 8:128-142, 1994.

[18] M. Erwig, R.H. Giiting, M. Schneider, and M. Vazirgiannis. Abstract and Discrete
Modeling of Spatio-Temporal Data Types. In ACM Symp. on Geographic Information
Systems (ACM GIS), pages 131-136, 1998,.

[19] M. Erwig, R.H. Giiting, M. Schneider, and M. Vazirgiannis. Spatio-Temporal Data Types:
An Approach to Modeling and Querying Moving Objects in Databases. Geolnformatica,
3,(3,):265-291, 1999,.

[20] M. Erwig and M. Schneider. Developments in Spatio-Temporal Query Languages. In IEEE
Int. Workshop on Spatio-Temporal Data Models and Languages, pages 441-449, 1999.

[21] M. Erwig and M. Schneider. Visual Specifications of Spatio-Temporal Developments. In
15th IEEE Symp. on Visual Languages (VL), pages 187-188, 1999.

[22] M. Erwig and M. Schneider. Spatio-Temporal Predicates. IEEE Trans. on Knowledge and
Data Engineering, 14,(4,):1-42, 2002,.

[23] Martin Erwig, Martin Erwig, and Markus Schneider. Query-By-Trace: Visual Predicate
Specification in Spatio-Temporal Databases. In The Fifth Working CO',f, 'r, l on Visual
Database Systems, volume 168, pages 199-218, 2000.

[24] ESRI Spatial Database Engine (SDE). Environmental Systems Research Institute, Inc.,
1995.

[25] L. Forlizzi, R.H. Gtiting, E. Nardelli, and M. Schneider. A Data Model and Data Structures
for Moving Objects Databases. In ACM SIGMOD Int. Conf on Management of Data, pages
319-330, 2000.

[26] K. Hinrichs G. Trajcevski, O. Wolfson and S. Chamberlain. Managing Uncertainty in
Moving Objects Databases. ACM Trans. on Database Systems (TODS), 29:463-507, 2004.

[27] A. Ginzburg. A Procedure for Checking Equality of Regular Expressions. Journal of the
Association for Computing Machinery, 14(2):355-362, 1967.

[28] D. Gusfield. Algri,1iim\ on Strings, Trees, and Sequences: Computer Science and
Computational Biology. Cambridge University Press, 1997.

[29] R. H. Giiting. Geo-Relational Algebra: A Model and Query Language for Geometric
Database Systems. In Int. Conf on Extending Database Technology (EDBT), pages
506-527, 1988.

[30] R. H. Gilting and M. Schneider. Realms: A Foundation for Spatial Data Types in Database
Systems. In 3rd Int. Symp. on Advances in Spatial Databases, LNCS 692, pages 14-35.
Springer-Verlag, 1993.

[31] R. H. Giiting and M. Schneider. Realm-Based Spatial Data Types: The ROSE Algebra.
VLDB Journal, 4:100-143, 1995.

[32] R.H. Giiting, M.H. B6hlen, M. Erwig, C.S. Jensen, N.A. Lorentzos, M. Schneider, and
M.Vazirgiannis. A Foundation for Representing and Querying Moving Objects. ACM
Trans. on Database Systems (TODS), 25,(1,):881-901, 2000,.

[33] R.H. Giiting, T. de Ridder, and M. Schneider. Implementation of the ROSE Algebra:
Efficient Algorithms for Realm-Based Spatial Data Types. In Int. Symp. on Advances in
Spatial Databases, 1995.

[34] R.H. Giiting and M. Schneider. Moving Objects Databases. Morgan Kaufmann Publishers,
2005.

[35] Informix Geodetic DataBlade Module: User's Guide. Informix Press, 1997.

[36] Y. Guo S. Grumbach J. Chen, X. Meng and H. Sun. Modeling and Predicting Future
Trajectories of Moving Objects in a Constrained Network. In Int. Conf on Mobile Data
Management (MDM), page 156, 2006.

[37] JTS Topology Suite. Vivid Solutions, 2007. URL:
http://www.vividsolutions.com/JTS/JTSHome.htm.

[38] B. Kuijpers and W. Othman. Trajectory databases: Data models, uncertainty and complete
query languages. In llth International COrt, rr, l on Database Theory, pages 224-238,
2007.

[39] M. McKenney, A. Pauly, R. Praing, and M. Schneider. Preserving Local Topological
Relationships. In ACM Symp. on Geographic Information Systems (ACM GIS), pages
123-130. ACM, 2006.

[40] M. McKenney, A. Pauly, R. Praing, and M. Schneider. Multi-Structured Large Objects in
Databases. Technical report, University of Florida, Department of Computer & Information
Science & Engineering, 2006.

[41] M. McKenney, A. Pauly, R. Praing, and M. Schneider. Ensuring the Semantic Correct-
ness of Complex Regions. In 1st Int. Workshop on Semantic and Conceptual Issues in
Geographic Information Systems (SeCoGIS), pages 409-418, 2007.

[42] M. McKenney, A. Pauly, R. Praing, and M. Schneider. Local Topological Relationships for
Complex Regions. In Symposium on Spatial and Temporal Databases, 2007.

[43] H. Mokhtar and J. Su. Universal Trajectory Queries for Moving Object Databases. In Int.
Conf on Mobile Data Management (MDM). IEEE Computer Society, 2004.

[44] V.H. Nguyen, C. Parent, and S. Spaccapietra. Complex Regions in Topological Queries. In
Int. Conf on Spatial Information Theory, pages 175-192, 1997.

[45] OGC Abstract Specification. OpenGIS Consortium (OGC), 1999. URL:
http://www.opengis.org/techno/specs.htm.

[46] OGC Geography Markup Language (GML) 2.0. OpenGIS Consortium (OGC), 2001. URL:
http://www.opengis.net/gml/01-029/GML2.html.

[47] Oracle8: Spatial Cartridge. An Oracle Technical White Paper. Oracle Corporation, 1997.

[48] J. A. Orenstein and F. A. Manola. PROBE Spatial Data Modeling and Query Processing in
an Image Database Application. IEEE Trans. on Si'fiti ar Engineering, 14:611-629, 1988.

[49] N. Pelekis, B. Theodoulidis, I. Kopanakis, and Y. Theodoridis. Literature Review of
Spatio-Temporal Database Models. Knowledge Engineering Review, 2005.

[50] R. Praing and M. Schneider. Efficient Implementation Techniques for Topological
Predicates on Complex Spatial Objects: The Evaluation Phase. Technical report, University
of Florida, Department of Computer & Information Science & Engineering, 2006.

[51] R. Praing and M. Schneider. Efficient Implementation Techniques for Topological
Predicates on Complex Spatial Objects. Geolnfornnatica. 2008. (In press).

[52] R. Praing and M. Schneider. Moving Balloon Algebra: A Finite Representation and Data
Structures for Moving Objects in Spatio-Temporal Databases. Technical report, CISE
Department, University of Florida, 2008.

[53] R. Praing and M. Schneider. Moving Balloon Algebra: An Integrative Spatio-Temporal
Data Model for Historical and Predictive Movements of Moving Objects in Databases.
Technical report, CISE Department, University of Florida, 2008.

[54] R. Praing and M. Schneider. Topological Feature Vectors for Exploring Topological
Relationships. Int. Journal of Geographical Information Systems, 2008. In press.

[55] F. P. Preparata and M. I. Shamos. Computational Geometry. Springer Verlag, 1985.

[56] D. A. Randell, Z. Cui, and A. Cohn. A Spatial Logic Based on Regions and Connection. In
International C uf, vr, on Principles of Knowledge Representation and Reasoning, pages
165-176, 1992.

[57] M. Schneider. Spatial Data Types for Database Systems Finite Resolution Geometry for
Geographic Information Systems, volume LNCS 1288. Springer-Verlag, Berlin Heidelberg,
1997.

[58] M. Schneider and T. Behr. Topological Relationships between Complex Lines and Complex
Regions. In Int. Conf. on Conceptual Modeling, 2005.

[59] M. Schneider and T. Behr. Topological Relationships between Complex Spatial Objects.
ACM Trans. on Database Systems (TODS), 31:39-81, 2006.

[60] A.P. Sistla, O. Wolfson, S. Chamberlain, and S. Dao. Modeling and Querying Moving
Objects. In Int. Conf on Data Engineering, pages 422-432, 1997.

[61] E. Tossebro and R.H. Giting. Creating Representations for Continuously Moving Regions
from Observations. In Int. Symp. on Spatial and Temporal Databases (SSDT), pages
321-344, 2001.

[62] M. E Worboys and P. Bofakos. A Canonical Model for a Class of Areal Spatial Objects. In
Int. Symp. on Advances in Spatial Databases, pages 36-52, 1993.

BIOGRAPHICAL SKETCH

Reasey Praing was born on December 5, 1980 in Phnom Penh, Cambodia. The third child of

four children, he grew up in Phnom Penh, graduating with high distinction from Indradevi High

School in 1996. Then, he attended the Faculty of Business and Norton University and received a

Small Business Management degree in 1997. Later that year, he came to visit the United States

with his sisters in Miami, Florida, and there he found a great opportunity for higher education.

He earned his Bachelor of Science in Computer Science and graduation with honors from Florida

International University in 2001. He then attended the University of Southern California in Los

Angeles, California and earned his Master of Science in Computer Science in 2002.

Upon receiving his Master of Science degree, Reasey joined the Computer & Information

Science & Engineering department at the University of Florida as a Ph.D. student and teaching

assistant in 2003. During the first two years as a teaching assistant, Reasey helped with teaching

including Java programming, computer simulation, and database systems. For the last 3 years of

his Ph.D. program, Reasey worked as a research assistant for his adviser Dr. Markus Schneider in

a National Science Foundation research project.

Upon completion of his Ph.D. program, Reasey will be joining Ultimate Software Group

Inc. in Weston, Florida. In the future, Reasey plans to return to Cambodia and teach at a

university there.

PAGE 1

1

PAGE 2

2

PAGE 3

3

PAGE 4

Ithankthechairandmembersofmysupervisorycommitteefortheirmentoring,mycolleaguesfortheirintellectualsupport,andtheComputerSciencedepartmentaswellastheNationalScienceFoundationfortheirnancialsupport.Ithankmyparents,mysistersandbrotherfortheirlovingencouragement,whichmotivatedmetocompletemystudy. 4

PAGE 5

page ACKNOWLEDGMENTS .................................... 4 LISTOFTABLES ....................................... 8 LISTOFFIGURES ....................................... 9 ABSTRACT ........................................... 13 CHAPTER 1INTRODUCTION .................................... 15 1.1Motivation ...................................... 15 1.2ProblemStatement ................................. 15 1.3GoalsandSolutions ................................. 17 2RELATEDWORK .................................... 20 2.1SpatialDataModeling ............................... 20 2.1.1SpatialObjects ............................... 20 2.1.2TopologicalRelationships .......................... 21 2.2SpatiotemporalDataModeling ........................... 23 2.2.1HistoricalMovementsofMovingObjects ................. 23 2.2.2PredictiveMovementsofMovingObjects ................. 25 2.3ImplementationAspectsofSpatialandSpatiotemporalDataModels ....... 27 2.4DatabaseIntegration ................................ 28 3ABSTRACTMODELOFTHEMOVINGBALLOONALGEBRA ........... 30 3.1ModelingHistoricalandPredictedMovements .................. 30 3.1.1ContinuityofMovement .......................... 31 3.1.2ModelingHistoricalMovementsofMovingObjects ............ 40 3.1.3ModelingFuturePredictionsofMovingObjects .............. 40 3.1.3.1Handlingtheuncertaintyofthefuturepositionsandextentofmovingobjects .......................... 41 3.1.3.2Datatypesforfuturepredictionsofmovingobjects ...... 45 3.2ModelingMovingBalloonObjects ......................... 47 3.2.1BalloonDatatypes ............................. 47 3.2.2SpatiotemporalBalloonDataTypes ..................... 50 3.3OperationsoftheMovingBalloonAlgebra ..................... 53 3.3.1OperationsonHistoricalMovements .................... 53 3.3.2OperationsonFuturePredictions ...................... 54 3.3.3OperationsonBalloonObjects ....................... 58 3.3.4OperationsonMovingBalloonObjects ................... 59 3.4SpatiotemporalPredicates .............................. 62 5

PAGE 6

........................ 63 3.4.1.1Generalmechanismforballoonpredicates ........... 63 3.4.1.2Specicationbasedontraditionalspatiotemporalpredicates .. 65 3.4.1.3Canonicalcollectionofballoonpredicates ........... 68 3.4.2ReasoningAboutActualFutureInteractions ................ 69 3.5QueryingUsingtheMovingBalloonAlgebra ................... 71 3.5.1InteroperatingwithPredictionModels ................... 71 3.5.2SpatiotemporalQueries ........................... 72 4DISCRETEMODELOFTHEMOVINGBALLOONALGEBRA ........... 77 4.1Non-TemporalDataTypes ............................. 77 4.1.1BaseDataTypesandTimeDataTypes ................... 77 4.1.2SpatialDataTypes .............................. 79 4.2BasicSpatiotemporalDataTypes .......................... 82 4.2.1TemporalUnitsforBaseTypes ....................... 84 4.2.2TemporalUnitsforSpatialDataTypes ................... 85 4.2.2.1Unitpoint ............................ 86 4.2.2.2Unitline ............................. 88 4.2.2.3Unitregion ............................ 90 4.3BalloonDataTypesandSpatiotemporalBalloonDataTypes ........... 91 4.3.1BalloonDataTypes ............................. 91 4.3.2SpatiotemporalBalloonDataTypes ..................... 93 5IMPLEMENTATIONMODELOFTHEMOVINGBALLOONALGEBRA ...... 96 5.1DataStructures ................................... 96 5.1.1GeneralRequirementsofDatabase-CompatibleDataStructures ...... 97 5.1.2DataStructuresforSpatialDataTypes ................... 97 5.1.3DataStructuresforSpatiotemporalDataTypes ............... 103 5.1.3.1Datastructuresforbasicspatiotemporaldatatypes ....... 104 5.1.3.2Datastructuresforballoonandspatiotemporalballoondatatypes ............................... 106 5.2AlgorithmsforTopologicalPredicatesonComplexSpatialObjects ........ 108 5.2.1BasicAlgorithmicConcepts ........................ 109 5.2.1.1Parallelobjecttraversal ..................... 109 5.2.1.2Overlapnumbers ......................... 111 5.2.1.3Planesweep ........................... 111 5.2.2TheExplorationPhaseforCollectingTopologicalInformation ...... 117 5.2.2.1Theexplorationalgorithmforthepoint2D/point2Dcase .... 119 5.2.2.2Theexplorationalgorithmforthepoint2D/line2Dcase ..... 119 5.2.2.3Theexplorationalgorithmforthepoint2D/region2Dcase ... 123 5.2.2.4Theexplorationalgorithmfortheline2D/line2Dcase ..... 125 5.2.2.5Theexplorationalgorithmfortheline2D/region2Dcase .... 129 5.2.2.6Theexplorationalgorithmfortheregion2D/region2Dcase ... 133 5.2.3TheEvaluationPhaseforMatchingTopologicalPredicates ........ 137 6

PAGE 7

. 137 5.2.3.2The9-intersectionmatrixcharacterizationmethod ....... 140 5.2.3.3Typecombinationdependent9-intersectionmatrixcharacteri-zation ............................... 141 5.2.3.4The9-intersectionmatrixcharacterizationforregion/regioncase 146 5.2.4OptimizedEvaluationMethods ....................... 151 5.2.4.1Matrixthinningforpredicateverication ............ 152 5.2.4.2Minimumcostdecisiontreeforpredicatedetermination .... 157 5.2.5InterfaceMethodsforTopologicalPredicates ............... 165 5.3AlgorithmsforSpatiotemporalPredicates ..................... 166 5.3.1TheAlgorithmicScheme .......................... 166 5.3.2Time-SynchronizedIntervalRenement .................. 171 5.3.3Function-ValuedIntervalRenementandDevelopmentDetermination .. 174 5.3.4PatternMatchingwithQueryPredicate ................... 178 5.4AlgorithmsforBalloonPredicates ......................... 180 5.5DatabaseIntegration ................................ 182 5.6CaseStudy:ApplicationtoHurricaneResearch .................. 185 6MODELANDIMPLEMENTATIONASSESSMENT .................. 191 6.1TopologicalPredicates:Assessment,Testing,andPerformanceStudy ....... 191 6.1.1QualitativeAssessment ........................... 191 6.1.2Testing .................................... 192 6.1.3PerformanceStudyandAnalysis ...................... 193 6.2SpatiotemporalModelAssessment ......................... 196 7CONCLUSIONS ..................................... 199 REFERENCES ......................................... 201 BIOGRAPHICALSKETCH .................................. 206 7

PAGE 8

Table page 3-1Operationsonhistoricalmovementsandfuturepredictionsofmovingobjects. ..... 55 3-2Valueoftheoperationpointset conf(j(a);b;instant)foreachcombinationofj(a)andbwhetheritisalways0,denotedbyavalue0,orameaningfulvalue,denotedbyavalueM. ......................................... 56 3-3Operationsonballoonobjectsandmovingballoonobjects. ............... 60 3-4Assigningnamingprexestopairwisecombinationsofinteractions. .......... 67 3-5Numberofballoonpredicatesbetweenballoon pp,balloon pr,andballoon rrobjects. 69 3-6Inferringthetypesofinteractionbetweenactualobjectsfromthetypesofinteractionbetweentheirpredictions. ................................. 70 5-1StaticanddynamichalfsegmentsequencesoftheregionsR1andR2inFigure 5-6 ... 116 5-2Possiblesegmentclassconstellationsbetweentwoconsecutivesegmentsinthesweeplinestatus. ......................................... 136 5-3Summaryofcompleteandthinnedout9IMsforthetopologicalpredicatesofalltypecombinations. ....................................... 156 5-4MCDTpre-orderrepresentationsforalltypecombinationsonthebasisofequalprob-abilityofoccurrenceofalltopologicalpredicates. .................... 161 5-5SummaryoftheMCDTsforalltypecombinationsonthebasisofequalprobabilityofoccurrenceofalltopologicalpredicates. ........................ 164 5-6Intervalendpointordering. ................................ 173 8

PAGE 9

Figure page 2-1Examplesofspatialobjects.A)Asimplepointobject.B)Asimplelineobject.C)Asimpleregionobject.D)Acomplexpointobject.E)Acomplexlineobject.F)Acomplexregionobject. .................................. 21 2-2The9-intersectionmodelandtopologicalpredicates.A)The9-intersectionmatrix.B)Thenumbersoftopologicalpredicatesbetweentwosimple/complexspatialobjects. 22 2-3Examplesofmovingobjects.A)Asingle-componentmovingpointobject.B)Asingle-componentmovingregionobject.C)Amulti-componentmovingpointobject.D)Amulti-componentmovingregionobject. ......................... 24 2-4Examplesofspatiotemporalfunctionsformovingpoints.A)Partiallydisappear.B)Instantlyappear.C)Haveinstantaneousjumps.D)Havespatialoutliers.Examplesofspatiotemporalfunctionsformovingregions.E)Partiallydisappear.F)Instantlyappear.G)Haveinstantaneousjumps.H)Anexampleofaspatiotemporalpredicate. 26 3-1Examplesoff-continuoustemporalfunctions.A)simultaneousmovement.B)Amerg-ingsituation.C)Asplittingsituation.D)Acombinedmergingandsplittingsituation. 35 3-2Examplesoff-discontinuoustemporalfunctions.A)Aninstantaneousjumpinanmrealobject.B),C)Twoconstellationswithtimeinstantsatwhichthefunctionisevent-f-discontinuous. .................................. 36 3-3Movingpointobjectgivenbyatemporalfunctionwithalocalminimumandalocalmaximum. ........................................ 38 3-4Modelingpotentialfuturepositionsofspatiotemporalobjects.A)Forahurricane'seyeatnow+12hours.B)Withinthe12-hourperiod.C)Foravehicleatnow+15min-utes.D)Withinthe15-minuteperiod.E)Foravehiclewithaconstantspeedatnow+15minutes.F)Withinthe15-minuteperiod. ......................... 42 3-5Representingthefuturepredictionofahurricane'seyeusingamovingregionwithamovingcondencedistribution.Thegradientindicatesvarieddegreeofcondence. .. 45 3-6Examplesofvalidfuturepredictions.A)Acontinuousfpointobject.B)Acontinu-ousfregionobject.C)Adiscontinuousfregionobject.Anexampleofinvalidfuturepredictions.D)Adimensionallycollapsedobjectwithmultipletypes. ......... 46 3-7Exampleofahistoricaltemporaldomaintimehthatstartsfromandendsattcin-clusively. ......................................... 48 3-8Exampleofafuturetemporaldomaintimefthatstartsexclusivelyfromtcandex-tendsindenitelytowards+. .............................. 48 3-9Exampleofamovingballoonobjectoftypemballoon pr. ............... 52 9

PAGE 10

........................................ 57 3-11Relationsbetweentraditionalmovingobjectdatamodelandballoondatamodel. .... 64 3-12PossiblerelationshipsbetweenpartsofballoonobjectsAandB.A)WhenA'scurrentinstantisearlier.B)Atthesametime.C)LaterthanthatofB's. ............. 65 3-13Futurecrossingsituationbetweenaballoon ppobjectPandaballoon probjectR. .. 66 3-14MovementoftheeyeofhurricaneKatrina. ........................ 74 4-1Representationsofalineobject.A)Intheabstractmodel.B)Inthediscretemodel. .. 80 4-2Representationsofaregionobject.A)Intheabstractmodel.B)Inthediscretemodel. 82 4-3Adiscreterepresentationofamovingpointobject.A)Atemporalunit.B)Aslicedrepresentation. ....................................... 83 4-4Representingamovinglineobject.A)Aulinevalue.B)Adiscreterepresentationofamovinglineobject. ................................... 89 4-5Exampleofauregionvalue. ............................... 90 5-1Examplesoftheorderrelationonhalfsegments:h1