<?xml version="1.0"?>
<?cocoon-process type="xslt"?>
<?xml-stylesheet href="dienst.xsl" type="text/xsl"?>
<!DOCTYPE SERVICE SYSTEM "dienst.dtd">
<SERVICE>
<SERVNAME>Query Mediator Service</SERVNAME>
<SERVDESC><P>The query mediator service performs searches over the entire collection.  For more information, please consult:  <A HREF="http://www.cs.cornell.edu/cdlrg/dienst/protocols/DienstProtocol.htm#4.3%20Query%20Mediator%20Service">http://www.cs.cornell.edu/cdlrg/dienst/protocols/DienstProtocol.htm#4.3%20Query%20Mediator%20Service</A>.</P></SERVDESC>
<BODY>
<VERB>
<VERBFUNC>Describe Verb</VERBFUNC>
<VERBNAME>Describe-Verb</VERBNAME>
<VERBVER>2.0</VERBVER>
<NSF-DFG>req</NSF-DFG>
<FIXEDARGS>verb</FIXEDARGS>
<KEYWDARGS>none</KEYWDARGS>
<MIMETYPE>text/xml</MIMETYPE>
<STATUSCODES>200, 400</STATUSCODES>
<VERBDESC><P>Returns a structured response that contains a list, where each element of the 
list provides information on a version of the specified verb that is supported 
by this service. The following information may be provided at the verb or 
version level.</P>
<UL>
<LI><TT>description</TT>, description of the verb or a specific version </LI>
<LI><TT>note</TT>, information pertaining to the verb or a specific version </LI></UL>
<P>Each element of the list contains the following information:</P>
<UL>
<LI><TT>version number</TT> of the verb.</LI>
<LI><TT>arguments</TT>, a list of the names of the <TT>fixed</TT> and <TT>keyword</TT><B> </B>arguments, if any, accepted by the verb <I>in that version</I>.</LI>
<LI><TT>example</TT> template of request to this repository, with fixed argument indicated in brackets</LI>
<LI><TT>returns</TT><B>, </B>optional, contains information about response format. </LI></UL>
<P>Note that a service may implement more than one version of a verb.</P></VERBDESC>
<EX-REQUEST>Protocol=Dienst;Service=QM;ver=2.0;verb=Describe-Verb;args=SearchBoolean <!-- was:  /Dienst/QM/2.0/Describe-Verb/SearchBoolean --></EX-REQUEST>
<EX-RESPONSE>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;Describe-Verb version="2.0"&gt;
    &lt;Verb name="SearchBoolean"&gt;
      &lt;description&gt;Handles search requests for collection.
      &lt;/description&gt;
      &lt;version id="2.0"&gt;
        &lt;example&gt;http://cs-tr.cs.cornell.edu:80/Dienst/QM/2.0/SearchBoolean&lt;/example&gt;
        &lt;arguments&gt;
          &lt;keyword&gt;
            &lt;arg name="title" /&gt;
            &lt;arg name="author" /&gt;
            &lt;arg name="abstract" /&gt;
            &lt;arg name="keywords" /&gt;
            &lt;arg name="boolean" /&gt;
            &lt;arg name="file-after" /&gt;
          &lt;/keyword&gt;
        &lt;/arguments&gt;
      &lt;/version&gt;
    &lt;/Verb&gt;
  &lt;/Describe-Verb&gt;
</EX-RESPONSE>
</VERB>
<VERB>
<VERBFUNC>List Verbs</VERBFUNC>
<VERBNAME>List-Verbs</VERBNAME>
<VERBVER>2.0</VERBVER>
<NSF-DFG>req</NSF-DFG>
<FIXEDARGS>none </FIXEDARGS>
<KEYWDARGS>none</KEYWDARGS>
<MIMETYPE>text/xml</MIMETYPE>
<STATUSCODES>200, 400</STATUSCODES>
<VERBDESC><P>Returns a structured response containing the name of the verbs defined by 
this service.</P></VERBDESC>
<EX-REQUEST>Protocol=Dienst;Service=QM;ver=2.0;verb=List-Verbs <!-- was:  /Dienst/QM/2.0/List-Verbs --></EX-REQUEST>
<EX-RESPONSE>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;List-Verbs version="2.0"&gt;
    &lt;verb&gt;SearchBoolean&lt;/verb&gt;
    &lt;verb&gt;List-Verbs&lt;/verb&gt;
  &lt;/List-Verbs&gt;
