Registry Search Recommendations
This section is intended for application developers that wish to incorporate registry searches into their applications. In particular, many applications will have the ability to query data collections via standard DAL protocols (e.g. SIA). The application, then, may wish to discover currently available services that support the protocols.
The queries presented here assume the standard
Registry Interfaces which supports searches via a SOAP Web Service interface. Precise queries can be issued via a constraint-based search (i.e. ADIL-based) or an XQuery search. Note, however, the optional XQuery interface is not supported by all searchable registries; thus, using the constraint-based search interface will provided broadest interoperability. Consequently, the examples of complex searches below are in terms in of a constraint-based search; these can be easily translated to an XQuery if desired.
There is Java software package,
IVOARegistry, that developers may find useful. It provides Java library for querying registries via the standard search interface, so it may be used directly within Java applicatoins. It also provides a command-line tool (
regsearch
) for sending queries, which script-based tools may use to extract information from a registry. In particular, constraint-based queries can be expressed using
ADQL-S. Even if an application does not use this package to search registries, developers may still find it useful to test out queries being programmed into the application.
To test out the queries listed below using
regsearch
, insert the
ADQL-S query constraints in a command line of the following form:
regsearch -e service-endpoint SearchByADQL "adql-s"
as in,
regsearch -e http://nvo.stsci.edu/vor10/ristandardservice.asmx \
SearchByADQL "capability/@standardID='ivo://www.ivoa.net/std/SIA'"
Contents
Locating and Using Standard DAL Services
The queries presented here describe how to locate services that support standard DAL protocols. Most applications will want to issue a precise query in which the response contains only services supporting the desired protocol; for this, it is necessary to issue a constraint-based or XQuery search. While the constraint-based query provides more interoperability, the XQuery allows one to simultaneously located desired resources and extract desired information.
Standard Protocol Identifiers
The key way to identify support for a standard protocol is via the so-called, _standardID_--an IVOA identifier that is referenced in a service description that refers to the standard protocol. Each DAL protocol has a unique ID; the currently defined ones are:
- Simple Cone Search (SCS)
- ivo://www.ivoa.net/std/ConeSearch
- Simple Image Access (SIA)
- ivo://www.ivoa.net/std/SIA
- Simple Spectral Access (SSA)
- ivo://www.ivoa.net/std/SSA
- Simple Line Access (SLA)
- ivo://www.ivoa.net/std/SLA
- Table Access (TAP)
- ivo://www.ivoa.net/std/TAP
Precise Search Queries
Most of the queries below are finding SIA services. They can be easily adapted to other services by substituting in the proper standard ID. The query is expressed as the value for the
where
input parameter to the constraint based search operation to the registry search interface.
Finding all SIA services
ADQL-S Where Clause:
capability/@standardID='ivo://www.ivoa.net/std/SIA'
Sample SOAP request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<rs:Search xmlns="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"
xmlns:rs="http://www.ivoa.net/wsdl/RegistrySearch/v1.0">
<rs:Where>
<ad:Condition Comparison="=" xsi:type="ad:comparisonPredType"
xmlns:ad="http://www.ivoa.net/xml/ADQL/v1.0">
<ad:Arg Table="" name="@standardID" xpathName="capability/@standardID"
xsi:type="ad:columnReferenceType"/>
<ad:Arg xsi:type="ad:atomType">
<ad:Literal Value="ivo://www.ivoa.net/std/SIA" xsi:type="ad:stringType"/>
</ad:Arg>
</ad:Condition>
</rs:Where>
<max xmlns="">500</max>
<identifiersOnly xmlns="">true</identifiersOnly>
</rs:Search>
</soapenv:Body>
</soapenv:Envelope>
Restricting to only active resources
Extracting the DAL Access URL
Keyword-based Searches