Re: [RDFa] ISSUE-8: RDF containers in RDFa

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.

-- 
Dan Connolly, W3C http://www.w3.org/People/Connolly/

Received on Thursday, 12 July 2007 19:22:09 UTC