<?xml version="1.0"?>
<?xml-stylesheet href="cgmFiles/cgm.xsl" type="text/xsl"?>
<!DOCTYPE cgm SYSTEM "cgmFiles/cgm.dtd">

<cgm>
<header>
<title>CGM Protocol</title>
<ul>
<li><a href="#DescribeVerb">DescribeVerb</a></li>
<li><a href="#Display">Display</a></li>
<li><a href="#Disseminate">Disseminate</a></li>
<li><a href="#Formats">Formats</a></li>
<li><a href="#ListVerbs">ListVerbs</a></li>
<li><a href="#ListVersions">ListVersions</a></li>
<li><a href="#ListViews">ListViews</a></li>
<li><a href="#Search">Search</a></li>
<li><a href="#Structure">Structure</a></li>
<li><a href="#Terms">Terms</a></li>
</ul>
</header>

<verb>
<verbHead><a name="DescribeVerb">Describe Verb</a></verbHead>
<verbName>DescribeVerb [this still needs work yet]</verbName>
<verbVersion>1.0 alpha</verbVersion>
<verbDate>2003-01-01</verbDate>
<reqArgs>value</reqArgs>
<optArgs>none</optArgs>
<mimetype>text/xml</mimetype>
<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.</p></verbDesc>
<arguments>
<ul>
<li><term>value</term> [required] name of the verb to be described.</li>
</ul>
</arguments>
<responseDesc>
<p>The following information may be provided at the verb or version level.</p>
<ul>
<li><term>description</term>, description of the verb or a specific version </li>
<li><term>note</term>, information pertaining to the verb or a specific version </li>
</ul>
<p>Each element of the list contains the following information:</p>
<ul>
<li><term>version number</term> of the verb. </li>
<li><term>arguments</term>, a list of the names of the fixed and keyword arguments, if any, accepted by the verb in that version.  </li>
<li><term>example</term> template of request to this repository, with fixed argument indicated in brackets</li>
<li><term>returns</term>, optional, contains information about response format.</li>
</ul>
<p>Note that a service may implement more than one version of a verb.</p>
</responseDesc>
<errorCodes>
<ul>
<li></li>
</ul>
</errorCodes>
<examples>
<request>
<requestEx>protocol=CGM&amp;verb=DescribeVerb&amp;ver=1.0&amp;value=Formats</requestEx>
</request>
<response>
<responseEx>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;DescribeVerb ver="1.0"&gt;
    &lt;verb name="Formats"&gt;
      &lt;description&gt;Returns a structured response indicating
        the formats of disseminations available for this document
      &lt;/description&gt;
      &lt;versions&gt;
        &lt;version id="1.0"&gt;
              &lt;example&gt;http://www.umdl.umich.edu/cgi/b/broker/broker?
				protocol=CGM&amp;ver=2.0&amp;
				verb=Formats&amp;identifier=identifiervalue&gt;&lt;/example&gt;
          &lt;arguments&gt;
            &lt;required&gt;
              &lt;arg name="identifier" /&gt;
            &lt;/required&gt;
            &lt;optional&gt;
              &lt;arg name="version" /&gt;
              &lt;arg name="view" /&gt;
            &lt;/optional&gt;
          &lt;/arguments&gt;
        &lt;/version&gt;
      &lt;/versions&gt;
    &lt;/Verb&gt;
  &lt;/Describe-Verb&gt;
</responseEx>
</response>
</examples>
<history>
<p>Modification of Dienst verb Describe-Verb, version 2.0.</p>
</history>
</verb>

<verb>
<verbHead><a name="Display">Display a Document in Local Viewer</a></verbHead>
<verbName>Display</verbName>
<verbVersion>1.0</verbVersion>
<verbDate>2003-06-18</verbDate>
<reqArgs>identifier</reqArgs>
<optArgs>divID</optArgs>
<mimetype>will depend on request and viewer mechanism</mimetype>
<verbDesc><p>Request to view a document in a repository's local viewer.</p>
</verbDesc>
<arguments>
<ul>
<li><term>identifier</term> [required] the identifier for the document requested.</li>
<li><term>divID</term> one or more identifiers, separated by "|", indicating document subdivisions with query matches. No assumptions are made about what a repository will do with this information. Bad <tt>divID</tt> values are ignored.</li>
</ul>
</arguments>
<responseDesc>
<p>The response to a Display verb request is an HTTP redirect, if the request is successful. A repository can display a document however it chooses. If the request is not successful, an error response is returned.</p>
</responseDesc>
<errorCodes>
<ul>
<li><term>idDoesNotExist</term> the value of the <tt>identifier</tt> argument is unknown or illegal.</li>
<li><term>cannotDisplay</term> the repository is unable to display the document.</li>
</ul>
</errorCodes>
<examples>
<request>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=Display&amp;ver=1.0&amp;identifier=cul.math/00640001</requestEx>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=Display&amp;ver=1.0&amp;identifier=cul.math/98765432
	&amp;divID=cul.math/98765432/00000024|cul.math/98765432/00000128|
	cul.math/98765432/00000156|cul.math/98765432/00000237</requestEx>
</request>
</examples>
<history>
<p>New to CGM.</p>
</history>
</verb>

<verb>
<verbHead><a name="Disseminate">Disseminate Content</a></verbHead>
<verbName>Disseminate</verbName>
<verbVersion>1.0</verbVersion>
<verbDate>2003-06-30</verbDate>
<reqArgs>identifier, format-type</reqArgs>
<optArgs>version, div</optArgs>
<mimetype>Dependent on dissemination requested.</mimetype>
<verbDesc>
<p></p>
<p>Request a dissemination of a digital object. The characteristics of the dissemination that can be requested (the arguments to the <tt>Disseminate</tt> verb), are determined by the responses to the <tt>Structure</tt>, <tt>Formats</tt>, <tt>ListViews</tt>, and <tt>ListVersions</tt> verbs for the specific document. The response is a MIME-typed byte stream.</p>
</verbDesc>
<arguments>
<ul>
<li><term>identifier</term> [required] the document identifier</li>
<li><term>version</term> specifies the document version for which the format information is requested. If omitted, it provides information about the latest document version available (see ListVersions).</li>
<li><term>div</term> specifies the id value of a div or formatDiv component provided in the Formats response. Use to request dissemination of a specific component of the specified document. If no <tt>div</tt> argument is submitted, the highest level <tt>div</tt> of the document is disseminated, if possible.</li>
<li><term>format-type</term> [required] specifies the type of the content in the    dissemination. The list of available formats for a division is indicated by the response to the <tt>Formats</tt> request. Note that the value supplied for the argument is not a mime-type, but the format "type" indicated in the response to the <tt>Formats</tt> request.</li> 
</ul>
</arguments>
<responseDesc>
<p>The response to Disseminate is the requested content, directly.</p>
</responseDesc>
<errorCodes>
<ul>
<li><term>idDoesNotExist</term> the value of the <tt>identifier</tt> argument is unknown or illegal.</li>
<li><term>badArgument</term> the request includes illegal arguments, is missing required arguments, or contains invalid argument values.</li>
<li><term>cannotDisseminate</term> no disseminatable format for the requested division.</li>
</ul>
</errorCodes>
<examples>
<request>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=Disseminate&amp;ver=1.0&amp;identifier=cul.math/00640001
	&amp;div=chunk2&amp;format-type=PDF.600</requestEx>
