Practicum 6: Integrating PDDL and a KB#
Practicum date: Tuesday, March 17, 2026, 23:59
Course: RO47014 Knowledge Representation and Symbolic Reasoning, TU Delft, CoR
Instructors: Juri Morisse, email: J.S.Morisse@tudelft.nl
In this practicum you will practice working with both PDDL and an ontology. First, you will train your understanding of both by answering: What knowledge should be modeled where? Then, you practice their integration. Lastly, we prepare the homework assignment.
We expect the practicum to take 90 minutes: 15 minutes for discussing the last homework, 60 minutes for the exercises, and 30 minutes for preparing the homework.
You do not need to hand in anything for this practicum.
Preparation#
Before completing this practicum, you should have attended/watched Lecture 6 on the differences between and integration of PDDL and ontogies. It is assumed that you are familiar with:
PDDL
Ontologies
The differences between PDDL & Ontologies
The kind of problems that require integration of PDDL & Ontologies
Different approaches for integrating PDDL & Ontologies
One example for how to translate OWL concepts into PDDL concepts
Exercise 1: Assign Knowledge#
A robot uses both PDDL and ontologies to represent its knowledge. The following are statements the robot needs to know. Decide where they should be represented: PDDL (problem or domain) or ontology (schema or data)!
Picking up an object changes the object’s location.
The robot can open doors.
A door is connecting two rooms.
Fragile objects should be picked up with less force.
PickUp, Place, and Push are all actions performed by the robot’s arm.
D1 is the door between the living room and the kitchen.
There is an apple A1, a mug M1, and a newspaper P1 on the table.
A mug is a container in which liquids can be poured and which usually is fragile.
Exercise 2: Integrating PDDL & Ontology#
Consider the scenario from the lecture: A robot is tasked to “Throw the apple away!”. PDDL models all required actions but does not contain the knowledge necessary to decide into which bin the apple belongs. Luckily, the robtos also has ontological knowledge about waste classification.
The initial PDDL domain file
(define (domain trash)
(:predicates
(at ?o ?l)
(holding ?o)
(in ?o ?b)
)
(:action pick-up
:parameters (?o ?l)
:precondition (at ?o ?l)
:effect (holding ?o)
)
(:action put-in-bin
:parameters (?o ?b)
:precondition (holding ?o)
:effect (in ?o ?b)
)
)
The initial PDDL problem file
(define (problem throw-apple)
(:domain trash)
(:objects
apple
green_bin blue_bin yellow_bin
table
)
(:init
(at apple table)
)
(:goal
;; TODO: complete
)
)
The ontology
Apple ⊑ Fruit
Fruit ⊑ OrganicWaste
OrganicWaste → belongsIn GreenBin
GreenBin ⊑ WasteBin
Part 1: Prepare Integration#
Decide what exact information should be transferred from the ontology to the PDDL files.
Part 2: Define Translation#
Decide how this information can be translated from the ontology into PDDL.
Part 3: Reflection#
Can you think of a different approach? If so, describe and compare both approaches.
Homework Preparation#
Cloning the Homework Repository#
We recommend cloning the homework repository into a new workspace. For detailed instructions, see the homework PDF provided via Brightspace.
Working on the Homework#
To work on the homework, you can simply use the course Singularity image.
Within the root of the homework repository, simply activate the course Singluarity image, e.g. if you pulled the image into ~/Downloads:
cd ~/krr_week6_hw
singularity shell -p ~/Downloads/ro47014_humble_v3.sif
Once you completed mission_planner.py, you can test your solution by:
Start the TypeDB server and keep it running
cd ~/krr_week6_hw
singularity shell -p ~/Downloads/ro47014_humble_v3.sif
typedb server --storage.data=$PWD/typedb_data
In a new terminal, setup the TypeDB database and run your mission planner.
cd ~/krr_week6_hw
singularity shell -p ~/Downloads/ro47014_humble_v3.sif
python3 setup_database.py
python3 mission_planner.py
Submitting the Homework#
When you have completed the assignment, prepare your submission as follows:
Make sure your
mission_planner.pyis complete and testedRun your code one final time to generate
problem_generated.pddlCreate a ZIP file named:
StudentID_Surname_Week6.zipExample:
1234567_Smith_Week6.zip
Include these two files in the ZIP:
mission_planner.py(your implementation)problem_generated.pddl(generated by your code)
Submit your .zip file via Brightspace.