Print

Print


On Fri, Sep 3, 2010 at 8:51 AM, Mike Taylor <[log in to unmask]> wrote:
> On 3 September 2010 13:44, Tim Williams <[log in to unmask]> wrote:
>> On Thu, Sep 2, 2010 at 4:18 PM, Mike Taylor <[log in to unmask]> wrote:
>>> On 2 September 2010 18:12, Tim Williams <[log in to unmask]> wrote:
>>>> I have this need to support complex boolean queries within a field.
>>>> I'd like to not have to repeat the 'index relation' over and over
>>>> within the statement.  Rather, I'd like something like
>>>>
>>>>   title = ((fish OR turtle) AND sea) - though, much more complex -
>>>> and don't want to have to write:
>>>>
>>>>  ((title = fish OR title = turtle) AND title = sea)
>>>>
>>>> Logically, it's just projecting the index and relation upon the
>>>> enclosed terms.  Before we depart from the CQL spec I thought I'd see
>>>> if there was a way to get similar 'shortcutting' using build-in
>>>> extension mechanisms?
>>>
>>> Although the formal specification of CQL stupidly prohibits this
>>> useful and unambiguous syntax, most or maybe all actual
>>> implementations support it -- certainly the C/C++ parser in YAZ,
>>> CQL-Java, the Perl CQL::Parser and thr Ruby gem all do.  Have you
>>> tried just going ahead and doing it?  If it's being rejected, what CQL
>>> parser are you using?
>>
>> Thanks Mike, I've got a little ANTLR grammar internally that
>> implements a version of CQL.  This lack of index+relation projection
>> is one of two areas that I've had to stray from the spec so far... the
>> other is the limited support for proximity.
>
> If you're using ANTLR, does that mean you're in Java?  If so, why not
> just use CQL-Java instead of rolling your own?

Yeah, I'm on the JVM.  It's complicated and only somewhat reasonable I
suppose but...

o) I wanted freedom to easily break from the spec - I knew of the prox
problem early on and figured others would come up.
o) I need to do numerous translations to implementation
grammars/objects - easily done with ANTLR Tree Grammars.
o) It was easier than learning your api (documentation left me wanting) :(

As I said, it's only somewhat reasonable:)  It made sense at the time anyway.

--tim