Ontology Oriented Programming in Go!

Keith L. Clark and Frank G. McCabe


In this paper we introduce the knowledge representation features of a new multi-paradigm programming language called Go! that cleanly integrates logic, functional, object oriented and imperative programming styles. Borrowing from , Go! allows knowledge to be represented as a set of labeled theories incrementally constructed using multiple-inheritance. The theory label is a constructor for instances of the class. The instances are Go!'s objects. A Go! theory structure can be used to characterize any knowledge domain. In particular, it can be used to describe classes of things, such as people, students, etc., their subclass relationships and characteristics of their key properties. That is, it can be used to represent an ontology. For each ontology class we give a type definition - we declare what properties, with what value type, instances of the class have - and we give a labeled theory that defines these properties. Subclass relationships are reflected using both type and theory inheritance rules. We call this ontology oriented programming. This paper describes the Go! language and its use for ontology oriented programming, comparing its expressiveness with Owl, particularly Owl Lite. The paper assumes some familiarity with ontology specification using Owl like languages and with logic and object oriented programming.

To appear in: Journal of Applied Intelligence

Click here for a pdf version of the revised paper (DistKR.pdf, 224K bytes).