|
about
who
project page
mailing list
documentation
demo
news
downloads
join
|
|
Enzyme, simply put, is an engine for storing structured data for
structured searching.
Under the umbrella of this simple idea, the Enzyme project consists of several
subprojects.
- The first is the original student profile management system which was
developed at Catalyst Recruiting. This is a fully operational, release-stage
MySQL-backed PHP application. Students can register and enter all of their
profile information using the Profile Builder. Potential employers can search
the profiles by specific criteria using the Profile Search form. There is some
documentation and a demo.
- The second is the Enzyme Modules which consist of the different components
that make up the student profile system, broken down into separate packages.
The reason for this is that in a given application you may not need or want
to build a full-fledged structured storage, search and display system--you
may only need certain components of the system. Also, these modules are
intended to generalize to any type of structured data system, not just student
profiles. The modules are:
- EnzymeTemplates -- the template system for displaying structured data.
- SQL Abstraction Layer (SAL) -- a class for handling and generating complex
SQL queries.
- OOHFORMS-extra -- enhancements to the PHPLIB
oohforms library for generating validated, database-backed form elements.
- SearchForms -- the form system for the search side, for doing structured
searches.
- Third is the XML-based Enzyme, also known as enXyme. The goal of this
project is essentially to be able to map an arbitrary DTD (or XML schema) into
a fully-featured Enzyme system. To call it vaporware is a little harsh, but
it is under heavy development right now, so some of the features described
here are goals. If you are interested in joining the development effort, we
sure could use you. Contact me, Clark Freifeld. This project consists of a few modules:
- XMLschemaParser -- this is really the heart of enXyme: if it does its job
correctly, we can then apply any or all of the Enzyme Modules to the relational
database schema that the XMLschemaParser generates. What this does is take
an XML schema (which describes a hierarchical data structure, a class of XML
documents) and generate four things: 1) set of enzyme-compatible database
tables 2) form objects for gather and search 3) the appropriate PHP object
hierarchy necessary to the EnzymeTemplates module 4) the generic, XML only,
template files for regenerating the XML instance documents from the database.
- InstanceParser -- this takes the PHP object hierarchy and uses it as a
guide for parsing XML instance documents into the database.
The system has a wide range of potential applications:
- Recipes: on the gather-side, you enter a bunch of data for the recipe,
say, type of dish (main/side/appetizer), cooking time, ingredients, the
procedure, etc. Then on the search side, one can say "show me all recipes
that are main dishes, cooking time less than 30 minutes, that contain
pork."
- Dating: on the gather side, people enter their personal data: gender
seeking gender, age, hair color, hobbies, etc. The on the search side, one
can say "show me all men seeking women, older than 32, who enjoy skiing."
- Apartments: you enter the number of bedrooms, size, location, rent, etc.
For the search, you can say "show me all one-bedroom apartments in the
Boston area costing between $500 and $1000 per month."
The list is endless. Of course, many existing web sites do these things,
but why reinvent the wheel every time? Our goal is to abstract the process
into a core engine and a set of tools so that you can have a basically
functioning gather+search site of any kind up and running in minutes. We
have all the code for the CatalystRecruiting site, but it is very much
specific to the needs of that particular application. We are looking for
developers experienced in PHP and SQL (or willing to learn by doing) to
help us turn this code into something useful. We are of course also
looking for people to do testing, documentation, design, etc. We're wide
open.
|