From 1c555d989e43a1bd307c22a3ed4c4b55967bd9d3 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Mon, 12 Feb 2001 23:31:14 +0000 Subject: [PATCH] Implemented yaz_present, yaz_scan, yaz_scan_result, yaz_ccl_conf, yaz_ccl_parse and yaz_itemorder. Updated documentation. git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@41161 c90b9560-bf6c-de11-be94-00142212c4b1 --- functions/yaz.xml | 417 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 384 insertions(+), 33 deletions(-) diff --git a/functions/yaz.xml b/functions/yaz.xml index c497d3b874..3ce5022169 100644 --- a/functions/yaz.xml +++ b/functions/yaz.xml @@ -8,8 +8,8 @@ This extension offers a PHP interface to the YAZ toolkit that implements the Z39.50 protocol for information retrieval. With this extension you can easily - implement a Z39.50 origin (client) that searches Z39.50 targets - (servers) in parallel. + implement a Z39.50 origin (client) that searches or scans Z39.50 + targets (servers) in parallel. YAZ is available at @@ -56,15 +57,15 @@ make install (Z-Associations). A positive integer represents the ID of a particular association. - - The script below demonstrates the parallel searching feature of - the API. When invoked with no arguments it prints a query form; else - (arguments are supplied) it searches the targets as given in in array - host. - - <function>YAZ</function> + <function>Parallel searching using YAZ</function> + + The script below demonstrates the parallel searching feature of + the API. When invoked with no arguments it prints a query form; else + (arguments are supplied) it searches the targets as given in in array + host. + $num_hosts = count ($host); if (empty($term) || count($host) == 0) { @@ -152,8 +153,9 @@ if (empty($term) || count($host) == 0) { - Closes a connection to a target. The application can no longer - refer to the target with the given ID. + Closes the Z-association given by id. + The id is a target ID as returned by a + previous yaz_connect command. @@ -162,6 +164,7 @@ if (empty($term) || count($host) == 0) { yaz_connect + Prepares for a connection and Z-association with a target. Returns a positive association ID on success; zero on failure @@ -170,8 +173,13 @@ if (empty($term) || count($host) == 0) { int yaz_connect - string zurl - + string + zurl + + string + authentication + + Yaz_connect prepares for a connection to a @@ -206,7 +214,7 @@ if (empty($term) || count($host) == 0) { question. - Yaz_errno should be called after network + yaz_errno should be called after network activity for each target - (after yaz_wait returns) to determine the success or failure of the last operation (e.g. search). @@ -232,7 +240,7 @@ if (empty($term) || count($host) == 0) { is returned if last operation was a success. - Yaz_error returns a english message + yaz_error returns an english text message corresponding to the last error number as returned by yaz_errno. @@ -277,9 +285,10 @@ if (empty($term) || count($host) == 0) { This function is used in conjunction with - yaz_search to specify the element set name - for records to be retrieved. Most servers support F (full) and - B (brief). + yaz_search and yaz_present + to specify the element set name for records to be retrieved. + Most servers support F (full) and + B (brief). Returns true on success; false on error. @@ -458,12 +467,35 @@ if (empty($term) || count($host) == 0) { + + + yaz_present + + Prepares for retrieval (Z39.50 present). + + + + Description + + + int yaz_present + + + + + This function prepares for retrieval of records after + a successful search. The yaz_range should + be called prior to this function to specify the range of + records to be retrieved. + + + + yaz_syntax - Specifies the object identifier (OID) for the preferred record syntax - for retrieval. + Specifies the preferred record syntax for retrieval. @@ -476,37 +508,356 @@ if (empty($term) || count($host) == 0) { - The syntax may be specified in a raw dot-notation (like - 1.2.840.10003.5.10) or as one of the known - record syntaxes (sutrs, usmarc, grs1, xml, etc.). - This function is used in conjunction with - yaz_search to specify the preferred record - syntax for retrieval. + The syntax is specified as an OID (Object Identifier) in a + raw dot-notation (like 1.2.840.10003.5.10) or + as one of the known registered record syntaxes (sutrs, usmarc, grs1, + xml, etc.). This function is used in conjunction with + yaz_search and yaz_present + to specify the preferred record syntax for retrieval. + + + yaz_scan + Prepares for a scan + + + Description + + + int yaz_scan + int id + string type + string startterm + array + flags + + + + + This function prepares for a Z39.50 Scan Request. Argument + id specifies target ID. Starting term + point for the scan is given by startterm. + The form in which is the starting term is specified is given by + type. Currently type rpn + is supported. The optional flags + specifies additional information to control the behaviour of the + scan request. Three indexes are currently read from the flags: + number (number of terms requested), + position (preferred position of term) and + stepSize (preferred step size). + To actually tranfer the Scan Request to the target and receive the + Scan Response, yaz_wait must be called. Upon + completion of yaz_wait call + yaz_error and + yaz_scan_result to handle the response. + + + The syntax of startterm is similar to the + RPN query as described in yaz_search. The + startterm consists of zero or more @attr-operator + specifications, then followed by exactly one token. + + + + PHP function that scans titles + + function scan_titles($id, $starterm) { + yaz_scan($id,"rpn", "@attr 1=4 " . $starterm); + yaz_wait(); + $errno = yaz_errno($id); + if ($errno == 0) { + $ar = yaz_scan_result($id,&$options); + echo 'Scan ok; '; + $ar = yaz_scan_result($id, &$options); + while(list($key,$val)=each($options)) { + echo "$key = $val  "; + } + echo '<br><table><tr><td>'; + while(list($key,list($k, $term, $tcount))=each($ar)) { + if (empty($k)) continue; + echo "<tr><td>$term</td><td>"; + echo $tcount; + echo "</td></tr>"; + } + echo '</table>'; + } else { + echo "Scan failed. Error: " . yaz_error($id) . "<br>"; + } + } + + + + + + + + + yaz_scan_result + Returns Scan Response result + + + Description + + + array yaz_scan_result + int id + array & + result + + + + + Given a target ID this function returns and array with terms as received + from the target in the last Scan Response. + This function returns an array (0..n-1) where n is the number + of terms returned. Each value is a pair where first item is + term, second item is result-count. + If the result is given it will be modified to hold + additional information taken from the Scan Response: + number (number of entries returned), + stepsize (Step-size), + position (position of term), + status (Scan Status). + + + + + + + yaz_ccl_conf + Configure CCL parser + + + Description + + + int yaz_ccl_conf + int id + array config + + + + This function configures the CCL query parser for a target + with definitions of access points (CCL qualifiers) and their + mapping to RPN. To map a specific CCL query to RPN afterwards + call the yaz_ccl_parse function. + Each index of the array config is the + name of a CCL field and the corresponding value holds a string + that specifies a mapping to RPN. + The mapping is a sequence of attribute-type, attribute-value + pairs. Attribute-type and attribute-value is separated by an equal + sign (=). Each pair is separated by white space. + + + + CCL configuration + + In the example below, the CCL parser is configured to support + three CCL fields: ti, au and + isbn. Each field is mapped to their BIB-1 + equivalent. It is assumed that variable $id is a + target ID. + + + $field["ti"] = "1=4"; + $field["au"] = "1=1"; + $field["isbn"] = "1=7"; + yaz_ccl_conf($id,$field); + + + + + + + + + yaz_ccl_parse + Invoke CCL Parser + + + Description + + + int yaz_ccl_parse + int id + string query + array &result + + + + This function invokes the CCL parser. It converts a given + CCL FIND query to an RPN query which may be passed to the + yaz_search function to perform a search. + To define a set of valid CCL fields call + yaz_ccl_conf prior to this function. + If the supplied query was successfully + converted to RPN, this function returns true, and the index + rpn of the supplied array + result holds a valid RPN query. + If the query could not be converted (because of invalid syntax, + unknown field, etc.) this function returns false and three + indexes are set in the resulting array to indicate the cause + of failure: errorcodeCCL error code (integer), + errorstringCCL error string, and + errorposapproximate position in query of failure + (integer is character position). + + + + + + + yaz_itemorder + + Prepares for Z39.50 Item Order with an ILL-Request package + + + + Description + + + int yaz_itemorder + array args + + + + This function prepares for an Extended Services request using the + Profile for the Use of Z39.50 Item Order Extended Service to + Transport ILL (Profile/1). See + this + and the + + specification. + The args parameter must be a hash array with information about the + Item Order request to be sent. The key of the hash is the name + of the corresponding ASN.1 tag path. For example, the ISBN below + the Item-ID has the key item-id,ISBN. + + + The ILL-Request parameters are: + + +protocol-version-num +transaction-id,initial-requester-id,person-or-institution-symbol,person +transaction-id,initial-requester-id,person-or-institution-symbol,institution +transaction-id,initial-requester-id,name-of-person-or-institution,name-of-person +transaction-id,initial-requester-id,name-of-person-or-institution,name-of-institution +transaction-id,transaction-group-qualifier +transaction-id,transaction-qualifier +transaction-id,sub-transaction-qualifier +service-date-time,this,date +service-date-time,this,time +service-date-time,original,date +service-date-time,original,time +requester-id,person-or-institution-symbol,person +requester-id,person-or-institution-symbol,institution +requester-id,name-of-person-or-institution,name-of-person +requester-id,name-of-person-or-institution,name-of-institution +responder-id,person-or-institution-symbol,person +responder-id,person-or-institution-symbol,institution +responder-id,name-of-person-or-institution,name-of-person +responder-id,name-of-person-or-institution,name-of-institution +transaction-type +delivery-address,postal-address,name-of-person-or-institution,name-of-person +delivery-address,postal-address,name-of-person-or-institution,name-of-institution +delivery-address,postal-address,extended-postal-delivery-address +delivery-address,postal-address,street-and-number +delivery-address,postal-address,post-office-box +delivery-address,postal-address,city +delivery-address,postal-address,region +delivery-address,postal-address,country +delivery-address,postal-address,postal-code +delivery-address,electronic-address,telecom-service-identifier +delivery-address,electronic-address,telecom-service-addreess +billing-address,postal-address,name-of-person-or-institution,name-of-person +billing-address,postal-address,name-of-person-or-institution,name-of-institution +billing-address,postal-address,extended-postal-delivery-address +billing-address,postal-address,street-and-number +billing-address,postal-address,post-office-box +billing-address,postal-address,city +billing-address,postal-address,region +billing-address,postal-address,country +billing-address,postal-address,postal-code +billing-address,electronic-address,telecom-service-identifier +billing-address,electronic-address,telecom-service-addreess +ill-service-type +requester-optional-messages,can-send-RECEIVED +requester-optional-messages,can-send-RETURNED +requester-optional-messages,requester-SHIPPED +requester-optional-messages,requester-CHECKED-IN +search-type,level-of-service +search-type,need-before-date +search-type,expiry-date +search-type,expiry-flag +place-on-hold +client-id,client-name +client-id,client-status +client-id,client-identifier +item-id,item-type +item-id,call-number +item-id,author +item-id,title +item-id,sub-title +item-id,sponsoring-body +item-id,place-of-publication +item-id,publisher +item-id,series-title-number +item-id,volume-issue +item-id,edition +item-id,publication-date +item-id,publication-date-of-component +item-id,author-of-article +item-id,title-of-article +item-id,pagination +item-id,ISBN +item-id,ISSN +item-id,additional-no-letters +item-id,verification-reference-source +copyright-complicance +retry-flag +forward-flag +requester-note +forward-note + + + There are also a few parameters that are part of the Extended + Services Request package and the ItemOrder package: + + +package-name +user-id +contact-name +contact-phone +contact-email +itemorder-item + + + + yaz_wait - Executes queries + Wait for Z39.50 requests to complete Description int yaz_wait - int id - string syntax + This function carries out networked (blocked) activity for outstanding requests which have been prepared by the functions yaz_connect, - yaz_search. yaz_wait - returns when all targets have either completed all requests or - otherwise completed (in case of errors). + yaz_search, yaz_present, + yaz_scan and yaz_itemorder. + yaz_wait returns when all targets have either + completed all requests or aborted (in case of errors).