</request>
<response>
<p>The response returns a PDF file of a portion of the document identified as "chunk2".</p>
</response>
<request>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=Disseminate&amp;ver=1.0&amp;identifier=cul.math/00640001
	&amp;div=a123-2&amp;format-type=GIF</requestEx>
</request>
<response>
<p>Returns a GIF image of a division of the document identified as "a123-2".</p>
</response>
<request>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=Disseminate&amp;ver=1.0&amp;identifier=cul.math/00640001
	&amp;format-type=PDF.600</requestEx>
</request>
<response>
<responseEx>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;CGM&gt;
  &lt;responseDate&gt;2002-10-02T19:20:30Z&lt;/responseDate&gt;
  &lt;request protocol="CGM" verb="Disseminate" ver="1.0"
           identifier="cul.math/00640001" format-type="PDF.600"&gt;
           http://some.cgm.server/script&lt;/request&gt;
  &lt;error code="cannotDisseminate"&gt;No format available for dissemination
         of requested division&lt;/error&gt;
&lt;/CGM&gt;
</responseEx>
<p>The request included no <tt>div</tt> argument, and so format information on the highest level structural division of the document was assumed. But this division cannot be disseminated (has no disseminatable format), and thus the error. In the response to a Structure verb request for this document, this division would have included a <tt>diss</tt> attribute value of "0".</p>
</response>
</examples>
<history>
<p>Modification of Dienst Disseminate verb, version 1.0. Our position on the current CGM verb is that the record-oriented components (metadata) are to be replaced by OAI verb <tt>GetRecord</tt>, and that Disseminate needs to continue for handling the actual content.</p>
<p>Removed from Dienst verb description: "The MIME type of the byte stream is either the MIME type of the specified <tt>content-type</tt> or, if a <tt>binder</tt> is specified, the MIME type of that <tt>binder</tt>."</p>
<p>Removed from above, this was a definition of argument div (from jpw?): "&lt;div&gt; narrows the dissemination    request to a specific structural component (e.g., a <i> chapter</i>) of the    specified view of the document instance.  The supplied argument must be one the available <tt>divs</tt> of the view (indicated by the output of the <tt>Structure</tt> request) paired with a value that is an identifier of one of those <tt>divs</tt> (again indicated by the output of the <tt>Structure</tt> request).  For example, if a <tt>Structure</tt> request indicates that there is a <tt>div</tt> of type <tt>chapter</tt> with identifier <tt>1</tt>, then this argument could by <tt>chapter=1</tt>.  Note that the <tt>div</tt> argument can not be used in combination with the <tt>pageimage</tt> argument."</p>
<p>Also removed from argument section: "&lt;viewID&gt;,where <tt>&lt;viewID&gt;</tt> is one of the available views for the document instance.  The resulting dissemination, if there is no <tt>pageimage</tt> argument, is then the specified view of the document instance."</p>
</history>
</verb>

<verb>
<verbHead><a name="Formats">Get Formats</a></verbHead>
<verbName>Formats</verbName>
<verbVersion>1.0</verbVersion>
<verbDate>2003-06-18</verbDate>
<reqArgs>identifier</reqArgs>
<optArgs>version, div</optArgs> 
<mimetype>text/xml</mimetype>
<verbDesc>
<p>Returns a structured response indicating the formats available for one or more structural components of a document.</p>
</verbDesc>
<arguments>
<ul>
<li><term>identifier</term> [required] the document identifier</li>
<li><term>version</term> specifies the document version for which the format information is requested. If omitted, it provides information about the latest document version available (see ListVersions).</li>
<li><term>div</term> specifies one or more ID values corresponding to one or more div components provided in the Structure response. Use to request format information for a specific structual component. If no <tt>div</tt> argument is included, the highest level div for this doc is assumed. If multiple values are included, separate with "|".</li>
</ul>
</arguments>
<responseDesc>
<p>Each response includes one or more <tt>divReq</tt> elements.</p>
<ul>
<li><element>divReq</element> Any <tt>div</tt> for which format information has been requested becomes a <tt>divReq</tt> (requested div) element in the response. A <tt>divReq</tt> element has the same attributes as a Structure response <tt>div</tt> (except that the <tt>order</tt> attribute is not used):
<ul>
<li><tt>id</tt> :: [required] an ID value for this division, usable as is in Disseminate and other requests. This is not defined as an XML ID.</li>
<li><tt>type</tt> :: type of division.</li>
<li><tt>label</tt> :: a displayable label for this division. These are applied by the local repository and should make sense in a navigational context.</li>
</ul>
The <tt>divReq</tt> element must contain at least one <tt>format</tt> or <tt>formatSeq</tt> element. It may contain more of either.
</li>

<li><element>format</element> an empty element with attributes describing a single format available for its parent element, which may be <tt>divReq</tt>, <tt>div</tt>, or <tt>formatDiv</tt>. The <tt>format</tt> element has four attributes:
<ul>
<li><tt>type</tt> :: [required] from a controlled vocabulary of format types.</li>
<li><tt>mime</tt> :: [required] the mime-type of the format.</li>
<li><tt>size</tt> :: in bytes.</li>
<li><tt>label</tt> :: [required] a displayable label identifying this format for use in a user interface.</li>
</ul>
</li>

<li><element>formatSeq</element> an element that contains a sequence of <tt>formatDiv</tt> elements. The <tt>formatSeq</tt> element has two attributes:
<ul>
<li><tt>type</tt> :: [required] from a controlled vocabulary of format types.</li>
<li><tt>label</tt> :: [required] a displayable label identifying this group of formats, for use in a user interface.</li>
</ul>
</li>

