Is there a way to take a priori knowledge out of field definitions?

Steve Holden steve at holdenweb.com
Mon Sep 11 06:00:48 EDT 2006


Hendrik van Rooyen wrote:
> Hi,
> 
> It is possible to build a system where the fields are "self defining" : -
> 
> One way is to keep a dictionary of tags and descriptors, and to keep "the data"
> in a dictionary using the same tags as keys, with values - an oversimplified
> example:
> 
> DefinitionDict = {1:'Quantity',2:'Price',3:'Value'}
> 
> DataItemDict = {1:10,2:3.50,3:35.00}
> 
> This is conceptually not much different to putting headers on columns in a
> database table or a spreadsheet, with the data item being a row, or to HT or
> XML.
> 
> Now obviously the definitions need not be single valued strings, but could be
> multivalues, for use at different times, such as for gui displaying, for
> printing, etc, and could also hold type information, as most databases do.
> 
> Up to this point, there is no a priori human knowledge mixed in with the data
> that has not been written down.
> 
> However, when we want to make say a validation rule, such as Quantity times
> Price must equal Value, then we are using a priori knowledge about the data to
> formulate this.
> 
> At this point, if a routine is written to check that DataItemDict[1] multiplied
> by DataItemDict[2] is indeed equal to DataItemDict[3], then we are casting the
> meanings into stone, and the flexibility of the structure is to a large extent
> lost.
> 
> Now if I want to make a system where these sort of rules, as well as more
> complicated ones, are also definable - Is there a way to do it simply and
> cleanly - a way to expand the DefinitionDict so that it contains all of what we
> know about the structure and relationships of and between the items of data?
> 
> It seems to me that if this could be done, then it could be used to dynamically
> generate the routines needed for validation, update, etc...
> 
> But my brain strains when I try to think about how to do it...
> 
You need to look at properties. The property() function allows you to 
define methods that are called (and which can therefore perform access 
control and/or semantic checks) when attributes are accessed.

regards
  Steve
-- 
Steve Holden       +44 150 684 7255  +1 800 494 3119
Holden Web LLC/Ltd          http://www.holdenweb.com
Skype: holdenweb       http://holdenweb.blogspot.com
Recent Ramblings     http://del.icio.us/steve.holden




More information about the Python-list mailing list