[Zope-Annce] ZOQL Method 0.2.0 released

Stephan Richter srichter@cbu.edu
Sun, 07 Oct 2001 21:17:52 -0500

Hello everyone,

I am very pleased to announce the initial release of ZOQL Method, version 

What does ZOQL stand for? As you might have guessed, ZOQL stands for Zope 
Object Query Language.

What does it do? With ZOQL you can query through the ZODB and retrieve 
objects, as you might be used to from SQL. Other statements, such as 
INSERT, CREATE, UPDATE, DELETE are supported as well. I hope to implement 
the ALTER statement soon. For more details on the language go to: 
http://demo.iuveno-net.de/iuveno/Products/ZOQLMethod/Documentation. The 
online help has also the reference as well as a nice and long example.

Does the ZOQL try to compete with the ZCatalog? No, not at all! In fact, 
ZOQL uses the ZCatalog to implement its Indexes. Yes, ZOQL can use a 
ZCatalog for queries, instead of walking through the tree itself.

Can I create Classes with ZOQL? Yes! You can create Products and put 
Classes into it. This is in particular useful for making temporary classes 
quickly. Later it will also serve as a method to generate Products from 
Case Tools like ObejctDomain. At the moment only ZClasses are supported though.

Does it implement any standard? No! Back in May, when I first thought about 
ZOQL, I looked at many of the current so-called "standards". At the end, 
there were basically three choices left. Use (1) XPath/XQuery, (2) OQL/OCL 
or (3) implement a new language. Well, while XPath is okay, it really does 
not support any object manipulation and XQuery's syntax on the other hand 
is unacceptable for a Python programmer in my opinion. The OQL/OCL is 
supposed to be THE official standard for object-oriented query languages; 
yeah right, after reading a good chunk of the specs it was so obvious that 
it was horribly Java-bias, having three different data structures for a 
simple list...
       Well, so I was left with choice number 3. So I wrote down the 
original language reference and tried to keep it as close to SQL as I 
could. But the next task was to write a parser. This was the end of the 
project, until Thomas Foerster used Aaron Watter's kwParsing engine to 
implement the basic parser last month. Thanks a lot for the work! He gave 
the entire language a Pythonic twist by copying large parts of the Python 
Language Reference. :-) I finally got around to implement the product this 
       If you feel like sending me a hate mail right now, please send it to 

Did you get interested? The main URL is 
http://demo.iuveno-net.de/iuveno/Products/ZOQLMethod, but you can also find 
the files on Zope.org at 

Please feel free to send me any ideas, thoughts, comments, criticism, bugs 
and patches to srichter@cbu.edu!


PS: ZOQL is pronounced 'So cool!' :-)

Stephan Richter
CBU - Physics and Chemistry Student
Web2k - Web Design/Development & Technical Project Management