Re: OpenLibrary API RDF wrapper on Google App Engine

Thomas,

Nice work! Good to see OpenLibrary data in RDF, and the idea of  
deploying this on App Engine is pretty cool.

Technical comments below -- sorry in advance for picking on all those  
details, I don't mean to be overly critical, just running through my  
usual RDF-on-the-Web checklist.

I'm looking at the headers when asking for HTML:

richard@cygri-2:~$ curl -i http://olrdf.appspot.com/isbn/0316010669
HTTP/1.1 303 See Other
{'status': 'ok', 'result': ['/b/OL9835570M']}
Content-Type: text/html; charset=UTF-8

Is the curly-bracket line intentionally there? I think this isn't a  
valid HTTP response. None of the HTTP clients I tried choked on it,  
but I still doubt it's valid.

You overload your URIs by using the same URI for an RDF web page and  
for a book. For example, is http://olrdf.appspot.com/key/b/OL9835570M  
a web page or a book? It returns content with a HTTP 200 OK status  
code, so evidently it's a web page. But then in the RDF you say it's a  
book. So you use the same URI for two different things. You can fix  
this by using something like ...OL9835570M#it or ...OL9835570M#book  
for the book, so these hash URIs should appear in rdf:about="...".

Fixing the above would also allow you to distinguish between data  
about the books, and metadata about their OpenLibrary records. For  
example, let's consider the RDF pages for authors. In your data,  
authors have ol:revision and dcterms:modified properties. These are  
not properties of the author, but rather of the RDF page that  
describes the author. Thus the subject should be .../key/a/OL1398754A  
for these properties, and /key/a/OL1398754A#author for things like  
ol:personal_name and ol:birth_date. If you want to get fancy, include  
a triple: a/OL1398754A foaf:primaryTopic a/OL1398754A#author.

It would be useful to link back to their books in an author's RDF  
description. (Assuming the OpenLibrary API provides that information  
-- I didn't check.)

Dates (dcterms:issued, dcterms:modified) should be provided in  
xsd:date or xsd:dateTime format, and they should be marked as such  
using rdf:datatype.

Instead of creating properties in the wrapper namespace, you could  
create them at OpenVocab (http://open.vocab.org). This is a Wiki-style  
vocabulary hosting service, so anyone could edit your creations, but  
at the same time it allows you to create nice formal descriptions of  
your terms with very little effort.

All the best,
Richard


On 5 Jan 2009, at 13:21, Thomas FRANCART wrote:

> Hi
>
> I have written a wrapper to expose openlibrary.org api data as RDF.  
> It is
> written in Python and deployed on google app engine.
> You can reach it at these URL :
>  - http://olrdf.appspot.com/key/b/OL5218098M.rdf (replace the key  
> with any
> openlibrary item key)
>  - http://olrdf.appspot.com/isbn/2070394433.rdf (replace the ISBN  
> with any
> isbn10 or isbn13 value)
>
> You can read more about this wrapper here :
> http://mondeca.wordpress.com/2009/01/05/openlibrary-api-rdf-wrapper-on-google-app-engine/
>
> Please let me know if you have any feedback on this; I would be more  
> than
> happy to provide the python code to anyone interested, especially  
> the folks
> at OpenLibrary if they want to host it.
>
> Best,
> Thomas
>
> Thomas Francart
> CTO
> Mondeca
> 3, cité Nollez 75018 Paris France <thomas.francart@mondeca.com>
> Website: www.mondeca.com
> Blog: Leçons de choses <http://mondeca.wordpress.com>

Received on Tuesday, 6 January 2009 12:40:28 UTC