[pycsw-devel] Federated Search question

Tom Kralidis tomkralidis at gmail.com
Fri Apr 1 12:17:37 PDT 2016


On Wed, Mar 30, 2016 at 3:54 PM, Tom Kralidis <tomkralidis at gmail.com> wrote:
> On Wed, 30 Mar 2016, Alejandro Mostovoi wrote:
>
>> Date: Wed, 30 Mar 2016 19:24:58 +0000
>> From: Alejandro Mostovoi <ahmostovoi at gmail.com>
>> To: "pycsw-devel at lists.osgeo.org" <pycsw-devel at lists.osgeo.org>
>> Subject: [pycsw-devel] Federated Search question
>>
>> Hi All,
>>   I'm trying to make a distributed search against other CSW server. Both
>> servers use ISO 19139 metadata standard.
>>   I'm performing a GetRecords operation using this xml:
>>
>> <csw:GetRecords xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
>> xmlns:ogc="
>> http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"
>> service="CSW" version="2.0.2" resultType="results"
>> *outputSchema="http://www.isotc211.org/2005/gmd
>> <http://www.isotc211.org/2005/gmd>"*> <csw:DistributedSearch
>> hopCount="2"/>
>> <csw:Query typeNames="gmd:MD_Metadata">
>> <csw:ElementSetName>full</csw:ElementSetName>
>> </csw:Query>
>> </csw:GetRecords>
>>
>> The response should have 2 records, but it has only 1 record and a comment
>> which says: <!-- 1 result from <csw server url> --> and nothing else.
>>
>> I made another test, changing the outputSchema to
>>
>> *outputSchema="http://www.opengis.net/cat/csw/2.0.2*
>> and the response has the 2 records, but with a different schema.
>>
>> I need to get the 2 records with the *gmd* schema. What I'm doing wrong?
>>
>> The pycsw version is 1.10.3, on Ubuntu Server 14.04 64-bit.
>>
>> Thanks in advance.
>> Alejandro
>>
>
> My first guess is that the CSW that you are federated against is refusing to
> transform
> all metadata records to ISO.  Or that pycsw is not telling it to do so for
> some reason.
>
> What happens when you apply the following queries directly against the
> federated CSW:
>
> query 1:
>
> <csw:GetRecords xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
> service="CSW" version="2.0.2" resultType="results"
> xmlns:gmd="http://www.isotc211.org/gmd"
> outputSchema="http://www.isotc211.org/2005/gmd">
>   <csw:Query typeNames="gmd:MD_Metadata">
>     <csw:ElementSetName>full</csw:ElementSetName>
>   </csw:Query>
> </csw:GetRecords>
>
> query 2:
>
> <csw:GetRecords xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
> service="CSW" version="2.0.2" resultType="results">
>   <csw:Query typeNames="csw:Record">
>     <csw:ElementSetName>full</csw:ElementSetName>
>   </csw:Query>
> </csw:GetRecords>
>
> If the federated CSW is returning 2 records in both cases, then there is a
> moving part in pycsw's
> distributed search.  In this case, if you turn on logging (level=DEBUG), run
> only the two requests
> and send the logging output (offline) that would be great.  If there's any
> chance of sending the federated
> CSW in question (offline) I can try to reproduce and debug deeper locally.
>

Alejandro: digging deeper, the issue was rooted in an OWSLib bug (now fixed).
See [1] for a full explanation.  In addition, I ended up making
safeguard changes
within pycsw itself in the case of an older OWSLib version.

At this point, OWSLib 0.11.0 has been released and pycsw 1.10.3 will work
expected given this upgrade.  As well, pycsw 1.10.4 (in the next week or so)
will be released, which will cover the fix whether OWSLib has been upgraded
to 0.11.0 or not.

Thanks very much for reporting!

Cheers

..Tom

[1] https://github.com/geopython/pycsw/issues/413


More information about the pycsw-devel mailing list