Saturday, December 6, 2008

OwlWatcher and Individuals

I've been poking away at a new version of OwlWatcher that uses the University of Manchester OWLAPI as a replacement for Jena. I have had discussions with several people who suggest that Description Logic (DL) based languages are inappropriate for representing processes, such as behavior. Although I think I understand those concerns, I am pressing forward with OWL as the representation language because the issues that lead me to choose OWL haven't really been resolved:

  1. General availability and a large user community
  2. Support for individuals
OWL, augmented, either with custom reasoners or a rule-based extension such as SWRL, still seem to be the best choice. The alternatives, that I have considered are:

  • OBO
  • Common Logic (CL) or similar
  • CYCL

Let's review the alternatives:

OBO - This is the serious competitor, and it maybe that the backend (aka EthOntos) will be based on the OBD platform that BBOP is developing. Actually part of my reason for moving from Jena to OWLAPI is the built-in support for exporting to OBO. I hope they continue to support this - the only existing outboard translators seem to only support OBO Format v 1.0, which doesn't support individuals at all.

This brings me to the other problem with OBO - weak support for individuals. Although version 2 of the OBO Format includes a stanza type for individuals, no version of OBOEdit does anything more than roundtrip them at this point. Furthermore, OBD seems to be moving toward a 'T-box in the A-box' approach. This is a fancy way of saying that classes and class-level relations will be the 'individuals' in the OBD representation. Of course this is consistent with the history of OBO, for example look at how individual-level relations are introduced for the purpose of defining class-level relations.

I am not meaning to criticize the OBO approach - it has proven successful for its central use case of annotating publications. Indeed, I expect this approach will, more or less, be taken in the EthOntos backend, where the focus will, like OBO, be more on the tree-like and lattice-like networks of relations among classes.

However, OwlWatcher is different - the data comes in as observations of individual events, which are used in the construction a class hierarchy. In fact, the primary operation is more a type of induction or abduction, where classes are proposed, based on the observed properties of their observed individuals. Ideally, OwlWatcher will provide tools for assisting the user in adding restriction definitions to classes that were originally erected as undefined primitives.
I expect OwlWatcher will support a standard Description Logic (DL) reasoner, such as Pellet, and one or more special purpose reasoners, in particular one for temporal reasoning at the object level.

Common Logic - This ought to be a strong contender. Common Logic (CL) is a full, first order language, so there aren't any of the expressiveness issues that OWL and OBO ontologists have struggled with. The very first ontologies I ever constructed for behavior (before Protege) were done with a web-based tool called ontolingua, which used KIF as its serialization language. CL is in someways an extension of KIF, though its native syntax is not lisp-based, as KIF was. The main problem is the lack of tool support, either for the user (editors, preferably with access to some sort of reasoning support) or developers (backends with support for large data stores and reasoner interfaces). The main web presence for CL seem to be the pages left over from the (successful) ISO standardization effort, which ended in 2007. I hope support improves for this in the future.

CYCL - Cycorp has released two versions of Cyc to the outside world: OpenCyc and Research Cyc. The former is available on sourceforge, whereas the research version requires a special license from Cycorp. CYCL is a very expressive (n-th order) logic-based language, and the OpenCyc package includes an integrated reasoner and a substantial subset of the Cyc commonsense knowledgebase. CYCL's expressiveness and the inclusiveness of the packages also underlie some of the difficulties I have considered in evaluating them for this project: although CYC has excellent support for Java, the packages are large and only run on recent versions of Windows and particular Linux distributions. I have been able to install and run OpenCyc on a Windows-XP bootcamp partition on a MacBook Pro, so Mac users wouldn't be categorically excluded. However, the package is large enough and difficult enough to install, that I haven't considered using it for the OwlWatcher distribution or the initial version of EthOntos. There may come a time, however, when I will consider trying Cyc in a backend version. Honestly, that will probably have to wait until I have a stable academic position.