- From: Andy Seaborne <andy.seaborne@epimorphics.com>
- Date: Fri, 21 Oct 2011 11:19:10 +0100
- To: public-rdf-wg@w3.org
On 20/10/11 14:05, Steve Harris wrote:
> On 2011-10-20, at 13:47, Sandro Hawke wrote:
>
>> On Thu, 2011-10-20 at 13:21 +0200, Dan Brickley wrote:
>>> On 20 October 2011 13:13, Steve Harris<steve.harris@garlik.com> wrote:
>>>> I wouldn't be comfortable with marking Seq as "archaic" or similar unless there's a viable alternative, and I don't think List counts.
>>>
>>> Me neither. Nor "quaint", "twee", "retro" or "regrettable". It's just
>>> what it is, with no great mystery or confusion.
>>
>> Actually, there's a great deal of confusion. Please do explain -- in
>> one sentence for newbies -- why we have both Seq and List, and with Seq
>> better supported in RDF/XML and List better supported in Turtle, and how
>> someone should decide which to use.
>
> Seq has the advantage that it's much easier to query with SPARQL. Still not great, but much easier.
>
> Finding the 3rd member of a list:
>
> Seq
>
> SELECT ?m3
> WHERE {
> <x> rdf:_3 ?m3
> }
If you assume a notion of well-formedness: else:
:x rdf:_1 1 ;
rdf:_1 10 ;
rdf:_1 11 ;
rdf:_2 2 ;
rdf:_9 3 .
:-(
Maybe "well-formedness" for Seq and Lists is a useful way to go.
> List
>
> SELECT ?m3
> WHERE {
> <x> rdf:rest ?l2 .
> ?l2 rdf:rest ?l3 .
> ?l3 rdf:first ?m3 .
> }
0-based lists:
{ <x> rdf:rest{2}/rdf:first ?m . }
> Finding all the members:
>
> Seq (if you have RDFS)
>
> SELECT ?m
> WHERE {
> <x> rdfs:member ?m .
> }
>
> List (if you have property paths)
>
> SELECT ?m
> WHERE {
> <x> rdf:rest*/rdf:first ?m .
> }
>
> If you don't have RDFS or SPARQL 1.1 PPs, then "find all members" is ugly in Seqs (you need a regex), and very hard for Lists, unless you know the maximum length of the list.
>
> It's possible to get all the Seq members in order, but it's a pretty nasty expression.
Understatement! It requires SPARQL 1.1 string bashing.
>
> - Steve
>
Andy
Received on Friday, 21 October 2011 10:19:45 UTC