(Sorry to have got to this so late -- fortunately, it turns out that
Rob said nearly everything I would have said. One or two small
matters remain, though.)
> Date: Tue, 20 Apr 2004 23:44:43 +0200
> From: Martin Malmsten <[log in to unmask]>
>
> > > "A B C" --> [A, B, C]
> > > "\"A B\" C" --> ["A B", C]
> >
> > In CQL?
>
> Yes!
This approach would have been a mistake because it is limited as to
what kinds of term structure it can represent.
Once you make a special case for linear lists, you then face the
problem of how to represent a structure that is (for example) a
polygon outline, a passage of music or a ten-thousand node chemical
formula. (Don't say that no-one would use these as a search term:
they are all in use in real, live Z39.50 services. SRW/U's take-up
would be severely limited if it did not support these cases.)
Since we clearly couldn't pre-hoc invent CQL-level syntax for all the
different possible kinds of search-term different application
communities might come up with, we went the other way: search terms
are strings, and the precise interpretation of that string is
controlled by a relation modified (using the obvious defaults so that
this stuff doesn't come into play unless it's needed). So there is
nothing to stop me defining a qualifier set with relation modifiers
such that the following queries are all equivalent:
title = "dinosaur"
title =/silly.termsAreBackwards "ruasonid"
title =/silly.onlyUseSecondWord "fruit dinosaur bash chicken"
title =/silly.pigLatin "inosaur-day"
etc.
The advantage of this approach is that it is arbitrarily extensible by
individual application communities without their needing to get
permission or registration from the core SRW group.
(By the way, that's also a large part of the reason why qualifier-set
prefix mapping is necessary. So that anyone can make up qualifier set
in a space that they own instead of having to get a central body to
grant them a unique prefix.)
> > > * the "relevant" term funtion
> > > How can the term function order the result set? What happens if two
> > > terms have the "relevant" term function?
> >
> > Then the relevancies are merged, and the resultset re-sorted.
>
> Doesn't that imply that how "relevant" a record is has to do with
> the record only, and not the query?
No, it doesn't imply _anything_ about server-side implementation, and
that's deliberate. CQL is a transfer syntax for queries. It
expresses in the abstract what the client wants to search for; and
it's up to the server to implement that in the best way it can. Do
not underestimate the diversity of IR servers.
That is why CQL contains a lot of stuff that you consider "not
necessary". No, it's not necessary for your application; maybe not
even for any application that you can imagine. But for someone,
somewhere, the ability to _express_ that query _is_ necessary. Even
if no server can't honour the request today, it's still important that
the query can be expressed.
> > Prefixes are useful in the following situation:
> >
> > You have a gateway which sends the same query out to multiple
> > servers, which may or may not use the same default names for
> > context sets.
>
> But what is the probability of this actually happening?
1.
> Everyone is forced to implement it, the CQL looks hideous.
In 99% of cases, you won't need to use an explicit prefix-map in a CQL
query. Most CQL users could go through their entire lives knowing
nothing of prefix mapping and being none the worse off for it. If
that's you, then just ignore. Pick one of the free CQL parsers that's
available and never use its prefix-mapping ability.
But in 1% of cases where it's necessary, it is _totally_ necessary.
> Date: Wed, 21 Apr 2004 00:37:50 +0200
> From: Martin Malmsten <[log in to unmask]>
>
> > One of the reasons behind the SRU variant is to allow thin (also
> > know as dumb or brain-dead) clients.
>
> Well, search+retrieve should be a no-brainer, at least on the client
> side.
Not always. There is certainly a place for very simple S&R, but many
applications require something much more sophisticated. We may not
define a protocol or query language that rules those applications
out. The trick is to define it such that the complex stuff only pokes
its head up when it's actually needed; and I think CQL does a pretty
damned good job of that.
_/|_ _______________________________________________________________
/o ) \/ Mike Taylor <[log in to unmask]> http://www.miketaylor.org.uk
)_v__/\ "Could Marconi have invented the radio if he hadn't by pure
chance spent years working at the problem?" -- Monty Python's
Flying Circus.
--
Listen to my wife's new CD of kids' music, _Child's Play_, at
http://www.pipedreaming.org.uk/childsplay/
|