getValues(); if (is_null($wgRequest->getVal("query"))) { // if no query provided - show the form page $url = $this->getTitle()->getLinkUrl(); $formHTML = "
" . "". "
"; $this->setHeaders(); $wgOut->addHTML( $formHTML ); } else { wfDebugLog('SPARQL_LOG', "#=== query request ===\n"); $response = ""; $header = ""; $output = isset($request["format"]) ? $request["format"] : "xml"; wfDebugLog('SPARQL_LOG', "#=== output is ===\n".$output."\n"); switch (strtolower($output)){ case "xml": $url = SparqlUtil::build_restful_url($smwgSparqlQueryEndpoint, $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($smwgSparqlQueryEndpoint, $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($smwgSparqlQueryEndpoint, $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($smwgSparqlQueryEndpoint, $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($smwgSparqlQueryEndpoint, $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"; wfDebugLog('SPARQL_LOG', "#=== response is ===\n".$response."\n"); break; case "tsv": $url = SparqlUtil::build_restful_url($smwgSparqlQueryEndpoint, $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"] = $smwgSparqlQueryEndpoint; $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($smwgSparqlQueryEndpoint, $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; } } function xslt_transform($url_xml, $url_xsl, $params=false){ # LOAD XML FILE $XML = new DOMDocument(); $XML->load( $url_xml ); # LOAD XSL FILE $XSL = new DOMDocument(); $XSL->load( $url_xsl , LIBXML_NOCDATA); # START XSLT $xslt = new XSLTProcessor(); #load style sheet $xslt->importStylesheet( $XSL ); #set params $xslt->setParameter("",$params); #transform $data = $xslt->transformToXML( $XML ); return $data; } }