- From: Scott Bauer <Bauer.Scott@mayo.edu>
- Date: Fri, 4 May 2012 08:35:29 -0500
- To: Manu Sporny <msporny@digitalbazaar.com>
- Cc: RDF WG <public-rdf-wg@w3.org>
Mayo has similar problems integrating RDF List into the CTS2 implementation. +1 to some changes on this even though I know it's not on our list of things to get done. Scott On May 3, 2012, at 11:11 PM, Manu Sporny wrote: > The subject of the e-mail is a bit tongue-in-cheek, but after being > forced to work with RDF lists in the RDFa work and now again in the > JSON-LD work - I really, truly hate the way RDF Lists are modeled. > > Just a few anecdotes to why: > > * The addition of RDF List processing is one of the most complex > features of RDFa 1.1 and the triples that are generated are nearly > useless in their raw form to developers. It took me a full 38 hours > to implement support for it in librdfa - which was the grand total > amount of time that it took me to implement the first cut of the > librdfa processor in C. Yes, this is partly due to the difficulty > of expressing a list in a hierarchical document expressing RDF, > but even the resulting triples just make no sense to someone that > isn't a programmer. You can't expect Web developers to know what > a linked list is. > * The addition of RDF List processing in JSON-LD created many hours > of head-scratching and pain because of the awkwardness of the > RDF data model when it comes to lists. It also prevented us from > implementing lists of lists because the algorithm to do so became > fantastically complex - corner cases related to lists started > mounting fairly quickly and we had to fence the work to not fall > into the endless pit of RDF List related issues. > * We went out of our way to not support RDF Lists in the PaySwarm > implementations we've been doing. It was only when we created JSON-LD > did we figure out a way to use them without having to give > everybody that didn't know anything about RDF, who wanted to > learn the PaySwarm API, a lesson in RDF Lists 101. The solution was > to hide RDF Lists from developers entirely. > > In summary - RDF Lists are difficult to implement, even for people that > know quite a bit about RDF. They are fantastically difficult to grasp > for Web developers. They are really hard to author in many of the RDF > syntaxes. > > I'd like to propose something that the group should seriously consider: > > 1. Add lists as a first-class citizen for all RDF serializations - > deprecate all serializations that don't support lists as first-class > citizens. > > 2. Get rid of the the Seq, Bag and List classes - replace with two > datatypes - rdf:ordered and rdf:unordered. All "lists" in RDF are > ordered by default. > > So, N-Triples and N-Quads could look something like this: > > # ordered list > <s> <p> ["O1", "O2"@ja, <http://example.org/>] . > > # unordered list > <s> <p> ["01", "O2"@ja, <http://example.org/>]^^rdf:unordered . > > or even: > > # ordered list > <s> <p> ["O1", "O2"@ja, <http://example.org/>] . > > # unordered list > <s> <p> ("01", "O2"@ja, <http://example.org/>) . > > If we had started with this, it would mean that RDF Lists would have a > direct mapping to JSON (which got lists right, IMHO). The beauty of JSON > is that by default, the list has order... and if you don't care about > order, you just process the list in any order. If you care about order, > start from the beginning and go to the end. JSON got lists right because > they make the default case ordered and the corner-case unordered. RDF > did it backwards and got it wrong. > > While this idea isn't fully baked, I've been sitting on it for two years > now and thought I should send it out while I was still agitated about > having to foist RDF Lists onto Web developers. This is one of those bits > of RDF that has been hurting the cause for over a decade. Surely, this > has been discussed before? Anyone have a link? > > -- manu > > -- > Manu Sporny (skype: msporny, twitter: manusporny) > President/CEO - Digital Bazaar, Inc. > blog: PaySwarm Website for Developers Launched > http://digitalbazaar.com/2012/02/22/new-payswarm-alpha/ >
Received on Friday, 4 May 2012 13:35:57 UTC