Bayesian Logic (BLOG) Code and Documentation

Getting and building the code

The BLOG code is stored in a Subversion repository at /afs/csail/group/lis/REPOS/cogarch. This repository is accessible to anyone in the lis AFS group. You can get a copy of the code by running:

svn checkout /afs/csail/group/lis/REPOS/cogarch cogarch

This will create a directory called "cogarch" and put all the code in it. After doing the checkout, you can build the code by going into the new cogarch directory and executing:

ant

If there are errors, please let Brian (or Marti) know.

What's there

The cogarch directory contains a lot of stuff. Here's a quick guide to what's there:

  • blog -- main BLOG code, likelihood weighting and MCMC inference
  • ve -- code for propositional variable elimination (originally by Michael Haimes)
  • fove -- code for first-order variable elimination with counting formulas
  • pomdp -- code for partially observable Markov decision processes (POMDPs) in general (independent of main BLOG code)
  • pomdpSolver -- Java implementation of heuristic search value iteration for POMDPs (originally by Zuoyu Tao)
  • xblog -- code for extended version of BLOG that represents POMDPs
  • common -- utility code that's used everywhere
  • runblog and runxblog -- scripts for running BLOG and XBLOG programs
  • examples -- example BLOG models
  • domains -- example XBLOG models

The repository also contains some third-party code: CUP and JLex for parser and lexer generation; a basic Java matrix package called Jama; a scientific computing package from CERN called colt.jar (used for sparse matrices in pomdpSolver); and Rodrigo de Salvo Braz's original FOVE implementation (braz), which we downloaded for comparison.

Documentation

The documentation for BLOG is fairly sparse at the moment. We have:

  • A syntax reference excerpted from Chapter 4 of Brian's dissertation.
  • A brief usage guide that talks about using the runblog script and specifying evidence and queries.
  • An XBLOG specification that explains how XBLOG differs from regular BLOG.

Probably the best way to get started is to skim through the syntax reference, and then try writing your own model files, using the models in the examples directory as starting points.