/* * AUS Name and Address Ruleset * Quality Level: A */ @default.country=AUS /* * ALIASES */ define Exact as L0 define Close as L1 define Probable as L2 define Possible as L3 /* * MATCH LEVELS */ Match.Exact={Hash.Exact | (Name.Exact & Address.Exact)} Match.Close={Name.Close & Address.Close} Match.Probable={(Name.Probable & Address.Probable) | ForenamesAndAddress.Probable} Match.Possible={(Name.Possible & Address.Possible) | ForenamesAndAddress.Possible} /* * Handling of Changes in Last Name */ ForenamesAndAddress.Probable={Forenames.Exact & Gender.Exact & Address.Exact} ForenamesAndAddress.Possible={Forenames.Close & Gender.Exact & Address.Exact} /* * Name Theme */ Name.Exact={ForenamesSurname.Exact & Surname_Suffix.Exact & Title.Exact} Name.Close={(ForenamesSurname.Close & Surname_Suffix.Exact & Gender.Exact) | TransposedNameMatch.Exact} Name.Probable={(ForenamesSurname.Probable & Surname_Suffix.Probable & Gender.Exact) | TransposedNameMatch.Close} Name.Possible={ForenamesSurname.Probable | (ForenamesSurname.Possible & Gender.Exact) | TransposedNameMatch.Probable} /* * Name custom groups */ ForenamesSurname.Exact={Forenames.Exact & Surname.Exact} ForenamesSurname.Close={(Forenames.Exact & Surname.Close) | (Forenames.Close & Surname.Exact)} ForenamesSurname.Probable={Forenames.Probable & Surname.Close} ForenamesSurname.Possible={ForenamesOneOrNotPopulated.Exact & Surname.Exact} TransposedNameMatch.Exact={TransposedName.Exact & Surname_Suffix.Exact & Gender.Exact} TransposedNameMatch.Close={TransposedName.Close & Surname_Suffix.Exact & Gender.Exact} TransposedNameMatch.Probable={((TransposedName.Probable & Surname_Suffix.Exact) | (TransposedName.Close & Surname_Suffix.Probable)) & Gender.Exact} TransposedName.Exact={Full_Name.TransposedNameCompare[ExactMatch]} TransposedName.Close={Full_Name.RootName.TransposedNameCompare[ExactMatch]} TransposedName.Probable={Full_Name.TransposedNameCompare[PartialMatch]} ForenamesOneOrNotPopulated.Exact={Forenames[NonePopulated,OnePopulated]} /* * Name Elements */ Forenames.Exact={[ExactMatch]} Forenames.Close={Levenshtein[77%] | ForenameCompare[InitialVsFullName] | RootName[ExactMatch]} Forenames.Probable={RootName.Levenshtein[77%]} Surname.Exact={[ExactMatch]} Surname.Close={Levenshtein[77%]} Surname_Suffix.Exact={StandardSpelling[ExactMatch,NonePopulated]} Surname_Suffix.Probable={StandardSpelling[OnePopulated]} Title.Exact={StandardSpelling[ExactMatch,NonePopulated]} Gender.Exact={[ExactMatch,NonePopulated,OnePopulated]} /* * ADDRESS */ Address.Exact={PoBoxAddressType.Exact | MinorStreetAddressType.Exact | LotAddressType.Exact | SubBuildingAddressType.Exact | BuildingAddressType.Exact | FullAddressType.Exact} Address.Close={PoBoxAddressType.Close | MinorStreetAddressType.Close | LotAddressType.Close | SubBuildingAddressType.Close | BuildingAddressType.Close | FullAddressType.Close} Address.Probable={PoBoxAddressType.Probable | MinorStreetAddressType.Probable | LotAddressType.Probable | SubBuildingAddressType.Probable | BuildingAddressType.Probable | FullAddressType.Probable} Address.Possible={PoBoxAddressType.Possible | MinorStreetAddressType.Possible | LotAddressType.Possible | SubBuildingAddressType.Possible | BuildingAddressType.Possible | FullAddressType.Possible} /* * Address Type - FULL TYPE * QUARTER DECK APARTMENTS, SUITE 32, 3263 PARADISE ST, SURFERS PARADISE QLD 4217 * QUARTER DECK APARTMENTS, SUITE 32, LEVEL 5, 3263 PARADISE ST, SURFERS PARADISE QLD 4217 */ FullAddressType.Exact={SubBuildingTheme.Exact & BuildingTheme.Exact & MinorStreetTheme.Exact & LocalityProvincePostcodeTheme.Exact} FullAddressType.Close={SubBuildingTheme.Close & BuildingTheme.Close & MinorStreetTheme.Close & LocalityProvincePostcodeTheme.Close} FullAddressType.Probable={SubBuildingTheme.Probable & (BuildingOnePopulated.Exact | BuildingTheme.Probable) & MinorStreetTheme.Probable & LocalityProvincePostcodeTheme.Probable} FullAddressType.Possible={SubBuildingTheme.Possible & (BuildingOnePopulated.Exact | BuildingTheme.Possible) & MinorStreetTheme.Possible & LocalityProvincePostcodeTheme.Possible} /* * Address Type - BUILDING TYPE * 4 FLOWER COURT, 200 BROADWAY AV, WEST BEACH SA 5024 */ BuildingAddressType.Exact={SubBuildingAbsent.Exact & BuildingTheme.Exact & MinorStreetTheme.Exact & LocalityProvincePostcodeTheme.Exact} BuildingAddressType.Close={SubBuildingAbsent.Exact & BuildingTheme.Close & MinorStreetTheme.Close & LocalityProvincePostcodeTheme.Close} BuildingAddressType.Probable={SubBuildingAbsent.Exact & BuildingTheme.Probable & MinorStreetTheme.Probable & LocalityProvincePostcodeTheme.Probable} BuildingAddressType.Possible={SubBuildingAbsent.Exact & BuildingTheme.Possible & MinorStreetTheme.Possible & LocalityProvincePostcodeTheme.Possible} /* * Address Type - SUB-BUILDING TYPE * UNIT 10, 200 BROADWAY AV, WEST BEACH SA 5024 * UNIT 10, LEVEL 5, 200 BROADWAY AV, WEST BEACH SA 5024 */ SubBuildingAddressType.Exact={SubBuildingTheme.Exact & BuildingAbsent.Exact & MinorStreetTheme.Exact & LocalityProvincePostcodeTheme.Exact} SubBuildingAddressType.Close={SubBuildingTheme.Close & BuildingAbsent.Exact & MinorStreetTheme.Close & LocalityProvincePostcodeTheme.Close} SubBuildingAddressType.Probable={SubBuildingTheme.Probable & BuildingAbsent.Exact & MinorStreetTheme.Probable & LocalityProvincePostcodeTheme.Probable} SubBuildingAddressType.Possible={SubBuildingTheme.Possible & BuildingAbsent.Exact & MinorStreetTheme.Possible & LocalityProvincePostcodeTheme.Possible} /* * Address Type - LOTS * LOT 50 BROADWAY AV, WEST BEACH SA 5024 */ LotAddressType.Exact={LotTheme.Exact & BuildingAbsent.Exact & LocalityProvincePostcodeTheme.Exact} LotAddressType.Close={LotTheme.Close & BuildingAbsent.Exact & LocalityProvincePostcodeTheme.Close} LotAddressType.Probable={LotTheme.Probable & BuildingAbsent.Exact & LocalityProvincePostcodeTheme.Probable} LotAddressType.Possible={LotTheme.Possible & BuildingAbsent.Exact & LocalityProvincePostcodeTheme.Possible} /* * Address Type - MINOR STREET * 200 BROADWAY AV, WEST BEACH SA 5024 */ MinorStreetAddressType.Exact={MinorStreetTheme.Exact & SubBuildingAbsent.Exact & BuildingAbsent.Exact & LocalityProvincePostcodeTheme.Exact} MinorStreetAddressType.Close={MinorStreetTheme.Close & SubBuildingAbsent.Exact & BuildingAbsent.Exact & LocalityProvincePostcodeTheme.Close} MinorStreetAddressType.Probable={MinorStreetTheme.Probable & SubBuildingAbsent.Exact & BuildingAbsent.Exact & LocalityProvincePostcodeTheme.Probable} MinorStreetAddressType.Possible={MinorStreetTheme.Possible & SubBuildingAbsent.Exact & BuildingAbsent.Exact & LocalityProvincePostcodeTheme.Possible} /* * Address Type - PO BOX * PO BOX 6555, WEST BEACH SA 5024 */ PoBoxAddressType.Exact={PoBoxTheme.Exact & LocalityProvincePostcodeTheme.Exact} PoBoxAddressType.Close={PoBoxTheme.Close & LocalityProvincePostcodeTheme.Close} PoBoxAddressType.Probable={PoBoxTheme.Probable & LocalityProvincePostcodeTheme.Probable} PoBoxAddressType.Possible={(PoBoxTheme.Close & LocalityProvincePostcodeTheme.Possible) | (PoBoxTheme.Possible & LocalityProvincePostcodeTheme.Probable)} /* * THEMES */ // Theme - SUB BUILDING SubBuildingTheme.Exact={SubBuilding_Number.Exact & SubBuilding_Description.Exact & SubBuilding_Type.Exact} SubBuildingTheme.Close={SubBuilding_Number.Exact & SubBuilding_Description.Close & SubBuilding_Type.Close} SubBuildingTheme.Probable={SubBuilding_Number.Probable & SubBuilding_Description.Probable & SubBuilding_Type.Probable} SubBuildingTheme.Possible={SubBuilding_Number.Possible & SubBuilding_Description.Possible & SubBuilding_Type.Possible} // Theme - BUILDING BuildingTheme.Exact={Building_Number.Exact & Building_Description.Exact & Building_Type.Exact} BuildingTheme.Close={Building_Number.Exact & Building_Description.Close & Building_Type.Close} BuildingTheme.Probable={Building_Number.Probable & Building_Description.Probable & Building_Type.Close} BuildingTheme.Possible={Building_Number.Possible & Building_Description.Possible & Building_Type.Close} // Theme - LOTS LotTheme.Exact={SubBuilding_Number.Exact & SubBuilding_Type.Exact & MinorStreetNumberAbsent.Exact & MinorStreet_Description.Exact & MinorStreet_Type.Exact} LotTheme.Close={SubBuilding_Number.Exact & SubBuilding_Type.Close & MinorStreetNumberAbsent.Exact & MinorStreet_Description.Close & MinorStreet_Type.Close} LotTheme.Probable={SubBuilding_Number.Probable & SubBuilding_Type.Close & MinorStreetNumberAbsent.Exact & MinorStreet_Description.Probable & MinorStreet_Type.Probable} LotTheme.Possible={SubBuilding_Number.Possible & SubBuilding_Type.Close & MinorStreetNumberAbsent.Exact & MinorStreet_Description.Possible & MinorStreet_Type.Possible} // Theme - MINOR STREET MinorStreetTheme.Exact={MinorStreet_Number.Exact & MinorStreet_Description.Exact & MinorStreet_Type.Exact} MinorStreetTheme.Close={MinorStreet_Number.Close & MinorStreet_Description.Close & MinorStreet_Type.Close} MinorStreetTheme.Probable={MinorStreet_Number.Probable & MinorStreet_Description.Probable & MinorStreet_Type.Probable} MinorStreetTheme.Possible={MinorStreet_Number.Possible & MinorStreet_Description.Possible & MinorStreet_Type.Possible} // Theme - PO BOX PoBoxTheme.Exact={PoBox_Number.Exact & PoBox_Description.Exact} PoBoxTheme.Close={PoBox_Number.Exact & PoBox_Description.Close} PoBoxTheme.Probable={PoBox_Number.Probable & PoBox_Description.Exact} PoBoxTheme.Possible={PoBox_Number.Possible & PoBox_Description.Exact} // Theme - LOCALITY PROVINCE and POSTCODE LocalityProvincePostcodeTheme.Exact={Locality.Exact & Province.Exact & Postcode.Exact} LocalityProvincePostcodeTheme.Close={(Locality.Exact & Postcode.Exact) | (Locality.Close & Province.Exact & Postcode.Close)} LocalityProvincePostcodeTheme.Probable={(Locality.Probable & Postcode.Close) | (Locality.Probable & Province.Exact & Postcode.Possible) | (Postcode.Close & Province.Exact)} LocalityProvincePostcodeTheme.Possible={(Locality.Possible & Postcode.Close) | (Locality.Possible & Province.Probable & Postcode.Possible) | (Locality.Exact & Province.Exact)} /* * ELEMENTS */ // Elements - SUBBULDINGNUMBER, SUBBULDINGDESCRIPTION and SUBBUILDINGTYPE SubBuilding_Number.Exact={[ExactMatch]} SubBuilding_Number.Probable={Levenshtein[50%, NonePopulated]} SubBuilding_Number.Possible={Levenshtein[35%, OnePopulated]} SubBuilding_Description.Exact={[ExactMatch, NonePopulated]} SubBuilding_Description.Close={JaroWinkler[90%, OnePopulated]} SubBuilding_Description.Probable={JaroWinkler[60%]} SubBuilding_Description.Possible={JaroWinkler[40%]} SubBuilding_Type.Exact={StandardAbbreviation[ExactMatch] | StandardSpelling.Levenshtein[1]} SubBuilding_Type.Close={StandardSpelling.Levenshtein[2]} SubBuilding_Type.Probable={StandardSpelling.Levenshtein[3, NonePopulated, OnePopulated]} SubBuilding_Type.Possible={StandardSpelling.Levenshtein[4]} SubBuildingAbsent.Exact={SubBuilding_Number[NonePopulated] & SubBuilding_Description[NonePopulated] & SubBuilding_Type[NonePopulated]} // Elements - BULDINGNUMBER, BULDINGDESCRIPTION and BUILDINGTYPE Building_Number.Exact={[ExactMatch, NonePopulated]} Building_Number.Probable={Levenshtein[50%]} Building_Number.Possible={Levenshtein[35%, OnePopulated]} Building_Description.Exact={[ExactMatch]} Building_Description.Close={JaroWinkler[90%]} Building_Description.Probable={JaroWinkler[60%]} Building_Description.Possible={JaroWinkler[30%, OnePopulated]} Building_Type.Exact={StandardAbbreviation[ExactMatch] | StandardSpelling.JaroWinkler[60%]} Building_Type.Close={StandardSpelling.JaroWinkler[40%, NonePopulated, OnePopulated]} BuildingAbsent.Exact={Building_Number[NonePopulated] & Building_Description[NonePopulated] & Building_Type[NonePopulated]} BuildingOnePopulated.Exact={Building_Number[NonePopulated, OnePopulated] & Building_Description[OnePopulated] & Building_Type[OnePopulated]} // Elements - MINORSTREETNUMBER, MINORSTREETDESCRIPTION and MINORSTREETTYPE MinorStreet_Number.Exact={PremiseCompare[ExactMatch]} MinorStreet_Number.Close={Levenshtein[60%, NonePopulated] | PremiseCompare[NumberMatchWithTrailingAlpha, Encapsulated]} MinorStreet_Number.Probable={Levenshtein[50%, OnePopulated] | PremiseCompare[Overlapped]} MinorStreet_Number.Possible={Levenshtein[25%] | PremiseCompare[NumberMatchWithDifferingAlpha]} MinorStreetNumberAbsent.Exact={MinorStreet_Number[NonePopulated]} MinorStreet_Description.Exact={[ExactMatch]} MinorStreet_Description.Close={JaroWinkler[90%]} MinorStreet_Description.Probable={JaroWinkler[80%]} MinorStreet_Description.Possible={JaroWinkler[70%]} MinorStreet_Type.Exact={StandardAbbreviation[ExactMatch] | StandardSpelling[ExactMatch]} MinorStreet_Type.Close={StandardAbbreviation[OnePopulated] | StandardSpelling.JaroWinkler[75%]} MinorStreet_Type.Probable={StandardSpelling.JaroWinkler[50%]} MinorStreet_Type.Possible={StandardSpelling.JaroWinkler[40%]} // Elements - PO_BOX_NUMBER and PO_BOX_DESCRIPTION PoBox_Number.Exact={[ExactMatch]} PoBox_Number.Probable={Levenshtein[1]} PoBox_Number.Possible={Levenshtein[2]} PoBox_Description.Exact={[ExactMatch, NonePopulated] | StandardAbbreviation[ExactMatch]} PoBox_Description.Close={Levenshtein[1, OnePopulated]} // Elements - LOCALITY PROVINCE and POSTCODE Locality.Exact={StandardSpelling.Levenshtein[1]} Locality.Close={StandardSpelling.Levenshtein[75%, NonePopulated, OnePopulated]} Locality.Probable={StandardSpelling.Levenshtein[50%]} Locality.Possible={StandardSpelling.Levenshtein[25%]} Postcode.Exact={StandardSpelling[ExactMatch]} Postcode.Close={StandardSpelling.Levenshtein[1, NonePopulated, OnePopulated]} Postcode.Possible={StandardSpelling.Levenshtein[2]} Province.Exact={[ExactMatch] | StandardSpelling.Levenshtein[3]} Province.Probable={[NonePopulated, OnePopulated]} // Element - HASH (used for matching identical input strings) Hash.Exact={[ExactMatch]}