What is PolyFARM?

PolyFARM (Poly-machine First-order Association Rule Mining) is a data mining program which finds first order associations in Datalog data. It is based on the ideas from WARMR (L. Dehaspe and L. De Raedt (1997) Mining Association Rules in Multiple Relations. In Proceedings of 7th International Workshop on Inductive Logic Programming). It is described in Clare, A. and King R.D. (2003) Data mining the yeast genome in a lazy functional language. In Practical Aspects of Declarative Languages (PADL'03).


In HTML (sorry, it's quite sparse at the moment).
PADL'03 paper available as pdf.

Example files


Compile source with

hmake -ghc -package lang -O Farmer
hmake -ghc -package lang -O Worker
hmake -ghc -package lang -O Merger
hmake -ghc -package lang -O CreateAttributes
hmake -ghc -package lang -O RemoveDuplicates
(This assumes you have hmake, ghc and happy installed. It is standard H98 so it will also compile under nhc98)

To-Do list and known bugs

  • documentation
  • check BGKBparser with/without hiertrees + normal background
  • allow better constraints
  • better error messages for loading and compiling user files, or a linter for settings + background knowledge
  • general code tidying and rethinking module structure
  • why does specialise not allow key literal to be used?
  • use hierarchical libraries
  • speed it up!

Recent changes


  • Intervals added (eg "mode(sq_len(+,intervallist [15 - 349, 349 - 485, 485 - 667, 667 - 1005, 1005 - 6487])).")
  • Constraints improved - can now ask for new variable that doesn't unify with any existing variables using ^ (eg "mode(ss(+,^,constlist [a,b,c],^)).")

Copyright: PolyFARM is copyright to The University of Wales Aberystwyth 2002. Due to university policy, this software may only be used in applications of a non-commercial nature.