![]() | |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
In the following I compare different techniques for representing an Abstract Syntax Tree (AST), concluding that RM is poorly suited. |
|
I anticipate that this rule of thumb provides a useful insight on that rather vague notion of "semi-structured data". ie it explains exactly when and why there is data that is not suitable for direct representation in RM. |
#3
| |||
| |||
|
|
"David BL" <davi... (AT) iinet (DOT) net.au> wrote in message news:1193713604.283167.146850 (AT) e34g2000pro (DOT) googlegroups.com... In the following I compare different techniques for representing an Abstract Syntax Tree (AST), concluding that RM is poorly suited. [snip] I anticipate that this rule of thumb provides a useful insight on that rather vague notion of "semi-structured data". ie it explains exactly when and why there is data that is not suitable for direct representation in RM. Education triumphs over learning once again. Roy |
#4
| |||
| |||
|
|
David BL wrote: On Oct 30, 6:29 pm, "Roy Hann" <specia... (AT) processed (DOT) almost.meat wrote: "David BL" <davi... (AT) iinet (DOT) net.au> wrote in message news:1193713604.283167.146850 (AT) e34g2000pro (DOT) googlegroups.com... In the following I compare different techniques for representing an Abstract Syntax Tree (AST), concluding that RM is poorly suited. [snip] I anticipate that this rule of thumb provides a useful insight on that rather vague notion of "semi-structured data". ie it explains exactly when and why there is data that is not suitable for direct representation in RM. Education triumphs over learning once again. Roy Please say what you disagree with. I can take it. Okay, from your original post: "So RM is forced to expose the equivalent of pointers directly in the representation. Furthermore, the RM has no mechanism for hiding these pointers or giving the user an interface that promotes the idea that a node logically represents a value." Where does RM ever mention pointers? Eg., What are the pointer operations that RM supports? (ps: I don't agree that RM can't represent nested lists but I would agree that it's not much fun to manipulate them, I wish Codd had said more about nested relations as I have a feeling he spent some time considering them.) |
#5
| |||
| |||
|
|
paul c wrote: ... (ps: I don't agree that RM can't represent nested lists but I would agree that it's not much fun to manipulate them, I wish Codd had said more about nested relations as I have a feeling he spent some time considering them.) Here's my favourite nested relation, although I admit it's probably useless in practice. It's a recursive one. Sorry I don't have much mastery of conventional syntax, what I mean here is something like R: attribute list> where <attribute list> is a set of attribute name, attribute type pairs and typeof is swiped from C-language: R: (A typeof R) I don't know how to display a value for R but I guess it could have either no tuples or one tuple. |
|
Also guessing that R <OR> (<NOT> R) has one tuple and R <AND> (<NOT> R) has no tuples (where <OR>, <AND>, <NOT> come from D&D syntax). |
#6
| |||
| |||
|
|
Bob Badour wrote: ... It seems he considered them unecessary in the sense one can always normalize the data to obviate the need for them. It seems that way to me too but I'd add that I think he presumed that one has applicable "data" in the first place, ie., one has in mind enough attributes that have values so as to allow tuples to stand for what what has in mind to express, eg., one must be able to distinguish different facts by tuple values, otherwise one hasn't determined the system's requirements in the first place and we could never agree on what the system is supposed to be talking about! |
#7
| |||
| |||
|
|
In the following I compare different techniques for representing an Abstract Syntax Tree (AST), concluding that RM is poorly suited. |
#8
| |||
| |||
|
|
I would like to see more heavy thinkers thinking about 6NF. |
#9
| |||
| |||
|
|
Okay, from your original post: "So RM is forced to expose the equivalent of pointers directly in the representation. Furthermore, the RM has no mechanism for hiding these pointers or giving the user an interface that promotes the idea that a node logically represents a value." Where does RM ever mention pointers? Eg., What are the pointer operations that RM supports? |
|
(ps: I don't agree that RM can't represent nested lists but I would agree that it's not much fun to manipulate them, I wish Codd had said more about nested relations as I have a feeling he spent some time considering them.) |
#10
| |||
| |||
|
|
Bob Badour wrote: paul c wrote: ... Here's my favourite nested relation, although I admit it's probably useless in practice. It's a recursive one. Sorry I don't have much mastery of conventional syntax, what I mean here is something like R: attribute list> where <attribute list> is a set of attribute name, attribute type pairs and typeof is swiped from C-language: R: (A typeof R) I don't know how to display a value for R but I guess it could have either no tuples or one tuple. It could have any number of tuples. See formalism under "philosophy of mathematics". Example values are: zero tuples: {} one tuple: {{}} {{{}}} {{{{}}}} {{{},{{}}}} ... two tuples: {{},{{}}} {{{}},{{{}}}} {{},{{{}}}} ... three tuples: {{},{{}},{{},{{}}}} {{},{{}},{{{}}}} ... four tuples: {{},{{}},{{},{{}}},{{},{{}},{{},{{}}}}} etc. ... Thanks for the formalism suggestions, will try to absorb. I know you've tried to explain various flavours of this to me before, but an example that prompts this for me, only with two attributes, is: R2: {A integer, B typeof R2} In R2, I can see that a value for B isn't necessarily empty, but if it is, that must be the end of the "descent", for I don't see how an empty recursive relation can recurse "any further" as it were. (I think this would be the case even if R2 defined several "levels" of conventional non-recursive RVA's.) Now, I admit I'm slow (but not heavy!) but I can see only one possible value for R.A which is an empty relation of type R and two possible values for R, one where R is empty and the other where R has one tuple where R.A is empty. I don't see how a relation defined recursively can "descend" from an empty value! So far, it looks like a peculiar kind of constraint to me. As somebody else say, go ahead and attack it, I can take it! |
![]() |
| Thread Tools | |
| Display Modes | |
| |