- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Mon, 18 Jul 2005 15:51:46 +0100
- To: 'RDF Data Access Working Group' <public-rdf-dawg@w3.org>
- Message-ID: <42DBC202.407@hp.com>
I have been using Axis1 to implement/explore the SPARQL protocol over SOAP. Axis1: http://ws.apache.org/axis/ Axis2: http://ws.apache.org/axis2/ Axis2 (v0.9) was released while I was doing this and I am keen to switch because the new Axis architecture is more interesting for streamed processing. That said, I would not expect migration from Axis1 to Axis2 to be generally fast because existing systems still be around and developers have Axis1 skills. Axis2 isn't complete yet, and features I use are not ready yet. WSDL 1.1. file attached, including a possible SOAP binding. Summary: + Removing the rdf-dataset level and merging the elements simplifies + Request for HTTP POST binding + Minor problem with defining the encoding for HTTP returns ------------------------------------------------- 1/ rdf-dataset The type "rdf-dataset" does not add much - and it is lost in the HTTP binding anyway. As it appears the variability and idiosyncrasies of the various WSDL/SOAP toolkits means it is hard to get a general description that works - the best we can do is to be as simple as possible. I didn't have any such issues with the SPARQL WSDL with Axis but in talking to other people who have had to write and deploy systems working across different SOAP stacks, the advice seems to be "keep it as simple as possible" I merged the parts of rdf-dataset into the query type: <xs:element name="query"> <xs:complexType> <xs:all> <xs:element minOccurs="1" maxOccurs="1" name="sparql-query" type="xs:string"/> <xs:element minOccurs="0" maxOccurs="1" name="default-graph-uri" type="xs:anyURI"/> <xs:element minOccurs="0" maxOccurs="unbounded" name="named-graph-uri" type="xs:anyURI"/> </xs:all> </xs:complexType> </xs:element> This also removes the ordering coming from the sequence which also isn't present in the HTTP GET binding. I don't use the HTTP GET bindings from WSDL (I have directly written a servlet). HTTP GET binding is only defined for simple types in Axis (1 & 2) at the moment and not the full application/x-www-form-urlencoded encoing rules in WSDL 2.0. 2/ We should change "default-graph-uri" to be maxOccurs="unbounded" to align with the WG description about multiple FROM URIs. 3/ I needed to define rdf:RDF, not just import the namespace. I defined it as an element with no further details about it. JAXB happy (Java-XML binding). 4/ SOAP binding. Having to fill in the blanks, I choose literal documents, not SOAP encoding for the SOAP binding. [Detail: I use a custom serializer for putting an RDF model into the output stream - otherwise I use JAXB for mapping XML to and from Java. This was one reason why I stuck with Axis1.] 5/ Please include a whttp:methodDefault="POST" binding with an encoding of application/x-www-form-urlencoded (which is not the default). This makes the servlet API work seamlessly for queries sent over POST (e.g. potentially long queries). <operation ref=.... whttp:inputSerialization='application/x-www-form-urlencoded' whttp:location=... whttp:method='POST'/> 6/ I was not sure what the {http output serialization} should be because it isn't only application/xml for result sets but also application/rdf+xml for a graph. Andy
Attachments
- text/xml attachment: sparql-11.wsdl
- text/xml attachment: sparql-types.xsd
- text/xml attachment: rdf.xsd
Received on Monday, 18 July 2005 14:56:00 UTC