This is an old revision of the document!
FAQ
How can I debug Prolog programs?
There is a graphical debugger in SWI Prolog that is very useful to go through your program step by step, inspect the variable bindings and the open choice points.
Which programming language should I use for what purpose?
KnowRob is implemented in a combination of OWL, Prolog and Java. When creating extensions, it is worth considering which language to implement them in:
OWL:
- Description language, no programming language
 - Class taxonomy of objects, actions, events,…
 - Instances of these classes (e.g. environment models, experiences)
 - Robot capabilities/action requirements
 
Prolog:
- Logical programming language: conceptually close to the knowledge representation, good at searching and pattern matching
 - Useful for functionality interacting closely with the internal representation (OWL gets parsed into Prolog triples)
 - Wrapper predicates to simplify commonly used queries, inference predicates (DL inference, computables,…)
 - Functionality involving (recursive) search, graph matching, reasoning about ontological structure, …
 
Java:
- Object-oriented programming language that can interact with Prolog via the JPL interface
 - Conceptually further away from the internal knowledge representation
 - Good library support, therefore useful for external interfaces (WWW, ROS,…) and for integrating libraries (ProbCog, Weka, Visualization…)
 

