Easier SPARQL queries of ordered lists?

rdf:Lists are a pain for SPARQL queries, because it's hard to retain the 
list ordering when querying, even if it is possible[1].  To work around 
this problem, some list ontologies have been created[2][3], but I find 
them overly verbose for routine use.  The Jena ARQ library also has a 
feature that helps[4], but it is not standard SPARQL.

I'd like to propose a simpler convention that encodes each item as a 
(value index) pair, and a simple vocabulary to go with it.  For example, 
instead of writing this:

   PREFIX : <http://example/>
   :jane :likes (
         "bananas"
         "apples"
         "oranges"
         ) .

each item would have an explicit index, like this:

   PREFIX : <http://example/>
   :jane :likes
         ( "bananas" 0 ) ,
         ( "apples"  1 ) ,
         ( "oranges" 2 ) .

which can be easily queried like this, retaining order:

   SELECT DISTINCT ?item {
     :jane :likes ( ?item ?index ) .
   } ORDER BY ?index

There's a little more too.  I've written this up in a draft document:
http://goo.gl/8PNuAG

I would be very interested in any comments or suggestions.  What do you 
think?

Thanks!
David Booth

References
1. Standard SPARQL query of rdf:List that retains list order:
http://stackoverflow.com/questions/17523804/is-it-possible-to-get-the-position-of-an-element-in-an-rdf-collection-in-sparql/17530689#17530689

2. Ordered List Ontology:
http://smiy.sourceforge.net/olo/spec/orderedlistontology.html

3. Collections Ontology:
http://www.essepuntato.it/lode/owlapi/http://purl.org/co/

4. Jena ARQ list:index example:
http://stackoverflow.com/questions/17523804/is-it-possible-to-get-the-position-of-an-element-in-an-rdf-collection-in-sparql/17528290#17528290

Received on Tuesday, 14 April 2015 09:07:35 UTC