Read Me

Pyke: Python Knowledge Engine
Version: 0.2
Both forward-chaining and backward-chaining rules (which may include python
code) are compiled into python. Can also automatically assemble python
programs out of python functions which are attached to backward-chaining
rules.
COPYRIGHT AND LICENSE:
This is published under the MIT License. The copyright and license are in
the file "copyright_license".
DOCUMENTATION:
The documentation is at:
http://pyke.sourceforge.net
You can download a copy of this documentation to your hard drive:
pyke_doc_html-0.2.tar.gz
See the end of this file for how to regenerate the html files.
INSTALLATION:
Pyke requires python 2.5 (or later 2.x release). Check with:
$ python2.5 --version
or $ python --version
You can download this at:
http://www.python.org
To install pyke with easy_install, at the shell prompt just type:
$ easy_install-2.5 pyke
If you don't have easy_install, you should install it:
download: http://peak.telecommunity.com/dist/ez_setup.py
then (as root) run: $ python2.5 ez_setup.py
Otherwise, you'll also need ply 2.3 from:
http://www.dabeaz.com/ply/
This can be checked as follows:
$ python2.5
>>> from ply import lex
>>> lex.__version__
Then you got two choices for pyke:
pyke-0.2-py2.5.egg
SOURCE DISTRIBUTION:
The pyke source distribution is the file:
pyke-0.2.tar.gz
This contains the pyke source code, documentation (both source and html), and
examples.
EXAMPLES:
Pyke examples may be downloaded separately from sourceforge if you've used
easy_install to install pyke (or installed the .egg file):
pyke_examples-0.2.tar.gz
Each example has a README file that explains how to run it.
The family_relations example is a good place to start. It shows several
solutions to the same problem. It also has an example of a few rule
optimizations that result in a 100 times performance improvement on this
problem.
The sqlgen example uses MySQL and the python MySQLdb module. It has a
function that reads the schema information into pyke facts. Then the rules in
database.krb automatically figure out how to join tables together to retrieve
a list of column names, generate the SQL select statement and return a plan to
execute this SQL statement and return the results as a dictionary.
The web_framework example uses the sqlgen example. This demonstrates the use
of multiple rule bases. The web_framework is a WSGI application that uses the
HTMLTemplate package. It gets the column names from the HTMLTemplate and
feeds those to the sqlgen example to generate a plan to retrieve the data. It
then builds a plan to populate the template and return the finished HTML
document. The example includes a wsgiref simple_server setup to run it as an
http server so that you can access it through your browser.
TO INSTALL FROM THE SOURCES:
$ python2.5 setup.py install
RUNNING DOCTESTS:
To run doctests on all *.py files in the pyke directory, cd to the pyke
directory and:
$ ./testpyke
COMPILING THE COMPILER.KRB FILE:
In pyke/krb_compiler:
$ python2.5
>>> from pyke import krb_compiler
>>> krb_compiler.compile('.', 'compiled_krb', ('compiler.krb',))
$ cp compiled_krb/compiler_bc.py .
$ rm -rf compiled_krb
EXAMPLES:
Currently there is only one example. Read its README file for how to run it.
COMPILING THE DOCUMENTATION:
To compile the documentation into html, you'll need docutils and rest2web.
If you're running linux, your distro may have packages for these already.
Or you can:
$ easy_install-2.5 rest2web
I used version 0.4.1 of docutils and 0.5.0 of rest2web. I don't know if
earlier versions work OK or not.
To check your versions:
$ python2.5
>>> import docutils
>>> docutils.__version__
>>> import rest2web
>>> rest2web.__version__
If your linux distro doesn't have packages for these, and you don't want to
use easy_install, you can get them at:
http://sourceforge.net/projects/docutils
http://sourceforge.net/projects/rest2web
To regenerate the html, cd to the doc directory and:
$ r2w r2w.ini
This regenerates everything from doc/source into doc/html. It takes about
2 seconds to run.
If you want to run doctest on all of the *.txt files in doc/source,
cd to doc and:
$ ./testdocs