a version for recommended change to GetResource,GetIdentity
Ray Plante
rplante at ncsa.uiuc.edu
Mon Jun 19 08:59:58 PDT 2006
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
-------------- next part --------------
<?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>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: RegistryInterface-v0.8.4rp2.doc
Type: application/x-ms-word
Size: 567296 bytes
Desc:
URL: <http://www.ivoa.net/pipermail/registry/attachments/20060619/8605173b/attachment-0001.bin>
More information about the registry
mailing list