Constraint satisfaction problems' programming or CSPs are mathematical problems where one must find states or objects that satisfy a number of constraints or criteria. CSPs are the subject of intense research in both artificial intelligence and operations research. Examples of CSPs include Sudoku or map coloring problem where to adjacent part of a map cannot have the same colour. The ability to allow people to define their problems and letting the computer solving them appears to be part of the next generation of computing.


This project will have for aim to help the user in creating their own problems using ontologies to guide them in selecting their variables, assigning them values and adding constraints. The two main goals will be investigating a methodology for classifying csp problem (probably about cars) and invastigating how ontological information can be used to assist users in creating csps. We would then create an ontology for a specific domain and suggest variables and their possible values to the user so he can create his CSP. Later on, we would use several ontologies from different domains.


Many research has been made in CSP, particularly by the AKT group in Aberdeen. It is therefore very likely that this project will become reality. However, it might be possible that I will not have time to successfully extract information from the ontology to help the user as expected. Particularly if it takes lots of time to learn the tools and the libraries I will use.


A simple computer with an Internet access will be needed for this project. Software like Protégé will be used to create the ontology and Jena, a Java framework for building Semantic Web applications, will be used by the system to read this ontology. Choco, a java library for constraint satisfaction problems, will be needed as well to create and solve the CSP. The user interface will be created using a drawing software such as the Gimp, and a Java IDE such as Eclipse for all the code. Finnaly, a webserver such as JBoss or Tomcat will be needed to host the application.


  1. Research: until 11/06. Learn Protégé, Jena, CSP with Choco.
  2. Software Development: until 17/06
  3. Coding: until 30/07
    1. first week of july: create the ontology with Protégé.
    2. second week: get information from the ontology using Jena.
    3. third week: display the information to the user and let him create and solve the csp.
  4. Testing: throughout the project with a end-user session the first week of August.