Rob Sanderson -- in addition to other issues covered elsewhere, raises the
issue that without sessions you cannot predict how long result sets will be
available. I suppose the answer is that you can't predict that even with
sessions.
We have a mechanism (albeit currently optional) for a server to give the
client a time to live value during which time the client is ensure that the
result set *will* be available. In traditional Z39.50 the server may give no
prior indication that it may timeout a session if idle for too long.
Scan
-----
A number of people raise the question why we excluded Scan. The fact that
this question is been raised is a clear indication that we haven't done a
good enough job explaining what we're doing.
I think we need to clarify that the SearchRetreive operation (I'm trying to
use WSDL terminology here) although it combines Search and Present is only
the first operation in ZNG and that Sort and Scan would be implemented at a
later data (my feeling is that these could be added to the SearchRetrieve -
Scan is a special type of search and Sort is a qualifier of the
SearchRetrieve but this needs discussion)
Johan Zeeman wrote:
Just because some implementors don't like the distinction
doesn't make the distinction irrelevant.
(this pertains to the distinction between Search and Present). We need to
better articulate that just because we combined these into a single service
doesn't mean that we don't recognize the distinction.
We certainly talk of how to use SearchRetrieve to do present-like things and
likewise if we put Sort and Scan into the same operation we would have one
operation but this could be used to perform various functions (search,
present, sort, scan) etc.
If a single service is used, the
message must still include information to allow the server to decide whether
a new search is being made or not, especially since the result set model
remains.
I think that it is here where we intentionally decided to blur the
distinction (rather than search/present). For better or worse we've decided
that whether a new search is executed or not is transparent to the protocol.
We need to articulate this better.
My view here is still that is the CQL is of the form "resultset = NAME" this
means that from the clients perspective a new search is not executed
(exactly how the server ensures this is an implementation issue, e.g. if the
database is completely static it may indeed issue a new search knowing the
the results would be exactly the same as the previous search)
Inventing a new query language to compete with XQL is just dumb.
I think Joe is wrong here. XQL (or I presume he means XQuery) right now
simply doesn't support the sort of things that Z39.50 needs -- proximity,
truncation, etc, or in general, text searching.
XQuery assumes that we know the document structure we are searching for and
comes from the SQL perspective that the indexes you search and the records
you get back are in the same structure (relational tables in SQL, XML trees
in XQuery) i.e. it doesn't have the abstraction of separating searching from
record retrieval that we have in Z39.50. Although we have combined the
functions of search and present into a single operation we have not lost the
abstraction of separating the two (in the same way that piggybacking in
Z39.50 does not lose this abstaction)
A standard that lets the same thing be done 2 ways (URL and XML) is going to
fail.
Basically we are using HTTP POST (XML) and HTTP GET (URL) to send the
original request. The response is always an XML document. We can do this
because the HTTP standard has TWO WAYS of allowing a web browser to send
information to a web server. Thus if Joe's statement is true, the standard
called HTTP is going to fail! (anyway WSDL which allows you to write a
protocol description and bind it to http, SOAP over http, SOAP over SMTP
etc... which seems to suggest that binding a protocol to different
transports is expected).
The 3M circulation protocol is doing quite well (with a number of security
and self issue systems using it and a growing number of library systems
supporting it) and that allows the messages to be sent over TCP sockets,
Telnet or serial links.
I could go on...
Matthew
|