<li><element>formatDiv</element> a division within <tt>formatSeq</tt> that contains one or more <tt>format</tt> elements. <tt>formatDiv</tt> is used for divisions that are not structural--not represented in Structure verb responses--but exist because of arbitrary segmenting of documents for delivery purposes. This element has three attibutes:
<ul>
<li><tt>id</tt> :: [required] an ID value for this division, usable as is in Disseminate requests. This is not defined as an XML ID.</li>
<li><tt>order</tt> :: [required] the order of this <tt>formatDiv</tt> among its siblings. Values are positive integers, beginning with 1.</li>
<li><tt>label</tt> :: a displayable label for this division. These are applied by the local repository and should make sense in a navigational context.</li>
</ul>
</li>

</ul>
</responseDesc>
<errorCodes>
<ul>
<li><term>idDoesNotExist</term> the value of the <tt>identifier</tt> argument is unknown or illegal.</li>
<li><term>badArgument</term> the request includes illegal arguments, is missing required arguments, or contains invalid argument values.</li>
<li><term>noFormatAvailable</term> no disseminatable formats are available for the requested document division.</li>
</ul>
</errorCodes>
<examples>
<request>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=Formats&amp;ver=1.0&amp;identifier=cul.math/00640001</requestEx>
</request>
<response>
<responseEx>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;CGM&gt;
  &lt;responseDate&gt;2002-10-02T19:20:30Z&lt;/responseDate&gt;
  &lt;request protocol="CGM" verb="Formats" ver="1.0"
           identifier="cul.math/00640001"&gt;
           http://some.cgm.server/script&lt;/request&gt;
  &lt;Formats ver="1.0"&gt;
    &lt;identifier value="cul.math/00640001"/&gt;
    &lt;divReq id="a123" type="maindocument" label="Entire Monograph"&gt;
      &lt;format type="PDF.600" mime="application/pdf" size="5500000"
              label="Entire Document in PDF"/&gt;
      &lt;formatSeq label="PDF Files" type="pdf-chunks" &gt;
        &lt;formatDiv id="chunk1" order="1" label="Pages 1-30"&gt;
          &lt;format type="PDF.600" mime="application/pdf" size="1620000"
                  label="Multi-page PDF"/&gt;
        &lt;/formatDiv&gt;
        &lt;formatDiv id="chunk2" order="2" label="Pages 31-60"&gt;
          &lt;format type="PDF.600" mime="application/pdf" size="1650000"
                  label="Multi-page PDF"/&gt;
        &lt;/formatDiv&gt;
        &lt;formatDiv id="chunk3" order="3" label="Pages 61-90"&gt;
          &lt;format type="PDF.600" mime="application/pdf" size="1650000"
                  label="Multi-page PDF"/&gt;
        &lt;/formatDiv&gt;
        &lt;formatDiv id="chunk4" order="4" label="Pages 91-103"&gt;
          &lt;format type="PDF.600" mime="application/pdf" size="550000"
                  label="Multi-page PDF"/&gt;
        &lt;/formatDiv&gt;
      &lt;/formatSeq&gt;
      &lt;formatSeq label="ASCII Text Files" type="ascii-chunks"&gt;
        &lt;formatDiv id="chunk1" order="1" label="Pages 1-50"&gt;
          &lt;format type="OCR" mime="text/plain" size="220000" label="Un-proofed
                  OCR text"/&gt;
        &lt;/formatDiv&gt;
        &lt;formatDiv id="chunk2" order="2" label="Pages 51-103"&gt;
          &lt;format type="OCR" mime="text/plain" size="240000" label="Un-proofed
                  OCR text"/&gt;
        &lt;/formatDiv&gt;
      &lt;/formatSeq&gt;
    &lt;/divReq&gt;
  &lt;/Formats&gt;
&lt;/CGM&gt;
</responseEx>
<p>No <tt>div</tt> argument was used, so information about the the highest level structural <tt>div</tt> for this document is returned in the response. Three formats are available for this structural division: a single PDF of the entire document; a sequence of PDF files that include arbitrary amounts of the document; a sequence of ASCII text files that include arbitrary amounts of the document.</p>
</response>
<request>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=Formats&amp;ver=1.0&amp;identifier=cul.math/00520098</requestEx>
</request>
<response>
<responseEx>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;CGM&gt;
  &lt;responseDate&gt;2002-10-02T19:20:30Z&lt;/responseDate&gt;
  &lt;request protocol="CGM" verb="Formats" ver="1.0"
           identifier="cul.math/00520098"&gt;
           http://some.cgm.server/script&lt;/request&gt;
  &lt;error code="noFormatAvailable"&gt;No format available for
         requested division&lt;/error&gt;
&lt;/CGM&gt;
</responseEx>
<p>No <tt>div</tt> argument was used, so the system looked for information about the the highest level structural <tt>div</tt> for this document. But there is no format for delivering the entire document, and thus the error message. In a Structure verb response, this <tt>div</tt> would have a <tt>diss</tt> attribute value of "0", indicating that there is no format for disseminating the division as a whole. It is possible that subdivisions of this <tt>div</tt> have disseminatable divisions (<tt>diss="1"</tt>).</p>
</response>
<request>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=Formats&amp;ver=1.0&amp;identifier=cul.math/00640001
	&amp;div=a123-1|a123-2|a123-3</requestEx>
</request>
<response>
<responseEx>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;CGM&gt;
  &lt;responseDate&gt;2002-10-02T19:20:30Z&lt;/responseDate&gt;
  &lt;request protocol="CGM" verb="Formats" ver="1.0"
           identifier="cul.math/00640001"&gt;
           http://some.cgm.server/script&lt;/request&gt;
  &lt;Formats ver="1.0"&gt;
    &lt;identifier value="cul.math/00640001"/&gt;
    &lt;divReq id="a123-1" type="page" label="Page i"&gt;
      &lt;format type="GIF" mime="application/gif" size="63488"
              label="Page Image"/&gt;
      &lt;format type="PDF.600" mime="application/pdf" size="54272"
              label="Page in PDF"/&gt;              
      &lt;format type="ascii" mime="text/plain" size="4096"
              label="Un-proofed OCR text"/&gt;
    &lt;/divReq&gt;
    &lt;divReq id="a123-2" type="page" label="Page 1"&gt;
      &lt;format type="GIF" mime="application/gif" size="64292"
              label="Page Image"/&gt;
      &lt;format type="PDF.600" mime="application/pdf" size="55674"
              label="Page in PDF"/&gt;              
      &lt;format type="ascii" mime="text/plain" size="3995"
              label="Un-proofed OCR text"/&gt;
    &lt;/divReq&gt;
    &lt;divReq id="a123-3" type="page" label="Page 2"&gt;
      &lt;format type="GIF" mime="application/gif" size="65123"
              label="Page Image"/&gt;
      &lt;format type="PDF.600" mime="application/pdf" size="60234"
              label="Page in PDF"/&gt;              
      &lt;format type="ascii" mime="text/plain" size="4123"
              label="Un-proofed OCR text"/&gt;
    &lt;/divReq&gt;
  &lt;/Formats&gt;
