[CITE-Forum] CSW 2.0.2 Test Specification: nextRecord value when maxRecords="0"

Duthie, Roger J.A. rogie at bas.ac.uk
Mon Dec 11 06:28:15 EST 2017


Dear CITE Forum,


This is my first post to this mailing group, so: hello!


I have recently been working on a harvester and validation service for internal use at my organisation.  The harvestable endpoint of our metadata catalogue uses CSW and specifically the PyCSW package.  Firstly, I had noticed an inconsistency in the response from PyCSW when the numberOfRecordsReturned was less than the maxRecords, but the number of matched records was greater than maxRecords; this can can happen if startPosition != 0.  In these cases, the numberOfRecordsReturned erroneously took the value of maxRecords.  As a result I started helping fix this problem with the PyCSW team.


This went well, as the fix was rather simple; however, my analysis exposed another issue which is preventing the patch I have written from being accepted.  The issue is that, with the fix to the software and associated functional tests, PyCSW does not pass all the CITE tests.


The issue arises when maxRecords="0", which should force the same behaviour as if resultType="hits" [v07-006r1 "OpenGIS Catalogue Services Specification specification v2.0.2" 10.8.4.7 p149].  Looking at what that behaviour should be [10.8.4.3 p147]:

"[...] the catalogue service shall return a < GetRecordsResponse > element containing an empty < SearchResults > element that indicates the estimated size of the result set. Optional attributes may or may not be set accordingly."


When I was making my fix for the other issue, the value of nextRecord was discussed on the PyCSW IRC channel (freenode #pycsw).  The answer to the question, what should the nextRecord attribute be when no records have been returned, but all records have been reported, was nextRecord=0.  This also is the value nextRecord would take if the last of the records had been returned.


However, it is true that the specification does not dictate what this value should be.  The question to the CITE forum is: is nextRecord=1 expected for some reason that I haven't found yet, or is this test being over unnecessarily strict on this?


Thanks for reading, I look forward to seeing a response.  Let me know if any further information is required.


All the best,

Roger Duthie

Data Manager / Software Developer

British Antarctic Survey

Cambridge, UK


P.S.

The particular test is:

The response to a GetRecords request that specifies
maxRecords="0" must not include any results.

The request and response from the test:


Request

<csw:GetRecords xmlns="http://www.occamlab.com/ctl"
                xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
                xmlns:ctl="http://www.occamlab.com/ctl"
                xmlns:dc="http://purl.org/dc/elements/1.1/"
                xmlns:dct="http://purl.org/dc/terms/"
                xmlns:gen="java:com.occamlab.te.Generator"
                xmlns:gml="http://www.opengis.net/gml"
                xmlns:ogc="http://www.opengis.net/ogc"
                xmlns:ows="http://www.opengis.net/ows"
                xmlns:p="http://teamengine.sourceforge.net/parsers"
                xmlns:parsers="http://www.occamlab.com/te/parsers"
                xmlns:saxon="http://saxon.sf.net/"
                xmlns:te="http://www.occamlab.com/te"
                xmlns:tec="java:com.occamlab.te.TECore"
                xmlns:tems="java:com.occamlab.te.web.MonitorServlet"
                xmlns:xi="http://www.w3.org/2001/XInclude"
                xmlns:xlink="http://www.w3.org/1999/xlink"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                maxRecords="0"
                resultType="results"
                service="CSW"
                version="2.0.2">
   <csw:Query typeNames="csw:Record">
      <csw:ElementName>dc:identifier</csw:ElementName>
      <csw:ElementName>ows:BoundingBox</csw:ElementName>
      <csw:Constraint version="1.1.0">
         <ogc:Filter>
            <ogc:Not>
               <ogc:BBOX>
                  <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>
                  <gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11:4326">
                     <gml:lowerCorner>60.0 12.0</gml:lowerCorner>
                     <gml:upperCorner>70.0 20.0</gml:upperCorner>
                  </gml:Envelope>
               </ogc:BBOX>
            </ogc:Not>
         </ogc:Filter>
      </csw:Constraint>
   </csw:Query>
</csw:GetRecords>

Response

      <csw:GetRecordsResponse xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
                        xmlns:dc="http://purl.org/dc/elements/1.1/"
                        xmlns:dct="http://purl.org/dc/terms/"
                        xmlns:gmd="http://www.isotc211.org/2005/gmd"
                        xmlns:gml="http://www.opengis.net/gml"
                        xmlns:ows="http://www.opengis.net/ows"
                        xmlns:xs="http://www.w3.org/2001/XMLSchema"
                        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                        version="2.0.2"
                        xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd">
  <csw:SearchStatus timestamp="2017-12-07T11:30:59Z"/>
  <csw:SearchResults nextRecord="0" numberOfRecordsMatched="11" numberOfRecordsReturned="0"
                      recordSchema="http://www.opengis.net/cat/csw/2.0.2"/>
   <!--Response received in [501] milliseconds--></csw:GetRecordsResponse>

Error message from CITE:

[FAILURE] Expected csw:SearchResults/@nextRecord = 1.




________________________________
This message (and any attachments) is for the recipient only. NERC is subject to the Freedom of Information Act 2000 and the contents of this email and any reply you make may be disclosed by NERC unless it is exempt from release under the Act. Any material supplied to NERC may be stored in an electronic records management system.
________________________________
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opengeospatial.org/pipermail/cite-forum/attachments/20171211/a9237631/attachment-0001.html>


More information about the CITE-Forum mailing list