Пример #1
0
 public static function build_restful_url($url, $params)
 {
     $url .= "?";
     foreach ($params as $key => $value) {
         $url .= "{$key}=" . SparqlUtil::encode($value) . "&";
     }
     return $url;
 }
 public function getData()
 {
     global $sparqlProxyIP, $sparqlProxyPort, $sparqlEndpointConfiguration;
     $data = false;
     $type = false;
     if (isset($this->parameters[$sparqlEndpointConfiguration["output_type_parameter"]])) {
         $type = $this->parameters[$sparqlEndpointConfiguration["output_type_parameter"]];
     } else {
         $type = $sparqlEndpointConfiguration["default_type"];
     }
     $url = $this->getEndpointRequestUrlForType($type);
     $query_output = SparqlUtil::readQueryOutput($url, $sparqlProxyIP, $sparqlProxyPort, $type);
     switch ($type) {
         case "json":
             $data = SparqlUtil::parse_json($query_output);
             break;
         default:
             $data = SparqlUtil::parse_csv($query_output);
     }
     return $data;
 }
 function execute($par)
 {
     global $wgRequest, $wgOut, $sparqlEndpointConfiguration;
     $request = $wgRequest->getValues();
     if (is_null($wgRequest->getVal("query"))) {
         // if no query provided - show the form page
         $url = $this->getTitle()->getLinkUrl();
         $formHTML = "<form action=\"" . $url . "\" method=\"get\">" . "<textarea name=\"query\" rows=\"40\">" . SparqlUtil::createPrefixes() . "select * where {\n" . "?x ?y ?z .\n" . "} limit 10" . "</textarea>" . "<div><select name=\"" . $sparqlEndpointConfiguration["output_type_parameter"] . "\">" . "<option value=\"" . SparqlExtension::$XML_TYPE . "\">XML</option>" . "<option value=\"" . SparqlExtension::$JSON_TYPE . "\">JSON</option>" . "<option value=\"" . SparqlExtension::$TEXT_TYPE . "\" selected=\"true\">TEXT</option>" . "<option value=\"" . SparqlExtension::$CSV_TYPE . "\">CSV</option>" . "<option value=\"" . SparqlExtension::$TSV_TYPE . "\">TSV</option>" . "<option value=\"" . SparqlExtension::$GDS_TYPE . "\">GOOGLE-VIS</option>" . "<option value=\"" . SparqlExtension::$SR_TYPE . "\">SEMANTIC REPORT</option>" . "</select><input type=\"submit\" value=\"Get Results\" /></form></div>";
         $this->setHeaders();
         $wgOut->addHTML($formHTML);
     } else {
         $sparql_url = $sparqlEndpointConfiguration["service_url"];
         $response = "";
         $header = "";
         $output = isset($request["output"]) ? $request["output"] : "xml";
         switch (strtolower($output)) {
             case "xml":
                 $url = SparqlUtil::build_restful_url($sparql_url, $request);
                 $opts = array('http' => array('method' => 'GET', 'header' => 'Accept: application/sparql-results+xml, application/rdf+xml, application/xml'));
                 $context = stream_context_create($opts);
                 $response = file_get_contents($url, false, $context);
                 $header = "Content-type: application/xml; charset=utf-8";
                 break;
             case "gds":
                 $url = SparqlUtil::build_restful_url($sparql_url, $request);
                 $inputparams = array();
                 if (isset($request["tqx"])) {
                     $inputparams["tqx"] = $request["tqx"];
                 }
                 $response = $this->xslt_transform($url, SparqlExtension::$GDS_XSL_URL, $inputparams);
                 $header = "Content-type: application/x-javascript; charset=utf-8";
                 break;
             case "json":
                 $url = SparqlUtil::build_restful_url($sparql_url, $request);
                 $opts = array('http' => array('method' => 'GET', 'header' => 'Accept: application/sparql-results+json, application/rdf+json, application/json'));
                 $context = stream_context_create($opts);
                 $response = file_get_contents($url, false, $context);
                 $header = "Content-type: application/json; charset=utf-8";
                 break;
             case "text":
                 $url = SparqlUtil::build_restful_url($sparql_url, $request);
                 $opts = array('http' => array('method' => 'GET', 'header' => 'Accept: text/plain, text/*, */*'));
                 $context = stream_context_create($opts);
                 $response = file_get_contents($url, false, $context);
                 $header = "Content-type: text/plain; charset=utf-8";
                 break;
             case "csv":
                 $url = SparqlUtil::build_restful_url($sparql_url, $request);
                 $opts = array('http' => array('method' => 'GET', 'header' => 'Accept: text/csv, text/*, */*'));
                 $context = stream_context_create($opts);
                 $response = file_get_contents($url, false, $context);
                 $header = "Content-type: text/csv; charset=utf-8";
                 break;
             case "tsv":
                 $url = SparqlUtil::build_restful_url($sparql_url, $request);
                 $opts = array('http' => array('method' => 'GET', 'header' => 'Accept: text/tsv, text/*, */*'));
                 $context = stream_context_create($opts);
                 $response = file_get_contents($url, false, $context);
                 $header = "Content-type: text/tsv; charset=utf-8";
                 break;
             case "semantic-reports":
                 $request["endpoint"] = $sparql_url;
                 $request["view"] = "create";
                 $url = SparqlUtil::build_restful_url("http://semanticreports.com/reports/", $request);
                 //$response = file_get_contents($url);
                 $header = "Location: " . $url;
                 break;
             default:
                 $url = SparqlUtil::build_restful_url($sparql_url, $request);
                 $opts = array('http' => array('method' => 'GET', 'header' => 'Accept: application/sparql-results+xml, application/rdf+xml, application/xml'));
                 $context = stream_context_create($opts);
                 $response = file_get_contents($url, false, $context);
                 $header = "Content-type: application/xml; charset=utf-8";
                 break;
         }
         $wgOut->disable();
         header($header);
         print $response;
     }
 }