Wednesday, August 09, 2006

Type safe recognition

I believe that recognition (part of Customer Data Integration) can (and should!) be made strongly type safe. Basic types (in the US) might include FirstName, LastName, SSN, Street, CompositeStreet. More advanced types would include an Entity (a collection of basic types) and a Group (a collection of entities).

Notice how this mirrors a programming language. A basic type would be something like an int or float. An entity is like an object, and a Group would be a collection of objects (think an array).

This leads to a few interesting questions. Let's consider the following:

Entity Name:
FirstName first_name
MiddleName middle_name
LastName last_name
NameSuffix name_suffix

Entity Address:
CompositeStreet street_line_1
CompositeStreet street_line_2
City city
State state
Zip zip

Entity Person:
Name name
SSN ssn
Date birthday

Entity PersonAtAddress:
Person person
Address address

Entity Consumer:
Group(PersonAtAddress) occupancies
SSN preferred_ssn
Address preferred_address

At this point, we have types for our recognition system that can be manipulated and understood by both humans and computers. We can further augment them. I'll work on describing the augmentation/annotation of the types in the next blog.


Should an entity be allowed to contain more than one group?
Should an entity be allowed to contain another entity that contains a group?
For example:

Entity Household:
Group(Consumer) members
Address preferred_address

More to come!


Mark Staggs said...

Are you contracting for Acxiom??

"Should an entity be allowed to contain more than one group?"
No. An Entity (singular) implies linguistically that it's a single "thing". Having a group of things within an Entity just says "these are the same thing." But if you have two (or more) groups does that mean that any combination is still representative of this single Entity? It seems like that could be possible but irritating. It seems like it'd be especially hard to split some of those groups out of the Entity in some cases (although I can't think of an example).

"Should an entity be allowed to contain another entity that contains a group?"

Tanton said...

Yep, I agree with your point on the Entity. I can't think of an entity with two orthogonal groups that makes sense. Maybe I'm not thinking hard enough...

I also agree with your second point.