Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

On this page we, (Paul, Val, Sam) discuss the form of the address change messages.

The latest accepted proposed revision is "example 1011".
Here This is a sample xml file and here is the field mapping.The latest proposed revision is "example 11"mostly implemented with a few minor changes proposed (follow links - see TODOs).
Here is a sample xml file.

...

A simple example to get us started.
This example is MAD centric.
I suspect that we'll end up with something a alot different at the end of this discussion.
Here is a single family dwelling with one owner:

Code Block
     <address>
        <number>14</number>
        <street>MAPLE ST</street>
        <unit>
            <base>true</base>
            <number></number>
            <disposition>official</disposition>
            <create_tms>2010-07-02 08:18:50.937000</create_tms>
            <retire_tms>None</retire_tms>
            <apns>
                <apn>1234001</apn>
            </apns>
            <action>insert</action>
        </unit>
    </address>

The "action" tag domain is

Code Block
     insert
    update
    retire

I think this addresses question 1 above.

The "base" tag domain is:

Code Block
     true
    false

This is a MAD artifact - DBI probably won't want it.
But let me explain the purpose.
A MAD "address" is represented using the concept of a base address and a unit address.
A base address always has one corresponding unit address.
There may be additional unit addresses or not.
If the base tag is marked true, then this unit information is directly associated with the base address.
If the base tag is marked false, then this unit information is not directly associated with the base address.

...

Now in the case of an apartment bldg, say
14 MAPLE ST,
apartments a & b
MAD represents the world this way:

Code Block
     <address>
        <number>14</number>
        <street>MAPLE ST</street>
        <unit>
            <base>true</base>
            <number>100</number>
            ...
            <apns>
                <apn>1234001</apn>
            </apns>
            <action>insert</action>
        </unit>
        <unit>
            <base>false</base>
            <number>a</number>
            ...
            <apns></apns>
            <action>insert</action>
        </unit>
        <unit>
            <base>false</base>
            <number>b</number>
            ...
            <apns></apns>
            <action>insert</action>
        </unit>
    </address>

...

What I think we want an instead of the example 2 (apt building) is something like this:

message 1

Code Block

<xml>
    <address_change>
        <key>12873</key>
        <action>insert</action>
        <address>
            <number>14</number>
            <street>MAPLE ST</street>
            <unit_number>100</unit_number>
            <block>1234</block>
            <lot>001</lot>
            <apn>1234001</apn>
        </address>
    </address_change>
</xml>

...

And reworking example 1 (single family) to fit the model shown in example 3, we have this:

Code Block

<xml>
    <address_change>
        <key>12873</key>
        <action>insert</action>
        <address>
            <number>14</number>
            <street>MAPLE ST</street>
            <unit_number></unit_number>
            ...
            <block>1234</block>
            <lot>001</lot>
            <apn>1234001</apn>
        </address>
    </address_change>
</xml>

...

Let's move on to a time share, which can be seen at 2655 Hyde St.
In a time share we have a single unit with multiple owners.

message 1

Code Block

<xml>
    <address_change>
        <key>12873</key>
        <action>insert</action>
        <address>
            <number>2655</number>
            <street>HYDE ST</street>
            <unit_number>1</unit_number>
            <disposition>provisional</disposition>
            <create_tms>2010-07-02 14:11:22.843000</create_tms>
            <retire_tms>None</retire_tms>
            <block>0026T</block>
            <lot>065A</lot>
            <apn>0026T065A</apn>
        </address>
    </address_change>
</xml>

message 2

Code Block

<xml>
    <address_change>
        <key>12873</key>
        <action>insert</action>
        <address>
            <number>2655</number>
            <street>HYDE ST</street>
            <unit_number>1</unit_number>
            <disposition>provisional</disposition>
            <create_tms>2010-07-02 14:11:22.843000</create_tms>
            <retire_tms>None</retire_tms>
            <block>0026T</block>
            <lot>066A</lot>
            <apn>0026T066A</apn>
        </address>
    </address_change>
</xml>

...

message 1 (base unit or common area, APN is assigned)

Code Block

<xml>
    <address_change>
        <key>12873</key>
        <action>insert</action>
        <address>
            <number>100</number>
            <street>MAIN ST</street>
            <unit_number></unit_number>
            <disposition>provisional</disposition>
            <create_tms>2010-07-02 14:11:22.843000</create_tms>
            <retire_tms>None</retire_tms>
            <block>1234</block>
            <lot>001</lot>
            <apn>1234001</apn>
        </address>
    </address_change>
</xml>

message 2 (condo unit)

