UFDC Home  myUFDC Home  Help 



Full Text  
xml version 1.0 encoding UTF8 REPORT xmlns http:www.fcla.edudlsmddaitss xmlns:xsi http:www.w3.org2001XMLSchemainstance xsi:schemaLocation http:www.fcla.edudlsmddaitssdaitssReport.xsd INGEST IEID E20101107_AAAACS INGEST_TIME 20101108T00: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 7ae89f1ec45641dafb47637bad2a7b21 SHA1 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 07de8d7ad101e1df14698342d292f200 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 7a60f6ff9f1f422dc6c077dcf1adc4c0e566af84 130226 F20101107_AABVXX praing_r_Page_168.jpg 891dade01bc3b2abad3cc2b413bfd378 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 9eecade9e3de423785631fb22c75ff18 a58120d0cdd9992926021322dde4fad029b6161a 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 d5e8fcc81b9707af7c00509d6d122adc 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 650cf3b94dfbcad23e6a4676f69bbcae3b8196ab 1051981 F20101107_AABWEJ praing_r_Page_147.jp2 daa2e6ce0efd1932a3ad64dc4e348e0a 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 f9322f3adcbfdf222521ff0b5ee663c20218f652 39521 F20101107_AABVZE praing_r_Page_205.jpg 2591c42f2fe08076d205f667a1cbf910 aa5b97ef01884fd5f7abbb5aad1a9413e29a7150 1051962 F20101107_AABWDW praing_r_Page_134.jp2 9591c6b07c42f3655a8bf39ad34b9b10 7adea422cbd6e9745ddd910ae40c88f177105fa1 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 c6957d661eb0b5c00e44233b571653fadb5cf505 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 29342b60f0702cadb01c66d697b9f2e1da1afe12 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 529983c378fd69a2243c302c70efadd06381e1ea 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 2139b55612aa1821b6e8c67f8e6bbaf9c2addfc7 28259 F20101107_AABXHQ praing_r_Page_102.QC.jpg 4baa1345c4f6eb7174180a74a77b1923 d7f1b16ef3e99c7f3ec9ad8dc105ed17f9939b24 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 08707db8b22eb15ba7ccad625b6ac7a0 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 2448a833f9ba5a50604a5e28c325ccc9287c9ad0 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 b18b751a69804baa197e0d5d112add38 7ef8f1718b38b822c6b001b3db7cad307908acbb F20101107_AABWFH praing_r_Page_176.jp2 b825f4ac940973ad72e52315bab1b3a6 b546e6d7ca5c288562e7ccec05e4ae751799c397 F20101107_AABWET praing_r_Page_161.jp2 62ac7fc035435635b9c2397d4e694eb8 2dd9a9aa9e3f9768303d55710854deac8e3e4b23 F20101107_AABVZN praing_r_Page_008.jp2 ecca8c9f0d107bd18c84f235956bc293 383e74ad82cdc02681b6887e186dcf6f01cee6d5 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 ebaca81f5d6e995e665ea050ad00eb600fbdea53 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 b1e4ce18cfadc0b36153e35f6e94684f1198ad9f F20101107_AABWFJ praing_r_Page_178.jp2 85e459a12ea02605979bad4b4051b76b 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 666982324409adf97d80c217ed938c29015f7cfb 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 a4cc83ad57b3248d0b6c07964d118456816c2e6c 21272 F20101107_AABXJB praing_r_Page_122.QC.jpg 57c199003df6de6492b7c2eb5f8553dd 1aa7d4ea6810607de7dac4095bbc25a199ba6d55 9326 F20101107_AABXIN praing_r_Page_114thm.jpg f068190c4ab4aefb3b81c28b6ace2d5a 895ea7900f41d58adce67269ea1d52dee91c1d91 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 6e8044ad5828c35d606b8c39bb9d77e0 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 adcd2c16a86be9487d5f48704fd85557 c090c641ea30b7315101091a226adfab8c8d58bc 1051970 F20101107_AABWGA praing_r_Page_198.jp2 9990190355da26607220dadb9f3f59b9 7adda53e145014a1057df1ae6fcae64f6cd47895 37657 F20101107_AABXJD praing_r_Page_124.QC.jpg fd142f413b4b8ff0cfac47ef8db72c60 a4749164223f15d4d8c28c284f3e488f316fd759 8135 F20101107_AABXIP praing_r_Page_115thm.jpg d3e83df8adf06b8ddd0915c85a92c360 bac32d381a47ad9ff3ec388446ec472482b3517b F20101107_AABWFN praing_r_Page_182.jp2 c7de0fe01fef563cef591e5228c5b102 2da9dcd497622f3a056fd1c799e0f414ad4ea34d F20101107_AABWEZ praing_r_Page_167.jp2 120c2142d2dd633e5540d6ffe1e20b6e 819d684ad517dec9750840e023ae51c4ad9d23db 526955 F20101107_AABVZS praing_r_Page_014.jp2 270179cf1590e3155932cc006b57f648 b5e92952da2b3af1369055ce0f8037e20f7aa397 991524 F20101107_AABWGB praing_r_Page_200.jp2 b9026ff28ce12ad5d32bd8f8ab6f3940 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 18e1c20caf3d67aa570a2857201faddb9ea29694 805160 F20101107_AABWFP praing_r_Page_185.jp2 3b183e301ff3e80b26a02a2cfd409cba 729e4c50d63d5d19ae9df25cefd0b90d2b4e2824 1051986 F20101107_AABVZU praing_r_Page_016.jp2 732de1eeb43eef772ce0a7fcbdea2176 321c71da4cfbc4ad4cb3c4a37bbb8ff5e21a426c 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 f39b65f8012a4ead9e23f447162fce3c2639f21e 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 85ad47af3a16f98e6f78c7027907bf1111c4135d 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 43d4ad7673041ae16bd8920f43656f90 19c74ecb16d4a6be34b62233ae331c1676b1ffab F20101107_AABVZX praing_r_Page_020.jp2 a93bb2f526ad7189cc2e71f999fde697 1cfa70a51450279377dc821ad72b24e7307a5988 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 7a8a999832829d0d7e1ad0498678e093 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 cb2d93ebce25369b65dbb86081ad0455 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 e30dc168921319d7e9ef31ad3b1e564ce048d9ab 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 ad787b5e8e87ce505ae33a3c7012f160 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 7b75dccfda8238fb848c7f4a7c8fad66e163df86 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 d538ad62efb2bd2f624c44a370c5f30c7bf603c7 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 90a96ef67869c48387c0f791ba32fad22aef50b4 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 01b2ec3b25f109b03ddd389ad1286f42 114208b401cb7ca81571cb63f6ee5976baa6f9f5 39437 F20101107_AABXJT praing_r_Page_136.QC.jpg adf89e8a67221a56cc6c3e8a574f8d99 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 23822f017b3d7800a7eca8ad4e1ccc3c3890368b 9298 F20101107_AABXJU praing_r_Page_136thm.jpg 219cc5f1af9cc37de4be572a985306fe aa0c227a5d68213c44845cce2b8ae24dad177952 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 dc6e074fce37b6d12d77107ad0976971 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 1fb35dafc568d8adf75de3fcbc8c815e8c650430 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 554f213adbc4e0596a3229de9ea22f0f e40c5e171014557ae1d2794d07c6c1f44a591438 9258 F20101107_AABXJZ praing_r_Page_140thm.jpg 2900eebaef97bb370d513e143c58dba1 c241f7dd564b65dca545039c3ae7c16dc9e283db F20101107_AABWHL praing_r_Page_034.tif 32908e980ff169e0567a2a6e844ff8bb 58c0e0b24d0ad004a4533dadfbe54caf561a3f71 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 3197cd3af461adadd064f2253ece5b4b912a3a21 40604 F20101107_AABXLD praing_r_Page_157.QC.jpg e6986f2f306cf2138ce273992cf1d5e3 0873a1d2bc4d03dbe78c182251f150eaf3510d49 31615 F20101107_AABXKP praing_r_Page_149.QC.jpg 8b35fb11bf0dd71334b5fa33d2c2badc 11a1346f76cad7027c9aa78ae74fc4130668d78f 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 dcfc4658e81bf59ad830af685db4577c3ce25b28 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 95ca6403d8ba866bb7f985a2043cc0abdc66ade5 9089 F20101107_AABXLG praing_r_Page_158thm.jpg a6b6b05d8fadd13a923dd21969c474d4 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 f8bfd717fadbe3d29a0868a12afc6d0e 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 19ad5b3d7afa98101445e29c2594888c a332f10e36349f0bc72ad470b63202d288beb366 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 022fa82ada83d381db8063a1b996f9e4 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 40763ad13886189166821187afac3e796cea03af F20101107_AABWHZ praing_r_Page_057.tif e3ebcc7d6b3e2104795bd2665e7b12a2 df9d55f783067c2be1aaac82280a15aba1ebd679 F20101107_AABWJB praing_r_Page_093.tif 29738c58d0aa763325b1ab98372b22c4 ab11acd20b1fad19d4c8744d49d8365abb057bbc 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 a87633eb9ad21898ef5c10b17c1448ba 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 737ee10ad46c2627a3bcb8383fb3fc0c5a58f6e6 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 d7ebc651dfbf2dd3839612465ad34039 c3cffff22f69ad841598c307cddbaa750e248569 F20101107_AABWIS praing_r_Page_082.tif 9ec2a0b41c198009a07f41179e79be8e b828f1168490cca11fa5bf92bb03e55142f5f595 9304 F20101107_AABXMJ praing_r_Page_173thm.jpg 90b64adeecab9708dd7bb00ecb24ceb2 360faa70e160211d932418d01a9ef1300735c578 8654 F20101107_AABXLV praing_r_Page_166thm.jpg 79965944bc958309d04a78a9184c4c1b 02941af866f46e0ead9cabdf4cf506a4f69d0745 F20101107_AABWJH praing_r_Page_099.tif 87c285d00d968f2367c2264afd478651 ae2d7054f191a90428b4c2487f54ab9334b31ad3 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 40c0c45c9bc7721ce992ce934d965cfad8aba115 F20101107_AABWIU praing_r_Page_086.tif aca8bdb1f564bc7421fc1fd67690bbdb e1afccab06e7d9605d10747702b80c208accf51a 39160 F20101107_AABXNA praing_r_Page_184.QC.jpg 88000056c93bfa2e14fd1ddead0b363c 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 2d99a6ad8406637d2d217f7734584ecdc399a527 F20101107_AABWIV praing_r_Page_087.tif 9f6480efa312bd68add43e9f21ed7319 f9b279b4f02d72b0b3a0c240650b2c5cdb5b5114 8903 F20101107_AABXNB praing_r_Page_184thm.jpg dadc6a1ee64bcc91ca9b60bbf6f35029 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 3069ad822155cd29355d3630ada14697 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 05468f8d7b811707a6ecad16adfc8969 7a2c89004810696133ef1bf599bb957c3693798d 27000 F20101107_AABXMO praing_r_Page_176.QC.jpg 9ea49d9e03d055fee6c71f1f5e2cc1bb 2dc404f35701f8494e4f585c819ae13b5f3351d2 F20101107_AABWKA praing_r_Page_120.tif b3848f2b0f06c31e2c43d2187dac7f22 9641f094e3fb5170c76ff324fc52adaf10981c2d 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 5745b01760b6bb1535a16ef44dd2b5adfaf9affa 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 0dafff2713c1ade3843aa2ca6dfb7a318f4be3a2 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 7d27b2014b62a6b5fe7dcdc0d62eed1803ad85d8 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 98eaab0efd68c8b58bc273bcdad1d7bf e9117a0379d1346bc2145eb38777ca41387117b1 F20101107_AABWJP praing_r_Page_107.tif 1c70da075ccfad3f741f593d35bce85f 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 7cfe7d4a423fcaddac1254cc44794c45 fcfbb22a4c93682243ceb955b5e5cd0b1bb74c6e F20101107_AABWKF praing_r_Page_126.tif da362cc39eec5b3e86954a47ebde81c9 e02dbb2d6ad86f64fcfbd83af2c886d4c8bdb531 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 d2ed1ee6c55adf74d40e24f7b06db893 1de1fbf8f3f99cdacb68ac860ee7c26f1516abb9 F20101107_AABWKI praing_r_Page_129.tif 1cff6b91a1c824bbefc6e7cc0c44dcad 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 b8b2a0d7afeae37c4ad21dbb33b7a753 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 a75a6949974b5d7d81e86658ffe5b1db7dbad0a5 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 19dca930c28ae4671e65159addaab6602006a2a1 39268 F20101107_AABXNQ praing_r_Page_192.QC.jpg 8f8c1ed879be41017440afc2f9d6e576 10c1215b33cd237ec8f8c79ae0028f171139b757 F20101107_AABWKO praing_r_Page_135.tif ba0c7d004206b1c50173d40ee94158ad 27c19eb143fd650d63193497bcef37cf901c6ad2 F20101107_AABWLC praing_r_Page_149.tif 175d6cfa0eb0f0d38f224388301fd4c2 ead687338991be52cfc5626dda53c3f8ec24353d 28115 F20101107_AABXOF praing_r_Page_200.QC.jpg 67d298c358cad028049b17ce44704e11 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 0313aa32c72ea3832a4a1ea8fb425adf 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 8527fe6a4a566e39f4f772465f25c2beb44ad42f 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 5199088d4e4adf85af236d8626b7b2ae 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 745b8f087a996bd7d36122197bad74d7 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 aa067e204ad05c357ad3245ab9477598 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 1ad9c109f7b35440ebe9134fa3a09253 0132a6f66912e27e08e6344956761dc970c40eca F20101107_AABWMA praing_r_Page_178.tif 736c8884a59e21cad6a30386168d0c46 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 266f05f8db316c5fff5ad2e7abc06f47 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 4bc4a35cd19d64ad6f72f8c3a4921266 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 f1ea9e8019470f2bfa2c33c02eed8ad6 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 8553f8454723286e51cbdad498d469c442a972f9 F20101107_AABWML praing_r_Page_191.tif 1603d35905971ef2e31c3ffdd0767169 b937e4486a64609ea4c1b92b14707015b6bd8f1f F20101107_AABWLX praing_r_Page_174.tif 654907610180ecc74cad7ccd33d56c98 4328cc671a87277b0a952dd2acf817906eaa8b27 10023 F20101107_AABWNA praing_r_Page_001.pro 2b82b92f23edf52d0aacd8d9cba77e91 e093badc349689594b06140e5671af7ac990b58f 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 f9683f787ad027d5d1784eabdbdb68e5 d3c25e5733a524b8b6e8b924403ead2c5d19f2b2 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 edc105e57f897edc36393d71adabf70e6a2ae541 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 5d2b88004418775ad8a4bb33a5e2afb258b9a14e F20101107_AABWMT praing_r_Page_200.tif 5c8099622c0f3269628370a4482c6757 556438675426206720ea20c3a9e37ad540db7699 74808 F20101107_AABWNH praing_r_Page_009.pro 2eaad9e9278aff366eeb4a8ff30a2154 a71a6a3cdad3eae5967ca4e8be0c5e01e7700fb5 F20101107_AABWMU praing_r_Page_201.tif c4d6445d667d94e749d1b40f86420282 780de0b60ce7e66f6561d3304086a86f95924aea 73909 F20101107_AABWNI praing_r_Page_010.pro b113daa2a25bdb95850ed249c819524b 2a31c8938755977359b4fada44985fdc9adfba54 F20101107_AABWMV praing_r_Page_202.tif 05c0297e1c0e830be955358a127ca031 3192656d6b21028ac0f71667626772889469dfea 75212 F20101107_AABWNJ praing_r_Page_011.pro 94a4fa227f35b7d63ae5d08155f86ff3 d80a55b16fda86e92fad4105a7639ba458e450cc 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 14282d02ed2a7baad530a2b22eb29552 47b66ab6d0f567657d5c9e5a3acf829e2a1d6bcd F20101107_AABWMZ praing_r_Page_206.tif b75849d375881ec51e5ce8f4f21922fa a88a8a0bed80c16638d35fee60fbcea3c3a327c3 64297 F20101107_AABWOC praing_r_Page_034.pro da69266a89ce0d2b35f5aaadf44f033b 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 cacc3b255ee34aa5ad1a098b50062e114cd993a6 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 09ba24ef9fb4fed1b4d9235f64adfc53691ea55c 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 77b0a76394f2e4ed9213f1bc469d95ad 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 a99ad4d1336654eaa534720853b89db1 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 ee829e118d0f13bb32babd694ad5c1af 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 ad57ec789600d31809bd9fe58f8aff8a 0a9093be99429e7112a8f58d65f278b777deb89b 48865 F20101107_AABWOL praing_r_Page_048.pro 276553bb42b0c92ead5f4105dd7525d9 14666660057431a1007f8de9ffda24356977204d 62707 F20101107_AABWNX praing_r_Page_028.pro 479853f496aee0fec339cdacbc829aec 0d8827b29267634f9b1a9b945a3f9500722a2972 51558 F20101107_AABWPB praing_r_Page_066.pro 720f4efb0761825cd964717ca8260d76 dad035c3c64e3dcea2b7991ed3ff15cb44ad51b5 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 ad42846ed76141453295e112b0f28aeb 1af4efd3a5f644ca3656f3e7d4b6db81d808d380 49278 F20101107_AABVMB praing_r_Page_085.pro 185d1e4edad3754486c29bac020935bf 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 04ee7dde4634db7af8cca18319f26ad5 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 ba61978d252aad5f88c44878f0ba4642794c19eb 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 3ab0c4bc8e0059bbf1c00b60ad3fe35f720f4466 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 d360552899042b6babead2a712c7c001a4737eba 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 1c8cad55465500f719b7b88d76f91f97 e987cef2bea635587332594aa9ceac61b45d786c 64253 F20101107_AABWOV praing_r_Page_059.pro eaad294a6af81d4e037b0aa10cd2b863 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 3ef6ee6a082c01c670bd5753f53ad060 f6899bba39130216280ab4941a19602bddbb1d0b 2447 F20101107_AABVMI praing_r_Page_053.txt bc5da3a9c5a1cfa3fa3516e529febcdc de5683fb80d694ff59ad1ec73fd02252d584ad3d 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 24b82963adf284a49fffc84785a21a38 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 1c928ad44c5aa80758b0f756934b6167 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 9acbe9f215f34f4fdad94045879d5fc97fcfaa08 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 e0a1b996c898045561331ba6ef1861d5506cad98 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 37c45c0ef64b5b5fbbcea6856f387ad4 02a4952d34cf8a6fe42e1af4c1f5413dce599e72 60822 F20101107_AABWQI praing_r_Page_104.pro 87e3e549d54b12a7d4d9ccf040bee888 ccaa496ddba436391aa04396fbf0108718d185aa 40534 F20101107_AABWPU praing_r_Page_089.pro 9fa4aeb0f1ecdc8a8c84a44df9fcadb0 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 05b39f6dd7ba0c975ad1ba85850fdfbbaddf9937 1051958 F20101107_AABVMU praing_r_Page_049.jp2 9cf9b3382f167e690d26f8b9ecdcc13a 79d4796d01e699c79740f0ea3120d1fb0984e94c 65363 F20101107_AABWRA praing_r_Page_123.pro 49c0e6aa6171c98dc41fad343da418ae 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 4d90fba4fd5256e0412ae753bad410c35bf62c81 59414 F20101107_AABWPY praing_r_Page_093.pro a5c518ecc0486c48b8ad7c5907daaf6a ecd211322465666f08358b7711e8d60fe79c1089 1994 F20101107_AABVNK praing_r_Page_126.txt 2bfadfaa7fcd788a4c110c111a17628a 9b80dcbb911245cca6bacd99ab83680560d61340 32989 F20101107_AABVMW praing_r_Page_138.QC.jpg 882d76354a86491233410b0900965488 e5e138bb48f483a9d5a460a044ed2adbec0278a4 44624 F20101107_AABWRC praing_r_Page_125.pro bf84d32bc737a4bac6ee5ee99b8c4135 41dd65ba661b185ee8f83a0383976266b416dfae 64273 F20101107_AABWQN praing_r_Page_109.pro 2b559abf94471b37a4b648bab42b25bb f3bbe6a5f885848ac194682cd4ad4528a8668455 48883 F20101107_AABWPZ praing_r_Page_094.pro 21fbed8dea97c82b528d998e6cb992a2 02e063be98e03e0dd00f6a7c0c9e5451ee729e8f F20101107_AABVOA praing_r_Page_084.tif c43f82ababde953643c6cc4ef31f1a51 b3588425025aa7a25af166681bc1add7077d104b 87127 F20101107_AABVNL praing_r_Page_190.jpg ba74269e285c2070332a9fcb102a7892 72b79812366c29fc6b9e0ed7c2fa1ce171da8c25 118969 F20101107_AABVMX praing_r_Page_124.jpg 5bc4906b6ad9539eba8badbfd7493019 27732a67b0680bd46fd93e493dd500c7adaf6052 50251 F20101107_AABWRD praing_r_Page_126.pro 91dea606d60f5e9e22dc7f1f77c623c5 3f127cd5cd33e75130f703ef27499cfa1aaecb93 66227 F20101107_AABWQO praing_r_Page_110.pro 0e9062706804296b820a5a4b7d54cc68 57e4c538f0924328ce52384a02aad22a3bd22074 F20101107_AABVOB praing_r_Page_020.tif 1c90cb7c900947adfb7c367a57c074c0 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 e5441abac11ad9fa743ba10bd9a925cb4027e013 62503 F20101107_AABWQP praing_r_Page_111.pro 5462cb125f5ccad50d141d36069b7d37 68c58d15da160ad8f2fd45c406374a3dd16568ab 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 b60cf49618829d6ad7edda4a86447699320c53e7 F20101107_AABVOE praing_r_Page_194.jp2 58774c47246fbd3da6ea3a8c4561e69c 9a2e3e5dcd697c703682bd34856d5fa200545713 33392 F20101107_AABVNP praing_r_Page_052.pro 7abb38033fe628560c57b4df2b6def36 39828e1207f0b3fddfc6704f3ebad2128aab92a8 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 19a77ad44d4f89c36c67e4fa2547aeb550171584 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 968128f165a030e750c7667c79ad25de 49a7487d46d38117c21eb6943ae89d1a8d425761 66318 F20101107_AABWQU praing_r_Page_116.pro 2ef2702fba65b8eccf37a6337a85b771 bad3e4ccdd81544205639083d55a5a85e6b14520 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 328cc81607967cd5a5fdb25cf78ad59751008a59 47499 F20101107_AABWQX praing_r_Page_120.pro f3f3ea75e365bfd91b109674a37fbc57 3bbf4d51efe2d5a950ecd0344b26c73c7bea1c87 40048 F20101107_AABVOJ praing_r_Page_123.QC.jpg 1cad136523aceac41e0d0d94fb8e263e 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 8af331334ad46c0eb1ce47195fd04a62 bbc452a3b8ab444ea866ad17a866245ea69f301e 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 cd2252a1649b1c7bf8bcae49015151ad 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 c0ad8628dd3b77326061f589cb2f8b8c8bfd8c8b 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 cddadfb7576e1193b5042e40bff48dcc 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 9feacca01c000ee26ad64e4640c6a694 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 72b86adf5347df57ec35b5c9bc4917d0e799bd43 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 add6bf05a74940466c0b7484599fdb07 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 fac8970c8ad823802231670a174247c27c2f5862 45827 F20101107_AABWRW praing_r_Page_148.pro ff4c95254ea245f8932a83215375a9e9 3d58aca21607ade40d39934a0b7b6973da6fc566 41347 F20101107_AABVOU praing_r_Page_038.pro 1593f1da03cf331cbb250b5091578353 a04db5b2f5129ed5cba979f25dee7afa2609e3a8 124264 F20101107_AABVPI praing_r_Page_043.jpg ce7cd991dc45993708ea79c92e74f2d5 c7ca6467a9cfee0afff3cd2dfff48da0a0a3ada9 62127 F20101107_AABWTA praing_r_Page_184.pro 810f0b418dca09addb845462f41f218c cbdf0198c253cd55816d3b2f10aad403d44b7d72 63158 F20101107_AABWSL praing_r_Page_169.pro f43cc67baa8673ba436fd24346fafe77 d01a7e5bcad5370276fb974c265cd5758b5261f5 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 4165c9efd8ad361a2d9f1a75263c0e6b 4dbf155983325d5150ef472c37e27d46e0d91adf 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 9893f82ea876065b1ade75c0eb3788916f749c19 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 cda7263d341b91ad95d1acca338d9686d4dbf250 131623 F20101107_AABVQB praing_r_Page_160.jpg 6af23968f72100cc7dd2d0ab83863a74 dc07c3909edf0ff08e4d7b831e627b7f595042a0 127733 F20101107_AABVPM praing_r_Page_034.jpg 4b4a38fe7ca5797a0ad5b8b1f0489dd9 185070a929176bef00e7b00c555573bf1d9cdac4 23258 F20101107_AABWTE praing_r_Page_189.pro 016fd2c1b9a09bbabcd02cda312f5ad6 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 43cd1e3ad0ec6ef03125878add328dbabc4cb9b1 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 a4ad86dc02b19b082fc449214084d8da22ef0dcb 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 b6aad2e195a562cc0cf08e8705202deb5df79486 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 4d53409a3addcb4a48bc2a75196ea078e9cff804 36533 F20101107_AABWTI praing_r_Page_194.pro 90368dfab46444ead439a7c9528624cc 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 f4f32b81c7fadbe8ea680b0307a2207c 4438e2b19ecb5a1fb7bb2bf3214e6d9404b7e8d3 46122 F20101107_AABWTK praing_r_Page_196.pro f97adb66207fe90101fb944801e8ce7f 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 883224c8426b773c16212ad0ff176c96 2a148d429fb6f164075d9341007c89bd6e687e8f 50066 F20101107_AABWTM praing_r_Page_198.pro 947468cb0828b3d0bef32055a015e873 e172a445625cb2898ddb354f44d467db0fa3008a 60869 F20101107_AABWSY praing_r_Page_182.pro 2ed144d779c7f70b942dcc9829e334fe de27b6f434911ad515eb2696d1842048fa19e970 55422 F20101107_AABVQK praing_r_Page_067.pro 8ff5cfcb4b3c47973880bcbe3685664d 37ee38be6a0dad84152cde43c6937c7772a7e7f7 2288 F20101107_AABVPW praing_r_Page_096.txt 3419aae2e34a69962d96291c3de4a665 3063b7cc7f865cc2785b8422008fcb31bb22ab03 3095 F20101107_AABWUC praing_r_Page_009.txt 3637347586f390ed7ca71f6107bad92d 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 754ad282023184e8774832d1bfd0b7cc 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 eac673580e085794dd51a8d7e7de387f17dad198 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 9b87ffba5ada4ee6455e74b2ea321efb 83ecb0fe49d83258e799089f6b2d500bd9a75f2b F20101107_AABVRD praing_r_Page_168.jp2 cc8057375701febffe0fdb0f15d17f1a 0d716b6eb94819941452c480ef5870faadf706fd 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 467d629a5373ad972fe1c69b80acbd43a906a89b 29065 F20101107_AABVRE praing_r_Page_008.QC.jpg 816edad0fbac5c8f9fd148c06fd8091d 8ed27356811ccccf34f35e22765ab1f5304636a0 1022 F20101107_AABXAB praing_r_Page_189.txt 5e1f87c99e8b30c36e967e2d7aa902dc 76b5e2938f49d8388f6e070acf68d85e9342c2c4 2413 F20101107_AABWUH praing_r_Page_015.txt b04d524ac0b43bb0d5791e3643fad17e 7c607b50c722ab8ff322b2102c1c2d044fd5b8dd 17021 F20101107_AABWTS praing_r_Page_205.pro c72dde56278c29af839117d9fab53d8b 0795f8bad72e1992b72ef8bae7d7efb5555a925c 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 3878cbfe68f95b5ce2d064cf33f8ad95 82a817606596c7d926c45d5d4bd6c4e90d8fd26d 41196 F20101107_AABWTT praing_r_Page_206.pro 7d8b2d604889180ae26b74449428e02c b7cf4bca33bc6de4b37df7f17e38233f414ade16 F20101107_AABVQR praing_r_Page_186.jp2 7a3e5b3144b2007a4e07cb4455a980e1 aa3899940a83bbe60f8475c4a70db369baf69488 2487 F20101107_AABVRG praing_r_Page_028.txt 38e600ea9c537e491fddc8d3a75f0f7f 1ec15c5bd48b5d7d478491c8326765a2d298daef 2360 F20101107_AABXAD praing_r_Page_191.txt 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 4b4aab5e1a90084387667d8ad91bb2dd 790d8c7959891753cfc57f4227a53af1e38a5b57 F20101107_AABVRI praing_r_Page_070.txt 5f62aa5a830040346f6f4927c6a5bbc1 352f6dcce0e9e9956b2880e7ec5ada995b7e469e 1647 F20101107_AABXAG praing_r_Page_194.txt 658198c074b62d614425372cdddadc1a 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 ef5f562dad9290ecd8a7a6089e899a3788fd80bc 2528 F20101107_AABXAI praing_r_Page_197.txt 41ac156f9db1bba84a110468c438fa01 4eb3576345eebac985f8751514f9e9d34402eb96 1876 F20101107_AABWVC praing_r_Page_038.txt bfd4f8c490ad5102466cc47f49da4a3a 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 d58a722ea6e507e29e0d9c4e7c10ebfcbadc5549 1921 F20101107_AABWVD praing_r_Page_039.txt 3b3cb453676964e72c5d3e0b2e6780a9 01687b342581677f55446eb8462e8b0ce6d59542 2508 F20101107_AABWUO praing_r_Page_022.txt b07b89b22830eb5cea53feb402af619d 646eaf366c478a4984f720b811b8906ad25be38c 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 4aa397c40198b89e7e229deb32ade695ddfb58c6 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 be37f166287a9c93cd21082bad30a58e fe8edf4a6c2e76d72baa29dd1240a4dcdf6ab163 2539 F20101107_AABWUR praing_r_Page_025.txt 8d9fb9924791e191943570a96a8f32f8 ace4ad8f9092735a5241d24ea3ac717c7dc71ef3 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 a869d02d934f576b2528e4ad0dada1c7 41b0bf9fc11b391951e172f5737d374ae12351e9 2561 F20101107_AABXAO praing_r_Page_203.txt 96f0cf86340fe9bbffa871b11ffd32f1 767e396afba1f9a9a0df1431e0015a3d1a22e01b 2336 F20101107_AABWVI praing_r_Page_044.txt 937530192ef3f18adb71a0b566a47ab1 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 8004e9e2ffc634d2d25f5a83b9d05c6baada054b 2798 F20101107_AABXAP praing_r_Page_204.txt 8b3b052b0bfd03d1d998cb14fa5a8ea1 4ea8a6b375836cf938adf9480a686242325dd56b 2140 F20101107_AABWVJ praing_r_Page_045.txt 25adfe73d43bb83ebedd43362b2a1e37 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 b4b5adfc840440888a149f32c60f45e1 d5cdce5eef122e35717b1c44512cc2d8f97377da 2227 F20101107_AABWUV praing_r_Page_030.txt efa222ac3378d6f3353109e64cb5f1ed 24ac4cdadef4a043e0c0fba849757ce258d24d58 34847 F20101107_AABVRT praing_r_Page_112.QC.jpg 0f2b33251ed7cf4f5f8abb02670d3317 4cd374756073b5cd54363e3368c67dbdaeca3ad2 35837 F20101107_AABXBF praing_r_Page_005.QC.jpg 8b041bc697c973b16f3bdbaf72880c53 bf70cb225f3416acf0be1657332f05bd13f319b6 1681 F20101107_AABXAR praing_r_Page_206.txt 953df0f794856e6aa620ad42510effa9 a6dc79fa83e1d5ca69418e8bfd163dcdec5993c8 2274 F20101107_AABWUW praing_r_Page_031.txt dac39ce9ba8e8db8db826d993022408a 1d1ba69176a3ae47489cabf5e62ad56d0fe64de0 8305 F20101107_AABVRU praing_r_Page_163thm.jpg e35b4b105812fd50ee154167ff60fce1 94778d8bfe83eaa34ad80cf672acb5e9fc6d5409 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 7bc46968ef987ad773a8e3827ba990d9b869a692 2251 F20101107_AABWVM praing_r_Page_048.txt f5a0299dd383fab1032a71d1d95e6d27 a7f49fb998712f431bd9e6d83af65fdca3650b4f 1823 F20101107_AABWUY praing_r_Page_033.txt 88eadb079f722b2c19b6ea3d1106f0ef 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 ad589fe111892315043a8266cbeec6c63f30a14a 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 ad36da71446e8678e67e3476f78bc1e90803c05b 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 6ed69e2d42ae725d25ad9f88f19ad81a d4283ab3a306b82b3561e0a3e2ad303118ac918a 2337 F20101107_AABWWD praing_r_Page_067.txt 7db8ad01f7775a86f9e5412802619700 e9f0ba5dfc3dd96c70486c480f7b666a9e602779 2054 F20101107_AABWVO praing_r_Page_050.txt aa00ead731f326301a48a0018557bc95 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 e5d21661f20d6d4f3d677045ffad58f3e30cd59b 2608 F20101107_AABWWE praing_r_Page_068.txt 3704a7f060fd7cdb6a0311adf510f151 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 957a13a87dac06fc7c9844632addb99b 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 2a20eaa523e8273ad9241135dc8eeadf805da589 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 104b32710cd89456e97f0c987e74fad2 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 cff83daa9ec57b90cf2465ff8add11be 7cf60c1df69df3ac986256999b660c2dbb339b1c 127956 F20101107_AABVTG praing_r_Page_028.jpg d87adf018158c7132f33232aefcafa5f 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 4f9c3b039baf33c48ebf72adf35b8985ffdf01f0 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 7e810c3331562404a554a827bf79ad16 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 235582c1612ad7b9c46b0c57c9fe5d9d378ee83e 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 bcd166e20599450ad508a79402986c484ae0bdf1 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 8afb78ad0ce478f2bf826e8fb09cf6fa 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 656ecff2aaa85ad1c62714cde15921eb262f892e 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 c0f7bb29f53466cd86ca81ad6952c53a4b7bba3a 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 91a1af3ad3b1f4930427634cc102a062937d40ac 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 2f6ac2a0b95a2be53fe33343a19880ad 53b82267fc65948956ee7c86196291dc9ecf8664 36592 F20101107_AABXBY praing_r_Page_015.QC.jpg 281101479c6309d08e515d5141fbcff0 a4f950f447fcc051bc1a018289ad96c7a29206e2 1795 F20101107_AABWXH praing_r_Page_102.txt 8f06be87165ed40fe40056dac67fcebd d3e04849706bc42a141f72b4285e8a3d3a496f23 F20101107_AABWWS praing_r_Page_084.txt e48f7b3292c2f564ea40fcd8a5a4ad1e 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 73aa8a43ad2e18275d5e46744741961fa22e2c42 F20101107_AABWAB praing_r_Page_026.jp2 c6e8a826fe168fc603bba9896adc6ae8 ebe5f3bbd3e1a24974c483482610cbe0035e7ad5 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 d064eac0a8de813a6da9e2e296f5733119ead158 F20101107_AABWAC praing_r_Page_027.jp2 8d58e7523f3592ac52af324f95d8b12c ed27fe18df4ad2851095383841648d2d7f691707 132857 F20101107_AABVUI praing_r_Page_061.jpg afe7e1d8f1f1556083dd38a34445bd3e f2afefa454b466eba64ea6fc2698b03d4c765001 22232 F20101107_AABXDF praing_r_Page_033.QC.jpg f394c37f37333c86d583de64c48a7e10 427760d34a547850f49894f143ae41ad9ec88bd4 32861 F20101107_AABXCR praing_r_Page_026.QC.jpg 350a3740985559425c2889c08f188f1b 23ba5d4f72e120bcfc37425008d4ad22fac2029d 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 F20101107_AABWAD praing_r_Page_028.jp2 2bf366083464529708461c5af9fac376 c745d5c41c40850702014084890d4ff91a019e52 117128 F20101107_AABVUJ praing_r_Page_062.jpg 561d977994f85c7cecf6af4c214f3e0c e5b9156cfc94514303517a12fe9670c26a0f5e87 6382 F20101107_AABXDG praing_r_Page_033thm.jpg 67a9637b9f8099d431ed0add56aa9971 8cf13067b84382a6033059726ccebe1a1ef3ea6e 8656 F20101107_AABXCS praing_r_Page_026thm.jpg 9112f0f6bffccf2e9ddc6d89a6952c25 c116d9616b13e77e3ffbfdadc6521d3f293e69d6 2556 F20101107_AABWYA praing_r_Page_123.txt 8d6685ce84eafbadb0181ad49818db01 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 925cd4baee55adc29d7e3913fbad5df9 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 7d0836611294f369150fa35166adc0fbdb940f07 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 06a1ca93ad6ce69575458ab44cca311d 6f0c7b41ffc6284daa6c7d7e755893db111d267e 133148 F20101107_AABVTX praing_r_Page_049.jpg 9fd49166e811b43bc24bf5b060782b1b e619b21148d6b60acc025f754e2c6a4595c3c969 F20101107_AABWAG praing_r_Page_031.jp2 0689b8561b50bb0498485dd5dd2612b8 732dd59f69f2e8df10ad28d13fb8957aec0f47fe 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 ad5639a9114b99c75efc69610ace9d75832cd686 84603 F20101107_AABVVB praing_r_Page_082.jpg 42b4dd50135e435f1a75e1b2b9c088c2 1477a2980020955240a404471de21cc110d4523e 103568 F20101107_AABVUM praing_r_Page_065.jpg b3a1619d8f4ee1e88d5b2c465a6a0fd3 98b4f1f6c68e51cab3d609d137afc3fad181ab74 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 3c6db0ad19e0ce14185b9a8297a74072dce399c8 2291 F20101107_AABWXP praing_r_Page_112.txt 7429ab782fd8abe80870956f161d5328 409dc7cff55d3caefa0859397730903998ec8ee7 91038 F20101107_AABVTZ praing_r_Page_051.jpg 951799e3ee492932419cf556735c0da9 d74dcad6a577cc07c6e6be017261e7ef0c7d9ab1 F20101107_AABWAI praing_r_Page_034.jp2 acf097b838d116552ceadc1f85cd3af4 1db38713d5fbd0e8ad17c3cd9459cd9153f95b40 82625 F20101107_AABVVC praing_r_Page_083.jpg 31965fab7a3647cd84902fe18a424ad5 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 114fe4665d9401df08b3e2735adc322c 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 e98ff20e019ead12d121ef67ff0adc60d68ca0b0 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 8e7f2a7e749b7014fad83b6314a5b9e5 b0a98d68c9aa9abea91c5bdb3c11e6d6234794ad 112961 F20101107_AABVVE praing_r_Page_086.jpg 7f5aa5089a6eea69d070a8206cc7dd86 cbd8d8eb8b49a7e49775941a7ad22cb59c59f172 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 adbc203d5e5f323462636ecb234c337601ec9eb6 2191 F20101107_AABWYH praing_r_Page_133.txt 21427bae40509e1092ceea91a5c654e8 cf73a640414281d02aae2dd2106014b3d36dad52 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 9914bf4cbbc15dba3694000d5b35497ca50ad4e9 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 73ad7e58a603b0a426d519c04890f94b ba389bea582b9ef3aff6dabbf3064a171b2191ae 7985 F20101107_AABXED praing_r_Page_045thm.jpg 724e5d4aa72c544e67d47ad013049502 aec84b8f13eb29bdd17d7964ab015ac3d2755f0b 26710 F20101107_AABXDP praing_r_Page_038.QC.jpg 8ca0a65487dafff7eadb854d2acae2ce 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 9ead2aeb18f8500366953cb63afe32af 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 710f5118596dfcac3ad62ee73c808ba92bbbb118 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 b0b5cb8b926babb8668cb1ad540a7532589bab4d 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 c6e4f410a64341308699e49adf35fe95330e2d14 104757 F20101107_AABVUU praing_r_Page_075.jpg 4cde04b859ed0f5a8eb7680161d7707a 5595984c5710ff630395f0e85fad5b24be4736a4 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 d0e4b405f030779ec88bc6aeec174cd7b9ad80f0 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 aaff9020adde9a69b2c38c04727dde87 75486ba00ec8640f8e420811bef704efd5cb4b41 114472 F20101107_AABVVL praing_r_Page_093.jpg 69f3a3176cd365a12c47ab7a49e4da29 7feb95f0ed7c80b4d0c01d28ab21ec41c18faad0 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 d48e98acad25279d44f1ce530595324c 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 defd8b40b32b533ea5fbeada0580edc9 0b3425aaf0183d31b6f40767d7eea52875cb8041 1051924 F20101107_AABWBG praing_r_Page_060.jp2 5f227128b047b9f7706c2402a44cbad8 f1b06f2cad6e18adcb0537631df0f286c0d1be5b 127402 F20101107_AABVWA praing_r_Page_109.jpg e99aa68a273cccb46db78ce77011af9c 1b8bcda941f242ad40d0d7087875c7cd2efc85e2 7812 F20101107_AABXEJ praing_r_Page_048thm.jpg ad2d01ba1c7a5baf4bc61bd14dfa4d1b e43a01dad3128c5886e796018417084dd290cc27 39773 F20101107_AABXDV praing_r_Page_041.QC.jpg f0472276b3d1d9a488219820ea6c9c9d c30c59c9941c3bb64c08f6d93c105bd144eedc69 2675 F20101107_AABWZD praing_r_Page_160.txt 534b5f1d72566dde6b9e4701b7d1b603 500a345618a1c8fad36e03e6f13b744d55f15722 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 0c9831b1749cd83add5d8caec23d8aa612196710 F20101107_AABWZF praing_r_Page_162.txt 2a4c93c0e162555158cc5aa6cbb7dd10 8608ac3003308ede41ce340c457e3b1b7601a12b 2295 F20101107_AABWYQ praing_r_Page_143.txt 430ad4fea34c1dfd4e0a2dd67484424a 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 4cad8a6fc146cb3093a28422311588bbbcb34a7d 40132 F20101107_AABXFA praing_r_Page_059.QC.jpg 6ec6b28233e31e31988a26b184c06bfe bd15db67a1a88e248adf161f906f04f701bdb50c 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 4769deb7b76c3c4c5499bad6665fafe6 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 c9007881801ab06cd186eadb8d617e4ab9966d37 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 4c84ad8e71045a151e8dd2d7da3115287f1382c6 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 da117cf3bf9b2e2e13ad768c6a92529e1caaed77 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 ff11fbac4bad70e508fe48fd10cecf01 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 b5457d176941d181ad7c6e9ea10c9a95bc36c17c 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 69526d5c5a3b6ad4535dd3eb18b0a4d4699666c6 F20101107_AABWBO praing_r_Page_070.jp2 94586f320eec56fb9de3e47949ad5264 65959e63f3c3e58fad4020c0dd17d243b85d35bd 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 286aad95473d69d6c903b8577bed223acb604f80 2245 F20101107_AABWZL praing_r_Page_170.txt 6e0ed9dd6ce5d50afa1a1001c16aabde 70811bb2f411ad6c2e0112cf5d0b499436140b25 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 318f67a1cb8dc1e99ad958808f9932bb 1208acf92339561cacf7792add9b5e7f3ef82650 F20101107_AABWBP praing_r_Page_072.jp2 b42a03516d4bf18a8014d9ad03d8b816 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 84c4d81adf58e64b8d2268b312ab987e967005b5 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 22bc74fe8d49f19cfbbc19be1ad591ac 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 2169f8f42ad0b333227f77567892ce830701029d 1631 F20101107_AABWYY praing_r_Page_153.txt 19ad5c223af863c3cb734f0b5d91eb00 175ab958095bbfa4b7bbdf76ff408dd464d313f7 107649 F20101107_AABVVW praing_r_Page_105.jpg 0dd184251acabeeeccc781dbcdd5435f 2d6a78eadd65bc18f08268d312b2834db7174ad0 978615 F20101107_AABWCF praing_r_Page_089.jp2 f2a23a6cd5824802159076e7dc901f86 b0b0f378c8f9c0600d79b00722ffe6533773ad62 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 c0b4b3bdaa90cf57fec9599a8d46ca9ad57ec97f 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 efdfade7fc5b7cad65f032d107803c5aa8c896db 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 17e1b952a8a6640aa87554ad72d895d7 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 b848b7223803e82613c8245ad2578826746b7a4c 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 ad52c4fc21af266c8d8aa88147b442916c71d095 103779 F20101107_AABVXD praing_r_Page_144.jpg 3d7b28d8ed483c3612588d075324ba80 7ed1f66c52bd9a89141be3841c8f8a298eba62b9 876451 F20101107_AABWBV praing_r_Page_078.jp2 bfb93169a07d276076240eacfaf16e17 c60ae52614777f1242da81bec7c58e55ddadda92 93945 F20101107_AABVWO praing_r_Page_127.jpg 865d79c7f5ccc2f0d3918188517f76a3 f4ac8f9f1faadaa61b0a9b94ec49716c124c8333 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 d70abb13b8ad67291fa59294243ae6a6dca2a608 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 ac8be2067efb0728a412cccf7b657ad60bf46256 26729 F20101107_AABXGB praing_r_Page_078.QC.jpg 9c5f250770cb36c5c2a44004655289b8 e32a2fb8b63074e74a985ad21962a813819dcfdb 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 0c59c2bd99adfae0ef76514893898d1d2e9aa1d5 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 265fbd8af72ad20509b397aa8dfe9bfa3a43f47e 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 29f89489109aa4948c437f2a9cdcf7c0adfb0d25 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 d0ff22c8b9e505af0cadfeab7f83c977 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 9d9322b2c7c05875ad795b2a5f943944 7066765602d4354d71c6a76ab949da8f7c4cad6b 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 130a01d798686ba63185e27b5c3d826c0ac28fad F20101107_AABWDD praing_r_Page_115.jp2 0fb7d780844c0b986d78b6e7eef24bad 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 0adc5a1fe385c77ca11b203bed0833e6c3890c48 122349 F20101107_AABVXK praing_r_Page_152.jpg fa48e23f8ddf66ad1125b4831615eaec d2fa83fd2a593481b916f8acbb1151010b9071a0 79164 F20101107_AABVWV praing_r_Page_135.jpg f4d72c16ca315aa33ae4a7f5110e72c8 f3621314063bf07c269544168cc57f4a765c7075 F20101107_AABWDE praing_r_Page_116.jp2 dec8469899a308df15dfd3e1802caafa 58fedcfad6d06f5801e1b16bdbce19031b2b80e5 7110 F20101107_AABXGH praing_r_Page_081thm.jpg 6c8f7d249736dbb6e767ab99ca6995db 0455419c512f390dd3d204d3ed6dc2da8ed731a7 40412 F20101107_AABXFT praing_r_Page_073.QC.jpg f89c0eac2c03d19ef7d535f583e18127 98fadfcd32745dbee3a55ec9c0810433fbf30002 F20101107_AABWZY praing_r_Page_186.txt c16d6c54f39de1a289bc455d477910d6 c0bebadbf03bf1b2d4124c65c8d586e803cb814d 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 ffa1331d3f284aa416825ad82955c67e3299bc0c 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 238d2761f1c7aaaefb00e04938ad36f3 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 af60961e0d0daead20c5b1ab1c4e45ab 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 4e2e0d1784a4bb935d257a7554ad42afd0e62943 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 a49bbbe2f824210dc0badc38ffbda647 52659e028f745c33ac4d130ad172986e7b66803e 8005 F20101107_AABXFX praing_r_Page_075thm.jpg 2465bc1ad704c521f10ad8aab1eaf754 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 c41c72e30e018ee010addef5bd65909854ae14f6 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 28c024756b85dc0b71abc0119f6fdadd812d5f3b 116951 F20101107_AABVXP praing_r_Page_158.jpg 7f93f5b3a37d7cf074f079bde7643da6 d0a12808e0617b4f396131955690a9887e3dbd8c 792059 F20101107_AABWDK praing_r_Page_122.jp2 aea6570a33d81c5b9cdaa81e40206bfd 0791fc79dcfe2e5de7057a609de0ade13eec2e28 8536 F20101107_AABXHB praing_r_Page_093thm.jpg 3095ead301d0eb6e7608851e959fd466 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 177c3ad1cee47da56b8c62d26b8026db 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 65d6ad2b423acc3f0f4ad72751002c481da2b290 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 e73c178d03a6d27ead8bf1dc1f9a9419 7e928d930e66f08d816b57c99bcccc5ca5438840 6478 F20101107_AABXGR praing_r_Page_087thm.jpg f038d52b876e9c7a075e98736d1f559c b977d3c08e1e20e76c0d0b074274b73c45217463 135942 F20101107_AABVYJ praing_r_Page_180.jpg ea6f15259b0e813b095f014929ffff69 fe1877335357dad7117108b6b3601b93ec9ad18e 112227 F20101107_AABVXU praing_r_Page_164.jpg b0c43229b8d332b7f1b8ec281fe75ad9 62b8a8482d02c43e2c92884d7cb60fceaa4f1311 F20101107_AABWED praing_r_Page_141.jp2 de38e2ccabccfd5435f3567d2144004f aa0a5d3ddbbf96bf34c6d28ab6925d7f4fa102f0 F20101107_AABWDP praing_r_Page_127.jp2 b16a9205f4906677e02a62f91ae8653d 36db6667405664081bd9331280a612940ad02406 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. TABLE OF CONTENTS 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 NonTemporal 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 DatabaseCompatible 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 9intersection matrix characterization method ....... .140 5.2.3.3 Type combination dependent 9intersection matrix characteri zation ........ ....... .. ...... 141 5.2.3.4 The 9intersection 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 TimeSynchronized Interval Refinement . . . 171 5.3.3 FunctionValued 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 31 Operations on historical movements and future predictions of moving objects. . 55 32 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 33 Operations on balloon objects and moving balloon objects. .. . ..... 60 34 Assigning naming prefixes to pairwise combinations of interactions. . ... 67 35 Number of balloon predicates between balloonpp, balloonpr, and balloonrr objects. 69 36 Inferring the types of interaction between actual objects from the types of interaction between their predictions. .................. ............ 70 51 Static and dynamic halfsegment sequences of the regions RI and R2 in Figure 56. 116 52 Possible segment class constellations between two consecutive segments in the sweep line status ................... ........... ........ 136 53 Summary of complete and thinned out 9IMs for the topological predicates of all type combinations ............... ............... . .. 156 54 MCDT preorder representations for all type combinations on the basis of equal prob ability of occurrence of all topological predicates. ................... ..161 55 Summary of the MCDTs for all type combinations on the basis of equal probability of occurrence of all topological predicates. ................... . 164 56 Interval endpoint ordering. .................. ........... 173 LIST OF FIGURES Figure page 21 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 22 The 9intersection model and topological predicates. A) The 9intersection matrix. B) The numbers of topological predicates between two simple/complex spatial objects. 22 23 Examples of moving objects. A) A singlecomponent moving point object. B) A single component moving region object. C) A multicomponent moving point object. D) A multicomponent moving region object. ................ ........ 24 24 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 31 Examples of 0continuous temporal functions. A) simultaneous movement. B) A merg ing situation. C) A splitting situation. D) A combined merging and splitting situation. 35 32 Examples of 0discontinuous 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 33 Moving point object given by a temporal function with a local minimum and a local maximum. ................... ............ ....... 38 34 Modeling potential future positions of spatiotemporal objects. A) For a hurricane's eye at now+12 hours. B) Within the 12hour period. C) For a vehicle at now+15 min utes. D) Within the 15minute period. E) For a vehicle with a constant speed at now+15 minutes. F) Within the 15minute period.. ................. ....... 42 35 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 36 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 37 Example of a historical temporal domain time that starts from  and ends at tc in clusively. ................... ........... ..... ... 48 38 Example of a future temporal domain time that starts exclusively from tc and ex tends indefinitely towards +. .................. .......... 48 39 Example of a moving balloon object of type mballoonpr. .. . . 52 310 Examples of predictions at a time instant. A) A pointbased prediction with a discrete probability distribution. B) A linebased prediction with a onedimensional contin uous distribution. C) A regionbased prediction with a twodimensional continuous distribution. .................. .................. .. .. 57 311 Relations between traditional moving object data model and balloon data model. . 64 312 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 313 Future crossing situation between a balloonpp object P and a balloonpr object R. 66 314 Movement of the eye of hurricane Katrina. ................... ....... 74 41 Representations of a line object. A) In the abstract model. B) In the discrete model. 80 42 Representations of a region object. A) In the abstract model. B) In the discrete model. 82 43 A discrete representation of a moving point object. A) A temporal unit. B) A sliced representation .................. .................. .. 83 44 Representing a moving line object. A) A uline value. B) A discrete representation of a moving line object. .................. .. ............ 89 45 Example of a region value. .................. ......... 90 51 Examples of the order relation on halfsegments: h < h2 . . ..... 100 52 A line2D object L and a region2D object R .................. ... .103 53 Example of the segment classification of two region2D objects . . ... 112 54 Changing overlap numbers after an intersection. ............... ..113 55 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 56 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 57 Algorithm for computing the topological feature vectors for two point2D objects 120 58 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 59 Algorithm for computing the topological feature vectors for a point2D object and a line2D object .................. ............. .. 122 510 Algorithm for computing the topological feature vectors for apoint2D object and a region2D object ................. . . 125 511 Algorithm for computing the topological feature vectors for two line2D objects . 127 512 Algorithm for computing the topological feature vectors for a line2D object and a region2D object ................. . . 131 513 Special case of the plane sweep. .................. ........ 132 514 Algorithm for computing the topological feature vectors for two region2D objects 135 515 The 9intersection 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 516 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 517 Complete and thinned out matrices for the 5 topological predicates of the point/point case ............... .... ................. ..........154 518 Complete and thinned out matrices for the 14 topological predicates of the point/line case ............... .... ................. ..........155 519 Complete and thinned out matrices for the 7 topological predicates of the point/region case ............... .... ................. ..........155 520 Complete and thinned out matrices for the 33 topological predicates of the region/region case ............... .... ................. ..........155 521 Minimum cost decision tree algorithm .................. ....... 159 522 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 523 Spatiotemporal predicate evaluator algorithm. .................. ..170 524 Timesynchronized 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 525 Timesynchronized interval refinement algorithm. ................... ..172 526 Next Algorithm ................... . . .174 527 Intersecting unit segments of two moving points representing the development Dis joint > meet > Disjoint and thus requiring a further interval refinement. . ... 174 528 Functionvalued interval refinement algorithm. .................. ..175 529 Unit intersection algorithm. .............. . . . 176 530 Pattern matching algorithm. ............... . . ....... 179 531 Balloon predicate evaluator algorithm. ................. ......... 181 532 Registration of a data type and an operation in Oracle. ..... . . ..... 183 533 The integration of algebra in extensible DBMSs ... . . ..... 185 534 Creating a table using a userdefined type. ................... ....... 185 535 Using a userdefined function in SQL query. ............. . 185 536 Visualization of hurricane Katrina using the Moving Balloon Algebra. . ... 187 537 Visualizing hurricane Katrina. A) Katrina's prediction #7 in objectbased perspec tives. B) Temporal analysis perspective on August 27, 2005 at 12:00 GMT. ..... 189 538 Hurricane analysis. A) Hurricane prediction analysis between 2003 and 2007. B) Hur ricane Kate (#1312). C) Hurricane Lisa (#1329). ................ ..190 61 Predicate verification without and with matrix thinning ..... . . 194 62 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 timedependent geometries that continuously change their location and/or extent and are interesting for many disciplines including the geosciences, geographical information science, moving objects databases, locationbased 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 databaseindependent 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, locationbased 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 nontemporal 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 nontemporal 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 domainspecific 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 onesizefitsall 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 tailormade 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 databaseindependent 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 twodimensional 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 computerspecific 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, objectrelational, or objectoriented 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 21AC) [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 multicomponent 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 21D 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 21. 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 9intersection model [13, 15] based on point set topology. The 9intersection 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 nonemptiness. The topological relationship between two spatial objects A and B can be expressed by evaluating the 3 x 3matrix in Figure 22A. 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; multipart 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 9intersection model, is the basis of our topological predicate implementation in Section 5.2. Figure 22B 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 22. The 9intersection model and topological predicates. A) The 9intersection 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 nontemporal 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 multicomponent) spatial object (Section 2.1.1) at each time instant at which it is defined; a singlecomponent spatial object as a function value at a time instant is thus a special case. Figures 23A and 23B show singlecomponent moving point and moving region objects respectively while Figures 23C and x x x x A B C D Figure 23. Examples of moving objects. A) A singlecomponent moving point object. B) A singlecomponent moving region object. C) A multicomponent moving point object. D) A multicomponent moving region object. 23D illustrate corresponding multicomponent objects. An application example for Figure 23D 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 23A, 23B), disappear for periods of time (Figure 24A, 24E), appear instantly (Figures 24B, 24F), have spatial outliers (Figure 2 4D), or have instantaneous jumps (Figures 24C, 24G). 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 24H 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 "spacetime 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 24. 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 9intersection 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 highlevel 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 databaseincompatible (for example, JTS Topology Suite) or databasespecific (for example, Informix Geodetic DataBlade, Oracle Spatial Cartridge, DB2's Spatial Extender, SECONDO spatiotemporal module). These databasespecific 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 storageindependent. 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 storageindependent 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 twodimensional Euclidean space R2. Thus, we concern about moving objects describing the development of twodimensional 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) = xyl (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 onesided or twosided limit can only be defined if a onesided or twosided 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 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 onesided or twosided 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 nonspatial 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 realvalued continuous functions. If a temporal object f based on any nonspatial 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) / lim0 f(t 8). Figure 32A 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 23C 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 23D, 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 0continuous from the bottom at t if, and only if, lim 0 f(t ) f(t) (ii) f is 0continuous from the top at t if, and only if, lim 0 f(t + o) f(t) (iii) f is Ocontinuous at t if, and only if, lim f(t ) f(t (iv) f is Odiscontinuous at t if, and only if, f is not 4continuous at t time time time time x x x x A B C D Figure 31. Examples of 4continuous 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 23A and Fig ure 23B are 4continuous on the open intervals indicated by the dashed lines. They are 4 discontinuous at the time interval endpoints since they are 4continuous from the top at the lower endpoints, and Ocontinuous from the bottom at the upper endpoints. We find similar situations in Figure 31A (simultaneous movement), 31B (a merging situation), 31C (a splitting situa tion), and 31D (a combined merging and splitting situation) which also satisfy the property of 4continuity in the open time intervals and 4discontinuity in the time interval endpoints. Note that in Figure 31D, the moving point object is 4continuous at the time instant when its two components intersect. time time time    ^ . S. tt Y real x x A B C Figure 32. 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 23C and 23D as well as in Figures 24A 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 23C and 23D when the number of basic simple values changes at a time instant. Figures 32B and 32C illustrate this in more detail. The moving object in Figure 32B 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 32C 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 24A and 24E represent moving objects that are alternately continuous and discontinuous on disjoint time intervals, that is, they are represented by partial functions. Figures 24B and 24F 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 timeslice operation should be able to yield a region object at time t as a moving region object. We also permit the cases in Figures 24C and 24G 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 24G 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 event4discontinuous. A situation we do not allow is a spatial outlier at a time instant t as in Figure 24D. 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 eventodiscontinuous 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 4continuity at t in contrast to our assumption (Definition 3.5(v)). time t,  y ti   2 x Figure 33. 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 33 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 :t2i1 = t2i t2i < t2i+l (vi) V 1 < i < n Vt2i < t < t2i : f is 4continuous 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 4continuity 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 34. Modeling potential future positions of spatiotemporal objects. A) For a hurricane's eye at now+12 hours. B) Within the 12hour period. C) For a vehicle at now+15 minutes. D) Within the 15minute period. E) For a vehicle with a constant speed at now+15 minutes. F) Within the 15minute 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 34A). 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 threedimensional interpretation (Figure 34B). This volume represents the geometric union of the predicted regions at all time instants during the 12hour 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 34C). 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 15minute period, we obtain a surface in the threedimensional space (Figure 34D). This surface represents all potential positions of the vehicle during the 15minute 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 34E). 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 34F). 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 counterintuitive 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 35. 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 34B). 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 35). 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 36. 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 36. 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 highlevel 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 37) 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 37 illustrates an example of a historical temporal domain time for a moving object. defined intervals ta time time Figure 37. 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 38. 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 38 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 balloonpp, a balloonpl, and a balloonpr object are shown in Figure 36A, 34D, and 36B 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 39. Example of a moving balloon object of type mballoon_pr. An example of a moving balloon object of type mballoonpr is depicted in Figure 39. 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 nontemporal 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 31 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 31. 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 31. 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 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 probabilitybased 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 pointset 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 pointset, 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 regionbased prediction is also always 0 since we cannot obtain a volume by integrating over a line. Table 32 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 32. 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 310. The density value of the point p in Figure 310A 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 310B illustrates a continuous probability distribution over a linebased 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 310C shows a probability of 20% that a point event will fall within a region A which is a subset of a regionbased 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 310. Examples of predictions at a time instant. A) A pointbased prediction with a discrete probability distribution. B) A linebased prediction with a onedimensional continuous distribution. C) A regionbased prediction with a twodimensional continuous distribution. Unlike a probabilitybased prediction model, a fuzzybased prediction model is designed to model the potential inclusion, called membership value, of each point of a prediction as part of a pointset 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 pointset. Hence this operation indicates the average degree of confidence that each point of the given pointset 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 (nondisjoint) 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 nontemporal 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 33. 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 39, 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 33. 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 has badprediction 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 T7r(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 verifypredictionat 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 39. 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 interactionpotential and interactionpossible 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 311 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 311. 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 312 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 312. 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 313). 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 313. 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 34 shows an example of assigning a meaningful prefix to the name for each pairwise combination between these interactions. Other Table 34. 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, nonrepetitive balloon predi cates between two balloon)pp objects to be 13 x (13 + 13) x 13 = 4,394. Each of the three parts Table 35. Number of balloon predicates between balloon pp, balloon pr, and balloonrr objects. balloonpp balloonpr balloonrr balloonpp 4,394 14,924 43,904 balloonpr 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 35. 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 (nondisjoint relationship) or noninteractions (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 noninteraction relationship with this future prediction component guarantees a noninteraction 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 36 summarizes these interaction inferences. Table 36. 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 pointset 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 pointset confidence values of the intersection of each prediction. However, this quantity here is a meaningful quantity since each of the pointset 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, predictionrelated operations. There are at least two types of prediction models, probability based models and fuzzybased 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 lessthan100feet 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 314. 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 314). 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 FROM hurricanes WHERE has_bad_prediction(eye) 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 mballoonpp 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 nontemporal 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 NonTemporal Data Types Nontemporal 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 leftclosed and rightclosed 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 and adjacency. We define interval relationships r_disjoint (right disjoint), disjoint, r_adjacent (right adjacent), and adjacent in Definition 4.3. 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)) adjacent(i, j) > r adjacent(i, j) V r_adjacent(j, i) 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: intervalset = {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 twodimensional 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 41 shows an example of a line object of the abstract model and its corresponding discrete representation. x x A B Figure 41. 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,...,sn1) : {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 edgeinside another cycle d if its interior is a subset of the interior of d and no edges of c and d overlap. They are edgedisjoint 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 edgedisjoint faces. A region is then defined in Definition 4.11 as a set of edgedisjoint 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 edgedisjoint if either their outer cycles are edgedisjoint, or one of the outer cycles is edgeinside 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 42 shows an example of a region object in both abstract and discrete representation. Y Y X X x x A B Figure 42. 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 typespecific constraints during such evolution. Figure 43A 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 43. 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 43B 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,...,n1}: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 nontemporal 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 nontemporal 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 nontemporal type a. Definition 4.15 : Let a be a nontemporal 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 tradeoff 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 timedependent 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 ifir 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 typespecific 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 4discontinuous 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 4tuple (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 typespecific 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 43A. 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 44A 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 44. 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 44A. 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 44B. 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 nonrotating 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 45. Following the same structured approach for defining the region data types, we can define a time time i' ,~ x Figure 45. 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 domainspecific 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 DatabaseCompatible 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 setvalued. 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 twodimensional robust geometric primitives that we assume to be implemented on the basis of n. The primitives serve as elementary building blocks for all higherlevel 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, twodimensional 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, axisparallel 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 minlltl2D 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 51. Examples of the order relation on halfsegments: h\ < h2 Examples of the order relation on halfsegments are given in Figure 51. 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 mctni: 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 halnfc.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+ (v) "additional topological constraints"} Condition (v) refers to some additional topological constraints that all components (faces) of a region must be edgedisjoint from each other and that for each face its holes must be located inside its outer polygon, be edgedisjoint to the outer polygon, and be edgedisjoint among each other. We mention these constraints for reasons of completeness and assume their satisfaction. As an example, Figure 52 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 AVLtree 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 52. 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 51, 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) realmbased 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 nonintersecting 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)), ((unitpbbi,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, axisparallel 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 rightclosed. 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 m quadruples vk = ((xl,A, l,B,y1,A,yl,B),..., ,(XmA,Xm,B,Ym,A,Ym,B)) where each quadruple 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 we require in addition that 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 44 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)), ((unitpbbl, 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 socalled 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 finetuned 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 (9intersection 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 realmbased (that is, nonintersecting) 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 xcoordinates). 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 {endofnone, endoffirst, 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 endoffirst (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 selectfirst, 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 53 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 twodimensional 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 53. 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 planesweep 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 planesweep, 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 (getattr) 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 getpredattr 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 yorder (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 poionseg (poiinseg) checks whether a given point lies on (in) any segment of the sweep line status. 2 2 S, 0 0 s Figure 54. 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 54 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 55A). 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 55B). 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 55C). 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 55. 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 56. 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 51. Static and dynamic halfsegment sequences of the regions R1 and R2 in Figure 56. 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 55. We first consider the case that the plane sweep detects an intersection. This leads to a situation like in Figure 56A. The two static and the two dynamic halfsegment sequences of R1 and R2 are shown in Table 51. 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 56), 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 ycoordinate 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 56B). 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 56B). 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 55, 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 typespecific, 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 9intersection matrix (Figure 22A). That is, the concept is to map the matrix elements of the 9intersection 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 9intersection matrix (see Figure 22A) 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) vFpoishared] : 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[poidivi,,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 57 shows. The whileloop 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 whileloop 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 58A 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 = endoffirst then VG[poidi\it'ii'] := true 17 else if status = end ofsecond then 18 VF poidi\_liiiiu] := true 19 endif 20 end ExplorePoint2DPoint2D. Figure 57. 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 58. 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 boundpoidisjoint). 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 whileloop 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 selectnext 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 [poionbound] := 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 59. 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 whileloop 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 whileloop 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 58B 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 510. The whileloop 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 predofp (line 13) to determine the nearest segment in the sweep line status whose intersection point with the sweep line has a lower ycoordinate than the ycoordinate 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 whileloop 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 510. Algorithm for computing the topological feature vectors for a point2D object and a region2D object poionseg, predofp, 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 [segshared] (ii) VF [interiorpoishared] (iii) VF [segunshared] (iv) VF [boundoninterior] (v) VF [boundshared] (vi) VF[bouiiiddi\itii] (vii) VG[segunshared] (viii) vG[boundoninterior] (ix) VG[bouitddi\ i'im]i : 3lf C H(F) 3g e H(G) : 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, oo n a S S S ~aa ss 55 0O c~g~ E E ,s: E s~t~ 9 " ~sa 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 tt 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 qlqE 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 511. The whileloop 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 55), 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 whileloop 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 segshared), 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 512. The whileloop 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~ OUZC ~~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 "qS~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 sa ~YS S O O Q3 E a %J Eo~ E, u r;, *zs oo Q3 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 whileloop 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 whileloop 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 513. Special case of the plane sweep. F G G Figure 513. 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 513. 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 514. The whileloop 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 513. 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 yorder of its dominating point and the ycoordinates 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 52. 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 whileloop 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 52. 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 9intersection 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 22B 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 515A 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 [interiorpoishared] 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 515A, intersections between both interiors (vF[seg shared], 1VF [interiorpoishared]) as well as between the boundary of one object and the interior of the other object (VF [boundon interior], 1VG [boundon interior]) are not allowed; besides intersec tions between both boundaries (VF [boundshared), 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 515. The 9intersection 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 515B 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[boundpoishared] 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 errorprone. 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 9intersection matrix characterization method The drawbacks of the direct predicate characterization are the motivation for another, novel approach called 9intersection 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 3matrix of the 9intersection model (Figure 22A) 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 9intersection matrix characterization The last, missing step refers to the characterizations of the eight matrix predicates of the 9intersection 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 3matrix is reduced to a 2 x 2matrix 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) 9intersection 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 nonempty 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 3matrix is reduced to a 2 x 3matrix 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) 9intersection 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 nonempty 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 nonempty 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 3matrix to a 2 x 3matrix. 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) 9intersection matrix is as follows: (i) F n G' # 0 = VF[poiinside] (ii) F n 3G 4 0 = VF[poionbound] (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 nonempty 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 9intersection 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 9intersection 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 9intersection 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 [boundpoishared] = 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 nonempty. 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 9intersection 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) Fn 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 9intersection 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 9intersection matrix (as an example, see the complete matrices of the 33 topological predicates of the region/region case in Figure 520 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 9intersection 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 9intersection 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 9intersection matrix. In a second step, this Boolean matrix is checked consecutively for equality against all 9intersection 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 9intersection 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 finetune 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 finetuned 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 9intersection 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 bruteforce algorithm (Figure 516) 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 socalled position matrices corre sponding to all possible 9intersection matrices, that is, to the binary versions of the decimal numbers 1 to 511 if we read the 9intersection 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: Threedimensional 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: Threedimensional thinned out 9IM tim. 06 tim[i,l,m] c {0,1,*}. '*' is 'don't care' symbol. 07 begin 08 Create threedimensional 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 516. 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 9intersection matrix into the thinned out matrix (lines 25 to 28). 00 0* 1 1* 0 00 1* 0* 00 1* 0* 11 11 0* 11 1: 0* 0* 0* 2: 0* 0* 0* 3: 0* 0* 0 4: 0 * 0 5: 0 0 0* 1* 0* 1* 00 0* 1* 11 0 1* 00 0* 1* 11 0* 1* Figure 517. 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* 00 11 11 6: 0* 0* 0* 7: 1* 11 1* ( 11 11 00 11: 0 0 12: 1* 00 1* 1* 0* 00 0* 1* 00 0* 1* 00 3: o0 1* 8: 0* S1* 111 13: 0* S1* 00 00 1* 00 0* 4: 0* 0* 0* 1 9 1* 11 1* 1* 1* 00 1* 0* 14: 0* 0* 0* 1* 1* 11 1* 00 11 1 5: 0* 0* 0* 1* 00 1* 11 00 11 10: 0* 0* 0* 1* 1 1 1* Figure 518. Complete and thinned out matrices for the 14 topological predicates of the point/line case. 00 00 11 11 1* 00 00 N 0* 3: 0* 0* 10 4: 0* 0* 0* 1* 1 1 1 1* 1* 1* 11 1 0* 1* 11 00 11 5: 0* 0* 0* 1* 1 11* Figure 519. 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 517, for the point/line case in Figure 518, for the point/region case in Figure 519, 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: 00 1\. S1* 11: 0* S00 /I* 16: 11 S1* 1.* 21: 0* S00 1* 26: 00 1 1* 31: 11 S11, 1* \ 1* 1* / 00 0* 11* 11* \ 11 1* / 11) 111* ) 00 11 00 1, 111 1* 00 1* 00 0* 1* 1* \ 1I* 11 1'* \ 11 N 11* / 1* 00 1* 11) 00 1* 11* \ 111 1* / 00 3: 0 * 13: o(, 18 1* 8: 11 S 11 /111 13: 00 1* 11. 1* 1* 23: 00 1. 1* 28: 1. 11 /1* 33: 11 11. 1* \ 1* 1* / 00 0* 1* / 1* \ 11 1* / 1* \ 111 1* / 1* 00 1* / 1* \ 1* 1* / 111 1* 11 1* / 00 4: 0* 1* 9: 11 1 * 1* 14: 11 1* 10* 19: 0* 1* 24: 0* 00 1* 29: 11 S1* ii)\ 1Y ) i* ) i0 ii) U) 1* 5: 0* 00 111 10: 00 1 * 1 * 15: 1 1* 1* 20: 00 1* 11. 25: 00 S 11 S1* 30: 11 S1* 00 0* 1* 11 00 1* ) 1* ) 1* \ 1* 1* / 1* \ 111 1i* 1* 00 1I* Figure 520. 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* 00 0* 1* 00 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 (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 53 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 53. 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 9intersection 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 9intersection 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 depthfirst 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, costoptimal, 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 521 shows our recursive algorithm MCDT for computing a minimum cost decision tree for a set im of na,p 9intersection 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 bestnode := 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, newmp); 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 521. 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 whileloop (lines 8 to 30) terminates if either the list mp of matrix predicates to be processed is empty or the list im of 9intersection 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 9intersection matrix in im with respect to the matrix predicate serving as the discriminator. If such a value is 0 (false), the corresponding 9intersection 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 9intersection 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 54 shows the results of this algorithm by giving a textual preorder (depthfirst search) encoding of all MCDTs for all type combinations on the basis of equal probability Table 54. MCDT preorder representations for all type combinations on the basis of equal probability of occurrence of all topological predicates. Type combination MCDT preorder 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 024 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 preorder 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 preorder 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 9intersection matrix number of a topological predicate. The matrix numbers are specified in the Figures 517, 518, 519 and 520 as well as in [50, 59]. Figures 522 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 9intersection 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 AaB 3 4 5 6 7 8 9 10 11 12 13 14 C Figure 522. 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 55 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 9intersection 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 9intersection matrices. It produces an optimal Table 55. 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 9intersection matrices and the given probability distribution. One can verify this by applying our algorithm to the eight 9intersection 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 socalled "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 55) is greater than or equal to the total cost of all its thinned out matrices (given in Table 53), 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 9intersection 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 517 to 519 and 520) 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. Timesynchronized 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. Functionvalued 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 combinationspecific intersection detection algorithms and type combinationspecific 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, builtin or userdefined 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 523), 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 523. 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 socalled 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 TimeSynchronized Interval Refinement It is obvious that the computation of the timesynchronized 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 (Figure524). 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 524. Timesynchronized 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 errorprone and lengthy. Our approach leads to shorter, faster (by a constant factor), and more comprehensible code and is able to handle closed, halfopen, 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 525), 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 leftclosed or rightclosed. (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 525. Timesynchronized 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 leftclosed ("["), leftopen ("("), rightclosed ("]"), or rightopen (")") 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 56 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 56. 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 526) 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 onedimensional 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 .ikl else if id = 2 and k < m then t := mo2.ik.1; cl := mo2ik.lc endif endif end Next. Figure 526. Next Algorithm. 5.3.3 FunctionValued 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 527). 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 527. 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 528. 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 leftclosed and rightclosed 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 528. Functionvalued 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 529. 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 leftclosed and rightclosed 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 529. 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 530. 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 530. 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 531 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 531. 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 userdefined types (UDT) and userdefined 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 (database execution). Both alternatives have advantages and disadvantages depending on other 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 objectoriented 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 532, 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 532. 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 multistructured large object management concept for database blobs [40]. mSLOB provides componentbased read and write access to structured and multistructured 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 533 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 534. Application Figure 533. The integration of algebra in extensible DBMSs CREATE TABLE mbpptable( id integer primary key, description varchar2(64), mbpp mballoonpp Figure 534. Creating a table using a userdefined type. Assuming that we have populated this table with a few moving balloon objects. We can then pose a query (Figure 535) 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 535. Using a userdefined 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 12hour 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 536. Visualization of hurricane Katrina using the Moving Balloon Algebra. I STALrim (SpatioTempoml Algebm Viemr) < I STAL~im (SpstiTpoml Algebm Vi) 42berfin> STAL~iew (SpatioTemporal Algebr Vimer) STALPim (SpatioTempl 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 objectbased perspective, Figure 536A and 536B 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 536C 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 536D 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 537A shows an objectbased perspective of the complete track and prediction #7 which was produced on August 25, 2005 at 12:00 GMT. Figure 537B 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 538A. In total, 82 storms 847,244) A B Figure 537. Visualizing hurricane Katrina. A) Katrina's prediction #7 in objectbased 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 uturns (e.g., hurricane Kate (#1312) as shown in Figure 538B), or forming a loop (e.g., hurricane Lisa (#1329) as shown in Figure 538C). 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 538. 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 twodimensional 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 planesweep 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, nonguaranteed correctness of the algorithms, errorproneness, 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 planesweep 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 take advantage of significantly smaller system implementation, widespread code reusability and 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 9intersection 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 9intersection 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 graybox testing, which combines the advantages of two other techniques called blackbox testing and whitebox testing. The blackbox 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 whitebox 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 61. 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 finegrained 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 nonoptimized 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 61B and 61C 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 61A. 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 62B and 62C 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 62A. 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 61 and 62 are not as optimistic as the computational results given in Tables 53 and 55. 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 6LL 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 62. 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 SometimeDefinitelyInside 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 topdown 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 storageindependent 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,:832843, 1983,. [2] T. Behr and M. Schneider. Topological Relationships of Complex Points and Complex Regions. In Int. Conf on Conceptual Modeling, pages 5669, 2001. [3] M. de Berg, M. van Krefeld, M. Overmars, and 0. Schwarzkopf. Computational Geometry: Al gl, ii1 im\ and Applications. SpringerVerlag, 2nd edition edition, 2000. [4] Martin Breunig, Can Tiirker, Michael H. Bihlen, Stefan Dieker, Ralf Hartmut Gilting, Christian S. Jensen, Lukas Relly, Philippe Rigaux, HansJ6rg Schek, and Michel Scholl. Architectures and Implementations of Spatiotemporal Database Management Systems. In SpatioTemporal Databases: The CHOROCHRONOS Approach, pages 263318, 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):121136, 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:579594, 1995. [9] E. Clementini, P. Di Felice, and P. van Oosterom. A Small Set of Formal Topological Relationships Suitable for EndUser Interaction. In 3rd Int. Symp. on Advances in Spatial Databases, LNCS 692, pages 277295, 1993. [10] E. Clementini, J. Sharma, and M.J. Egenhofer. Modeling Topological Spatial Relations: Strategies for Query Processing. Computers and Graphics, 18(6):815822, 1994. [11] J.R. Davis. IBM's DB2 Spatial Extender: Managing GeoSpatial 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 271286. SpringerVerlag, 1989. [13] M. J. Egenhofer and R. D. Franzosa. PointSet Topological Spatial Relations. Int. Journal of Geographical Information Systems, 5:161174, 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 803813, 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 LineRegion Relations. Int. Journal of Geographical Information Systems, 9(5):555565, 1995. [17] M.J. Egenhofer, E. Clementini, and P. Di Felice. Topological Relations between Regions with Holes. Int. Journal of Geographical Information Systems, 8:128142, 1994. [18] M. Erwig, R.H. Giiting, M. Schneider, and M. Vazirgiannis. Abstract and Discrete Modeling of SpatioTemporal Data Types. In ACM Symp. on Geographic Information Systems (ACM GIS), pages 131136, 1998,. [19] M. Erwig, R.H. Giiting, M. Schneider, and M. Vazirgiannis. SpatioTemporal Data Types: An Approach to Modeling and Querying Moving Objects in Databases. Geolnformatica, 3,(3,):265291, 1999,. [20] M. Erwig and M. Schneider. Developments in SpatioTemporal Query Languages. In IEEE Int. Workshop on SpatioTemporal Data Models and Languages, pages 441449, 1999. [21] M. Erwig and M. Schneider. Visual Specifications of SpatioTemporal Developments. In 15th IEEE Symp. on Visual Languages (VL), pages 187188, 1999. [22] M. Erwig and M. Schneider. SpatioTemporal Predicates. IEEE Trans. on Knowledge and Data Engineering, 14,(4,):142, 2002,. [23] Martin Erwig, Martin Erwig, and Markus Schneider. QueryByTrace: Visual Predicate Specification in SpatioTemporal Databases. In The Fifth Working CO',f, 'r, l on Visual Database Systems, volume 168, pages 199218, 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 319330, 2000. [26] K. Hinrichs G. Trajcevski, O. Wolfson and S. Chamberlain. Managing Uncertainty in Moving Objects Databases. ACM Trans. on Database Systems (TODS), 29:463507, 2004. [27] A. Ginzburg. A Procedure for Checking Equality of Regular Expressions. Journal of the Association for Computing Machinery, 14(2):355362, 1967. [28] D. Gusfield. Algri,1iim\ on Strings, Trees, and Sequences: Computer Science and Computational Biology. Cambridge University Press, 1997. [29] R. H. Giiting. GeoRelational Algebra: A Model and Query Language for Geometric Database Systems. In Int. Conf on Extending Database Technology (EDBT), pages 506527, 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 1435. SpringerVerlag, 1993. [31] R. H. Giiting and M. Schneider. RealmBased Spatial Data Types: The ROSE Algebra. VLDB Journal, 4:100143, 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,):881901, 2000,. [33] R.H. Giiting, T. de Ridder, and M. Schneider. Implementation of the ROSE Algebra: Efficient Algorithms for RealmBased 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 224238, 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 123130. ACM, 2006. [40] M. McKenney, A. Pauly, R. Praing, and M. Schneider. MultiStructured 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 409418, 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 175192, 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/01029/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:611629, 1988. [49] N. Pelekis, B. Theodoulidis, I. Kopanakis, and Y. Theodoridis. Literature Review of SpatioTemporal 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 SpatioTemporal Databases. Technical report, CISE Department, University of Florida, 2008. [53] R. Praing and M. Schneider. Moving Balloon Algebra: An Integrative SpatioTemporal 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 165176, 1992. [57] M. Schneider. Spatial Data Types for Database Systems Finite Resolution Geometry for Geographic Information Systems, volume LNCS 1288. SpringerVerlag, 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:3981, 2006. [60] A.P. Sistla, O. Wolfson, S. Chamberlain, and S. Dao. Modeling and Querying Moving Objects. In Int. Conf on Data Engineering, pages 422432, 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 321344, 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 3652, 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 responsibilities and leading discussion sections for many graduate and undergraduate classes 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.1NonTemporalDataTypes ............................. 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.1GeneralRequirementsofDatabaseCompatibleDataStructures ...... 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.2The9intersectionmatrixcharacterizationmethod ....... 140 5.2.3.3Typecombinationdependent9intersectionmatrixcharacterization ............................... 141 5.2.3.4The9intersectionmatrixcharacterizationforregion/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.2TimeSynchronizedIntervalRenement .................. 171 5.3.3FunctionValuedIntervalRenementandDevelopmentDetermination .. 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 31Operationsonhistoricalmovementsandfuturepredictionsofmovingobjects. ..... 55 32Valueoftheoperationpointset conf(j(a);b;instant)foreachcombinationofj(a)andbwhetheritisalways0,denotedbyavalue0,orameaningfulvalue,denotedbyavalueM. ......................................... 56 33Operationsonballoonobjectsandmovingballoonobjects. ............... 60 34Assigningnamingprexestopairwisecombinationsofinteractions. .......... 67 35Numberofballoonpredicatesbetweenballoon pp,balloon pr,andballoon rrobjects. 69 36Inferringthetypesofinteractionbetweenactualobjectsfromthetypesofinteractionbetweentheirpredictions. ................................. 70 51StaticanddynamichalfsegmentsequencesoftheregionsR1andR2inFigure 56 ... 116 52Possiblesegmentclassconstellationsbetweentwoconsecutivesegmentsinthesweeplinestatus. ......................................... 136 53Summaryofcompleteandthinnedout9IMsforthetopologicalpredicatesofalltypecombinations. ....................................... 156 54MCDTpreorderrepresentationsforalltypecombinationsonthebasisofequalprobabilityofoccurrenceofalltopologicalpredicates. .................... 161 55SummaryoftheMCDTsforalltypecombinationsonthebasisofequalprobabilityofoccurrenceofalltopologicalpredicates. ........................ 164 56Intervalendpointordering. ................................ 173 8 PAGE 9 Figure page 21Examplesofspatialobjects.A)Asimplepointobject.B)Asimplelineobject.C)Asimpleregionobject.D)Acomplexpointobject.E)Acomplexlineobject.F)Acomplexregionobject. .................................. 21 22The9intersectionmodelandtopologicalpredicates.A)The9intersectionmatrix.B)Thenumbersoftopologicalpredicatesbetweentwosimple/complexspatialobjects. 22 23Examplesofmovingobjects.A)Asinglecomponentmovingpointobject.B)Asinglecomponentmovingregionobject.C)Amulticomponentmovingpointobject.D)Amulticomponentmovingregionobject. ......................... 24 24Examplesofspatiotemporalfunctionsformovingpoints.A)Partiallydisappear.B)Instantlyappear.C)Haveinstantaneousjumps.D)Havespatialoutliers.Examplesofspatiotemporalfunctionsformovingregions.E)Partiallydisappear.F)Instantlyappear.G)Haveinstantaneousjumps.H)Anexampleofaspatiotemporalpredicate. 26 31Examplesoffcontinuoustemporalfunctions.A)simultaneousmovement.B)Amergingsituation.C)Asplittingsituation.D)Acombinedmergingandsplittingsituation. 35 32Examplesoffdiscontinuoustemporalfunctions.A)Aninstantaneousjumpinanmrealobject.B),C)Twoconstellationswithtimeinstantsatwhichthefunctioniseventfdiscontinuous. .................................. 36 33Movingpointobjectgivenbyatemporalfunctionwithalocalminimumandalocalmaximum. ........................................ 38 34Modelingpotentialfuturepositionsofspatiotemporalobjects.A)Forahurricane'seyeatnow+12hours.B)Withinthe12hourperiod.C)Foravehicleatnow+15minutes.D)Withinthe15minuteperiod.E)Foravehiclewithaconstantspeedatnow+15minutes.F)Withinthe15minuteperiod. ......................... 42 35Representingthefuturepredictionofahurricane'seyeusingamovingregionwithamovingcondencedistribution.Thegradientindicatesvarieddegreeofcondence. .. 45 36Examplesofvalidfuturepredictions.A)Acontinuousfpointobject.B)Acontinuousfregionobject.C)Adiscontinuousfregionobject.Anexampleofinvalidfuturepredictions.D)Adimensionallycollapsedobjectwithmultipletypes. ......... 46 37Exampleofahistoricaltemporaldomaintimehthatstartsfromandendsattcinclusively. ......................................... 48 38Exampleofafuturetemporaldomaintimefthatstartsexclusivelyfromtcandextendsindenitelytowards+. .............................. 48 39Exampleofamovingballoonobjectoftypemballoon pr. ............... 52 9 PAGE 10 ........................................ 57 311Relationsbetweentraditionalmovingobjectdatamodelandballoondatamodel. .... 64 312PossiblerelationshipsbetweenpartsofballoonobjectsAandB.A)WhenA'scurrentinstantisearlier.B)Atthesametime.C)LaterthanthatofB's. ............. 65 313Futurecrossingsituationbetweenaballoon ppobjectPandaballoon probjectR. .. 66 314MovementoftheeyeofhurricaneKatrina. ........................ 74 41Representationsofalineobject.A)Intheabstractmodel.B)Inthediscretemodel. .. 80 42Representationsofaregionobject.A)Intheabstractmodel.B)Inthediscretemodel. 82 43Adiscreterepresentationofamovingpointobject.A)Atemporalunit.B)Aslicedrepresentation. ....................................... 83 44Representingamovinglineobject.A)Aulinevalue.B)Adiscreterepresentationofamovinglineobject. ................................... 89 45Exampleofauregionvalue. ............................... 90 51Examplesoftheorderrelationonhalfsegments:h1
