Párování nemovitostí 1 Princip párování Pomocí kolekce atributů (cpairingattribute) definujících nemovitost se definuje zdrojová nemovitost (ohitsource). Tato kolekce univerzálně popisuje všechny typy nemovitostí. Atributy z kolekce cpairingattribute jsou dvojího typu. Povinné a nepovinné. Povinné atributy cpairingattributerequired musí být vždy definovány jako jediná hodnota (bez intervalu hodnot), která nesmí být NULL. Ostatní atributy (cpairingattributeoptional - nepovinné) nemusí být definovány vůbec a mohou být reprezentovány hodnotou NULL. Klíčový atribut pro párování je atribut s názvem OfferTypeId, s hodnotami (nabídka nebo poptávka). Pro potřeby párování je definována množina různých nemovitostí chittarget, které mají být spárovány se zdrojovou nemovitostí ohitsource podle níže uvedených pravidel. Výsledkem procesu párování je seznam nemovitostí chitpaired, jako podmnožina chittarget, splňující podmínky pro párování. Podmnožinou atributů cpairingattribute jsou tzv. klíčové atributy cpairingattributekey. Tyto atributy nabývají pouze diskrétních hodnot (z číselníků) a v procesu párování musí být identické jak v ohitsource tak v ohittarget a nesmí nabývat hodnot NULL ani na jedné straně páru (source-target) 1.1 Párovací toleranční okno Podmnožinu atributů z kolekce cpairingattribute, které nejsou z kolekce cpairingattributerequired, definujeme jako cpairingattributeoptional. Tyto atributy nabývají převážně libovolné hodnoty, vždy mohou mít hodnotu NULL. Obecně platným párovacím pravidlem pro tuto kolekci atributů je skutečnost, že hodnoty těchto atributů v páru (source-target) jsou identické nebo blízké. Míru "blízkosti" definuje pro každý atribut párovací okno (oatributoptionalwindow), což je v podstatě interval nejnižší a nejvyšší povolené hodnoty oatributoptionalwindow.low, oatributoptionalwindow.high. Aby byl považován určitý Atribut (páru source-target) za zpárovaný musí být splněna podmínka: oatributoptionaltarget ϵ oatributoptionalwindow.low, oatributoptionalwindow.high kde hodnoty oatributoptionalwindow.low, oatributoptionalwindow.high jsou derivovány od hodnoty oatributoptionalsource podle následujícho pravidla: oatributoptionalwindow.low = oatributoptionalsource (1 - oatributoptionalwindow.px) oatributoptionalwindow.high = oatributoptionalsource (1 + oatributoptionalwindow.px) kde hodnota oatributoptionalwindow.px reprezentuje pro každý atribut z kolekce oatributoptional procenta šířky tolerančního okna. Tyto hodnoty jsou určeny implicitně (automatická volba párování) nebo je nastavuje uživatel (manuální párování)
1.2 Lokalizační atributy nemovitosti Pro mechanizmus párování hraje speciální roli vymezení lokality a řídí se jinými pravidly než ostatní atributy cpairingattributeoptional popsané výše. Atributy lokalizace nemovitosti (lokalizační atributy) jsou detailně popsány v tabulce níže. Atribut IdCountry je vždy povinný (kolekce cpairingattributerequired). Ostatní lokalizační atributy nemovitosti jsou z kolekce cpairingattributeoptional. Dále platí následující sekvenční pravidla definující hierarchii významu jednotlivých lokalizačních atributů nemovitosti: 1.2.1 Párování s hierarchickými lokalizačními atributy Pokud není definován atribut coordinate (tedy coordinate.x a coordinate.y jsou NULL), jsou pro párování použity tzv. hierarchické lokalizační atributy. Ty jsou seřazeny podle významu lokalizace nemovitosti následovně: IdCountry subregion municipality street building_cp nebo building_co. Pokud ohitsource některý z těchto atributů nemá (je NULL), s tím, že se test realizuje seshora od IdCountry, započne proces párování se všemi lokalizačními atributy od IdCountry až do atributu předešlému od tohoto atributu. Během párování se v ohittarget sledují všechny tyto lokalizační atributy. Pokud je v sledovaném ohittarget některý z těchto atributů NULL, je nemovitost pro párování diskvalifikována. Z výše uvedeného vyplývá pro ohitsource : Pokud je atribut subregion NULL, je lokalizace párována pouze na úrovni IdCountry. Pokud je atribut municipality NULL, je lokalizace párována pouze na úrovni subregion. Pokud je atribut street NULL, je lokalizace párována pouze na úrovni municipality. Pokud je atribut building_cp and building_co NULL, je lokalizace párována pouze na úrovni street. příklad: pro ohitsource jsou definovány lokalizační atributy: (IdCounty=1, subregion=1, municipality='praha', street='americká') pro chittarget budou například vyřazeny: ohittarget : (IdCounty=1, subregion=1, municipality='praha', street='lodecká') ohittarget : (IdCounty=1, subregion=1, municipality='brno', street='americká') ohittarget : (IdCounty=1, subregion=1, municipality=null, street='americká') ohittarget : (IdCounty=1, subregion=2, municipality='praha', street='lodecká') ohittarget : (IdCounty=1, subregion=null, municipality='praha', street='lodecká') 1.2.2 Párování s lokalizační atributem coordinate Pokud je definován atribut coordinate (coordinate.x a coordinate.y jsou různý od NULL), je realizováno párování s jediným lokalizačním atributem coordinate. Všechny nemovitosti z chittarget, které neleží v oblasti definované kružnici se středem coordinate.x a 2
coordinate.y a poloměrem coordinate.radius nebudou zpárovány s ohitsource. 2 Pravidla párování Každá z nemovitostí ohittarget v kolekci chittarget, která má být párovatelná s ohitsource, musí splňovat následující kritéria: a) atribut offertypeid pro ohitsource musí být u všech zpárovaných ohittarget opačný b) atributy cpairingattributekey pro ohitsource musí být u všech zpárovaných ohittarget identický c) všechny atributy cpairingattributerequired pro ohittarget nesmí být NULL d) všechny cpairingattributeoptional v ohitsource, které nemají hodnotu NULL, nesmí mít hodnotu NULL také v ohittarget (v programu bude možné tuto podmínku volitelně ignorovat) e) všechny cpairingattributeoptional (kromě Lokalizačních atributů) v ohitsource, které nemají hodnotu NULL, musejí splňovat podmínku: oatributoptionaltarget ϵ oatributoptionalwindow.low, oatributoptionalwindow.high. Pokud některý atribut nepadne do tolerančního okna, k zpárování (source-target) nedojde. Pokud je podmínka d) ignorována, pak jsou testovány pouze ty atributy z cpairingattributeoptional, které jsou v ohittarget různé od NULL a zároveň jsou v ohitsource různé od NULL. f) Lokalizační atributy se párují speciálním algoritmem popsaným v kapitole: "Lokalizační atributy nemovitosti " 3
oatribute popis oatributrequired oatributkey oatributoptional oatributoptional Window.px CategoryId kategorie nemovitosti ano ano - - SubCategoryId podkategorie (další dělení Kategorie): SubCategoryID bit mask Kategorie CategoryID význam oatributrequired oatributkey oatributoptional 6 16 byt 1 1 + 1 ano ano - 7 32 1 2 + 1 ano ano - 8 64 1 3 + 1 ano ano - 9 128 1 4 + 1 ano ano - 10 256 1 5 + 1 ano ano - 11 512 1 > 5 + 1 ano ano - 12 1024 1 Garsoniéra ano ano - 19 1 parcela 4 Stavební - ano ano 20 2 4 Ostatní - ano ano 24 1 Komerční 6 Obchodní - ano ano 25 2 prostora 6 Sklad - ano ano 26 4 6 Výroba - ano ano OfferTypeId nabídka/poptávka ano - - - CommercialModeId prodej/pronájem ano ano - - CountryId kód země ano ano - - lokalizační atributy SubRegionId Municipality kód pro okres nebo obvod (velké město) číselník OctopusPro - ano ano - jméno obce - ano ano - Street jméno ulice - ano ano - BuildingNumber číslo popisné, číslo orientační - ano ano - coordinate: coordinate.x coordinate.y coordinate.radius X,Y souřadnice (RUIAN) Poloměr (radius) v km od středu (X,Y) - - ano -
Area 2 plocha nemovitosti - - ano 35 Price 3 cena nemovitosti - - ano 35 OwnershipId kód vlastnictví - ano ano - FullText volný text - ano ano - 1) atribut je kalkulován v procesu párování pouze pro IdCategory (byt, dům) 2) atribut je v jednotkách m 2 3) atribut je platný pro všechny kategorie, pro commercialmode=prodej jsou hodnoty atributu absolutní, pro commercialmode=pronájem, jsou hodnoty relativní, vztažené na 1 měsíc.