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.

Reading

Wednesday, June 25th, 2008

My thesis work at the Knowledge Management Research Group at KTH is going to involve the Semantic Web, REST and some JavaScript. Because of that, I’ve been reading up on those technologies. These are some of the books that I’ve been reading:

A Semantic Web Primer by Grigoris Antoniou and Frank van Harmelen is a very good introduction to the Semantic Web for those new to the field. While I used it mainly to make sure that I hadn’t missed anything important, I did gain an improved understanding of some areas. Particularly the chapter on mathematical formulations of the Semantic Web was interesting to me, although perhaps not all that useful for my work.

RESTful Web Services by Leonard Richardson and Sam Ruby offers an architecture for RESTful web services: the Resource-Oriented Architecture (ROA). What is and isn’t REST is a much debated topic.  Richardson and Ruby describe what they believe is RESTful and what isn’t. Thanks to their discussions, I was able to form my own opinions on what I consider to be good RESTful web services and what their advantages and limitations are.

JavaScript: The Good Parts by Douglas Crockford explains which features of JavaScript are good, and which are not that good and should be avoided. Everyone who’s programming in JavaScript ought to listen to Crockford (you can watch his talks at YUI Theater). And perhaps everyone who isn’t should listen to him as well; JavaScript is actually a great language once you get past the bad parts.

Pebble Migration

Saturday, March 8th, 2008

In order to migrate this weblog from Pebble 2.2 to WordPress 2.3.3, I created a small, quick-and-dirty migration script. And in case anyone else might have use of it, I’m putting it here: pebble-wordpress.py, pebble-wordpress.xsl.

The script requires a Python installation (tested with version 2.5) with 4Suite. Once you have that, follow these steps:

  1. In Pebble, export your blog as a ZIP file (this is located under Utilities). Extract all files.
  2. In WordPress, manually create all categories and tags that you’re using in Pebble. Lists of these can be found under /blog/categories/ and /blog/tags/. One simple way of creating the categories and tags is to write a new post and add all categories and tags to it.
  3. Download the above files (pebble-wordpress.py and pebble-wordpress.xsl) into the same folder. Open pebble-wordpress.py in a text editor and modify the strings at the beginning of the script. If you have several WordPress users, also edit pebble-wordpress.xsl (modify the line beginning with post_author; set the correct user id). Further modifications to the XSL file are necessary if you do not use the default WordPress table names.
  4. Run pebble-wordpress.py.
  5. Import the newly created file named wordpress-sql.txt into your WordPress database.

I make no guarantees that this will work for your setup. The script does not take Pebble static pages into consideration as I haven’t used any such pages (if you have, feel free to modify the script and send your changes to me).

Entries (RSS)