This is an old revision of the document!
FAQ
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…)