Differences

This shows you the differences between two versions of the page.

Link to this comparison view

doc:faq [2014/06/05 11:38] (current)
Line 1: Line 1:
 +====== FAQ ======
 +
 +===== How can I debug Prolog programs? =====
 +There is a [[http://​www.swi-prolog.org/​pldoc/​doc_for?​object=section%282,​%273.5%27,​swi%28%27/​doc/​Manual/​guitracer.html%27%29%29|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 [[http://​www.swi-prolog.org/​packages/​jpl/​|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...)