a version for recommended change to GetResource,GetIdentity

KevinBenson kmb at mssl.ucl.ac.uk
Tue Jun 20 08:12:13 PDT 2006


Yes it looks very good, I placed it on the RegistryInterface page 
http://www.ivoa.net/twiki/bin/view/IVOA/RegistryInterface    The wsdl 
was not quite right, but corrected it (I think); it should now work with 
WSDL2Java. Located in schema/registry/RegistrySearch/v1.0 for the wsdl. 
  The zip file has some older unused schema's as well and probably not 
the most recent 1.0 vr:Resource schema's but will try to get the latest 
version tomorrow.

As far as the document goes I like your changes especially the WSDL 
Notes inline in the document.  There might still be a couple of concerns 
with KeywordSearch that I will have a think about and post a separate 
e-mail later on that subject or follow up on Paul's e-mail.

cheers,
Kevin

Ray Plante wrote:
> Hi Kevin and Aurelien,
>
> (I know I've been sending you stuff fast and furious, so I'll understand 
> if you need some time to digest some of this stuff.  Sorry!)
>
> As you know, I've suggested we change the WSDL descriptions of GetResource 
> and GetIdentity to use a different output format than 
> Search/KeywordSearch to only allow one Resource record to be returned.  
> Also, as I've alluded to previously, a number of recent incremental 
> changes have introduce a number of inconsistances and a somewhat 
> hodgepodge organization of the spec document.  So along with my 
> recommended change to the WSDL, I wanted to take the opportunity to 
> reorganize the spec around the new WSDL.  
>
> Here's a summary of what I did to the RegistrySearch interface WSDL:
>   o  GetResource and GetIdentity share a common output format called 
>        ResolveResponse that allows exactly one Resource element.  
>
>   o  I got rid of the separate RegistryInterface.xsd file; since this 
>        schema is used only by RegistrySearch, it seems just as easy to 
>        include it directly in the <types> section of the WSDL.
>
>   o  I defined an extra NotFound fault for GetResource to handle the case 
>        when the input identifier cannot be resolved to a record.  
>
>   o  I added in XQuerySearch to be part of the WSDL, regardless of whether 
>        the registry supports it.  
>
>   o  I added the OperationUnsupported fault to XQuerySearch that 
>        non-supporting registries should throw.  
>
>   o  in the <binding> section, I matched the soapAction and namespace URIs 
>        to the target namespace of the WSDL itself.  
>
> Given these changes, I've reorganized section 2 around the theme that we 
> have two kinds of operations in the searching interface:  "search" 
> operations that return VOResources and "resolve" operations that return a 
> single Resource; the contents now looks like this...
>
> 2  Searching	
>   2.1  Required Search Operations	
>     2.1.1  Output Format	
>     2.1.2  Constraint-based Search Query
>     2.1.3  Keyword Search Query
>   2.2  Resolve Operations
>     2.2.1  Output Format
>     2.2.2  Identifier Resolution
>     2.2.3  Identity Query
>   2.3  XQuery Search
>
> There isn't anything new in terms of content (other than what I talked
> about above in the WSDL), but you will see a bunch more detail describing
> inputs and outputs.  Here are some notes:
>
>   o  The pagination and identifierOnly schemes (old section 2.1) have 
>        been integrated into the descriptions of inputs and outputs.
>
>   o  The description of VORegistry metadata has been moved to the (as yet 
>        unfinished) section 4.  
>
>   o  I went ahead and changed that "to" attribute to "max".  
>
> So if I can't talk you into the WSDL changes ;-) we can revert the spec 
> document back and try to deal with the inconsistancies and organization 
> there.  
>
> cheers,
> Ray
>
>   
> ------------------------------------------------------------------------
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <definitions name="IVOARegistrySearch" 
>              xmlns="http://schemas.xmlsoap.org/wsdl/" 
>              xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
>              xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
>              xmlns:xs="http://www.w3.org/2001/XMLSchema" 
>              xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
>              xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 
>              xmlns:vr="http://www.ivoa.net/xml/VOResource/v1.0" 
>              xmlns:adql="http://www.ivoa.net/xml/ADQL/v1.0" 
>              xmlns:tns="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"
>              targetNamespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0">
>    <types>
>       <xs:schema xmlns="http://www.w3.org/2001/XMLSchema" 
>          xmlns:tns="http://www.ivoa.net/wsdl/RegistrySearch/v1.0" 
>          targetNamespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0">
>
>          <xs:import namespace="http://www.ivoa.net/xml/VOResource/v1.0"
>                     schemaLocation=
>                   "../../../../schemas/VOResource/v1.0/VOResource-v1.0.xsd"/>
>          <xs:import namespace="http://www.ivoa.net/xml/ADQL/v1.0" 
>                     schemaLocation="ADQL.xsd" />
>
>          <xs:element name="VOResources">
>             <xs:complexType>
>                <xs:sequence>
>                   <xs:choice>
>                      <xs:element name="Resource" type="vr:Resource" 
>                                  minOccurs="0" maxOccurs="unbounded"/>
>                      <xs:element name="identifier" type="vr:IdentifierURI" 
>                                  minOccurs="0" maxOccurs="unbounded"/>
>                    </xs:choice>
>                </xs:sequence>
>                <xs:attribute name="from" type="xs:positiveInteger" />
>                <xs:attribute name="numberReturned" type="xs:positiveInteger" />
>                <xs:attribute name="more" type="xs:boolean" />
>             </xs:complexType>
>          </xs:element>
>    
>          <xs:element name="Where" type="adql:whereType" />
>
>          <xs:element name="Search">
>            <xs:complexType>
>              <xs:sequence>
>                <xs:element ref="ri:Where" minOccurs="1" maxOccurs="1" />
>                <xs:element name="from" type="xs:positiveInteger" 
>                            minOccurs="0" maxOccurs="1" />
>                <xs:element name="to" type="xs:positiveInteger" 
>                            minOccurs="0" maxOccurs="1" />
>                <xs:element name="identifiersOnly" type="xs:boolean" 
>                            minOccurs="0" maxOccurs="1" />
>              </xs:sequence>
>            </xs:complexType>
>          </xs:element>
>
>          <xs:element name="SearchResponse">
>            <xs:complexType>
>              <xs:sequence>
>                <xs:element ref="ri:VOResources" minOccurs="1" maxOccurs="1" />
>              </xs:sequence>
>            </xs:complexType>
>          </xs:element>
>       
>          <xs:element name="ResolveResponse">
>            <xs:complexType>
>              <xs:sequence>
>                <xs:element name="Resource" type="vr:Resource" 
>                            minOccurs="1" maxOccurs="1" />
>              </xs:sequence>
>            </xs:complexType>
>          </xs:element>
>       
>          <xs:element name="KeywordSearch">
>            <xs:complexType>
>              <xs:sequence>
>                <xs:element name="keywords" type="xs:string" 
>                            minOccurs="1" maxOccurs="1" />
>                <xs:element name="orValues" type="xs:boolean" default="false" 
>                            minOccurs="1" maxOccurs="1" />
>                <xs:element name="from" type="xs:positiveInteger" 
>                            minOccurs="0" maxOccurs="1" />
>                <xs:element name="to" type="xs:positiveInteger" 
>                            minOccurs="0" maxOccurs="1" />
>                <xs:element name="identifiersOnly" type="xs:boolean" 
>                            minOccurs="0" maxOccurs="1" />
>              </xs:sequence>
>            </xs:complexType>
>          </xs:element>
>       
>          <xs:element name="GetResource">
>            <xs:complexType>
>              <xs:sequence>
>                <xs:element name="identifier" type="xs:string" 
>                            minOccurs="1" maxOccurs="1" />
>              </xs:sequence>
>            </xs:complexType>
>          </xs:element>      
>
>          <xs:element name="XQuerySearch">
>            <xs:complexType>
>              <xs:sequence>
>                <xs:element name="xquery" type="xs:string" 
>                            minOccurs="1" maxOccurs="1" />
>              </xs:sequence>
>            </xs:complexType>
>          </xs:element>      
>
>          <xs:element name="XQuerySearchResponse">
>            <xs:complexType>
>              <xs:sequence>
>                <xs:any minOccurs="0"/>
>              </xs:sequence>
>            </xs:complexType>
>          </xs:element>
>
>          <xs:element name="ErrorResponse">
>            <xs:complexType>
>              <xs:sequence>
>                <xs:element name="errorMessage" type="xs:string" 
>                            minOccurs="1" maxOccurs="1" />
>              </xs:sequence>
>            </xs:complexType>
>          </xs:element>      
>       
>          <xs:element name="UnsupportedOperation">
>            <xs:complexType>
>              <xs:sequence>
>                <xs:element name="errorMessage" type="xs:string" 
>                            minOccurs="0" maxOccurs="1" />
>              </xs:sequence>
>            </xs:complexType>
>          </xs:element>      
>       
>          <xs:element name="NotFound">
>            <xs:complexType>
>              <xs:sequence>
>                <xs:element name="errorMessage" type="xs:string" 
>                            minOccurs="0" maxOccurs="1" />
>              </xs:sequence>
>            </xs:complexType>
>          </xs:element>      
>       </xs:schema>      
>    </types>
>
>    <message name="empty"/>
>    
>    <message name="ErrorResp">
>       <part name="ErrorResp"  element="tns:ErrorResponse"/>
>    </message>   
>
>    <message name="OpUnsupportedResp">
>       <part name="OpUnsupportedResp"  element="tns:UnsupportedOperation"/>
>    </message>   
>
>    <message name="NotFoundResp">
>       <part name="NotFoundResp"  element="tns:NotFound"/>
>    </message>   
>
>    <message name="SearchReq">
>       <part name="Search" element="tns:Search" />
>    </message>
>    
>    <message name="SearchResp">
>       <part name="VOResources" element="tns:SearchResponse" />
>    </message>
>    
>    <message name="ResolveResp">
>       <part name="Resource" element="tns:ResolveResponse" />
>    </message>
>    
>    <message name="KeywordSearchReq">
>       <part name="KeywordSearch" element="tns:KeywordSearch" />
>    </message>
>
>    <message name="GetResourceReq">
>       <part name="GetResource" element="tns:GetResource" />
>    </message>
>          
>    <portType name="RegistrySearchPort">
>       <operation name="Search">
>          <input message="tns:SearchReq" />
>          <output message="tns:SearchResp" />
>          <fault name="SearchError" message="tns:ErrorResp"/>         
>       </operation>
>
>       <operation name="KeywordSearch">
>          <input message="tns:KeywordSearchReq" />
>          <output message="tns:SearchResp" />
>          <fault name="KeywordSearchError" message="tns:ErrorResp"/>         
>       </operation>      
>
>       <operation name="GetResource">
>          <input message="tns:GetResourceReq" />
>          <output message="tns:ResolveResp" />
>          <fault name="GetResourceError" message="tns:ErrorResp"/>         
>       </operation>      
>
>       <operation name="GetIdentity">
>          <input message="tns:empty" />
>          <output message="tns:ResolveResp" />
>          <fault name="GetIdentityError" message="tns:ErrorResp"/>         
>          <fault name="NotFound" message="tns:NotFoundResp"/>
>       </operation>      
>
>       <operation name="XQuerySearch">
>          <input message="tns:XQuerySearchReq" />
>          <output message="tns:XQuerySearchResp" />
>          <fault name="XQuerySearchError" message="tns:ErrorResp"/>
>          <fault name="OpUnsupported" message="tns:OpUnsupportedResp"/>
>       </operation>      
>    </portType>
>
>    <binding name="RegistrySearchSOAP" type="tns:RegistrySearchPortType">
>       <soap:binding style="document" 
>                     transport="http://schemas.xmlsoap.org/soap/http"/>
>
>       <operation name="Search">
>          <soap:operation style="document" 
>              soapAction="http://www.ivoa.net/wsdl/RegistrySearch/v1.0#Search"/>
>          <input>
>             <soap:body use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"/>
>          </input>
>          <output>
>             <soap:body use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0" />
>          </output>
>          <fault name="SearchError">
>             <soap:fault name="SearchError" use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"/>
>          </fault>         
>       </operation>
>
>       <operation name="KeywordSearch">
>          <soap:operation style="document" 
>                soapAction=
>                 "http://www.ivoa.net/wsdl/RegistrySearch/v1.0#KeywordSearch"/>
>          <input>
>             <soap:body use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"/>
>          </input>
>          <output>
>             <soap:body use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"/>
>          </output>
>          <fault name="KeywordSearchError">
>             <soap:fault name="KeywordSearchError" use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"/>
>          </fault>             
>       </operation>      
>       
>       <operation name="GetResource">
>          <soap:operation style="document" 
>              soapAction=
>                  "http://www.ivoa.net/wsdl/RegistrySearch/v1.0#GetResource" />
>          <input>
>             <soap:body use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"/>
>          </input>
>          <output>
>             <soap:body use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"/>
>          </output>
>          <fault name="GetResourceError">
>             <soap:fault name="GetResourceError" use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"/>
>          </fault>          
>       </operation>       
>       
>       <operation name="GetIdentity">
>          <soap:operation style="document" 
>              soapAction=
>                  "http://www.ivoa.net/wsdl/RegistrySearch/v1.0#GetIdentity" />
>          <input>
>             <soap:body use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"/>
>          </input>
>          <output>
>             <soap:body use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"/>
>          </output>
>          <fault name="GetResourceError">
>             <soap:fault name="GetIdentityError" use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"/>
>          </fault>          
>          <fault name="NotFound">
>             <soap:fault name="NotFound" use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"/>
>          </fault>          
>       </operation>       
>       
>       <operation name="XQuerySearch">
>          <soap:operation style="document" 
>                soapAction=
>                   "http://www.ivoa.net/wsdl/RegistrySearch/v1.0#XQuerySearch"/>
>          <input>
>             <soap:body use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"/>
>          </input>
>          <output>
>             <soap:body use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0" />
>          </output>
>          <fault name="XQuerySearchError">
>             <soap:fault name="XQuerySearchError" use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"/>
>          </fault>         
>          <fault name="OpUnsupported">
>             <soap:fault name="OpUnsupported" use="literal" 
>                   namespace="http://www.ivoa.net/wsdl/RegistrySearch/v1.0"/>
>          </fault>         
>       </operation>
>
>    </binding>
> </definitions>
>
>   



More information about the registry mailing list