Google Summer of Code 2007 : Proposal


Creating plugins for embedding/producing RDF/XML and microformats in Forrest content objects


Oshani Seneviratne

Email ,


Community focused data representation schemas such as RDF and Microformats are gaining in popularity in many socially-oriented web sites. Such RDF schemas are FOAF (Friend Of A Friend), DOAP (Description Of A Project), DOAC (Description Of A Career), SIOC (Semantically Interlinked Online Communities), etc., and various Microformats are hAtom, hCalendar, hCard, adr, geo, hReview, hResume, rel-directory, rel-nofollow, rel-tag, xFolk, XFN, XOXO, etc.

This project aims to create plugins in order to facilitate embedding of such formats in the Forrest content objects.

Project details

RDF/XML is a general method of modeling information and acts as a container for the various XML syntax formats. Microformats are markup that allow expression of semantics in an HTML or xHTML web page. These microformats include specific HTML attributes such as 'class', 'rel' and 'rev' in the HTML markup.

For each of the formats that is to be supported in Apache Forrest as mentioned above in the abstract, an XSL template will be written. The original document in the particular RDF format will be processed with the XSLT code that was specifically written for that format. This will generate the desired document format used by Apache Forrest.

The plugins that are planned to be delivered at the end of this project will extend the functionalities offered by Apache Forrest. It will enable a user to integrate many socially oriented XML formats into one universal XML format through the publishing framework.

Note: The plugins created will work with the skins and no dispatcher code would be created.

Project plan

I have identified several key stages in the project. These stages would act as an escalation strategy and hopefully guide me to the successful completion of the project. Wherever and whenever possible, I hope to stick with test-first development strategy and get valuable feedback from the mentors, other Forrest developers and the user community at large.

Stage 1: Initial planning and design

During this stage I hope to study about Apache Forrest in depth and understand about plugin development further. In addition, I would get myself familiarized with the related technologies such as Cocoon pipelines. Finally, I hope to plan out the development tasks and the design for the plugins.

Stage 2: Prototype plugin for FOAF

The plugin for FOAF would be developed first and tested with an example. It will generate the HTML view of the FOAF data. Additionally this plugin could also be used to create JSON output.

Stage 3: Addition of other plugins

Based on the feedback from the mentors, and other Forrest developers on the FOAF plugin, other required plugins will be added one by one along with the associated examples. Plugin docs will themselves act as test cases, and I will provide valid and invalid documents to validate the correctness of the plugins.

Stage 4: Final touch ups, Testing and Documentation

During this stage, the code, configurations and resources for the plugins would be integrated into Forrest and tested rigorously. A testing framework such as WebTest would be used for testing purposes. Documentation would also be completed for the final evaluation.

About me

I am currently a final year undergraduate student at the Department of Computer Science & Engineering of University of Moratuwa , Sri Lanka (UoM) - the leading technical university in Sri Lanka.

Soon after finishing my undergraduate studies at UoM by July 2007, I will be starting my graduate studies at the Massachusetts Institute of Technology from September 2007. Since my research interests are in Distributed Computing and The Semantic Web, I will be joining the Decentralized Information Group at MIT and start my research under the guidance of Sir Tim Berners-Lee.

I took part in Google Summer of Code 2006, and obtained the Apache committership for my contributions to the Apache Woden project in developing the Axiom based WSDL2 document parsing.


This project interests me because I believe that it would give me an opportunity to do an implementation based on the things I have learned so far. Recently these various RDF formats was the hottest thing I learned, and I was very happy that this particular project was listed as a GSoC project under Apache Forrest.

If I get selected for this project, it would me my second GSoC. I really liked doing it last time and I guess this time too I would be able to successfully complete it! I consider this as a wonderful opportunity to learn new things, test my skills, interact with the Apache Forrest community (which would be a new community to me) and finally deliver something useful.

Why I am the best candidate for this project?