</EX-RESPONSE>
</VERB>
<VERB>
<VERBFUNC>Submit a Query</VERBFUNC>
<VERBNAME>SearchBoolean</VERBNAME>
<VERBVER>3.0</VERBVER>
<NSF-DFG>mod</NSF-DFG>
<FIXEDARGS>none </FIXEDARGS>
<KEYWDARGS>
<UL><LI><B>Bibliographic Field Arguments</B>
<UL>
  <LI>Valid bibliographic field arguments can vary among index servers.  
  The <TT>Describe-Verb</TT> verb returns the set of field 
  arguments for a particular server.  The minimal and standard set of 
  bibliographic field arguments is as follows: 
<UL>
<LI><B>Parameters</B> (available in enumerated form, as in field1, field2, etc.)<UL>
<LI>field</LI>
<LI>value</LI>
<LI>operator</LI></UL></LI>
<LI><B>Fields searched</B><UL>
<LI>title (req)</LI>
<LI>itemno (opt)</LI>
<LI>author (req)</LI>
<LI>pubtype (req, indicates whether monograph or serial))</LI>
<LI>subject (opt)</LI>
<LI>language (req)</LI>
<LI>fullbib (req)</LI>
<LI>abstract (opt)</LI>
<LI>pubdate (req)</LI>
<LI>publisher (req)</LI>
</UL></LI>
<LI><B>Operators</B><UL>
<LI>and (req)</LI>
<LI>or (req)</LI>
<LI>not (opt)</LI>
<LI>within (opt)</LI>
<LI>including (opt)</LI>
</UL></LI></UL></LI></UL></LI>
<LI><B>Scope Argument</B>: Two additional fields are available:  <!-- Two additional arguments are not affected by the boolean, rather it is always considered to be joined with "and" to the Bibliographic Field Arguments.--> 
<DL>
  <DT><TT>authority</TT></DT>
<DD></DD>
  <DT>the name of the authority in the index server to which the search is to be 
  limited. The default is <TT>all </TT>authorities. The <TT>authority</TT> argument may be repeated, in which case 
  the the search is carried out in each authority (effectively or&#8217;ing the 
  authority arguments).  </DT>
  <DD> </DD>
  <DT><TT>added-after</TT> limits the list to those 
  handles for documents that were added or modified since <I>time</I>, a 
  universal time expressed in ISO 8601 format. If the server is not able to 
  determine date of modification to the resolution of a day, or if the server is 
  not able to selectively extract records on a time scale of a day, the server 
  may return additional records, e.g. all those modified during the week, month, 
  or even century containing the date. </DT><DD></DD></DL></LI>
<LI><B>Rules for bibliographic field matching</B>:  Words or phrases are matched exactly as submitted; the wild card symbol <TT>*</TT> should be used to indicate truncation. <!-- A token in a field is either an unquoted word or a quoted string.  Tokens are matched to bibliographic entries according to the following rules: 
<UL>
<LI>A word matches any word in the respective field that begins with 
  respective word. For example, the word <TT>comp</TT> matches "computer", 
  "computation", "comprehensive", etc. </LI>
<LI>The value for a keyword field may contain the logical connectors "and" and 
  "or". For example, "robotics or vision" in the <TT>abstract</TT> field, will 
  return documents that have the word "robotics" or "vision" in their abstracts. 
  "robotics and vision" in the <TT>abstract</TT> field, will return documents 
  that have both the word "robotics" and "vision" in their abstracts. Multiple 
  words that are not separated by "and" are assumed to be "and" separated. For 
  example, "computer vision" in the <TT>abstract</TT> field, will return 
  documents that have both the words "computer" and "vision" in their abstracts. 
  Finally, parentheses may be used to group words. For example, "Gries or 
  (Teitelbaum and Field)" in the <TT>author</TT> field, will return documents 
  authored by "Gries" or by "Teitelbaum" and "Field". </LI></UL>--></LI></UL>