Code Block

<xml>
    <address_change>
        <key>12873</key>
        <action>insert</action>
        <address>
            <number>100</number>
            <street>MAIN ST</street>
            <unit_number>1</unit_number>
            <disposition>provisional</disposition>
            <create_tms>2010-07-02 14:11:22.843000</create_tms>
            <retire_tms>None</retire_tms>
            <block>1234</block>
            <lot>002</lot>
            <apn>1234002</apn>
        </address>
    </address_change>
</xml>

message 3 (condo unit)

Code Block

<xml>
    <address_change>
        <key>12873</key>
        <action>insert</action>
        <address>
            <number>100</number>
            <street>MAIN ST</street>
            <unit_number>2</unit_number>
            <disposition>provisional</disposition>
            <create_tms>2010-07-02 14:11:22.843000</create_tms>
            <retire_tms>None</retire_tms>
            <block>1234</block>
            <lot>003</lot>
            <apn>1234003</apn>
        </address>
    </address_change>
<xml>

Example 7
Anchor
example7
example7

Code Block
     <address>
        <key>419692</key>
        <base_number_prefix></base_number_prefix>
        <base_number>1</base_number>
        <base_number_suffix></base_number_suffix>
        <street_name>S VAN NESS</street_name>
        <street_name_suffix>AVE</street_name_suffix>
        <unit_number_prefix></unit_number_prefix>
        <unit_number>600</unit_number>
        <unit_number_suffix></unit_number_suffix>
        <create_tms>2010-08-03 12:05:54.578000</create_tms>
        <retire_tms>2010-08-03 12:38:33</retire_tms>
        <disposition>provisional</disposition>
        <mailing>True</mailing>
        <longitude>-122.418862841</longitude>
        <latitude>37.7747051425</latitude>
        <change_tms>2010-08-03 14:38:33.467492</change_tms>
        <action>retire</action>
        <block>3506</block>
        <lot>001</lot>
        <apn>3506001</apn>
    </address>

Example 8
Anchor
example8
example8

Code Block

<addresses>
    <address>
        <key>419623</key>
        <base_number_prefix></base_number_prefix>
        <base_number>2655</base_number>
        <base_number_suffix></base_number_suffix>
        <street_name>HYDE</street_name>
        <street_name_suffix>ST</street_name_suffix>
        <unit_number_prefix></unit_number_prefix>
        <unit_number>308</unit_number>
        <unit_number_suffix></unit_number_suffix>
        <disposition>provisional</disposition>
        <create_tms>2010-07-02 14:11:22.843000</create_tms>
        <retire_tms></retire_tms>
        <block>0026</block>
        <lot>028</lot>
        <apn>0026028</apn>
    </address>
    ...
</addresses>

...

This separates the "history" information,

Code Block

<addressChangeNotification>
    <address>
        <key>419709</key>
        <base_number_prefix></base_number_prefix>
        <base_number>1</base_number>
        <base_number_suffix></base_number_suffix>
        <longitude>-122.418876252</longitude>
        <latitude>37.774694542</latitude>
        <street_name>S VAN NESS</street_name>
        <street_name_suffix>AVE</street_name_suffix>
        <unit_number_prefix>XXX</unit_number_prefix>
        <unit_number>300</unit_number>
        <unit_number_suffix>YYY</unit_number_suffix>
        <create_tms>2010-08-13 12:15:43.828000</create_tms>
        <retire_tms>2010-08-13 18:41:16.149255</retire_tms>
        <disposition>provisional</disposition>
        <mailing>True</mailing>
        <block>3506</block>
        <lot>001</lot>
        <apn>3506001</apn>
    </address>
    <timestamp>2010-08-13 18:41:16.149255</timestamp>
    <action>retire</action>
</addressChangeNotification>

...

DBI may use different street names and street suffixes.
This version accommodates these variations.

Code Block

<addressChangeNotification>
    <address>
        <key>419709</key>
        <base_number_prefix></base_number_prefix>
        <base_number>1</base_number>
        <base_number_suffix></base_number_suffix>
        <jurisdiction>PRESIDIO</jurisdiction>
        <longitude>-122.418876252</longitude>
        <latitude>37.774694542</latitude>
        <street_name>SOUTH VAN NESS</street_name>
        <street_name_suffix>
            <abbreviated>AVE</abbreviated>
            <unabbreviated>AVENUE</unabbreviated>
        </street_name_suffix>
        <unit_number_prefix>XXX</unit_number_prefix>
        <unit_number>300</unit_number>
        <unit_number_suffix>YYY</unit_number_suffix>
        <create_tms>2010-08-13 12:15:43.828000</create_tms>
        <retire_tms>2010-08-13 18:41:16.149255</retire_tms>
        <disposition>provisional</disposition>
        <mailing>True</mailing>
        <block>3506</block>
        <lot>001</lot>
        <apn>3506001</apn>
    </address>
    <timestamp>2010-08-13 18:41:16.149255</timestamp>
    <action>retire</action>
