![]() | |
#11
| |||
| |||
|
|
On Nov 21, 2:22 pm, "David Cressey" <cresse... (AT) verizon (DOT) net> wrote: "JOG" <j... (AT) cs (DOT) nott.ac.uk> wrote in message news:84c11971-6500-48e4-ba0f-b8b659f390da (AT) d61g2000hsa (DOT) googlegroups.com... Word up CDT. How the devil are you all? Well, I return with a question that as ever highlights my complete lack of formal mathematical training, and in light of knowing no logicians in my daily life (funny that), I was hoping that one of you kind folks might be able to advise: Say I had a set of 3 encoded propositions: R := { {(Name, Tom), (Age, 42)}, {(Name, Dick), (Age, 16)}, {(Name, Harry)} } (note that Harry's Age is missing, so instead of adding a null, i've intentionally just left the attribute out. Just ride with such oddness for now if you would.) What if I deigned to create a simple 'adults' subset of this set of propositions, by creating a predicate that only returned the elements, p, which contained an age attribute greater than 18. Could I state this as (where E signifies set membership): Adults := { p E R | EXISTSx ( x > 18 && (Age, x) E p ) } My question obviously hinges around Harry's missing age attribute. In this case would the EXISTSx (...) part of the set's intension simply return a FALSE, or will I end up in the quagmire of 3VL with an UNDEFINED? My instinct is that I am still in 2VL given there is no null floating about, but since the recent, excellent discussions of Jan's DEF operator, and having delved into beeson's logic of partial terms, I am not at all confident. Any comments are much appreciated, and regards to all, Jim. I'm no mathematician or logician, but I'll answer anyway. To me, it dpends on whether the relationship (Name, Age) follows the open world assumption or the closed world assumption. While I was only really concerned about whether my logic statements are sticking to 2VL internally, you've sent me off at a tangent here because CWA is one of my bugbears. Imho its at best silly, and at worst contradictory. Take relations such as: Weather_is = { condition: Hot } Weather_is_not = { condition: Cold } Domain = {Hot, Cold} Perfectly fine with full information, and a constraint that a condition can't appear in both. And I can happily extrapolate from CWA from the first relation that: !is(condition:cold)), and from the second !is_not(condition:hot). Nice... ...until we're faced missing information. If both relations are empty (because we just don't have the data say), then CWA tells me that: !Weather_is(condition:Hot) and !Weather_is_not(condition:Hot). It is both hot and not hot. Genius. I don't see how CWA based directly on what propositions state can ever be justified for a system working in the real world (TM). |
|
Equally CWA would suggest that Harry is neither a child nor an adult in the other example. Meh. I am hence of the opinion that we should stick to OWA, or better still a CWA that is aware it is only commenting on the _existence of propositions_ themselves, and not the underlying truth of their contents (preventing us asking questions with contradictory answers in the first place). If it's the closed world assumption, then we would have to say that Harry is not included with the adults. However, if we defined another set, Children, Children := { p E R | EXISTSx ( x < 19 && (Age, x) E p ) } Please note that Harry is excluded from Children as well. If we had a rule that says that every person mentioned in R is either a child or an adult, that would be tantamount to requiring that the entry for Harry be rejected at time of insertion. BTW, I see nothing odd about your notation. Huzzah ![]() NULLS are not needed. Hwever, your proposition R actually contains two propositions: first that the named person exists, and second that the person named with an age has that age. True, and full decomposition to 6NF would be a valid approach. But one that can add an unpleasant amount of joins. Theoretically no problem of course, but who realistically fancies writing queries with n joins just because you don't have complete information for a single entry say... And lets be honest, when in the real world is any attribute 100% guaranteed to not going to have some missing data at some point? |
#12
| |||
| |||
|
|
"JOG" <j... (AT) cs (DOT) nott.ac.uk> wrote in message news:ea3deb47-3697-4eb5-8b4f-34cf2ef2ec25 (AT) t47g2000hsc (DOT) googlegroups.com...> On Nov 21, 2:22 pm, "David Cressey" <cresse... (AT) verizon (DOT) net> wrote: "JOG" <j... (AT) cs (DOT) nott.ac.uk> wrote in message news:84c11971-6500-48e4-ba0f-b8b659f390da (AT) d61g2000hsa (DOT) googlegroups.com... Word up CDT. How the devil are you all? Well, I return with a question that as ever highlights my complete lack of formal mathematical training, and in light of knowing no logicians in my daily life (funny that), I was hoping that one of you kind folks might be able to advise: Say I had a set of 3 encoded propositions: R := { {(Name, Tom), (Age, 42)}, {(Name, Dick), (Age, 16)}, {(Name, Harry)} } (note that Harry's Age is missing, so instead of adding a null, i've intentionally just left the attribute out. Just ride with such oddness for now if you would.) What if I deigned to create a simple 'adults' subset of this set of propositions, by creating a predicate that only returned the elements, p, which contained an age attribute greater than 18. Could I state this as (where E signifies set membership): Adults := { p E R | EXISTSx ( x > 18 && (Age, x) E p ) } My question obviously hinges around Harry's missing age attribute. In this case would the EXISTSx (...) part of the set's intension simply return a FALSE, or will I end up in the quagmire of 3VL with an UNDEFINED? My instinct is that I am still in 2VL given there is no null floating about, but since the recent, excellent discussions of Jan's DEF operator, and having delved into beeson's logic of partial terms, I am not at all confident. Any comments are much appreciated, and regards to all, Jim. I'm no mathematician or logician, but I'll answer anyway. To me, it dpends on whether the relationship (Name, Age) follows the open world assumption or the closed world assumption. While I was only really concerned about whether my logic statements are sticking to 2VL internally, you've sent me off at a tangent here because CWA is one of my bugbears. Imho its at best silly, and at worst contradictory. Take relations such as: Weather_is = { condition: Hot } Weather_is_not = { condition: Cold } Domain = {Hot, Cold} Perfectly fine with full information, and a constraint that a condition can't appear in both. And I can happily extrapolate from CWA from the first relation that: !is(condition:cold)), and from the second !is_not(condition:hot). Nice... ...until we're faced missing information. If both relations are empty (because we just don't have the data say), then CWA tells me that: !Weather_is(condition:Hot) and !Weather_is_not(condition:Hot). It is both hot and not hot. Genius. I don't see how CWA based directly on what propositions state can ever be justified for a system working in the real world (TM). In theory, you never have to be concerned about missing information. In practice, you do. |
|
The best we can hope for is that database will not amplify the mistakes people make, at least not very often. |
#13
| |||
| |||
|
|
That seems to me almost unavoidable. Any system that enhances your power is likely to amplify the magnitude of your mistakes. |
#14
| |||
| |||
|
|
Word up CDT. How the devil are you all? Well, I return with a question that as ever highlights my complete lack of formal mathematical training, and in light of knowing no logicians in my daily life (funny that), I was hoping that one of you kind folks might be able to advise: Say I had a set of 3 encoded propositions: R := { {(Name, Tom), (Age, 42)}, {(Name, Dick), (Age, 16)}, {(Name, Harry)} } (note that Harry's Age is missing, so instead of adding a null, i've intentionally just left the attribute out. Just ride with such oddness for now if you would.) What if I deigned to create a simple 'adults' subset of this set of propositions, by creating a predicate that only returned the elements, p, which contained an age attribute greater than 18. Could I state this as (where E signifies set membership): Adults := { p E R | EXISTSx ( x > 18 && (Age, x) E p ) } My question obviously hinges around Harry's missing age attribute. In this case would the EXISTSx (...) part of the set's intension simply return a FALSE, or will I end up in the quagmire of 3VL with an UNDEFINED? My instinct is that I am still in 2VL given there is no null floating about, but since the recent, excellent discussions of Jan's DEF operator, and having delved into beeson's logic of partial terms, I am not at all confident. Any comments are much appreciated, and regards to all, Jim. I do not understand how you can already go to any form of subtyping |
#15
| ||||
| ||||
|
|
On 23 nov, 12:31, "David Cressey" <cresse... (AT) verizon (DOT) net> wrote: "JOG" <j... (AT) cs (DOT) nott.ac.uk> wrote in message news:ea3deb47-3697-4eb5-8b4f-34cf2ef2ec25 (AT) t47g2000hsc (DOT) googlegroups.com... |
|
"JOG" <j... (AT) cs (DOT) nott.ac.uk> wrote in message news:84c11971-6500-48e4-ba0f-b8b659f390da (AT) d61g2000hsa (DOT) googlegroups.com... Word up CDT. How the devil are you all? Well, I return with a question that as ever highlights my complete lack of formal mathematical training, and in light of knowing no logicians in my daily life (funny that), I was hoping that one of you kind folks might be able to advise: Say I had a set of 3 encoded propositions: R := { {(Name, Tom), (Age, 42)}, {(Name, Dick), (Age, 16)}, {(Name, Harry)} } (note that Harry's Age is missing, so instead of adding a null, i've intentionally just left the attribute out. Just ride with such oddness for now if you would.) What if I deigned to create a simple 'adults' subset of this set of propositions, by creating a predicate that only returned the elements, p, which contained an age attribute greater than 18. Could I state this as (where E signifies set membership): Adults := { p E R | EXISTSx ( x > 18 && (Age, x) E p ) } My question obviously hinges around Harry's missing age attribute. In this case would the EXISTSx (...) part of the set's intension simply return a FALSE, or will I end up in the quagmire of 3VL with an UNDEFINED? My instinct is that I am still in 2VL given there is no null floating about, but since the recent, excellent discussions of Jan's DEF operator, and having delved into beeson's logic of partial terms, I am not at all confident. Any comments are much appreciated, and regards to all, Jim. I'm no mathematician or logician, but I'll answer anyway. To me, it dpends on whether the relationship (Name, Age) follows the open world assumption or the closed world assumption. While I was only really concerned about whether my logic statements are sticking to 2VL internally, you've sent me off at a tangent here because CWA is one of my bugbears. Imho its at best silly, and at worst contradictory. Take relations such as: Weather_is = { condition: Hot } Weather_is_not = { condition: Cold } Domain = {Hot, Cold} Perfectly fine with full information, and a constraint that a condition can't appear in both. And I can happily extrapolate from CWA from the first relation that: !is(condition:cold)), and from the second !is_not(condition:hot). Nice... ...until we're faced missing information. If both relations are empty (because we just don't have the data say), then CWA tells me that: !Weather_is(condition:Hot) and !Weather_is_not(condition:Hot). It is both hot and not hot. Genius. I don't see how CWA based directly on what propositions state can ever be justified for a system working in the real world (TM). In theory, you never have to be concerned about missing information. In practice, you do. I know that's not how you meant "in theory", but in current research in database theory this is actually a hot topic, especially in connection with missing or uncertain information (including null values) and also with data integration where the classical CWA almost never fully applies. There's a whole spectrum between the full CWA and the OWA that go from stronger assumption to weaker assumptions. It can for example be that the CWA applies only to certain selections or projections of the relation. |
|
The best we can hope for is that database will not amplify the mistakes people make, at least not very often. That seems to me almost unavoidable. Any system that enhances your power is likely to amplify the magnitude of your mistakes. The best we can do is to make the people that deal with these systems aware of these dangers and train them well. They should hire more database professors. ;-) |
|
-- Jan Hidders |
#16
| |||
| |||
|
|
"Jan Hidders" <hidders (AT) gmail (DOT) com> wrote in message news:46b18d2e-3a66-457d-b4ab-b7c98753cd2b (AT) l1g2000hsa (DOT) googlegroups.com... On 23 nov, 12:31, "David Cressey" <cresse... (AT) verizon (DOT) net> wrote: "JOG" <j... (AT) cs (DOT) nott.ac.uk> wrote in message news:ea3deb47-3697-4eb5-8b4f-34cf2ef2ec25 (AT) t47g2000hsc (DOT) googlegroups.com... On Nov 21, 2:22 pm, "David Cressey" <cresse... (AT) verizon (DOT) net> wrote: "JOG" <j... (AT) cs (DOT) nott.ac.uk> wrote in message news:84c11971-6500-48e4-ba0f-b8b659f390da (AT) d61g2000hsa (DOT) googlegroups.com... Word up CDT. How the devil are you all? Well, I return with a question that as ever highlights my complete lack of formal mathematical training, and in light of knowing no logicians in my daily life (funny that), I was hoping that one of you kind folks might be able to advise: Say I had a set of 3 encoded propositions: R := { {(Name, Tom), (Age, 42)}, {(Name, Dick), (Age, 16)}, {(Name, Harry)} } (note that Harry's Age is missing, so instead of adding a null, i've intentionally just left the attribute out. Just ride with such oddness for now if you would.) What if I deigned to create a simple 'adults' subset of this set of propositions, by creating a predicate that only returned the elements, p, which contained an age attribute greater than 18. Could I state this as (where E signifies set membership): Adults := { p E R | EXISTSx ( x > 18 && (Age, x) E p ) } My question obviously hinges around Harry's missing age attribute. In this case would the EXISTSx (...) part of the set's intension simply return a FALSE, or will I end up in the quagmire of 3VL with an UNDEFINED? My instinct is that I am still in 2VL given there is no null floating about, but since the recent, excellent discussions of Jan's DEF operator, and having delved into beeson's logic of partial terms, I am not at all confident. Any comments are much appreciated, and regards to all, Jim. I'm no mathematician or logician, but I'll answer anyway. To me, it dpends on whether the relationship (Name, Age) follows the open world assumption or the closed world assumption. While I was only really concerned about whether my logic statements are sticking to 2VL internally, you've sent me off at a tangent here because CWA is one of my bugbears. Imho its at best silly, and at worst contradictory. Take relations such as: Weather_is = { condition: Hot } Weather_is_not = { condition: Cold } Domain = {Hot, Cold} Perfectly fine with full information, and a constraint that a condition can't appear in both. And I can happily extrapolate from CWA from the first relation that: !is(condition:cold)), and from the second !is_not(condition:hot). Nice... ...until we're faced missing information. If both relations are empty (because we just don't have the data say), then CWA tells me that: !Weather_is(condition:Hot) and !Weather_is_not(condition:Hot). It is both hot and not hot. Genius. I don't see how CWA based directly on what propositions state can ever be justified for a system working in the real world (TM). In theory, you never have to be concerned about missing information. In practice, you do. I know that's not how you meant "in theory", but in current research in database theory this is actually a hot topic, especially in connection with missing or uncertain information (including null values) and also with data integration where the classical CWA almost never fully applies. There's a whole spectrum between the full CWA and the OWA that go from stronger assumption to weaker assumptions. It can for example be that the CWA applies only to certain selections or projections of the relation. I accept the correction. While I have no handle on the theoretical aspects of uncertainty (other than a certain minimal experience with Shannon's entropy model), I'd like to suggest that, in practice, people deal with uncertain or inadequate iinformation all the time. Their coping mechanisms may rely on intuition or educated intuition more than on formalisms, but their responses are extraordinarily adapted. Contrast the folowing: "You don't have a reservation on this flight. Your name isn't coming up on my computer." "When I bring your name up on my screen, the date of birth is blank. You were obviously never born." Except in jest, you would never expect the second response from an ordinary person. The best we can hope for is that database will not amplify the mistakes people make, at least not very often. That seems to me almost unavoidable. Any system that enhances your power is likely to amplify the magnitude of your mistakes. The best we can do is to make the people that deal with these systems aware of these dangers and train them well. They should hire more database professors. ;-) While some amplification is unavoidable, I claim that there are systems that amplify people's correct thinking relatively more, and amplify people's mistakes relatively less than other systems. I think this is one measure of a system's "goodness". While I wouldn't want to take this to an extreme, and claim that any system is "idiot proof", there are some systems that go further than others in this direction. |
|
I don't think ordinary people need database professors. They need information age kindergarten teachers. It's not the same skill. |
#17
| |||
| |||
|
|
On 21 nov, 14:34, JOG <j... (AT) cs (DOT) nott.ac.uk> wrote: Word up CDT. How the devil are you all? Well, I return with a question that as ever highlights my complete lack of formal mathematical training, and in light of knowing no logicians in my daily life (funny that), I was hoping that one of you kind folks might be able to advise: Say I had a set of 3 encoded propositions: R := { {(Name, Tom), (Age, 42)}, {(Name, Dick), (Age, 16)}, {(Name, Harry)} } (note that Harry's Age is missing, so instead of adding a null, i've intentionally just left the attribute out. Just ride with such oddness for now if you would.) What if I deigned to create a simple 'adults' subset of this set of propositions, by creating a predicate that only returned the elements, p, which contained an age attribute greater than 18. Could I state this as (where E signifies set membership): Adults := { p E R | EXISTSx ( x > 18 && (Age, x) E p ) } My question obviously hinges around Harry's missing age attribute. In this case would the EXISTSx (...) part of the set's intension simply return a FALSE, or will I end up in the quagmire of 3VL with an UNDEFINED? My instinct is that I am still in 2VL given there is no null floating about, but since the recent, excellent discussions of Jan's DEF operator, and having delved into beeson's logic of partial terms, I am not at all confident. Any comments are much appreciated, and regards to all, Jim. I do not understand how you can already go to any form of subtyping without a valid proposition allowing to establish relation R? |
|
I suggest decomposing R before attempting to constitute Adults such as... R := { {(Name, Tom), (Age, 42)}, {(Name, Dick), (Age, 16)}, {(Name, Harry)} } into ....(I assume Name as being a unique identifier) RName:= { {(Name, Tom)}, {(Name, Dick)}, {(Name, Harry)} } -->p1 and RAges := { {(Name, Tom), (Age, 42)}, {(Name, Dick), (Age, 16)} } -- p2 You may then constitute.... Adults := { p1 E R1 | EXISTSx ( x > 18 && (Age, x) E p1 ) } |
#18
| |||
| |||
|
|
On Nov 23, 9:44 pm, Cimode <cim... (AT) hotmail (DOT) com> wrote: On 21 nov, 14:34, JOG <j... (AT) cs (DOT) nott.ac.uk> wrote: Word up CDT. How the devil are you all? Well, I return with a question that as ever highlights my complete lack of formal mathematical training, and in light of knowing no logicians in my daily life (funny that), I was hoping that one of you kind folks might be able to advise: Say I had a set of 3 encoded propositions: R := { {(Name, Tom), (Age, 42)}, {(Name, Dick), (Age, 16)}, {(Name, Harry)} } (note that Harry's Age is missing, so instead of adding a null, i've intentionally just left the attribute out. Just ride with such oddness for now if you would.) What if I deigned to create a simple 'adults' subset of this set of propositions, by creating a predicate that only returned the elements, p, which contained an age attribute greater than 18. Could I state this as (where E signifies set membership): Adults := { p E R | EXISTSx ( x > 18 && (Age, x) E p ) } My question obviously hinges around Harry's missing age attribute. In this case would the EXISTSx (...) part of the set's intension simply return a FALSE, or will I end up in the quagmire of 3VL with an UNDEFINED? My instinct is that I am still in 2VL given there is no null floating about, but since the recent, excellent discussions of Jan's DEF operator, and having delved into beeson's logic of partial terms, I am not at all confident. Any comments are much appreciated, and regards to all, Jim. I do not understand how you can already go to any form of subtyping without a valid proposition allowing to establish relation R? Well first, I'm not sure that I'd refer to specifying a subset of propositions as 'subtyping' It's true that when one assumes that a set of valid propositions ought |
|
, second, all the propositions are valid as far as I can tell (their pretty simple ones after all), Depends what you imply by *valid*... |
|
and third, R isn't a relation. Regards, J. Yep...I got this one...I think the problem is easy solved once you |
![]() |
| Thread Tools | |
| Display Modes | |
| |