|ExtrAKT from University of Edinburgh|
What's the Problem?
Ontologies have play a central role in knowledge engineering. Systems have been implemented which help individuals and groups develop them, detect inconsistencies in them, and merge two or more ontologies. Ontologies are seen as the essence of a KB, i.e. they capture, in some sense, what is commonly understood about a topic by domain experts. However:
Towards a SolutionThe basic idea is this:
To write a symbolic program it is necessary to use an ontology that, although perhaps not complete for a given domain, is used consistently within that program (otherwise if it were inconsistent this would lead, under the appropriate test conditions, to operational problems of the system in which the ontology is embedded). Thus, the challenge to extract ontologies from existing knowledge based systems. We chose Prolog programs as our starting point because these have a declarative style of description, blurring the distinction between programs and knowledge bases. We hope subsequently to extend our methods to other programming languages.
The method we use to hypothesise ontological constraints from source code is based on Clark's completion algorithm (see technical outline). Normally Clark's completion is used for transformation of logic programs where we are concerned to preserve the equivalence between original and transformed code. It therefore is applied only when we are sure that we have a complete definition for a predicate. However, we can still apply it in "softer" cases where definitions are incomplete - the result being that the ontological constraints we extract may not be all of those we could state about the domain of application.
We have produced a basic system for extracting from Prolog source code ontological constraints of the sort described above. Our tool can be applied to any standard Prolog program but currently is likely to yield useful constraints only for predicates which contain no control-effecting subgoals. The screenshot below shows the tool being applied to a simple example of animal classification. The constraints extracted for this program appear in the lower window of the screenshot. The upper window lists the names of the concepts for which we can extract ontological constraints. The middle window shows extracted competence descriptions: describing outputs which might be produced by the program provided that given external information is supplied to it. Such descriptions are of use in service brokering, which we hope to link to our extraction tool.
The next screenshot shows the tool being applied to a more complex Prolog program: a basic planning system. For this program the ontological constraints are more complex (for example they contain structured terms) and they also involve a more extensive domain-specific vocabulary (for instance the term on(X,Y) is used to say that item X is positioned on item Y). In future we hope to add to our extraction tool (which currently is fully automatic) a range of editing facilities to allow extracted constraints to be generalised and adapted with minimal effort.
Technical details of our algorithm and its foundations in computational logic are described in our technical outline.
Take a Guided Tour
A link to the QuickTime movie, which will open in a separate window.
We show in our technical outline how these sorts of constraints, which we extract automatically from Prolog source code, can be used automatically to check another Prolog program purporting to use the same ontology.
Other relevant documents: