no way to compare when less than two revisions

Differences

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


Previous revision
Next revision
faq [2013/02/12 17:41] – external edit 127.0.0.1
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...)