&lt;/CGM&gt;
</responseEx>
<p>Format information is requested for three structural divisions. Each division is available in three formats: GIF image, PDF file, and ASCII text file.</p>
</response>
</examples>
<history>
<p>Modification of Dienst verb Formats, version 4.0.</p>
</history>
</verb>

<verb>
<verbHead><a name="ListVerbs">List Verbs</a></verbHead>
<verbName>ListVerbs</verbName>
<verbVersion>1.0</verbVersion>
<verbDate>2003-06-18</verbDate>
<reqArgs>none</reqArgs>
<optArgs>none</optArgs>
<mimetype>text/xml</mimetype>
<verbDesc>
<p>Returns a structured response containing the name and version number of each CGM verb supported by this repository. Different versions of the same verb should be included, within separate <tt>verb</tt> elements.</p>
</verbDesc>
<arguments></arguments>
<responseDesc>
<p>The List Verbs response contains a single, repeatable element.</p>
<ul>
<li><element>verb</element> an EMPTY element with two attributes:
<ul>
<li><tt>name</tt> :: the verb name.</li>
<li><tt>ver</tt> :: the version of the verb.</li>
</ul>
</li>
</ul>
</responseDesc>
<errorCodes>
<ul>
<li><term>badArgument</term> the request includes illegal arguments, is missing required arguments, or contains invalid argument values.</li>
</ul>
</errorCodes>
<examples>
<request>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=ListVerbs&amp;ver=1.0</requestEx>
</request>
<response>
<responseEx>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;CGM&gt;
  &lt;responseDate&gt;2002-10-02T19:20:30Z&lt;/responseDate&gt;
  &lt;request verb="ListVerbs" ver="1.0"&gt;
           http://some.cgm.server/script&lt;/request&gt;
  &lt;ListVerbs ver="1.0"&gt;
    &lt;verb name="Disseminate" ver="1.0" /&gt;
    &lt;verb name="Display" ver="1.0" /&gt;
    &lt;verb name="Formats" ver="1.0" /&gt;
    &lt;verb name="Search" ver="1.0" /&gt;
    &lt;verb name="Search" ver="2.0" /&gt;
    &lt;verb name="Structure" ver="1.0" /&gt;
    &lt;verb name="ListViews" ver="1.0" /&gt;
    &lt;verb name="ListVerbs" ver="1.0" /&gt;
  &lt;/ListVerbs&gt;
&lt;/CGM&gt;
</responseEx>
</response>
</examples>
<history>
<p>Dienst verb, version 2.0</p>
</history>
</verb>

<verb>
<verbHead><a name="ListVersions">List Document Versions Available</a></verbHead>
<verbName>ListVersions</verbName>
<verbVersion>1.0</verbVersion>
<verbDate>2003-06-18</verbDate>
<reqArgs>identifier</reqArgs>
<optArgs>none</optArgs>
<mimetype>text/xml</mimetype>
<verbDesc>
<p>Returns a structured response describing the current versions available for the requested document.</p>
</verbDesc>
<arguments>
<ul>
<li><term>identifier</term> [required] the document identifier for which version information is requested.</li>
</ul>
</arguments>
<responseDesc>
<ul>
<li><element>version</element> its attribute <tt>value</tt> is the version number, a positive integer, used when requesting a specific version in Structure, Formats, and Disseminate verbs. The element contains two subelements:
<ul>
<li><element>date</element> the date (or date-time) the version was last modified, expressed in using ISO 8601. </li>
<li><element>comment</element> a comment or description.</li>
</ul>
</li>
</ul>
</responseDesc>
<errorCodes>
<ul>
<li><term>idDoesNotExist</term> the value of the <tt>identifier</tt> argument is unknown or illegal.</li>
<li><term>badArgument</term> the request includes illegal arguments, is missing required arguments, or contains invalid argument values.</li>
</ul>
</errorCodes>
<examples>
<request>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=ListVersions&amp;ver=1.0&amp;identifier=cul.math/00640001</requestEx>
</request>
<response>
<responseEx>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;CGM&gt;
  &lt;responseDate&gt;2002-10-02T19:20:30Z&lt;/responseDate&gt;
  &lt;request verb="ListVersions" ver="1.0" identifier="cul.math/00640001"&gt;
           http://some.cgm.server/script&lt;/request&gt;
  &lt;ListVersions ver="1.0"&gt;
    &lt;identifier value="cul.math/00640001"&gt;
    &lt;version value="2"&gt;
      &lt;date&gt;2002-03-18&lt;/date&gt;
      &lt;comment&gt;Author revised version.&lt;/comment&gt;
    &lt;/version&gt;
    &lt;version value="1"&gt;
      &lt;date&gt;1999-10-01&lt;/date&gt;
      &lt;comment&gt;Original published version.&lt;/comment&gt;
    &lt;/version&gt;
  &lt;/ListVersions&gt;
&lt;/CGM&gt;
</responseEx>
</response>
</examples>
<history>
<p>Modification of Dienst verb List-Versions, version 1.0.</p>
</history>
</verb>

<verb>
<verbHead><a name="ListViews">List Views Available</a></verbHead>
<verbName>ListViews</verbName>
<verbVersion>1.0</verbVersion>
<verbDate>2003-06-18</verbDate>
<reqArgs>identifier</reqArgs>
<optArgs>none</optArgs>
<mimetype>text/xml</mimetype>
<verbDesc><p>Returns a structured list of the possible views available for a single document.</p></verbDesc>
<arguments>
<ul>
<li><term>identifier</term> [required] an identifier of the document for which a list of views is requested.</li>
</ul>
</arguments>
<responseDesc>
<p>A default view is mandatory. One view, but only one, must be identified as the default view.</p>
<ul>
  <li><element>view</element> an empty element, one per view, with three attributes:
  <ul>
  	<li><tt>id</tt> :: [required] an id of the view (XML ID).</li>
  	<li><tt>label</tt> :: [required] a displayable, short label describing this view. These are applied by the local repository and should help end users choose an appropriate document view.</li>
  	<li><tt>default</tt> :: [required for default view] possible values are <tt>1</tt> or <tt>0</tt>. If not included, <tt>default="0"</tt> is assumed.</li>
  </ul>
  </li>