</KEYWDARGS>
<MIMETYPE>text/xml</MIMETYPE>
<STATUSCODES>200, 400</STATUSCODES>
<VERBDESC><P>Specifies a search request over the entire collection. Keyword Arguments are 
a set of bibliographic fields and values specifying the search criteria. Returns 
a structured response that contains optional search statistics and a list of 
documents that matches the search criteria.</P>
<P>Each element of the document list has the following contents: </P>
<UL>
<LI>The <TT>handle</TT> of the document. </LI>
<LI>The <TT>ranking score</TT> of the document for 
  the specific query, if available.  </LI>
<LI>The <TT>free-text title</TT> of the document, 
  if available </LI>
<LI>The <TT>author(s)</TT> of the document, if 
  available. Multiple authors are delimited by a colon (:) character. Each 
  author is in <TT>last, first middle</TT> format. </LI>
<LI>The <TT>date of publication</TT> of the 
  document in ISO 8601 format.  The exact meaning of the term "date of 
  publication" is determined by the administrator of the index service.  It 
  is included in the record that is returned so that user interface services may 
  use the date for ordering of a result set. </LI></UL>
<P>Note that clients should not assume any logical ordering of the records 
returned.</P>
<P>The statistics section contains information about which partitions of the 
collection returned hits along with information about errors that occurred while 
processing the search request. Collections are currently segmented by 
institutional publishing authorities. Authorities returning hits are grouped 
into buckets according to the number of hits returned. </P>
<P>The statistics error section is organized according to the error received 
from the remote server since most servers generate similar error messages. 
Authorites with the same error are included under the same error element.</P>
</VERBDESC>
<EX-REQUEST>Protocol=Dienst;Service=QM;ver=2.0;verb=SearchBoolean;field1=author;value1=davis;op1=or;field2=author;value2=fox <!-- was:  /Dienst/QM/2.0/SearchBoolean?author=davis+or+fox --></EX-REQUEST>
<EX-REQUEST>Protocol=Dienst;Service=QM;ver=2.0;verb=SearchBoolean;field1=author;value1=donald;op1=and;field2=title;value2=robot <!-- was:  /Dienst/QM/2.0/SearchBoolean?author=donald&amp;title=robot --></EX-REQUEST>
<EX-REQUEST>Protocol=Dienst;Service=QM;ver=2.0;verb=SearchBoolean;field1=author;value1=donald;op1=or;field2=title;value2=computer+vision;op2=and;field3=authority;value3=xxx <!-- was:  /Dienst/QM/2.0/SearchBoolean?author=donald&amp;title=computer+vision&amp;boolean=or&amp;authority=xxx -->
<NOTE>Note the use of the <TT>special character</TT> "+" to indicate spaces between word tokens in the arguments.</NOTE></EX-REQUEST>
<EX-RESPONSE>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;SearchBoolean version="2.0"&gt;
    &lt;statistics grouping="hits" segmentation="authority" count="2"&gt;
      &lt;hits count="2" authorities="1"&gt;
        &lt;authority name="handlecorp"&gt;
      &lt;/hits&gt;
      &lt;errors count="1"&gt;
        &lt;error text="Can't connect to errorcorp:9999" authorities="1"&gt;
          &lt;authority name="errorcorp" /&gt;
        &lt;/error&gt;
      &lt;/errors&gt;
    &lt;/statistics&gt;
    &lt;records&gt;
      &lt;record&gt;
         &lt;handle&gt;handlecorp/1112&lt;/handle&gt;
         &lt;rank&gt;2857&lt;/rank&gt;
         &lt;author&gt;Doe, J.&lt;/author&gt;
         &lt;author&gt;Public, J. Q.&lt;/author&gt;
         &lt;title&gt;Answering Queries&lt;/title&gt;
         &lt;date&gt;19941106&lt;/date&gt;
      &lt;/record&gt;
      &lt;record&gt;
         &lt;handle&gt;handlecorp/1110&lt;/handle&gt;
         &lt;rank&gt;2859&lt;/rank&gt;
         &lt;author&gt;Mouse, M.&lt;/author&gt;
         &lt;author&gt;Disney, W.&lt;/author&gt;
         &lt;title&gt;Success with Cartoons&lt;/title&gt;
         &lt;date&gt;19941106&lt;/date&gt;
      &lt;/record&gt;
    &lt;/records&gt;
  &lt;/SearchBoolean&gt;
</EX-RESPONSE>
</VERB>
</BODY>
</SERVICE>
