Table of Contents
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, …
C++:
- Object-oriented programming language that can interact with Prolog via the SWIPL C++
- Conceptually further away from the internal knowledge representation
- Good library support, therefore useful for external interfaces (WWW, ROS,…)