- From: Ben Adida <ben@adida.net>
- Date: Mon, 16 Jul 2007 17:14:33 -0700
- To: Dan Connolly <connolly@w3.org>
- CC: mark.birbeck@x-port.net, RDFa <public-rdf-in-xhtml-tf@w3.org>, SWD WG <public-swd-wg@w3.org>
Dan, Thanks for your clarifications on this, this is quite useful. So I propose the following super simple approach to handling lists and containers. I'd like us to consider it because it would really make RDFa quite well rounded. Effectively, since UL and OL don't really map cleanly to *one* concept of an RDF container or collection, I propose we not try to map them. We simply use the <LI> structure as syntactic sugar for either rdf:li or rdf:first, rdf:next, rdf:nil, where appropriate So, for example: <ul attr_that_shall_not_be_named="rdf:List"> <li href="/foo">foo</li> <li href="/bar">bar</li> <li href="/baz">baz</li> </ul> yields (</foo> , </bar> , </baz>) while replacing rdf:List with rdf:Seq or rdf:Bag would yield the corresponding RDF container construct. Changing from UL to OL doesn't change a thing from the RDFa perspective. When there is no @href, we use the content of the LI as a literal, possibly overridden by @content. Thoughts? -Ben Dan Connolly wrote: > On Thu, 2007-07-12 at 12:02 -0700, Ben Adida wrote: > [...] >> Two questions, then: > >> - how does one declare that the range of an RDF property is a list? > > That one is easier, so I'll take it first: > > :brothers rdfs:range rdf:List. > > (there are ways of saying "list of person", but they're > a little obscure and not terribly relevant to this discussion.) > >> - where are lists used in RDF? > > Good question. I don't know if they're sufficiently commonly > used to merit special syntax in RDFa. (you can always > spell them out with rdf:first/rdf:rest/rdf:nil). > > The main use I can think of is in OWL: > > <#Man> owl:intersectionOf ( <#Person> <#Male> <#Adult> ). > > This is in contrast with > > <#Man> owlx:intersectionOf <#Person>, <#Male>, <#Adult>. > which is short for: > <#Man> owlx:intersectionOf <#Person>. > <#Man> owlx:intersectionOf <#Male>. > <#Man> owlx:intersectionOf <#Adult>. > > I hope it's clear why that owlx construct won't work. > Hmm... I thought this was written up in > http://esw.w3.org/topic/ClosedWorldAssumptions or somewhere > near there, but perhaps not, so consider: > > <#Dan> :brother <#Bob>, <#Tim>. > <#Bob> owl:differentFrom <#Joe>. > <#Tim> owl:differentFrom <#Joe>. > > We still don't know whether { <#Dan> :brother <#Joe> } or not. > If we want the "and that's all!" property, we need to use lists: > > <#Dan> :brothers (<#Bob> <#Tim>). > <#Bob> owl:differentFrom <#Joe>. > <#Tim> owl:differentFrom <#Joe>. > > Assuming :brothers is functional, we know know that Joe > is not among Dan's brothers. >
Received on Tuesday, 17 July 2007 00:14:42 UTC