I'm happy to report that the first IKS FISE (pronounced like an aussie would say "phase") Hackathon, held in Furtwangen earlier this week, has been a success.
We have implemented a very simple "content enhancement server" to which you PUT or POST content using HTTP requests. The server uses a series of "enhancement engines", plug-ins that can enhance the content with automatically generated tags, entities based on natural language recognition, etc.
All in a very simple way for now, but the important thing is that we have demonstrated our vision of a very simple RESTful engine for semantic enhancement of content, in the form of working prototype software. The services API is extremely simple, and building the system as OSGi services makes it very easy to plug-in new enhancement engines.
To whet your appetite, here's a quick walkthrough.
Starting the FISE server is the hardest part for now, it's all source code that you need to build yourself, including snapshots so don't try it unless you're very familiar with building bleeding edge java software.
Once that's done, however, using FISE is very simple. To add content to it, use an HTTP PUT request like
which, if all goes well, returns a status code 200 and the ID of the FISE content that was stored (/obama in this case).
Then, make a GET request on the same URL to get the metadata of that piece of content, generated by the currently active FISE EnhancementEngines:
The FISE architecture allows for each engine to suggest running its content enhancement operations in asynchronous mode, which can be very helpful for analyzing large items.
So, from the CMS developer point of view, integrating FISE is very simple. Queries are handled in the same way, using HTTP GET requests. The current prototype runs either in standalone mode (in-memory storage, no queries) or on top of Apache Clerezza which provides persistence and SPARQL queries.
On the other side of things, supplying new enhancement engines or wrapping existing ones to make them available in FISE is also very simple - one just needs to implement the following interface (shown in simplified form here, constant declarations removed for brevity):
To create a new engine, one just needs to create an OSGi service that implements this interface, and register it with the FISE runtime.
FISE is in my opinion a very exciting development for the IKS project, fulfilling our hopes of creating an interface between CMS developers, who can use FISE easily from the HTTP side, and semantic researchers, who can provide new EnhancementEngines.
This week's hackathon has more than met the goals set in my presentation at the last IKS workshop in Rome - looking forward to where FISE will lead us!
More info at http://wiki.iks-project.eu/index.php/FISE