Twine and Linked Data

A little while back I wrote briefly about first impressions of Twine. Now that the recent flurry of Twine-related analysis has died down, and a few more people have had the chance to actually use the system, it’s probably a good time to look at what Twine has to offer from a Semantic Web point of view. Given Tim‘s recent post that emphasises the importance of Linked Data to the Semantic Web concept, and Nova Spivack’s follow-up post, the timing is even better.

Speaking briefly as Joe User, my first impression was that Twine doesn’t yet offer me any clear benefits over del.icio.us. Yet Another Popularity Arms Race is kind of fun while people build up their number of connections, but this masks a bigger issue that I’ll get to in a moment. Despite not planning to ditch del.icio.us any time soon, I’m not going to criticise Twine particularly from a user perspective. Getting these things right is hard, and it is still in private beta. However, the one area where I have to comment (constructively, I hope) is regarding Twine’s use (or otherwise) of external data.

For me (and many others) the Semantic Web is all about structured, linked data, and the reuse potential this creates. I don’t get the impression that this is at all divergent with the view held at Radar Networks. Unfortunately this principle isn’t yet fully embodied in Twine as far as I can tell. That’s a real shame, and a missed opportunity to demonstrate the power of non-silos.

This issue struck me from the moment I signed up. There was no option to provide the URI of a FOAF file from which my profile could be populated with people I know, a photo, location data and links to other online accounts I hold. Instead I had to recreate all this information manually, despite much of it being out there on the public Web here, and here, and also here ready for consumption. I even had to upload a photo.

For an application that claims to be Semantic Web enabled this is almost unforgiveable. Sure, not everyone has a FOAF file (but how many more have a photo online?), but for those who do and have wondered what to do with it this would be a great payback, and would in turn encourage more people to create one, or sign up with services like MyOpera (hey, that’s why I blog here) and Revyu that create FOAF on their behalf.

For me, probably the low point of this signup process from a Linked Data perspective was having to enter my location as a text string. In a world graced by DBpedia and Geonames this really shouldn’t be happening. In fact I’ve since gone back and replaced the textual location with the URI of Birmingham (UK) from DBpedia (http://dbpedia.org/resource/Birmingham) but of course it’s not actually a link in either the HTML or RDF output.

Just in case anyone missed it, yes, there’s RDF data describing things in Twine. Hurray! Let’s not underestimate the significance of this. But, and I’m afraid there is one, Marshall Kirkpatrick’s comment about the lack of RSS output is just the tip of the iceberg. I don’t just want RSS, or fragments of RDF, I want Linked Data in RDF.

Sticking with the profile theme, when I signed up I added a number of links to Web pages with which I’m associated, such as this blog, my profile page on Revyu and the Platform site at Talis. To Twine’s credit these are all exposed in the RDF document about me that is generated from my profile data. Great. Umm, except that they’re referenced using the property http://www.radarnetworks.com/2007/09/12/basic#url rather than something in more widespread use, such as http://xmlns.com/foaf/0.1/page. Likewise my “account” is not a sioc:User, and there’s no statement here saying that the URI that identifies me (http://www.twine.com/item/1tjtp3mx-185) identifies a thing of type foaf:Person.

One of the key things about creating network effects on the Web of Data is not just reusing those URIs that identify “things” (like the place “Birmingham”), but reusing widely adopted properties and classes from vocabularies/ontologies such as FOAF, that are widely understood by applications. Of course there may be a mapping defined between http://www.radarnetworks.com/2007/09/12/basic#url and foaf:page, but unfortunately I can’t tell, as the ontology URI http://www.radarnetworks.com/2007/09/12/basic# just 404s. Linked Data principle number 3: “When someone looks up a URI, provide useful information.”

It is pleasing to see that Twine has minted a URI for me (http://www.twine.com/item/1tjtp3mx-185) that is distinct from the page on the site that describes me (http://www.twine.com/user/tomheath). This is definitely good. To really play nice in the world of Linked Data, however, there are a couple of other tweaks that are needed. If I dereference the URI that identifies me, I currently get a 302 Found response that redirects me to the page about me at (http://www.twine.com/user/tomheath). The important bits of the headers look like this:

GET /item/1tjtp3mx-185 HTTP/1.1
Host: www.twine.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

HTTP/1.x 302 Found
Content-Length: 0
Date: Fri, 28 Mar 2008 18:06:21 GMT
Location: http://www.twine.com/user/tomheath
Content-Type: text/plain; charset=UTF-8

This needs to be changed to a “HTTP 303 See Other” redirect in order to be in line with the finding on httpRange-14. There is also some work to be done with the content negotation on the site. At present, if I dereference my URI and ask for application/rdf+xml, I get a 200 OK response and an RDF document returned. It’s seems that I am not my homepage, but I am my RDF description.

(The “How to Publish Linked Data…” tutorial has more on these issues.)

Weirdly the RDF I get back from this request is different to that from the RDF version of my profile page. This time I am a basic:Person (but not a foaf:Person), there’s no sign of my location or links to my other Web pages, but links to all my connections are given.

I imagine that all these sorts of niggles will be ironed out as the site develops further, but in the meantime Nova might like to slightly tame the claims he makes about support for Linked Data in Twine. Despite saying that “You can learn more about Twine’s support for Linked Data and see some examples here“, the example given does not show Linked Data, but simply an RDF fragment describing the book Jurassic Park. Perhaps the next iteration will have owl:sameAs links to http://dbpedia.org/resource/Jurassic_Park and http://www4.wiwiss.fu-berlin.de/bookmashup/books/0394588169, and say that the author is http://dbpedia.org/resource/Michael_Crichton. Then there’ll really be some claims to make 😀

Having picked many holes, and hopefully provided some useful feedback, my final comment is a feature request. I think is on Radar’s, err, radar, but deserves to be aired for the sake of completeness. One of the features I’d most like to see in Twine is greater native handling of different types of things. Right now I can only add one of a finite list of things (audio, book, bookmark, event, person, etc). In order to truly scale I think an open world view needs to be taken on this, where even the “Add Item > Other” menu has an “Other” option, and types can be drawn from data on the Semantic Web at large.

For example, right now “Review” is not an explicitly supported type. Nor is “Cheese”. I would like to be able to add a URI such as this http://revyu.com/reviews/e707061801ce1f020d8ca1ed75e50d0e4daeb6e3 to Twine, and the system then tell me that it’s a review, not the other way around. At that point the claim of being able to tie it all together will really hit home.

Comments are currently closed.