Source for file SparqlResultParser.php

Documentation is available at SparqlResultParser.php

  1. <?PHP
  2. // ----------------------------------------------------------------------------------
  3. // Class: SparqlResultParser
  4. // ----------------------------------------------------------------------------------
  5.  
  6. /**
  7. * Parses an xml document in SPARQL Result XML Format.
  8. *
  9. @version  $Id: fsource_sparql__syntaxSparqlResultParser.php.html,v 1.5 2006/06/26 12:34:18 tgauss Exp $
  10. @author   Tobias Gauß <tobias.gauss@web.de>
  11. *
  12. @package sparql
  13. */
  14.  
  15. class SparqlResultParser extends Object {
  16.  
  17.  
  18.     var $arrOutput = array();
  19.     var $resParser;
  20.     var $strXmlData;
  21.     var $counter = -1;
  22.     var $mode = -1;
  23.     var $varname;
  24.     var $dtype;
  25.     var $lang;
  26.     var $varlist;
  27.     var $bncounter = 0;
  28.     
  29.     
  30. /**
  31. * Main function of SparqlResultParser
  32. *
  33. @param String  $strInputXML  input document.
  34. */
  35.     function parse($strInputXML{
  36.  
  37.         $this->resParser = xml_parser_create ();
  38.         xml_set_object($this->resParser,$this);
  39.         xml_set_element_handler($this->resParser"tagOpen""tagClosed");
  40.  
  41.         xml_set_character_data_handler($this->resParser"tagData");
  42.  
  43.         $this->strXmlData = xml_parse($this->resParser,$strInputXML );
  44.         if(!$this->strXmlData{
  45.             echo "unable to parse result<br>".
  46.             "server returned: <br>"
  47.             .$strInputXML;
  48.             
  49.             return "false";
  50.         
  51.         }
  52.  
  53.         xml_parser_free($this->resParser);
  54.  
  55.         return $this->arrOutput;
  56.     }
  57.     
  58. // private parser functions from here //    
  59.         function tagOpen($parser$name$attrs{
  60.         //  $tag=array("name"=>$name,"attrs"=>$attrs);
  61.         //  array_push($this->arrOutput,$tag);
  62.         if(strtolower($name)=="variable"){
  63.             if(isset($attrs['name']))
  64.                 $this->varlist[]=$attrs['name'];
  65.             if(isset($attrs['NAME']))
  66.                 $this->varlist[]=$attrs['NAME'];
  67.         }
  68.         
  69.         if(strtolower($name)=="result"){
  70.             $this->counter++;
  71.             if($this->counter > -1){
  72.                 foreach($this->varlist as $value){
  73.                     if(!isset($this->arrOutput[$this->counter][$value]))
  74.                         $this->arrOutput[$this->counter]["?".$value]='';
  75.                 }    
  76.             }
  77.             
  78.         }
  79.         if(strtolower($name)=="boolean"){
  80.             $this->counter++;
  81.             $this->mode = 3;
  82.         }
  83.         if(strtolower($name)=="binding"){
  84.             $this->varname = null;
  85.             $this->dtype   = null;
  86.             $this->lang    = null;
  87.             
  88.             if(isset($attrs['name'])){
  89.                 $this->varname = "?".$attrs['name'];
  90.             }else{
  91.                 $this->varname = "?".$attrs['NAME'];
  92.             }
  93.         }
  94.         if(strtolower($name)=="uri"){
  95.             $this->mode = 0;
  96.         }
  97.         if(strtolower($name)=="literal"){
  98.             $this->mode = 1;
  99.             if(isset($attrs['datatype'])){
  100.                 $this->dtype = $attrs['datatype'];
  101.             }else if(isset($attrs['DATATYPE'])){
  102.                 $this->dtype = $attrs['DATATYPE'];
  103.             }
  104.             if(isset($attrs['xml:lang'])){
  105.                 $this->lang = $attrs['datatype'];
  106.             }else if(isset($attrs['XML:lang'])){
  107.                 $this->lang = $attrs['XML:lang'];
  108.             }else if(isset($attrs['XML:LANG'])){
  109.                 $this->lang = $attrs['XML:LANG'];
  110.             }else if(isset($attrs['xml:LANG'])){
  111.                 $this->lang = $attrs['xml:LANG'];
  112.             }
  113.         }
  114.         if(strtolower($name)=="bnode"){
  115.             $this->mode = 2;
  116.         }
  117.     }
  118.  
  119.     function tagData($parser$tagData{
  120.         switch($this->mode){
  121.             case :
  122.             $this->arrOutput[$this->counter][$this->varnamenew Resource($tagData);
  123.             $this->mode = -1;
  124.             break;
  125.             case 1:
  126.             $lit new Literal($tagData);
  127.             if($this->lang)
  128.                 $lit->setLanguage($this->lang);
  129.             if($this->dtype)
  130.                 $lit->setDatatype($this->dtype);
  131.             $this->arrOutput[$this->counter][$this->varname$lit ;
  132.             $this->mode = -1;
  133.             break;
  134.             case 2:
  135.             if($tagData=="/"){
  136.                 $bn "bNode".$this->bncounter;
  137.                 $this->bncounter++;
  138.             }else{
  139.                 $bn $tagData;
  140.             }
  141.             $this->arrOutput[$this->counter][$this->varnamenew BlankNode($bn);
  142.             $this->mode = -1;
  143.             break;
  144.             case 3:
  145.             $this->arrOutput = $tagData;
  146.             $this->mode = -1;
  147.             break;
  148.  
  149.         }
  150.         
  151.     }
  152.  
  153.     function tagClosed($parser$name{
  154.         
  155.     }
  156. }
  157.  
  158.  
  159. ?>

Documentation generated on Mon, 26 Jun 2006 14:26:24 +0200 by phpDocumentor 1.3.0RC6