Semantic Web REST Gateway; SAWADL

Tuesday, October 28th, 2008

A number of weeks ago, I began work on the software part of my MSc project. That software recently became feature complete.

The software is a gateway that takes what’s on the current Web and lifts it to the Semantic Web. It does that by means of several mechanisms: protocol handlers (e.g., for HTTP), content type handlers (lifting from various content types to RDF, and lowering from RDF to other content types), XML namespace handlers (lifting of XML documents based on document namespaces), and adaptations that for, e.g., certain REST services or URN namespaces can override the handlers and otherwise modify the requests and responses.

A major part of these adaptations is SAWADL, which is SAWSDL applied to WADL. As far as I know, there has been no previous specification of a format that extends WADL with semantic annotations, so I intend to publish such a specification. (Similar formats have certainly been thought of before, however.) The idea is that content and services on the existing Web can, in such a way, be given semantics (according to Semantic Web standards such as RDF) and also be made more RESTful.

My hope is that this type of software will both simplify usage of services on the Web and make them more powerful, particularly with regards to interoperability. Oh, and I should mention that the gateway itself operates according to REST principles and, for any URI given to it, acts as I believe should be best practice for a RESTful and Semantic Web. E.g., if asked for a HTML document (in the HTTP Accept header), that’s what it will return, and if asked for RDF XML or JSON-format data, it will give you that, for any Web resource.

Ok, I’ve finished my rather late espresso now and the shop’s closing. Anyway, I believe I’ll do some more posting about the software and the ideas behind it. Hopefully, I’ll be able to post the software itself (and its source) on the Web.

Next 5,000 Days of the Web

Tuesday, August 12th, 2008

Kevin Kelly, founding executive editor of Wired magazine, last year had the following prediction for the next 5,000 days of the Web. (Warning: TED intro, although not as bad as it used to be.)

I agree with Kelly’s understanding of the Semantic Web and the future of the Web. My ambition is that the project I’m working on now will be a step in the direction of what he’s talking about.

By the way, isn’t BookCrossing something that already brings specific books into the Internet of Things? I thought of this as I had the pleasure of picking up a BookCrossing-registered book yesterday, and was able to see where the book had been and add my own entry to its journal.

Project Wiki

Tuesday, July 15th, 2008

To help keep everyone up-to-date with the work I’m doing on my project, I set up a new wiki for it (a MediaWiki). The idea is that by subscribing to a feed of recent changes, there will usually be no need for emails etc. as notifications of work that has been done.

For now, I don’t want to give everyone either read or write access. That was easily taken care of by adding the following to the LocalSettings.php file:

$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['read'] = false;
$wgGroupPermissions['*']['createaccount'] = false;

The first two lines (for ‘edit’ and ‘read’) restrict editing and reading to registered users. The last line (for ‘createaccount’) also restricts account creation, to prevent anyone from being able to sign up and get access to the wiki. By default, sysops still have access to account creation: log in as Sysop, go to the Special:Userlogin page, choose to create an account, fill out the details for the user to be given access (except password), and use the by email button. This will send an email to the user containing a URL to the wiki and a temporary password that will allow him or her to log in and set a new password.

Finally, to ensure that feed readers such as Google Reader will still be able to fetch the recent changes feeds, I allow anonymous access to (only) the recent changes page (also in LocalSettings.php):

$wgWhitelistRead = array('Special:Recentchanges');

Entries (RSS)