Re: RDF List and Collection questions

Le 12/10/2010 03:04, Nathan a écrit :
> Hi,
>
> One or ten questions here..
>
> Are two instances of rdf:List the same rdf:List if they have the same
> rdf:first and rdf:rest values?

No, not according to the formal semantics. An application could be 
implemented such that it consider them the same, for practical purposes, 
but this would not follow the specifications.

> Clarifications asked
> - Lists can be recursive - yes/no?

Nothing prevent them to be in the spec but again, one can think of 
applications that make restriction on this.

> - Lists can fork, in that two (or more) list chains can intersect and
> share the same tail - yes/no?

It can fork, intersect and even be infinite. The formal model of a 
rdf:List is such that it describes a directed graph, where rdf:rest 
denotes the edges and rdf:first maps the nodes to their labels (label in 
a general sense, it can be a URI or a bnode).

> - Lists can use both bnodes or URIs - yes/no?

Sure.

> Why are both rdf:List and rdf:Seq defined, does Seq offer something that
> List does not (I can see things List offers that Seq doesn't but not the
> other way around)? Are the two interchangeable?

To make an analogy with programming languages, rdf:List is liked a 
linked list and rdf:Seq is like an array. Members of a rdf:Seq are 
easier to get: if you support RDFS reasoning, you can get the members 
with the predicate rdfs:member.

SELECT ?m WHERE { ?seq rdfs:member ?m . }

> rdf:Alt, does anybody use this? (I'm struggling to see why it's defined
> in rdf to be honest)

I don't know but the only times I saw it used was in the RDF specs and 
RDF tutorials. I'm sure there are a few marginal data publishers that 
use it.

> Do we actually need unordered and ordered lists in rdf? (something
> niggles that we only need say List and consideration of whether to treat
> it like an ordered or unordered list happens when processing, based on
> context)

I a list is unordered, how can one know what is the first element? It 
seems that what you suggest is rather "make everything ordered then 
ignore the order if you don't need it". In principle, this would be 
possible using rdf:Seq because you can order the element explicitly 
(using rdf:_1, rdf:_2, etc) or ignore the order with the generic 
rdfs:member. However, due to the Open World Assumption, you can never be 
sure that all elements of a rdf:Seq, e.g.,

ex:s a rdf:Seq ;
      rdf:_3 ex:firstElement ;
      rdf:_17 ex:seventeenthElement ;
      rdf:_42 ex:fourtysecondElement .

is a valid sequence in RDF and it does not say that 42 is the last 
element. With rdf:List, assuming it's used "normally" (no fork, no loop, 
etc) you can close the list with rdf:nil.

> Are any of Bag, Seq, Collection, Alt likely to be deprecated in the
> future? are they used anywhere important (I think I saw mention of OWL
> using them?)

rdf:List won't be deprecated for sure. They are used a lot. I don't know 
about the others but there are prominent Sem Web figures that are 
supporting deprecation.

> Any pointers to discussion or any important notes that I may be missing
> most welcome,

There have been many discussions on this mailing list, the lod mailing 
list and several others about Collections and Containers. I don't know 
where to start.

>
> Best,
>
> Nathan
>

Regards,
-- 
Antoine Zimmermann
INSA Lyon, LIRIS UMR 5205
Database Group
7 Avenue Jean Capelle
69621 Villeurbanne Cedex
France
antoine.zimmermann@insa-lyon.fr
http://zimmer.aprilfoolsreview.com/

Received on Tuesday, 12 October 2010 06:11:58 UTC