Strabon
changeset 97:369029414139
merge
author | George Garbis <ggarbis@di.uoa.gr> |
---|---|
date | Thu Apr 05 12:58:20 2012 +0300 (2012-04-05) |
parents | 00cdb7b244b4 1ab50d5a58c4 |
children | b22762ef9795 |
files |
line diff
1.1 --- a/endpoint/WebContent/WEB-INF/web.xml Thu Apr 05 12:56:46 2012 +0300 1.2 +++ b/endpoint/WebContent/WEB-INF/web.xml Thu Apr 05 12:58:20 2012 +0300 1.3 @@ -33,6 +33,17 @@ 1.4 <url-pattern>/Store</url-pattern> 1.5 </servlet-mapping> 1.6 1.7 + <servlet> 1.8 + <display-name>Update</display-name> 1.9 + <servlet-name>Update</servlet-name> 1.10 + <servlet-class>eu.earthobservatory.org.StrabonEndpoint.UpdateBean</servlet-class> 1.11 + <load-on-startup>1</load-on-startup> 1.12 + </servlet> 1.13 + <servlet-mapping> 1.14 + <servlet-name>Update</servlet-name> 1.15 + <url-pattern>/Update</url-pattern> 1.16 + </servlet-mapping> 1.17 + 1.18 <!-- <servlet> --> 1.19 <!-- <display-name>QueryServlet</display-name> --> 1.20 <!-- <servlet-name>QueryServlet</servlet-name> -->
2.1 --- a/endpoint/src/main/java/eu/earthobservatory/org/StrabonEndpoint/QueryBean.java Thu Apr 05 12:56:46 2012 +0300 2.2 +++ b/endpoint/src/main/java/eu/earthobservatory/org/StrabonEndpoint/QueryBean.java Thu Apr 05 12:58:20 2012 +0300 2.3 @@ -6,7 +6,6 @@ 2.4 import java.io.IOException; 2.5 import java.io.PrintWriter; 2.6 import java.math.BigInteger; 2.7 -import java.net.InetAddress; 2.8 import java.security.SecureRandom; 2.9 import java.util.Date; 2.10 import java.util.Iterator; 2.11 @@ -18,11 +17,6 @@ 2.12 import javax.servlet.http.HttpServletRequest; 2.13 import javax.servlet.http.HttpServletResponse; 2.14 2.15 -import org.apache.commons.httpclient.HttpClient; 2.16 -import org.apache.commons.httpclient.HttpException; 2.17 -import org.apache.commons.httpclient.HttpMethod; 2.18 -import org.apache.commons.httpclient.NameValuePair; 2.19 -import org.apache.commons.httpclient.methods.GetMethod; 2.20 import org.apache.commons.io.FileUtils; 2.21 import org.openrdf.query.MalformedQueryException; 2.22 import org.openrdf.query.QueryEvaluationException; 2.23 @@ -36,7 +30,8 @@ 2.24 2.25 private static final long serialVersionUID = -378175118289907707L; 2.26 2.27 - public QueryBean() {} 2.28 + private ServletContext context; 2.29 + private StrabonBeanWrapper strabonWrapper; 2.30 2.31 public void doGet(HttpServletRequest request, HttpServletResponse response) 2.32 throws ServletException, IOException 2.33 @@ -58,28 +53,6 @@ 2.34 this.errorMessage = null; 2.35 } 2.36 2.37 - public String getTinyURL(String fullURL){ 2.38 - String tinyUrl = null; 2.39 - 2.40 - try { 2.41 - HttpClient httpclient = new HttpClient(); 2.42 - HttpMethod method = new GetMethod("http://tinyurl.com/api-create.php"); 2.43 - method.setQueryString(new NameValuePair[]{new NameValuePair("url",fullURL)}); 2.44 - httpclient.executeMethod(method); 2.45 - tinyUrl = method.getResponseBodyAsString(); 2.46 - method.releaseConnection(); 2.47 - 2.48 - } catch (HttpException e) { 2.49 - // TODO Auto-generated catch block 2.50 - e.printStackTrace(); 2.51 - } catch (IOException e) { 2.52 - // TODO Auto-generated catch block 2.53 - e.printStackTrace(); 2.54 - } 2.55 - 2.56 - return tinyUrl; 2.57 - } 2.58 - 2.59 public String getSPARQLQuery() { 2.60 return SPARQLQuery; 2.61 } 2.62 @@ -104,51 +77,22 @@ 2.63 this.errorMessage = error; 2.64 } 2.65 } 2.66 - 2.67 -// System.out.println("\n\n\n\n\n\n\nrequest: "); 2.68 -// System.out.println("HEADERS"); 2.69 -// Enumeration headerNames = request.getHeaderNames(); 2.70 -// while(headerNames.hasMoreElements()) { 2.71 -// String headerName = (String)headerNames.nextElement(); 2.72 -// System.out.println(headerName + ":" +request.getHeader(headerName)); 2.73 -// } 2.74 -// System.out.println("ATTRIBUTES"); 2.75 -// Enumeration attributeNames = request.getAttributeNames(); 2.76 -// while(attributeNames.hasMoreElements()) { 2.77 -// String attributeName = (String)attributeNames.nextElement(); 2.78 -// System.out.println(attributeName + ":" +request.getAttribute(attributeName).toString()); 2.79 -// } 2.80 -// Enumeration paramNames = request.getParameterNames(); 2.81 -// while(paramNames.hasMoreElements()) { 2.82 -// String paramName = (String)paramNames.nextElement(); 2.83 -// System.out.print(paramName + ":"); 2.84 -// String[] paramValues = request.getParameterValues(paramName); 2.85 -// if (paramValues.length == 1) { 2.86 -// String paramValue = paramValues[0]; 2.87 -// if (paramValue.length() == 0) 2.88 -// System.out.print("No Value"); 2.89 -// else 2.90 -// System.out.print(paramValue + " "); 2.91 -// } else { 2.92 -// for(int i=0; i<paramValues.length; i++) { 2.93 -// System.out.println(":" + paramValues[i]); 2.94 -// } 2.95 -// } 2.96 -// } 2.97 -// 2.98 -// System.out.println("\n\n\n\n\nREQUEST.CONTENTTYPE='"+request.getContentType()+"'\n\n\n\n\n"); 2.99 - 2.100 + 2.101 DataHive hive = new DataHive(); 2.102 2.103 hive.setSPARQLQuery(request.getParameter("SPARQLQuery")); 2.104 - //System.out.println("SPARQLQuery = " + this.SPARQLQuery); 2.105 2.106 String reqFormat = (request.getParameter("format") == null) ? "" : request.getParameter("format"); 2.107 String reqAccept = (request.getHeader("accept") == null) ? "" : request.getHeader("accept"); 2.108 String reqFuncionality = (request.getParameter("submit") == null) ? "" : request.getParameter("submit"); 2.109 2.110 // check whether Update submit button was fired 2.111 - boolean isUpdate = (reqFuncionality.equals("Update") ? true:false); 2.112 + if (reqFuncionality.equals("Update")) { // only for executions from web browsers 2.113 + response.setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT); 2.114 + response.sendRedirect("Update?SPARQLQuery=" + hive.getSPARQLQuery()); 2.115 + 2.116 + return; 2.117 + } 2.118 2.119 if ((reqFormat == "") && (reqAccept == "")) { 2.120 hive.setFormat("HTML"); 2.121 @@ -175,37 +119,10 @@ 2.122 response.setContentType("text/html; charset=UTF-8"); 2.123 hive.setFormat("HTML"); 2.124 } 2.125 - //System.out.println("\n\n\n\n\format='"+this.format+"'\n\n\n\n\n"); 2.126 2.127 - ServletContext context = getServletContext(); 2.128 - WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(context); 2.129 - StrabonBeanWrapper strabonWrapper = (StrabonBeanWrapper)applicationContext.getBean("strabonBean"); 2.130 - 2.131 - if (isUpdate) { 2.132 - try { 2.133 - strabonWrapper.getStrabon().update(hive.getSPARQLQuery(), strabonWrapper.getStrabon().getSailRepoConnection()); 2.134 - response.setStatus(HttpServletResponse.SC_OK); 2.135 - 2.136 - } catch(MalformedQueryException e) { 2.137 - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); 2.138 - PrintWriter out = response.getWriter(); 2.139 - e.printStackTrace(out); 2.140 - } 2.141 - 2.142 - return; 2.143 - } 2.144 - 2.145 PrintWriter out = response.getWriter(); 2.146 2.147 if ((hive.getFormat().equalsIgnoreCase("KML"))) { 2.148 - //try { 2.149 - // String url = "http://www.google.com"; 2.150 - // java.awt.Desktop.getDesktop().browse(java.net.URI.create(url)); 2.151 - // } 2.152 - // catch (java.io.IOException e) { 2.153 - // System.out.println(e.getMessage()); 2.154 - // } 2.155 - 2.156 StringBuilder errorMessage = new StringBuilder (); 2.157 String answer = evaluateQuery(strabonWrapper, hive.getFormat(), reqFuncionality, hive.getSPARQLQuery(), errorMessage); 2.158 hive.setErrorMessage(errorMessage.toString()); 2.159 @@ -240,33 +157,19 @@ 2.160 2.161 //System.out.println("Done"); 2.162 2.163 - }catch(IOException e){ 2.164 + } catch(IOException e) { 2.165 e.printStackTrace(); 2.166 - } 2.167 + } 2.168 2.169 response.setContentType("application/vnd.google-earth.kml+xml; charset=UTF-8"); 2.170 response.setDateHeader("Expires", 0); 2.171 - InetAddress thisIp =InetAddress.getLocalHost(); 2.172 response.setHeader("Location", request.getScheme() + "://" + request.getServerName() +":" + request.getServerPort() +"/tmp/" + temp + ".kml"); 2.173 - response.setStatus(301); 2.174 - 2.175 - //out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">"); 2.176 - //out.println("<html>"); 2.177 - //out.println("<head>"); 2.178 - //out.println("<title>:)</title>"); 2.179 - //out.println("<meta http-equiv=\"REFRESH\" content=\"0;url=http://maps.google.com/maps?q=http://localhost:8080/tmp/temp.kml\"></HEAD>"); 2.180 - //out.println("<BODY>"); 2.181 - //out.println("Redirection WILL occur!"); 2.182 - //out.println("</BODY>"); 2.183 - //out.println("</HTML>"); 2.184 - //out.println(answer); 2.185 - 2.186 + response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); 2.187 2.188 String pathToKML = ""; 2.189 - //InetAddress thisIp = InetAddress.getLocalHost(); 2.190 2.191 if (answer!="") 2.192 - pathToKML = request.getScheme() + "://" + request.getServerName() +":" + request.getServerPort() +"/tmp/" + temp + ".kml";//"http://dl.dropbox.com/u/19752551/dlr.kml"; 2.193 + pathToKML = request.getScheme() + "://" + request.getServerName() +":" + request.getServerPort() +"/tmp/" + temp + ".kml"; 2.194 2.195 appendHTML1a(out,pathToKML); 2.196 2.197 @@ -286,16 +189,49 @@ 2.198 //out.append("<div id=\"map_canvas\"></div>"); 2.199 out.append(""); 2.200 appendHTML5(out); 2.201 - } 2.202 - else if ((hive.getFormat().equalsIgnoreCase("XML"))) { 2.203 + 2.204 + } else if ((hive.getFormat().equalsIgnoreCase("XML"))) { 2.205 + int status_code = HttpServletResponse.SC_OK; 2.206 + String answer = ""; 2.207 + 2.208 + try { 2.209 + // execute query 2.210 + answer = (String) strabonWrapper.query(hive.getSPARQLQuery(), hive.getFormat()); 2.211 + 2.212 + } catch (MalformedQueryException e) { 2.213 + status_code = HttpServletResponse.SC_BAD_REQUEST; 2.214 + answer = e.getMessage(); 2.215 + 2.216 + } catch (RepositoryException e) { 2.217 + status_code = HttpServletResponse.SC_INTERNAL_SERVER_ERROR; 2.218 + answer = e.getMessage(); 2.219 + 2.220 + } catch (QueryEvaluationException e) { 2.221 + status_code = HttpServletResponse.SC_INTERNAL_SERVER_ERROR; 2.222 + answer = e.getMessage(); 2.223 + 2.224 + } catch (TupleQueryResultHandlerException e) { 2.225 + status_code = HttpServletResponse.SC_INTERNAL_SERVER_ERROR; 2.226 + answer = e.getMessage(); 2.227 + 2.228 + } catch (ClassNotFoundException e) { 2.229 + status_code = HttpServletResponse.SC_INTERNAL_SERVER_ERROR; 2.230 + answer = e.getMessage(); 2.231 + } 2.232 + 2.233 + // write response to client 2.234 response.setContentType("text/xml; charset=UTF-8"); 2.235 - StringBuilder errorMessage = new StringBuilder (); 2.236 - String answer = evaluateQuery(strabonWrapper, hive.getFormat(), reqFuncionality, hive.getSPARQLQuery(), errorMessage); 2.237 - hive.setErrorMessage(errorMessage.toString()); 2.238 - out.println(answer); 2.239 - 2.240 - } 2.241 - else { 2.242 + response.setStatus(status_code); 2.243 + if (status_code == HttpServletResponse.SC_OK) { 2.244 + response.getWriter().append(answer); 2.245 + 2.246 + } else { 2.247 + response.getWriter().append(UpdateBean.getUPDATEHeaderResponse()); 2.248 + response.getWriter().append(UpdateBean.getExceptionError(answer)); 2.249 + response.getWriter().append(UpdateBean.getUPDATEFooterResponse()); 2.250 + } 2.251 + 2.252 + } else { // HTML 2.253 2.254 appendHTML1a(out,""); 2.255 2.256 @@ -337,27 +273,22 @@ 2.257 2.258 public void init(ServletConfig servletConfig) throws ServletException { 2.259 super.init(servletConfig); 2.260 + 2.261 + // get StrabonWrapper 2.262 + context = getServletContext(); 2.263 + WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(context); 2.264 + 2.265 + strabonWrapper = (StrabonBeanWrapper) applicationContext.getBean("strabonBean"); 2.266 } 2.267 2.268 public String evaluateQuery(StrabonBeanWrapper strabonWrapper, String resultFormat, String reqFunctionality, String SPARQLQuery, StringBuilder errorMessage) { 2.269 String answer = ""; 2.270 - 2.271 -// System.out.println("evaluateQuery: will call wrapper. Query = " + this.SPARQLQuery); 2.272 -// System.out.println("evaluateQuery: will call wrapper. result = " + resultFormat); 2.273 - 2.274 + 2.275 try { 2.276 if (SPARQLQuery == null) { 2.277 answer = ""; 2.278 } else { 2.279 - //System.out.println("evaluateQuery: Calling..."); 2.280 - if (reqFunctionality.equals("Update")) { 2.281 - //if (((String)this.SPARQLQuery).toLowerCase().contains("insert") || ((String)this.SPARQLQuery).toLowerCase().contains("delete")) { 2.282 - answer = (String)strabonWrapper.update(SPARQLQuery, resultFormat); 2.283 - } 2.284 - else{ 2.285 - answer = (String)strabonWrapper.query(SPARQLQuery, resultFormat); 2.286 - } 2.287 - //System.out.println("evaluateQuery: Called..."); 2.288 + answer = (String) strabonWrapper.query(SPARQLQuery, resultFormat); 2.289 } 2.290 } catch (MalformedQueryException e) { 2.291 e.printStackTrace(); 2.292 @@ -382,10 +313,6 @@ 2.293 errorMessage.append(e.getMessage()); 2.294 } 2.295 2.296 - //System.out.println("evaluateQuery: called wrapper. answer = " + answer); 2.297 - //System.out.println("evaluateQuery: called wrapper. error = " + ((this.errorMessage == null) ? "" : this.errorMessage)); 2.298 - 2.299 - 2.300 return answer; 2.301 } 2.302
3.1 --- a/endpoint/src/main/java/eu/earthobservatory/org/StrabonEndpoint/StrabonBeanWrapper.java Thu Apr 05 12:56:46 2012 +0300 3.2 +++ b/endpoint/src/main/java/eu/earthobservatory/org/StrabonEndpoint/StrabonBeanWrapper.java Thu Apr 05 12:58:20 2012 +0300 3.3 @@ -12,7 +12,6 @@ 3.4 import org.openrdf.repository.RepositoryException; 3.5 import org.openrdf.repository.sail.SailRepositoryConnection; 3.6 import org.openrdf.rio.RDFFormat; 3.7 -import org.openrdf.rio.RDFParseException; 3.8 3.9 import eu.earthobservatory.runtime.postgis.Strabon; 3.10 3.11 @@ -102,19 +101,6 @@ 3.12 throw new RepositoryException("Could not connect to Strabon."); 3.13 } 3.14 3.15 - //String newQueryString = TemporalWrapper.rebuildQuery(queryString); 3.16 - 3.17 - System.out.println("================================================================"); 3.18 - System.out.println("Query:"); 3.19 - System.out.println(queryString); 3.20 - System.out.println("================================================================"); 3.21 - System.out.println("Answer format: " + answerFormatStrabon); 3.22 - System.out.println("================================================================"); 3.23 - //System.out.println("Rewritten query:"); 3.24 - //System.out.println(newQueryString); 3.25 - //System.out.println("================================================================"); 3.26 - 3.27 - //return strabon.query(newQueryString, answerFormatStrabon, strabon.getSailRepoConnection()); 3.28 return strabon.query(queryString, answerFormatStrabon, strabon.getSailRepoConnection()); 3.29 } 3.30
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 4.2 +++ b/endpoint/src/main/java/eu/earthobservatory/org/StrabonEndpoint/UpdateBean.java Thu Apr 05 12:58:20 2012 +0300 4.3 @@ -0,0 +1,86 @@ 4.4 +/** 4.5 + * 4.6 + */ 4.7 +package eu.earthobservatory.org.StrabonEndpoint; 4.8 + 4.9 +import java.io.IOException; 4.10 + 4.11 +import javax.servlet.ServletConfig; 4.12 +import javax.servlet.ServletContext; 4.13 +import javax.servlet.ServletException; 4.14 +import javax.servlet.http.HttpServlet; 4.15 +import javax.servlet.http.HttpServletRequest; 4.16 +import javax.servlet.http.HttpServletResponse; 4.17 + 4.18 +import org.openrdf.query.MalformedQueryException; 4.19 +import org.springframework.web.context.WebApplicationContext; 4.20 +import org.springframework.web.context.support.WebApplicationContextUtils; 4.21 + 4.22 +/** 4.23 + * @author charnik 4.24 + * 4.25 + */ 4.26 +public class UpdateBean extends HttpServlet { 4.27 + 4.28 + private static final long serialVersionUID = -633279376188071670L; 4.29 + 4.30 + private StrabonBeanWrapper strabonWrapper; 4.31 + 4.32 + public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 4.33 + doPost(request, response); 4.34 + } 4.35 + 4.36 + @Override 4.37 + public void init(ServletConfig servletConfig) throws ServletException { 4.38 + super.init(servletConfig); 4.39 + 4.40 + // get strabon wrapper 4.41 + ServletContext context = getServletContext(); 4.42 + WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(context); 4.43 + 4.44 + strabonWrapper = (StrabonBeanWrapper) applicationContext.getBean("strabonBean"); 4.45 + } 4.46 + 4.47 + public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 4.48 + String query = request.getParameter("SPARQLQuery"); 4.49 + 4.50 + String answer = ""; 4.51 + try { 4.52 + strabonWrapper.getStrabon().update(query, strabonWrapper.getStrabon().getSailRepoConnection()); 4.53 + response.setStatus(HttpServletResponse.SC_OK); 4.54 + answer = "true"; 4.55 + 4.56 + } catch(MalformedQueryException e) { 4.57 + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); 4.58 + answer = getExceptionError(e.getMessage()); 4.59 + } 4.60 + 4.61 + // write response to client 4.62 + response.getWriter().append(UpdateBean.getUPDATEHeaderResponse()); 4.63 + response.getWriter().append(answer); 4.64 + response.getWriter().append(UpdateBean.getUPDATEFooterResponse()); 4.65 + } 4.66 + 4.67 + /** 4.68 + * Used as the template answer for UPDATE queries. 4.69 + * @return 4.70 + */ 4.71 + public static String getUPDATEHeaderResponse() { 4.72 + return "<?xml version='1.0' encoding='UTF-8'?>\n" + 4.73 + "<response>\n" + 4.74 + "\t"; 4.75 + } 4.76 + 4.77 + /** 4.78 + * Used as the template answer for UPDATE queries. 4.79 + * @return 4.80 + */ 4.81 + public static String getUPDATEFooterResponse() { 4.82 + return "\n</response>\n"; 4.83 + } 4.84 + 4.85 + public static String getExceptionError(String msg) { 4.86 + return "<exception>\n"+msg+"\n\t</exception>"; 4.87 + } 4.88 + 4.89 +}
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 5.2 +++ b/scripts/endpoint Thu Apr 05 12:58:20 2012 +0300 5.3 @@ -0,0 +1,101 @@ 5.4 +#!/bin/bash 5.5 +# 5.6 +# Script for executing SPARQL queries and SPARQL Update queries 5.7 +# as well as storing RDF triples on a Strabon Endpoint. 5.8 +# 5.9 +# Author: Charalampos (Babis) Nikolaou <charnik@di.uoa.gr> 5.10 +# 5.11 + 5.12 +function help() { 5.13 + echo SYNOPSIS 5.14 + echo " `basename ${0}` query|update|store ARGS" 5.15 +} 5.16 + 5.17 +function help_query() { 5.18 + echo SYNOPSIS 5.19 + echo " `basename ${0}` query URL SPARQL_QUERY" 5.20 + echo 5.21 + echo " URL : the URL of Strabon Endpoint (e.g., http://localhost:8080/StrabonEndpoint/)" 5.22 + echo " SPARQL_QUERY : the SPARQL query to execute" 5.23 +} 5.24 + 5.25 +function help_update() { 5.26 + echo SYNOPSIS 5.27 + echo " `basename ${0}` update URL SPARQL_QUERY" 5.28 + echo 5.29 + echo " URL : the URL of Strabon Endpoint (e.g., http://localhost:8080/StrabonEndpoint/)" 5.30 + echo " SPARQL_QUERY : the SPARQL update query to execute" 5.31 +} 5.32 + 5.33 +function help_store() { 5.34 + echo SYNOPSIS 5.35 + echo " `basename ${0}` store URL FORMAT -t TRIPLES|-u TRIPLES_URL " 5.36 + echo 5.37 + echo " URL : the URL of Strabon Endpoint (e.g., http://localhost:8080/StrabonEndpoint/)" 5.38 + echo " FORMAT : the RDF format of the input (one of RDF/XML, N-Triples, Turtle, N3, TriX, TriG, or BinaryRDF)" 5.39 + echo " TRIPLES : the RDF triples to store" 5.40 + echo " TRIPLES_URL : the URL containing the RDF triples to store" 5.41 +} 5.42 + 5.43 +CURL_OPTS="-w HTTP_CODE=%{http_code}\n -H \"Content-Type:application/x-www-form-urlencoded\" -H \"Accept:text/xml\"" 5.44 + 5.45 +case "${1}" in 5.46 + help) 5.47 + help 5.48 + exit 0 5.49 + ;; 5.50 + query) 5.51 + shift 5.52 + if ! test $# -eq 2; then 5.53 + help_query 5.54 + exit 1 5.55 + fi 5.56 + URL="${1}/Query" 5.57 + QUERY="${2}" 5.58 + 5.59 + # TODO: make it an argument 5.60 + FORMAT="XML" 5.61 + 5.62 + curl ${CURL_OPTS} -d "format=${FORMAT}" --data-urlencode "SPARQLQuery=${QUERY}" ${URL} 5.63 + ;; 5.64 + update) 5.65 + shift 5.66 + if ! test $# -eq 2; then 5.67 + help_update 5.68 + exit 1 5.69 + fi 5.70 + URL="${1}/Update" 5.71 + QUERY="${2}" 5.72 + 5.73 + curl ${CURL_OPTS} --data-urlencode "SPARQLQuery=${QUERY}" ${URL} 5.74 + ;; 5.75 + store) 5.76 + shift 5.77 + if ! test $# -eq 4; then 5.78 + help_store 5.79 + exit 1 5.80 + fi 5.81 + URL="${1}/Store" 5.82 + FORMAT="${2}" 5.83 + case "${3}" in 5.84 + -t) 5.85 + TRIPLES="${4}" 5.86 + curl ${CURL_OPTS} -d "format=${FORMAT}" --data-urlencode "data=${TRIPLES}" ${URL} 5.87 + ;; 5.88 + -u) 5.89 + URL_TRIPLES="${4}" 5.90 + curl ${CURL_OPTS} -d "format=${FORMAT}" --data-urlencode "url=${URL_TRIPLES}" -d "fromurl=" ${URL} 5.91 + ;; 5.92 + *) 5.93 + help_store 5.94 + exit 1 5.95 + ;; 5.96 + esac 5.97 + ;; 5.98 + *) 5.99 + echo "ERROR: Unknown command \"${1}\"." 5.100 + help 5.101 + exit 1 5.102 + ;; 5.103 +esac 5.104 +