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:

  • Description language, no programming language
  • Class taxonomy of objects, actions, events,…
  • Instances of these classes (e.g. environment models, experiences)
  • Robot capabilities/action requirements
  • 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, …
  • 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…)