</ul>
</responseDesc>
<errorCodes>
<ul>
<li><term>idDoesNotExist</term> the value of the <tt>identifier</tt> argument is unknown or illegal.</li>
<li><term>badArgument</term> the request includes illegal arguments, is missing required arguments, or contains invalid argument values.</li>
</ul>
</errorCodes>
<examples>
<request>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=ListViews&amp;ver=1.0&amp;identifier=cul.math/00640001</requestEx>
</request>
<response>
<responseEx>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;CGM&gt;
  &lt;responseDate&gt;2002-10-02T19:20:30Z&lt;/responseDate&gt;
  &lt;request verb="ListViews" ver="1.0" identifier="cul.math/00640001"&gt;
           http://some.cgm.server/script&lt;/request&gt;
  &lt;ListViews ver="1.0"&gt;
    &lt;identifier value="cul.math/00640001"&gt;
    &lt;view id="v123-a" label="Page listing" default="1" /&gt;
    &lt;view id="v123-b" label="Chapter and Sections" /&gt;
  &lt;/ListViews&gt;
&lt;/CGM&gt;
</responseEx>
</response>
</examples>
<history>
<p>New to CGM. No corresponding Dienst verb.</p>
</history>
</verb>

<verb>
<verbHead><a name="Search">Submit a Query</a></verbHead>
<verbName>Search</verbName>
<verbVersion>1.0</verbVersion>
<verbDate>2003-06-18</verbDate>
<reqArgs>field, value, op</reqArgs>
<optArgs>set, sort, startResult, resultSize</optArgs>
<mimetype>text/xml</mimetype>
<verbDesc><p>Specifies a search request to an index server. Arguments indicate search criteria and the order and amount of search results to be returned. The response is a structured list of documents that match the search criteria, and includes a results summary. It is possible to request the results summary only.</p>
</verbDesc>
<arguments>
<p>The arguments <tt>field[n]</tt> and <tt>value[n]</tt> enumerate, beginning with 1. For <tt>op[n]</tt>, see below.</p>

<ul>
<li><term>set</term> an optional grouping construct, identical in definition to OAI's use. With CGM Search, however, multiple sets can be indicated in a single query by using a delimiter ( | ); for example: <tt>set=set1|set2|set3</tt>. When searching across multiple sets, the complete query is executed within each set (effectively OR'ing the sets). When no set is indicated, the default is either 1) all sets, when a repository supports sets, or 2) all repository content, when the repository does not support sets.</li>

<li><term>sort</term> a requested sort order for result sets. Default is none. Possible values are:

<ul>
<li><tt>none</tt></li>
<li><tt>rank</tt></li>
<li><tt>title</tt></li>
<li><tt>author</tt></li>
<li><tt>pubdate</tt></li>
</ul>

</li>

<li><term>startResult</term> the numerical order of the first result to be returned in the response. Value is an integer, 0 or greater; default is 1. If the value is set to 0, no results will be returned, regardless of the value of <tt>resultSize</tt>.</li>

<li><term>resultSize</term> the number of result records requested. Value is an integer, 0 or greater; default is all results. If the value is set to 0, no results will be returned, regardless of the value of <tt>startResult</tt>.</li>

<li><term>field[n]</term> [required] the field, or index, within which to search. Supported values for bibliographic field arguments may vary among index servers. The <tt>DescribeVerb</tt> verb returns the set of field values supported by a particular server.

</li>

<li><term>value[n]</term> [required] the query string</li>

<li><term>op[n]</term> [required, if multiple field/value pairs submitted] op[n] will normally operate on <tt>n</tt> and <tt>n-1</tt> field/value arguments. See the separate document on <a href="rpn.html">RPN Notation</a>. Following is a list of permitted argument values.
<ul>
<li><tt>and</tt></li>
<li><tt>or</tt></li>
<li><tt>not</tt></li>
<li><tt>within</tt></li>
<li><tt>including</tt></li>
</ul>
</li>

</ul>

<p>Rules for field matching: the value of the <tt>value</tt> argument is treated as a single string (word or phrase) and matched exactly as submitted. Truncation is possible on single word queries. The wild card symbol <tt>*</tt> should be used to indicate word truncation.</p>

<p>Operator Precedence: queries are assumed to be submitted using Reverse Polish Notation (RPN). See the separate document on <a href="rpn.html">RPN Notation</a></p>

</arguments>

<responseDesc>
<p>Unless there is an error, all responses include a single <tt>resultsSummary</tt> and zero to many <tt>record</tt> elements.</p>

<p>A well-formed query that executes properly and yet has no matches is not considered an error. In this case, a <tt>resultsSummary</tt> would be returned, but no <tt>record</tt> elements.</p>

<ul>
<li><element>resultsSummary</element> [required] an empty element with data about the results returned. All of the following attributes must be included, using defaults if not specified in request. These values describe the results actually returned; they may differ from values in the request.
<ul>
<li><tt>repositoryIdentifier</tt> :: the repository identifier.</li>
<li><tt>set</tt> :: if no set was indicated in the response, then return either 1) a list of all sets searched, if sets are supported (<tt>set="set1|set2|set3"</tt>); or 2) an empty value, if sets are not supported (<tt>set="0"</tt>).</li>
<li><tt>sort</tt> :: use default when not in request. Note that the requested sort order can be ignored by the indexer if the requested sort value is not supported by the indexer, or if the indexer's <tt>sortThreshold</tt> has been exceeded. An indexer's supported sort orders and <tt>sortThreshold</tt> value is publicized in the Describe Verb response.</li>
<li><tt>totalResults</tt> :: the total number of matches on a query, regardless of how many or which results are returned.</li>
<li><tt>startResult</tt> :: the order of the first result returned in this response. Value is 0 when no results are returned.</li>
<li><tt>resultSize</tt> :: the number of results returned in this response. This may be less than the <tt>resultSize</tt> requested, if there are fewer results than requested. Note that the requested result size can be ignored and reset to any value by the indexer if the indexer's <tt>resultsThreshold</tt> has been exceeded. An indexer's <tt>resultsThreshold</tt> value is publicized in the Describe Verb response. </li>
</ul>
</li>

