On Wed, May 29, 2002 at 02:20:53PM -0400, Ray Denenberg wrote:
> I've (re-)written  bnf for CQL based on recent
> discussion.

First, just wanted to highlight that I put up the grammar our system
currently uses as a talking point. But I also based it on CCL, along
the lines previously discussed as 'to avoid argument, why not follow
ISO 8777 - an existing standard - unless there is a good reason not
to do so'. But I am completely happy to trim things back, change,
whatever as generally agreed. I was on leave friday, so here is a mega
reply to lots of different points.

> From: Mike Taylor <[log in to unmask]>
> The second is scruglier.  I don't understand why we have all the
> and/or/not logic repreoduced in the definition of a term when we
> already have all that machinery higher up in the grammar.  Can you
> give an illustrative example of a query that uses both kinds of "and"?

For simplicity, it can be dropped. The sorts of queries we use it for
are things like:

    title = mary had a little (lamb or sheep or pet)

That is, we allow an OR expression under a PROX node. Its also useful
as a short hand

    title = (mary or lamb)
    title = mary or title = lamb

> From: "LeVan,Ralph" <[log in to unmask]>
> What is a quoted-string-literal and why is it a candidate for an
> index-base-name?

Our system allows spaces and punctuation in field names, so to make
it possible to type in *any* index name in a query, we allow quotes
around the index name. It certainly would not be recommended to
create index names with punctuation in them. CQL could prohibit such
names, but I generally prefer recommendations against such things,
but allow whatever someone really wants to do.

> Where did sameSentence and sameParagraph come from?  I'd say that it is
> broadly unsupported and will require that we add a section to our explain
> records listing the CQL features that we don't support.

Probably came from my grammar. We support those operators, so they were
in our grammar. These are not ISO 8777. But there are other PROX operators
defined in Z39.50, so there is a question of which of the PROX operators
should be supported?

> I'd prefer W/ and N/ (within and near) to % and !.  I've never seen those
> characters used for proximity.

I used them (as someone else pointed out) based on the "use an existing
standard unless there is a good reason not to". They are what are defined
in ISO 8777. If people think we should invent a new syntax, may I suggest
that some thought be given to an extensible scheme for all of the different
prox operators and capabilities?

> From: Ray Denenberg <[log in to unmask]>
> though I've left out (from Alan's proposal) the integer following the masking
> characters, because that's not in the 105 proposal.

Has it been decided to use 105 in CQL then? I *personally* prefer using
ISO 8777 as the starting point unless there is a good reason not to do so.
But completely negotiable as always.

> From: Rob Koopman <[log in to unmask]>
> (2) Why is relevance a relational operator?
> For me it is a sort of the result set. If sorting is important just add it.

Changing tack a little, I would prefer fuzzy and relevance etc to be a
more extensible mechanism. For example, what about 'overlaps' for GEO etc.
This is why we had the @<name>(...) syntax (which I admit is ugly) for
applying additional attributes to the terms in the (...). (Note: we allowed
additional attributes within a word distance expression, which is not
possible if you tie it to the index name.

> (4)  Are the following the same?
> 1: nobath.all="zing for you"
> 2: nobath.all="zing" "for" "you"

To me, yes. They are the same.

> (5) Do we really want:
> "nobath"."all" relevance zing!1"for"-you
> I would prefer:
> 1: nobath.all="zing" w "for-you"
> (the server knows what he did during indexing "for you" or "foryou" )
> Which is maybe interpreted as:
> 1: nobath.all="zing" w "for" w "you"
> 2: nobath.all="zing" w ("for" and "you")

The ISO 8777 extension we made (which I think people dislike) is

    nobath.all=@relevance(zing !1 "for-you")

But I agree, 'relevance' is weird. Fuzzy and stem make more sense.

    nobath.all=@fuzzy(zing) !1 @stem("for-you")

> (6) ?6 is cute as wildcard but ?????? generates less problems.
> nobath.isbd=1234?5678

The only thing about ?6 is it was from ISO 8777. Ralph's 105 proposal
had a different (simpler) syntax for patterns I think. But no-one probably
supports it today, so there is a real question on what CQL should
support - if its goal is to map on to Z39.50 servers that are around

> (7) Is it wise to include an escape for the wildcards?
> This would allow
> nobath.isbd="1234?5678"
> nobath.wholetitle="the lazy * jumps over the quick *".
> now I think the syntax is:
> nobath.isbd="1234"?"5678"

My personal opinion is that there *must* be an escape mechanism for
wildcards. ISO 8777 uses the above as you have said. Ralph's 105
proposal was more along the lines of what you are talking about.
That is, '?' inside quotes has meaning (truncation). Use \? to
release '?' rather than the quotes.

> (8) Are these the same?
> 1: nobath.whole = "tasmanian tiger" and "siberian tiger"
> 2: nobath.whole = "tasmanian tiger" and nobath.whole = "siberian tiger"

No. The above are the same as:
    1: (nobath.whole = "tasmanian tiger") and ("siberian tiger")
    2: (nobath.whole = "tasmanian tiger") and (nobath.whole = "siberian tiger")

In the grammar I put up, you can type in 'and' inside parenthesis to do

    nobath.whole = ("tasmanian tiger" and "siberian tiger")

> From: Theo van Veen <[log in to unmask]>
> I wonder whether it wouldn't be better to leave out the result-set out of the
> query completely and use this as a separate parameter in the request because
> the resultset is completely different from indexes...

I wonder about resultSet for a different reason. Are we going to allow
references to the results of previous queries? (Are we going to support
sessions with history?) If we don't want sessions with history, then
result sets should be removed. Regardless of state, I think CQL could
be useful in non-SRW/SRU situations, so I think its worth leaving the
syntax in.

Alan Kent (mailto:[log in to unmask],
Project: TeraText Technical Director, InQuirion Pty Ltd (
Postal: Multimedia Database Systems, RMIT, GPO Box 2476V, Melbourne 3001.
Where: RMIT MDS, Bld 91, Level 3, 110 Victoria St, Carlton 3053, VIC Australia.
Phone: +61 3 9925 4114  Reception: +61 3 9925 4099  Fax: +61 3 9925 4098