This is an old revision of the document!
Important concepts
This page describes some of the main concepts behind the KnowRob system. For an introductory paper, please have a look at Knowledge Representation for Cognitive Robots. Moritz Tenorth, Dominik Jain, Michael Beetz. Künstliche Intelligenz, Springer, volume 24, 2010
Description Logics, Classes, Instances, OWL, Prolog
In KnowRob, all knowledge is represented in the Web Ontology Language (OWL). This XML-based format allows to formally describe relational knowledge in a Description Logics (DL) dialect.
For formally modeling knowledge, it is very useful to distinguish between general relations and environment-specific information. In OWL, this is reflected by the distinction between classes and instances. Class knowledge is described in the so-called TBOX (terminological box); knowledge about instances of these classes is contained in the ABOX (assertional box). The relation between classes and instances is similar to object-oriented programming.
KnowRob is implemented in SWI Prolog. On the one hand, Prolog is used for loading, storing and reasoning on the knowledge which is represented in OWL. When OWL files are loaded into the system, they are internally stored as triples
rdf(Subject, Predicate, Object)
and can be accessed with special predicates, e.g. rdf_has(S, P, O). These predicates operate on the internal representation that is created from the OWL files and handle properties like transitivity of properties etc. On the other hand, Prolog is used as a programming language to implement specialized reasoning modules and to interface the knowledge base with external data.
It is important to understand that KnowRob separates knowledge about the world (which is, as far as possible, represented in OWL) from implementation issues and deduction rules (which are implemented in plain Prolog). OWL's strict formal semantics, its typing and the existing reasoning methods are the main reasons for this separation. In order to profit from these properties, it is thus necessary that information which is read from external sources by Prolog predicates is transformed into a representation that is compatible to the OWL knowledge.
System architecture
KnowRob is realized in a very modularized way. A base system, provides the basic reasoning capabilities and is largely independent of the domain of interest. It consists of Prolog, its semantic web library that serves for loading the OWL files, the Java/Prolog interface which serves for interfacing existing libraries written in Java, and the system of computables described earlier.
------------------------ ------------------------- | perception interface | | action interpretation | ------------------------ ------------------------- | | --------------------- | ---------------------- | ----------------- | spatial reasoning | | | temporal reasoning | | | ROS interface | --------------------- | ---------------------- | ----------------- | | | | | ---------------------------------------------------------------------- | KnowRob-Base | ---------------------------------------------------------------------- | | | --------------------- ----------------------------- --------------- | SWI Prolog SemWeb | | JPL Java/Prolog Interface | | Computables | --------------------- ----------------------------- ---------------
On top of it, the Knowrob-Base system represents general class knowledge of the household and kitchen domain in form of an ontology. This ontology provides the robot with the general terms it 'thinks' in.
Extension modules plug into the system and provide e.g. specialized reasoning capabilities or interfaces to external data, e.g. to read object detections from the vision system. These modules mainly operate on the level of instances.