</addressChangeNotification>

...

The purpose of this version is to support the rework of the model precipitated by MAD-156.

Code Block

<?xml version="1.0" encoding="utf-8"?>
<addressChangeNotification>
    <base_address_part>
        <base_address>
            <base_address_id>157611<id>483699</base_address_id>
            <base_number_prefix></base_number_prefix>
            <base_number_prefix><number>2569</base_number_prefix>
            <base_number>53</base_number>
            <base_number_suffix></base_number_suffix>
            <jurisdiction>SF MAIN</jurisdiction>
            <longitude>-122.433538793<387658226</longitude>
            <latitude>37.734081063<756713011</latitude>
            <street_name>WILDER<name>03RD</street_name>
            <street_name_suffix>
                <abbreviated>ST</abbreviated>
                <unabbreviated>STREET</unabbreviated>
            </street_name_suffix>
        </base_address>
   <zipcode>SF MAIN</zipcode>     <action>insert</action>
    </base_address_part>
    <unit_address_part>
       <create_tms>2010-06-28 15:33:10.437000</create_tms> <unit_address>
            <last<address_change_tms>2010-10-25 17:05:15.093000</last_change_tms>id>725579</address_id>
              <retire<unit_tms><number></retireunit_tms>number>
        </base_address>         <action>no change</action>
    </base_address_part><base_unit_address_flag>True</base_unit_address_flag>
     <unit_address_part>         <unit_address><disposition>official</disposition>
            <address_id>419583</address_id><mailing>False</mailing>
            <unit_number_prefix></unit_number_prefix><create_tms>10-16-2012 11:10:35</create_tms>
            <unit_number>603</unit_number><last_change_tms>10-16-2012 11:10:35</last_change_tms>
            <unit<retire_number_suffix><tms></unitretire_number_suffix>tms>
            <base_unit_address_flag>False</base_unit_address_flag></unit_address>
        <action>insert</action>
    <disposition>official</disposition></unit_address_part>
    <address_parcel_link_part>
        <address_parcel_link>
            <mailing>True<<id>563590</mailing>id>
            <create_tms>2010tms>10-0616-282012 1511:3310:10.437000<35</create_tms>
            <last_change_tms>2010tms>10-1016-252012 1711:0510:15.093000<35</last_change_tms>
            <retire_tms></retire_tms>
          </unit_address>  <parcel>
          <action>no change</action>     </unit_address_part><block>4173</block>
          <address_parcel_link_part>      <lot>001</lot>
   <address_parcel_link>             <id>68<<apn>4173001</id>apn>
            <create_tms>2010-10-25 17:05:15.093000</create_tms></parcel>
            <last_change_tms>2010-10-25 17:05:15.093000</last_change_tms></address_parcel_link>
        <action>insert</action>
    <retire_tms></retire_tms>
            <parcel>
                <block>6745</block>
                <lot>089</lot>
                <apn>6745089</apn>
            </parcel>
        </address_parcel_link>
        <action>insert</action>
    </address_parcel_link_part>

</addressChangeNotification>

...

EAS Field: address_base.base_address_id (int)
XML Field: base_address_id
FGDC Field: na
AVS Field: na
Example:
Comment: EAS primary key

EAS Field: address_base.base_address_prefix (char 10)
XML Field: base_address/base_number_prefix
FGDC Field: address number prefix (text)
AVS Field: na
Example:
Comment: EAS has no data in this field
TODO: add field to AVS?

EAS Field: address_base.base_address_num (int)
XML Field: base_address/base_number
FGDC Field: address number (int)
AVS Field: AVS_ADDRESSES.STREET_NUMBER (NUMBER 6)
Example:
Comment:

EAS Field: address_base.base_address_suffix (char 10)
XML Field: base_address/base_number_suffix
FGDC Field: address number suffix (text)
AVS Field: AVS_ADDRESSES.STREET_NUMBER_SFX (VARCHAR2 1)
Example: "1/2"
Comment: MAD-122
TODO: widen AVS field

EAS Field: address_base.geometry.longitude (double)
XML Field: base_address/longitude
FGDC Field: address longitude (double)
AVS Field:
Example:
Comment:

