- From: Tim Berners-Lee <timbl@w3.org>
- Date: Fri, 23 Nov 2007 14:03:32 -0500
- To: "Sean B. Palmer" <sean@miscoranda.com>
- Cc: "Yosi Scharf" <syosi@mit.edu>, public-cwm-bugs@w3.org
Sean, Well, the situation is analogous with the simpler: "Morgan" a BrotherName; is name of [ is sibling of John ]. "Morgan" a SisterName; is name of [ is sibling of John ]. An axiom is that "Morgan" === "Morgan" wherever it appears. Strings don't have gender, charm etc. CWM makes the same assumption about ( "Morgan" "Kris" ). Basically, lists of literals are like literals. Formulas too, work like that. Their identity is their value. Variables of course make things more complicated. Just as if can say 7 a Prime. It applies to any 7, if you say (7 3) a MutallyPrimePair it applies to any (7 3). I am loth to do it differently. In practice, you can make a sisternames have a list instead of being one, of course. Tim > John sibling [ > name [ a BrotherName; > == "Morgan"; > ] On 2007-11 -23, at 10:39, Sean B. Palmer wrote: > > On Oct 15, 2007 2:07 PM, Yosi Scharf <syosi@mit.edu> wrote: > >> This shows what list canonicalization does. I'm not so sure it >> is an argument to remove it. > > I finally worked out an example where it matters: in subclassing > rdf:List to come up with your own containers to which you might attach > various semantics. People have asked for this kind of thing on #swig > before, and it just came up in a JSON project I'm working on which is > how I figured it out. > > Here's an example: > > $ cat siblings.n3 > @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . > @prefix list: <http://www.w3.org/2000/10/swap/list#> . > @keywords a . > > John siblings [ > names [ a BrotherNames; > rdf:first "Morgan"; > rdf:rest ("Kris" "Kerry") ] > ] . > > Jane siblings [ > names [ a SisterNames; > rdf:first "Morgan"; > rdf:rest ("Kris" "Kerry") ] > ] . > > { ?list a BrotherNames } => { ?list a List } . > { ?list a SisterNames } => { ?list a List } . > { ?element list:in ?list . ?list a List } > => { ?list member ?element } . > > { ?person siblings [ names [ a SisterNames; member ?name ] ] } > => { ?person sisterName ?name } . > > { ?person siblings [ names [ a BrotherNames; member ?name ] ] } > => { ?person brotherName ?name } . > > $ cwm siblings.n3 --think > > Gives in part: > > :John :brotherName "Kerry", > "Kris", > "Morgan"; > :siblings [ > :names ( > "Morgan" > "Kris" > "Kerry" ) ]; > :sisterName "Kerry", > "Kris", > "Morgan" . > > Which is wrong. John doesn't have any sisters, and yet the model of > the input is fine. The problem is caused by CWM canonicalising lists > and having no way to turn it off. > > -- > Sean B. Palmer, http://inamidst.com/sbp/
Received on Friday, 23 November 2007 19:03:39 UTC