Watt Poosanguansit wrote:
should we forget CLOS and start working on a dynamic object model tailored after RDF?
I think I am sold on RDF. It looks like it provides a lot of features and more that datawarehousing is providing but with alot less weight. However, I am still learning to see if it can be simpler to use it. If you come up with a general way to do the dynamic objects, I hope you would blog about it.
I just don't think it will be objects (and I used that word myself above by mistake). I think we are now just writing out information, adding little branches and subbranches of detail as the information demands, rather than forever shoehorning the data into shapes dictated by relational design or even CLOS.
But, yes, there is a whole new representational language to be developed so things will be simpler. It is easy enough to build up the RDF structure adding new information willy-nilly as it comes up during application development--what gets interesting is then /reading/ that information.
My GUI work offers encouraging news on the read side. One of the things I did up front was not make inter-object reference brittle as would happen if one was always looking "exactly here" for the widget that decided, say, the enabled status of another widget. My solution at first was search by name, and here duplicates were OK as long as the first one I got to in an orderly search widening from myself got to the one related to me first. Since duplicates would arise from repeating clusters and since the dup related to me would be in the same cluster this Just Worked.
Later I found myself doing more searching up and down for things of a certain type, and again propinquity was a sure guide to relevance. I expect we will likely get lucky in the same way reading unstructured webs of RDF data.
If you want to allow the sixth B and raise an error, you would have an "errors" rule on A that simply says:
(when (> (length (^A)) 5) (make-instance 'too-many-b))
If you want to prevent the sixth B from getting in, you would have to stop it via some add-b-to-a function that checks first of the maximum has been reached, ie, the old-fashioned way and not using Cells.
I was thinking of something more complex. I think I kinda get it now.
Mind you you could automate some of the validation by having cells precompute certain conditions such as "I am maxxed out on Bs", such that the add-b-to-a function just says:
(if (maxxed-out...) (error) (write))
In certain cases that would be overkill, but in others where the condition (in this case maxxed-out) is more interesting, it would help having that logic encapsulated in its own "slot" of information.
I am afraid I am incredibly busy these days and won't have time for more than an occasional email. :(
I really appreciate you help.
No, problem. Don't hesitate to ask, I can always beg off if something looks too involved.
cheers, kenny