<li><element>record</element> zero to many <tt>record</tt> elements allowed. Currently allowed <tt>record</tt> elements are the following:
<ul>
<li><element>identifier</element> [required] the unique document identifier. Its format is determined by the repository.</li>
<li><element>title</element></li>
<li><element>author</element></li>
<li><element>pubdate</element> The date of publication of the document.</li>
<li><element>rank</element> Relevance data.</li>
<li><element>resultDivs</element> in the response to a full-text search, this element may contain ID values of document subdivisions containing matches. Each ID value is contained within a separate &lt;divID&gt; element.</li>

</ul>
</li>
</ul>
</responseDesc>
<errorCodes>
<ul>
<li><term>badArgument</term> the request includes illegal arguments, is missing required arguments, or contains invalid argument values.</li>
<li><term>noSetHierarchy</term> the repository does not support sets</li>
</ul>
</errorCodes>

<examples>
<request>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=Search&amp;ver=1.0&amp;set=math&amp;resultSize=100
	&amp;field1=author&amp;value1=todhunter&amp;field2=title
	&amp;value2=trigonometry&amp;op2=and</requestEx>
</request>

<response>
<responseEx>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;CGM&gt;
  &lt;responseDate&gt;2002-10-01T19:20:30Z&lt;/responseDate&gt;
  &lt;request protocol="CGM" verb="Search" ver="1.0" set="math" resultSize="100"
           field1="author" value1="todhunter" field2="title"
           value2="trigonometry" op2="and"&gt;
           http://some.cgm.server/script&lt;/request&gt;
  &lt;Search ver="1.0"&gt;
    &lt;resultsSummary repositoryIdentifier="CULmath" set="math" sort="title"
                    totalResults="2" startResult="1" resultSize="2" /&gt;
    &lt;record&gt;
      &lt;identifier&gt;cul.math/98765432&lt;/identifier&gt;
      &lt;title&gt;Fun with Trigonometry&lt;/title&gt;
      &lt;author&gt;Todhunter, I.&lt;/author&gt;
      &lt;author&gt;Disney, W.&lt;/author&gt;
      &lt;pubdate&gt;1888&lt;/date&gt;
      &lt;rank&gt;2859&lt;/rank&gt;
      &lt;resultDivs&gt;
        &lt;divID&gt;cul.math/98765432/00000024&lt;/divID&gt;
        &lt;divID&gt;cul.math/98765432/00000128&lt;/divID&gt;
        &lt;divID&gt;cul.math/98765432/00000156&lt;/divID&gt;
        &lt;divID&gt;cul.math/98765432/00000237&lt;/divID&gt;
      &lt;/resultDivs&gt;
    &lt;/record&gt;
    &lt;record&gt;
      &lt;identifier&gt;cul.math/00640001&lt;/identifier&gt;
      &lt;title&gt;Spherical Trigonometry&lt;/title&gt;
      &lt;author&gt;Todhunter, I.&lt;/author&gt;
      &lt;pubdate&gt;1886&lt;/date&gt;
      &lt;rank&gt;2857&lt;/rank&gt;
      &lt;resultDivs&gt;
        &lt;divID&gt;cul.math/00640001/00000345&lt;/divID&gt;
        &lt;divID&gt;cul.math/00640001/00000346&lt;/divID&gt;
      &lt;/resultDivs&gt;
    &lt;/record&gt;
  &lt;/Search&gt;
&lt;/CGM&gt;
</responseEx>
</response>

<request>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=Search&amp;ver=1.0&amp;set=math&amp;startResult=0
	&amp;field1=fulltext&amp;value1=geometry&amp;field2=fulltext
	&amp;value2=trigonometry&amp;op2=and</requestEx>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=Search&amp;ver=1.0&amp;set=math&amp;resultSize=0
	&amp;field1=fulltext&amp;value1=geometry&amp;field2=fulltext
	&amp;value2=trigonometry&amp;op2=and</requestEx>
<p>These two requests are equivalent. The response below is to the first one.</p>
</request>

<response>
<responseEx>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;CGM&gt;
  &lt;responseDate&gt;2002-10-02T19:20:30Z&lt;/responseDate&gt;
  &lt;request protocol="CGM" verb="Search" ver="1.0" set="math" startResult="0"
           field1="fulltext" value1="geometry" field2="fulltext"
           value2="trigonometry" op2="and"&gt;
           http://some.cgm.server/script&lt;/request&gt;
  &lt;Search ver="1.0"&gt;
    &lt;resultsSummary repositoryIdentifier="CULmath" set="math" sort="title"
                    totalResults="1024" startResult="0" resultSize="0" /&gt;
  &lt;/Search&gt;
&lt;/CGM&gt;
</responseEx>
</response>

<request>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=Search&amp;ver=1.0&amp;set=math
	&amp;field1=author&amp;value1=bush&amp;field2=fullbib
	&amp;value2=basic%20counting&amp;op2=and</requestEx>
</request>

<response>
<responseEx>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;CGM&gt;
  &lt;responseDate&gt;2002-10-02T19:20:30Z&lt;/responseDate&gt;
  &lt;request protocol="CGM" verb="Search" ver="1.0" set="math" 
           field1="author" value1="bush"field2="fullbib" 
           value2="basic counting" op2="and"&gt;http://some.cgm.server/script
           &lt;/request&gt;
  &lt;Search ver="1.0"&gt;
    &lt;resultsSummary repositoryIdentifier="CULmath" set="math" sort="title"
                    totalResults="0" startResult="0" resultSize="0" /&gt;
  &lt;/Search&gt;
&lt;/CGM&gt;
</responseEx>
</response>
</examples>

<history>
<p>Substantial reworking and extension of Dienst verb SearchBoolean, version 5.0.</p>
</history>
</verb>

