Re: ACTION-43 Draft use case for ordering

On Mon, Mar 25, 2013 at 2:32 PM, Richard Cyganiak <richard@cyganiak.de> wrote:
> I think that using an rdf:List to express the order of items, rather than through the property used for ordering, could be simpler on clients.
>
> For example, if we have three events
>
>   :event_2012-12-01
>   :event_2013-01-14
>   :event_2013-03-04
>
> that are ordered by date in a container response, I think it would be better to say (note that this is Turtle shorthand syntax for creating an rdf:List):
>
>   <container> ldp:order (:event_2012-12-01 :event_2013-01-14 :event_2013-03-04).
>
> And we shouldn't say:
>
>   <container> ldp:orderProperty dc:date.
>
> If we specify the order explicitly by a list property, then client and server need to agree on the sort semantics for that property. This is a (slight) burden for the standard literal datatypes, but becomes rather difficult when custom datatypes are used.
>
> The downsides of the rdf:List approach are that rdf:Lists are a bit icky to work with in some RDF toolkits. It's also a bit more verbose as the example shows.

Richard,

Is this a new issue or just a general discussion on the approach we
have?  I was only providing the missing use case per my action.

Agree this is another way to do ordering which has its own advantages
and disadvantages.  If the model (response representation) already
contains the ordering information, server would have to repeat this in
your ldp:order rdf:List, and therefore introduce a possibility for the
duplicated ordering information to potentially diverge and client
would have to decide which is correct.  On the other hand, with
current spec'd approach server would need to generate the accurate
ldp:containerSortPredicates.

--
- Steve Speicher

> Best,
> Richard
>
>
>
>
> On 25 Mar 2013, at 17:34, "Wilde, Erik" <Erik.Wilde@emc.com> wrote:
>
>> hello steve.
>>
>> On 2013-03-25 6:58 , "Steve Speicher" <sspeiche@gmail.com> wrote:
>>> Bug tracking tools often have thousands of bugs reported.  Making a
>>> request on these is often filtered down based on the state or
>>> project/timeline associated with, but often ordered based on some
>>> defined ordering: last modified, highest priority, status, creator,
>>> etc.  Since RDF is unordered and the response may be split across
>>> pages, there needs to be a way to indicate what the order is.
>>> Otherwise, the client will have to discover the intended order by
>>> other means and also if the response was split across pages responses,
>>> it would be preferred to have member resources on the current page
>>> based on ordering predicates that occur before those found on the next
>>> page.
>>
>> this is an excellent use case and a very popular one, too. adding to this,
>> it often is equally important to be able to choose what to order on
>> (unless there is some implicit assumption somewhere, such as many feeds
>> being ordered by update time). going further, you might also want to
>> filter things, but that becomes pretty tough because of the potential
>> complexity of the filter expressions. neither ordering nor filters should
>> be based on the back-end processing of ordering/filtering requests in RDF;
>> they should simply identify exposed capabilities of the service, which
>> then can map them to whatever implementation it is based on. RDF-based LDP
>> services then internally map them to SPARQL, SQL-based LDP services
>> internally map them to SQL, and so forth.
>>
>> regardless of how far we go down the line of ordering, exposing order
>> keys, and exposing filtering capabilities, all of this should be based on
>> the same general mechanics that we are going to use for the paging
>> mechanism: if these are fixed URIs, we should expose them as typed links
>> to fixed URIs; if these are parametrized URIs, we should expose them as
>> URI templates. and as for paging, we then would expect LDP to standardize
>> the relevant concepts (how to identify URI template variables for sort
>> order, order keys, or filter expressions).
>>
>> cheers,
>>
>> dret.
>>
>>
>

Received on Monday, 1 April 2013 13:03:56 UTC