- From: Dan Brickley <danbri@w3.org>
- Date: Mon, 3 Sep 2001 06:22:44 -0400 (EDT)
- To: <www-archive@w3.org>
- cc: <libby.miller@bristol.ac.uk>
Time to get this into CVS somewhere...
--danbri
---------- Forwarded message ----------
package org.w3c.inkling.soap;
import java.net.*;
import java.io.*;
import java.util.*;
import org.apache.axis.*;
import org.apache.axis.utils.*;
import org.apache.axis.client.*;
import org.apache.axis.transport.http.HTTPTransport ;
import java.lang.reflect.Array;
import org.apache.axis.message.*;
import org.apache.axis.encoding.*;
import org.apache.axis.server.AxisServer;
import org.apache.axis.utils.QName;
import org.xml.sax.InputSource;
/**
A simple RDF query client in SOAP
Issues:
- the hashmap argument to the server -- can we avoid this?
- wrap as a driver for Inkling, http://swordfish.rdfweb.org/rdfquery/
- document service interface
- look at datatyping issues (dates etc in query results)
@author Dan Brickley <danbri@w3.org>
or comments/feedback via #rdfig channel: http://www.w3.org/RDF/Interest/#irc
*/
public class RDFQClient {
public static String query = "SELECT ?x, ?l, ?c" +
"FROM http://xmlns.com/wordnet/1.6/Job "+
"WHERE "+
" (web::type ?x rdfs::Class) "+
" (rdfs::label ?x ?l) "+
" (rdfs::description ?x ?c) "+
"USING web FOR http://www.w3.org/1999/02/22-rdf-syntax-ns# "+
"rdfs FOR http://www.w3.org/2000/01/rdf-schema#";
public static String data = "http://xmlns.com/wordnet/1.6/Job";
public static String msg = "<SOAP-ENV:Envelope " +
"xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
"xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" > " +
"<SOAP-ENV:Body>\n" +
"<rq:squish xmlns:rq=\"http://rdfweb.org/RDF/RDFWeb/SOAPDemo\">\n" +
"<rq:query>" + query + "</rq:query>"+
"<rq:data>"+ data +"</rq:data>"+
"<rq:hashmap>1</rq:hashmap>" +
"</rq:squish>\n" +
"</SOAP-ENV:Body></SOAP-ENV:Envelope>\n";
/**
* Send a query message to the server, and print the response.
*/
public static String askWeb () throws Exception {
Message reqMsg = new Message( msg );
ServiceClient client = new ServiceClient(new HTTPTransport());
client.set(HTTPTransport.URL,"http://fireball.dyndns.org/cgi-bin/soap" );
client.set(HTTPTransport.ACTION, "http://rdfweb.org/RDF/RDFWeb/SOAPDemo#squish");
client.setRequestMessage( reqMsg );
client.invoke();
Message resMsg = client.getMessageContext().getResponseMessage();
// System.out.println("XML serialization: "+ resMsg.getAsString());
SOAPEnvelope envelope = (SOAPEnvelope)resMsg.getAsSOAPEnvelope();
RPCElement body = (RPCElement)envelope.getFirstBody();
Vector arglist = body.getParams();
RPCParam param = (RPCParam) arglist.get(0);
Object result = param.getValue();
ArrayList rows = (ArrayList)result;
Object[] answers = (Object[])rows.toArray();
for (int i=0; i<answers.length; i++) {
HashMap h = (HashMap)answers[i];
System.out.println("Result: "+i+"\n");
Iterator keys = h.keySet().iterator();
for (int k=0; k< h.keySet().size(); k++){
String key = (String)keys.next();
String value = (String)h.get(key);
System.out.println(" "+key+" = "+value );
}
}
return (String)resMsg.getAsString();
}
public static void main(String args[]) throws Exception{
askWeb();
}
}
Received on Monday, 3 September 2001 06:22:46 UTC