<verb>
<verbHead><a name="Structure">Get Document Structure</a></verbHead>
<verbName>Structure</verbName>
<verbVersion>1.0</verbVersion>
<verbDate>2003-06-18</verbDate>
<reqArgs>identifier</reqArgs>
<optArgs>version, view</optArgs>
<mimetype>text/xml</mimetype>
<verbDesc>
<p>This verb returns a structured response describing a structural view available for a document. A client may use this structural information as the basis for document requests using the <tt>Disseminate</tt> verb.</p>
</verbDesc>
<arguments>
<ul>
<li><term>identifier</term> [required] the document identifier</li>
<li><term>version</term> specifies the document version for which the structure information is requested. If omitted, the response provides information about the latest document version.</li>
<li><term>view</term> specifies the the view of the document for which structure information is requested. If omitted, the response provides information about the default view. Specific views are requested using the view id value, obtained using the <tt>ListViews</tt> verb.</li>
</ul>
</arguments>
<responseDesc>
<p>Each response will include one <tt>view</tt> element. There will always be one and only one default view of a document.</p>
<ul>
<li><element>view</element> contains one high-level, or root, <tt>div</tt> element, within which nested <tt>div</tt> hierarchies are allowed. <tt>view</tt> element attributes are:
<ul>
<li><tt>id</tt> :: [required] an id value for this view. This id is defined as an XML ID.</li>
<li><tt>label</tt> :: [required] a displayable label identifying this view. These are applied by the local repository and should help end users choose an appropriate document view.</li>
<li><tt>default</tt> :: [required for default view] equals <tt>1</tt> for the sole default view; equals <tt>0</tt> for all other views. If absent, <tt>default="0"</tt> is assumed.</li>
</ul>
</li>
<li><element>div</element> each <tt>view</tt> element contains one immediate child <tt>div</tt> element. This single <tt>div</tt> may itself contain one or more <tt>div</tt> elements. <tt>div</tt> element attributes are:
<ul>
<li><tt>id</tt> :: [required] an ID value for this division, usable as is in Formats and other requests. This is not defined as an XML ID.</li>
<li><tt>type</tt> :: type of division.</li>
<li><tt>order</tt> :: [required] the order of this <tt>div</tt> among its siblings. Values are positive integers, beginning with 1.</li>
<li><tt>label</tt> :: a displayable label for this division. These are applied by the local repository and should make sense in a navigational context.</li>
<li><tt>diss</tt> :: indicates whether this division can be requested successfully using the Disseminate verb. Values are "0" (cannot be disseminated), or "1" (can be requested with Disseminate).</li>
</ul>
</li>
</ul>
</responseDesc>
<errorCodes>
<ul>
<li><term>idDoesNotExist</term> the value of the <tt>identifier</tt> argument is unknown or illegal.</li>
<li><term>badArgument</term> the request includes illegal arguments, is missing required arguments, or contains invalid argument values.</li>
</ul>
</errorCodes>
<examples>
<request>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=Structure&amp;ver=1.0&amp;identifier=cul.math/00640001</requestEx>
</request>
<response>
<responseEx>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;CGM&gt;
  &lt;responseDate&gt;2002-10-02T19:20:30Z&lt;/responseDate&gt;
  &lt;request protocol="CGM" verb="Structure" ver="1.0"
           identifier="cul.math/00640001"&gt;
           http://some.cgm.server/script&lt;/request&gt;
  &lt;Structure ver="1.0"&gt;
    &lt;identifier value="cul.math/00640001"/&gt;
    &lt;view id="v123-a" label="Page Listing" default="1"&gt;
      &lt;div id="a123" type="maindocument" order="1" label="Entire Monograph"
           diss="0"&gt;
        &lt;div id="a123-1" type="page" order="1" label="Page NA" diss="1"&gt;
        &lt;div id="a123-2" type="page" order="2" label="Page i" diss="1"&gt;
        &lt;div id="a123-3" type="page" order="3" label="Page ii diss="1""&gt;
        &lt;div id="a123-4" type="page" order="4" label="Page 1" diss="1"&gt;
        &lt;div id="a123-5" type="page" order="5" label="Page 2" diss="1"&gt;
        &lt;div id="a123-6" type="page" order="6" label="Page 3" diss="1"&gt;
        &lt;div id="a123-7" type="page" order="7" label="Page 4" diss="1"&gt;
        &lt;div id="a123-8" type="page" order="8" label="Page 5" diss="1"&gt;
        &lt;div id="a123-9" type="page" order="9" label="Page 6" diss="1"&gt;
      &lt;/div&gt;
    &lt;/view&gt;
  &lt;/Structure&gt;
&lt;/CGM&gt;
</responseEx>
<p>The response above describes the physical structure of a document. Because no view was specified in the request, the default view was returned. This <tt>diss</tt> attributes indicate that only the individual pages can be requested with the Disseminate verb.</p>
</response>
<request>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=Structure&amp;ver=1.0&amp;identifier=cul.math/00640001&amp;view=v123-b</requestEx>
</request>
<response>
<responseEx>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;CGM&gt;
  &lt;responseDate&gt;2002-10-02T19:20:30Z&lt;/responseDate&gt;
  &lt;request protocol="CGM" verb="Structure" ver="1.0"
           identifier="cul.math/00640001" view="v123-b"&gt;
           http://some.cgm.server/script&lt;/request&gt;
  &lt;Structure ver="1.0"&gt;
    &lt;identifier value="cul.math/00640001"/&gt;
    &lt;view id="v123-b" label="Chapter Listing" default="0"&gt;
      &lt;div id="a123" type="maindocument" order="1" label="Entire Monograph"
           diss="0"&gt;
        &lt;div id="a123-1" type="front" order="1" label="Front Matter" diss="1"&gt;
          &lt;div id="a123-1-1" type="page" order="1" label="Page i" diss="1"&gt;
          &lt;div id="a123-1-2" type="page" order="2" label="Page ii" diss="1"&gt;
          &lt;div id="a123-1-3" type="page" order="3" label="Page iii" diss="1"&gt;
        &lt;/div&gt;
        &lt;div id="a123-2" type="chapter" order="2" label="Chapter I" diss="1"&gt;
          &lt;div id="a123-2-1" type="page" order="1" label="Page 1" diss="1"&gt;
          &lt;div id="a123-2-2" type="page" order="2" label="Page 2" diss="1"&gt;
          &lt;div id="a123-2-3" type="page" order="3" label="Page 3" diss="1"&gt;
          &lt;div id="a123-2-4" type="page" order="4" label="Page 4" diss="1"&gt;
          ....
          &lt;div id="a123-2-36" type="page" order="36" label="Page 36" diss="1"&gt;
        &lt;/div&gt;
        &lt;div id="a123-3" type="chapter" order="3" label="Chapter II" diss="1"&gt;
          &lt;div id="a123-3-37" type="page" order="1" label="Page 37" diss="1"&gt;
          &lt;div id="a123-3-38" type="page" order="2" label="Page 38" diss="1"&gt;
          &lt;div id="a123-3-39" type="page" order="3" label="Page 39" diss="1"&gt;
          &lt;div id="a123-3-40" type="page" order="4" label="Page 40" diss="1"&gt;
          ....
          &lt;div id="a123-3-77" type="page" order="41" label="Page 75" diss="1"&gt;
        &lt;/div&gt;
        ...
      &lt;/div&gt;
    &lt;/view&gt;
  &lt;/Structure&gt;
