Hi Ken,
I have got a hold of your slides at the European Common Lisp Meeting. I also looked through Triple Cell code and I still do not know how to really use the code. A few questions I have to start off. It looks to me like the code stores only the slots and not the whole Clos object. Is that the case? If yes, how do I persist the whole Clos cell object? Also, if I have a cell object that is the composite of other cell objects - Document A has a number of Document B. I want to state a rule saying A can not have more than 5 B associated with it. How to simply state that in Clos and Cell? I am sorry for the newbie type questions. I hope you can include more samples code so it will be easier for new comers to follow. Thanks for your help.
Watt P.
Watt Poosanguansit wrote:
Hi Ken,
I have got a hold of your slides at the European Common Lisp Meeting. I also looked through Triple Cell code and I still do not know how to really use the code. A few questions I have to start off. It looks to me like the code stores only the slots and not the whole Clos object. Is that the case?
Actually triple-cells is an entirely new hack that just tries to work like CLOS Cells, with a little glue so a dynamic CLOS slot can depend on a Triple-cell /maintained by the same process/. (In a multi-user environment we would have to get into a whole protocol and IPC.)
This is good. RDF is more expressive than CLOS, so let's not cramp it. That said, the little bit I did do with Triple-cells did kinda follow an object-slot view of data, so it might seem as if I was thinking persistent CLOS, but if I were extending triple-cells I would not let CLOS drive what is possible.
If yes, how do I persist the whole Clos cell object?
Well, I think you mean CLOS object. A cell is a defstruct. But I think I know what you mean.
Triple-cells is just a proof of concept to show how persistent data can be driven by something like Cells for CLOS. To do persistent CLOS would be a different, non-trivial project and might miss the coolness of RDF. I would suggest letting RDF be RDF and CLOS be CLOS. I know and appreciate the advantage of transparently making CLOS persistent, but I am strting to wonder if it should not be the other way around: should we forget CLOS and start working on a dynamic object model tailored after RDF?
Also, if I have a cell object that is the composite of other cell objects - Document A has a number of Document B. I want to state a rule saying A can not have more than 5 B associated with it. How to simply state that in Clos and Cell?
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 am sorry for the newbie type questions. I hope you can include more samples code so it will be easier for new comers to follow. Thanks for your help.
I am afraid I am incredibly busy these days and won't have time for more than an occasional email. :(
kt