What are the characteristics of object names? In my last post I began to deconstruct the object classification hierarchy for the White Knight’s song in Lewis Carroll’s Through the Looking Glass. As a reminder, we identified a few discrete statements about a song’s metadata:
- There is a “thing” that is a SONG, which is “A-SITTING ON A GATE.”
- That SONG has a SONG_NAME, which is “THE AGED AGED MAN.”
- That SONG_NAME has a SONG_NAME_CALLING, which is “HADDOCKS’ EYES.”
- The SONG has a SONG_CALLING, which is “WAYS AND MEANS.”
Abstractly, we have an object that has a base level object type classification (it is a SONG) as well as two distinct attributes: a NAME, and (what I must call for simplifying the discussion) a CALLING. These are objects in their own right, although only one is specified to have an attribute – the song’s NAME has a CALLING attribute. OK, done, everything is clear.
Except that I still am bothered by a nagging ambiguity in the White Knight’s pronouncement that "The song really IS 'A-SITTING ON A GATE'" since that confuses what the real definition is of the thing under consideration: is it a song, or is it an “A-SITTING ON A GATE”? Now, we are left to interpret the semantics on our own based on the context of specification, and here are some options:
- Multiple inheritance: “A-SITTING ON A GATE” is an object class and the instance of the song actually inherits its attributes from more than one base object class.
- Aliasing: “A-SITTING ON A GATE” is also a NAME attribute that is an alias or alternative to the primary SONG_NAME that is “THE AGED AGED MAN.”
- Reference: “A-SITTING ON A GATE” is the actual thing that is referred to separately by unique names “THE AGED AGED MAN” and “WAYS AND MEANS.”
These are all aspects of naming, classification and ultimately unique identification - and resolving what things are and what they really mean and in which context is critical to properly modeling and using data, as we’ll consider next time.