This project has been initiated in Cogcomp group and is an active ongoing collaborative research project. This research is the continuation of Learning based programming idea [1] and its first implementation called Learning Based Java (LBJava) [2]-- which is itself is an active project currently. The main idea in Saul [3] is to extend LBJava to work in relational domains and enable programming for structured output prediction models. Shifting from Java environment to Scala helps moving towards a more declarative problem specification and writing declarative learning based programs. Saul emphasizes on separating the aspect of data modeling and knowledge representation from the configuration of the learning models. Declaring a generic data model allows various learning configurations to exploit arbitrary structural characteristics and global relationships expressed in the data model or in the first order constraints imposed on the output variables. This highlighted issue in Saul has led to investing on a declarative querying language as an important part of Saul's functionality and flexibility in using raw data from heterogeneous resources.


Here is the GitHub repository of Sual project. There is a newer version in this mirror GitHub repository HetSual and you can DOWNLOAD the jar file of the latest version and use it as a dependency in your projects.


Past workshops:


If you would like to run the Saul examples the data folder is here. You will need to copy the whole data folder in Saul project's root folder.



  1. Dan Roth, Learning based Programming, Innovations in Machine Learning: Theory and Applications, 2005.
  2. Nicholas Rizzolo, Learning Based Programming, UIUC PhD thesis, 2011.
  3. Parisa Kordjamshidi, et al. Saul: Towards Declarative Learning Based Programming, IJCAI, 2015.

Parisa Kordjamshidi