Source for file XML.php

Documentation is available at XML.php

  1. <?php
  2. require_once RDFAPI_INCLUDE_DIR 'sparql/SparqlEngineDb/ResultRenderer.php';
  3.  
  4. /**
  5. *   XML result renderer for SparqlEngine
  6. *
  7. *   @author Tobias Gauß <tobias.gauss@web.de>
  8. *   @author Christian Weiske <cweiske@cweiske.de>
  9. *
  10. *   @package sparql
  11. */
  12. class SparqlEngine_ResultRenderer_XML implements SparqlEngine_ResultRenderer
  13. {
  14.     /**
  15.     *   Converts the database results into the output format
  16.     *   and returns the result.
  17.     *
  18.     *   @param array $arVartable    Variable table
  19.     *   @param Query $query         SPARQL query object
  20.     *   @param SparqlEngine $engine Sparql Engine to query the database
  21.     *   @return string XML result
  22.     */
  23.     public function convertFromResult($arVartableQuery $querySparqlEngine $engine)
  24.     {
  25.         $this->query   $query;
  26.         $this->engine  $engine;
  27.         $this->dataset $engine->getDataset();
  28.  
  29.         if ($arVartable instanceof NamedGraphMem{
  30.             return $arVartable->writeRdfToString();
  31.         }
  32.  
  33.         $result '<sparql xmlns="http://www.w3.org/2005/sparql-results#">';
  34.         $header '<head>';
  35.  
  36.         // build header
  37.         if (is_array($arVartable)) {
  38.             $vars $this->query->getResultVars();
  39.             $header '<head>';
  40.             foreach ($vars as $value{
  41.                 $header $header
  42.                         . '<variable name="' substr($value1'"/>';
  43.             }
  44.             $header $header '</head>';
  45.  
  46.             // build results
  47.             $solm $this->query->getSolutionModifier();
  48.             $sel  $this->query->getResultForm();
  49.  
  50.             $distinct 'false';
  51.             if ($sel == 'select distinct'{
  52.                 $distinct 'true';
  53.             }
  54.  
  55.             $ordered 'false';
  56.             if ($solm['order by'!= 0{
  57.                 $ordered 'true';
  58.             }
  59.  
  60.             $results '<results ordered="'.$ordered.'" distinct="'.$distinct.'">';
  61.             foreach ($arVartable as $value{
  62.                 $results $results.'<result>';
  63.                 foreach ($value as $varname => $varvalue{
  64.                     $results $results
  65.                             . $this->_getBindingString(
  66.                                 substr($varname1),
  67.                                 $varvalue
  68.                             );
  69.                 }
  70.                 $results $results '</result>';
  71.             }
  72.             $results $results '</results>';
  73.         else {
  74.             $results '</head><boolean>' $vartable '</boolean>';
  75.         }
  76.  
  77.         $result $result $header $results '</sparql>';
  78.         $result simplexml_load_string($result);
  79.         return $result->asXML();
  80.     }//public function convertFromResult($arVartable, Query $query, SparqlEngine $engine)
  81.  
  82.  
  83.  
  84.     /**
  85.     * Helper Function for function buildXmlResult($vartable). Generates
  86.     * an xml string for a single variable an their corresponding value.
  87.     *
  88.     * @param  String  $varname The variables name
  89.     * @param  Node    $varvalue The value of the variable
  90.     * @return String  The xml string
  91.     */
  92.     protected function _getBindingString($varname$varvalue)
  93.     {
  94.         $binding '<binding name="'.$varname.'">';
  95.         $value '<unbound/>';
  96.  
  97.         if ($varvalue instanceof BlankNode{
  98.             $value '<bnode>' $varvalue->getLabel('</bnode>';
  99.         else if ($varvalue instanceof Resource{
  100.             $value '<uri>' $varvalue->getUri('</uri>';
  101.         else if ($varvalue instanceof Literal{
  102.             $label htmlspecialchars($varvalue->getLabel());
  103.             $value '<literal>'.$label.'</literal>';
  104.             if ($varvalue->getDatatype(!= null{
  105.                 $value '<literal datatype="'
  106.                         . $varvalue->getDatatype('">'
  107.                         . $label
  108.                         . '</literal>';
  109.             }
  110.             if ($varvalue->getLanguage(!= null{
  111.                 $value '<literal xml:lang="'
  112.                         . $varvalue->getLanguage('">'
  113.                         . $label
  114.                         . '</literal>';
  115.             }
  116.         }
  117.         $binding $binding $value '</binding>';
  118.  
  119.         return $binding;
  120.     }//protected function _getBindingString($varname, $varvalue)
  121.  
  122. }//class SparqlEngine_ResultRenderer_XML implements SparqlEngine_ResultRenderer
  123.  
  124. ?>

Documentation generated on Fri, 1 Jun 2007 16:52:46 +0200 by phpDocumentor 1.3.2