Friday, August 22, 2008

Documentation for IRIS

Lately, IRIS drew my attention. Written in Java, it is "an extensible reasoning engine for expressive rule-based languages." Features include safe and unsafe datalog, magic sets and both locally stratified and well-founded semantics.

The code is well written and documented (most of the times anyways) and there is a paper on how IRIS works. Still, there are no architecture-level documents, introducing the software on such level. (Which is understandable - it primarily serves as a research prototype.)

Since I take interest in reasoning and also don't mind learning new stuff about Java in general, I have begun documenting. The goal is to produce an introduction to fill the gaps from the software-engineering point of view. Hopefully, it will then be of help to people intending to learn about the implementation of IRIS or of reasoners in general. Even better, somebody, for example me, might learn something about modeling and documenting.

Currently, the following is planned and already done in parts:
  • high-level overview, visualized by UML and FMC diagrams
  • detailed presentation of some interesting algorithms
  • introduction into the project's structure
  • the java code of IRIS, originating from this effort, hopefully here and there with some more comments and clearer at times
The sources (docbook, images, ...) will be available for download, too. Hopefully, in some weeks this will be finished for good.