&lt;/CGM&gt;
</responseEx>
<p>This response describes a non-default view of the identified document. The document view is structured into a front section and following chapters, with individual page images available within these structures. ("..." indicates where additional pages and chapters have been omitted in the example for brevity). The <tt>diss</tt> attributes indicate that the pages and also entire chapters can be requested with the Disseminate verb. A Formats request would be needed to determine what formats were available for dissemination.</p>
</response>
</examples>
<history>
<p>Modification of Dienst verb Structure, version 2.0. CGM has removed all format related functions from the Dienst Structure.</p>
<p>Earlier NSF-DFG note: For <tt>Structure</tt>, we discussed replacing the unnumbered DIVs, which can nest, with numbered DIVs (e.g., DIV1, DIV2, etc.).  Further, <tt>Structure</tt> should use real ID values (i.e., only NAME characters, beginning with an alpha character), and need to have a sense of relationship between layers (e.g., what shows first, GIF or PDF?) and a repository's desire to suppress or hold back a layer (e.g., don't show the OCR without this caveat, or don't show it until you've shown other layers, and then only with this caveat).</p>
</history>
</verb>

<verb>
<verbHead><a name="Terms">Terms of Use</a></verbHead>
<verbName>Terms</verbName>
<verbVersion>1.0</verbVersion>
<verbDate>2003-06-18</verbDate>
<reqArgs>identifier</reqArgs>
<optArgs>version</optArgs>
<mimetype>text/xml</mimetype>
<verbDesc><p>Returns terms of use and rights information for a document.</p></verbDesc>
<arguments><ul>
<li><term>identifier</term> [required] the document identifier for which terms of use information is requested.</li>
<li><term>version</term> specifies the document version for which the terms of use information is requested. If omitted, it provides information about the latest document version available (see ListVersions).</li>
</ul>
</arguments>
<responseDesc>
<ul>
<li><element>statement</element> a single <tt>statement</tt> element is returned, the most current statement available for the document requested. A <tt>statement</tt> element can contain one or more <tt>p</tt> elements. <tt>p</tt> elements in turn contain text, a link to another document, or a combination of text and links.</li>
<li><element>p</element> a paragraph element, for encoding a text statement.</li>
<li><element>link</element> for creating a link. <tt>link</tt> can contain data or be empty. The behavior of the link is controlled with three attributes:
<ul>
<li><tt>actuate</tt> :: defines whether a link occurs automatically or must be activated by the user.
<ul>
<li><tt>onload</tt> :: the link is activated, and the resource is displayed, automatically.</li>
<li><tt>onrequest</tt> :: the resource is displayed if the user activates the link.</li>
</ul>
</li>
<li><tt>show</tt> :: determines how a remote resource appears when the link is activated.
<ul>
<li><tt>embed</tt> :: the target resource displays at the point of the link.</li>
<li><tt>new</tt> :: the target resource appears in a new window.</li>
<li><tt>replace</tt> :: the target resource displays in the same window as the resource that contained the link.</li>
</ul>
</li>
<li><tt>href</tt> :: the locator for a remote resource, expressed as a URL.</li>
</ul>
</li>
</ul>
</responseDesc>
<errorCodes>
<ul>
<li><term>idDoesNotExist</term> the value of the <tt>identifier</tt> argument is unknown or illegal.</li>
<li><term>badArgument</term> the request includes illegal arguments, is missing required arguments, or contains invalid argument values.</li>
<li><term>noTermsAvailable</term> there is no terms-of-use statement available for this document.</li>
</ul>
</errorCodes>
<examples>
<request>
<requestEx>http://some.cgm.server/script?protocol=CGM
	&amp;verb=Terms&amp;ver=1.0&amp;identifier=cul.math/00640001</requestEx>
</request>
<response>
<responseEx>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;CGM&gt;
  &lt;responseDate&gt;2002-10-02T19:20:30Z&lt;/responseDate&gt;
  &lt;request verb="Terms" ver="1.0" identifier="cul.math/00640001"&gt;
           http://some.cgm.server/script&lt;/request&gt;
  &lt;Terms ver="1.0"&gt;
    &lt;identifier value="cul.math/00640001"&gt;
    &lt;statement&gt;
      &lt;p&gt;This digital material is made available by Cornell 
         University Library, and is to be used for personal or research use
         only. Any other use, including but not limited to commercial or
         scholarly reproductions, redistribution, publication, or transmission,
         whether by electronic means or otherwise, without prior written
         permission of the Library is prohibited.&lt;/p&gt;
    &lt;/statement&gt;
  &lt;/Terms&gt;
&lt;/CGM&gt;
</responseEx>
<p></p>
<responseEx>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;CGM&gt;
  &lt;responseDate&gt;2002-10-02T19:20:30Z&lt;/responseDate&gt;
  &lt;request verb="Terms" ver="1.0" identifier="cul.math/00640001"&gt;
           http://some.cgm.server/script&lt;/request&gt;
  &lt;Terms ver="1.0"&gt;
    &lt;identifier value="cul.math/00640001"&gt;
    &lt;statement&gt;
      &lt;p&gt;For rights information, see the &lt;link actuate="onrequest"
         show="new" href="http://cdl.library.cornell.edu/guidelines.html"&gt;
         Cornell University Library Rights Statement&lt;/link&gt;.&lt;/p&gt;
    &lt;/statement&gt;
  &lt;/Terms&gt;
&lt;/CGM&gt;
</responseEx>
<p></p>
<responseEx>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;CGM&gt;
  &lt;responseDate&gt;2002-10-02T19:20:30Z&lt;/responseDate&gt;
  &lt;request verb="Terms" ver="1.0" identifier="cul.math/00640001"&gt;
           http://some.cgm.server/script&lt;/request&gt;
  &lt;Terms ver="1.0"&gt;
    &lt;identifier value="cul.math/00640001"&gt;
    &lt;statement&gt;
      &lt;p&gt;
         &lt;link actuate="onload" show="replace" 
         href="http://cdl.library.cornell.edu/guidelines.html" /&gt;
      &lt;/p&gt;
    &lt;/statement&gt;
  &lt;/Terms&gt;
&lt;/CGM&gt;
</responseEx>
</response>
</examples>
<history>
<p></p>
</history>
</verb>

</cgm>