EAS Field: address_base.geoemtry.latitude (double)
XML Field: base_address/latitude
FGDC Field: address latitude (double)
AVS Field:
Example:
Comment:

EAS Field: address_base.street_segment.st_name (char 29)
XML Field: base_address/street_name
FGDC Field: street name (text)
AVS Field: AVS_STREETS.STREET_NAME VARCHAR2(28)
Example:
Comment:
TODO: AVS must truncate width

EAS Field: address_base.street_segment.st_type (char 6)
XML Field: base_address/street_name_suffix
FGDC Field: street name post type text
AVS Field: AVS_STREET_SUFFIXES.STREET_SFX (VARCHAR2 2)
Example:
Comment: data type mismatch is accomodated in xml mapping

EAS Field: zone.zipcode (int)
XML Field: base_address/zipcode
FGDC Field: zip code
AVS Field: ?
Example:
Comment:
TODO: add this to EAS change notification message (and remove "jurisdiction"); map to AVS field

EAS Field: address_base.create_tms (datetime)
XML Field: base_address/create_tms
FGDC Field:
AVS Field:
Example:
Comment:

EAS Field: address_base.last_change_tms (datetime)
XML Field: base_address/last_change_tms
FGDC Field:
AVS Field:
Example:
Comment:

EAS Field: address_base.retire_tms (datetime)
XML Field: base_address/retire_tms
FGDC Field:
AVS Field:
Example:
Comment:

EAS Field: addresses.address_id (int)
XML Field: unit_address/address_id
FGDC Field: na
AVS Field: na
Example:
Comment: EAS primary key for unit address

EAS Field: addresses.unit_num_prefix (char 5)
XML Field: base_address/unit_number_prefix
FGDC Field: na
AVS Field:
Example:
Comment:
TODO: EAS will drop this field from database schema

EAS Field: addresses.unit_num (char 20)
XML Field: base_address/unit_number
FGDC Field: unit identifier (text)
AVS Field: AVS_ADDRESSES.UNIT (NUMBER 6)
Example:
Comment:
TODO: AVS must widen field

EAS Field: addresses.unit_num_suffix (char 10)
XML Field: base_address/unit_number_suffix
FGDC Field: na
AVS Field: AVS_ADDRESSES.UNIT_SFX (VARCHAR2 10)
Example:
Comment:
TODO: EAS will drop this field from database scehma

EAS Field: addresses.unit_type_id->d_unit_type.unit_type_description (varchar 50)
XML Field: unit_address/unit_type
FGDC Field: unit type (text)
AVS Field: na
Example: suite, apartment
Comment:
TODO: EAS will add this field to the XML - do we need to map it to an AVS field?

EAS Field: addresses.disposition_code (int)
XML Field: unit_address/disposition
FGDC Field: address lifecycle status (text)
AVS Field:
Example: provisional, offical
Comment: FGDC field is approx
TODO: do we need to map this to an AVS field?

EAS Field: addresses.mailable_flg (boolean)
XML Field: unit_address/mailing
FGDC Field: na
AVS Field: na
Example:
Comment:

EAS Field: addresses.create_tms (datetime)
XML Field: unit_address.create_tms
FGDC Field: na
AVS Field:
Example:
Comment:

EAS Field: addresses.last_change_tms (datetime)
XML Field: unit_address.last_change_tms
FGDC Field: na
AVS Field:
Example:
Comment:

EAS Field: addresses.retire_tms (datetime)
XML Field: unit_address.retire_tms
FGDC Field: na
AVS Field: na
Example:
Comment:

EAS Field: address_x_parcel.parcel.block_num (char 5)
XML Field: address_parcel_link/parcel/block
FGDC Field: na
AVS Field: AVS_STRUCTURES.BLOCK (VARCHAR2 5)
Example:
Comment:

EAS Field: address_x_parcel.parcel.lot_num (char 5)
XML Field: address_parcel_link/parcel/lot
FGDC Field: na
AVS Field: AVS_STRUCTURES.LOT (VARCHAR2 4)
Example:
Comment:
TODO: field width mismatch - widen AVS field?

EAS Field: address_x_parcel.parcel.blk_lot (char 9)
XML Field: address_parcel_link/parcel/apn
FGDC Field: na
AVS Field: na
Example:
Comment:

EAS Field: address_x_parcel.create_tms (datetime)
XML Field: address_parcel_link/create_tms
FGDC Field: na
AVS Field:
Example:
Comment:
TODO: determine mapping

...

</address_parcel_link_part>
</addressChangeNotification>