Source for file TriXSerializer.php

Documentation is available at TriXSerializer.php

  1. <?php
  2. // ----------------------------------------------------------------------------------
  3. // Class: TriXSerializer
  4. // ----------------------------------------------------------------------------------
  5.  
  6. /**
  7. * Temporary implementation of a TriX-Serializer
  8. * 
  9. * @version  $Id: fsource_dataset__syntaxTriXSerializer.php.html 442 2007-06-01 16:19:26Z cax $
  10. * @author Daniel Westphal (http://www.d-westphal.de)
  11. *
  12. * @package     dataset
  13. * @access    public
  14. ***/
  15. class TriXSerializer  
  16. {
  17.     
  18.     /**
  19.     * Reference to the graphSet
  20.     *
  21.     * @var        object GraphSet 
  22.     * @access    private
  23.     */
  24.     var $graphSet;
  25.     
  26.  
  27.     /**
  28.     * Constructor
  29.     * Needs a reference to a graphSet
  30.     *
  31.     * @param    GraphSet 
  32.     * @access    public
  33.     */        
  34.     function TriXSerializer(&$graphSet)
  35.     {
  36.         $this->graphSet=&$graphSet;
  37.     }
  38.  
  39.     /**
  40.     * Serialize the dataset to a TriX string
  41.     *
  42.     * @return   string 
  43.     * @access    public
  44.     */
  45.     function & serializeToString()
  46.     {
  47.         return $this->_serialize();
  48.     }
  49.     
  50.     /**
  51.     * Serialize the dataset to a TriX string and save in file
  52.     *
  53.     * @param   string 
  54.     * @access    public
  55.     */
  56.     function serializeToFile($fileName)
  57.     {
  58.         $serializedString=&$this->_serialize();
  59.         $handle = fopen($fileName, 'w');
  60.            fwrite($handle, $serializedString);
  61.         fclose($handle);
  62.     }
  63.     
  64.     
  65.     /**
  66.     * Serialize the dataset to a TriX string
  67.     *
  68.     * @return   string 
  69.     * @access    private
  70.     */
  71.     function & _serialize()
  72.     {
  73.         //Trix header
  74.         $serializedString=
  75.             '<?xml version="1.0" encoding="utf-8"?>'.
  76.             '<TriX xmlns="http://www.w3.org/2004/03/trix/trix-1/">';
  77.         
  78.         //serialize defaultGraph if it is not empty
  79.         $defaultGraph=& $this->graphSet->getDefaultGraph();
  80.         if ($defaultGraph->isEmpty()===false)
  81.         {
  82.             $serializedString.='<graph>';
  83.             for($iterator = $this->graphSet->findInDefaultGraph(null,null,null); $iterator->valid(); $iterator->next()) 
  84.             {
  85.                 $serializedString.='<triple>';
  86.                 
  87.                 $statement=$iterator->current();
  88.                 
  89.                 $serializedString.=$this->_node2string($statement->getSubject());
  90.                 $serializedString.=$this->_node2string($statement->getPredicate());
  91.                 $serializedString.=$this->_node2string($statement->getObject());
  92.                 
  93.                 $serializedString.='</triple>';
  94.             };
  95.             $serializedString.='</graph>';
  96.         }        
  97.             
  98.         //serialize namedGraphs    
  99.         foreach ($this->graphSet->listGraphNames() as $graphName)
  100.         {
  101.             $serializedString.='<graph>';
  102.             $serializedString.='<uri>'.$graphName.'</uri>';
  103.             for($iterator = $this->graphSet->findInNamedGraphs(new Resource($graphName),null,null,null); $iterator->valid(); $iterator->next()) 
  104.             {
  105.                 $serializedString.='<triple>';
  106.                 
  107.                 $statement=$iterator->current();
  108.                 
  109.                 $serializedString.=$this->_node2string($statement->getSubject());
  110.                 $serializedString.=$this->_node2string($statement->getPredicate());
  111.                 $serializedString.=$this->_node2string($statement->getObject());
  112.                 
  113.                 $serializedString.='</triple>';
  114.             };
  115.             $serializedString.='</graph>';
  116.         };        
  117.         //TriX footer    
  118.         $serializedString.='</TriX>';    
  119.         return $serializedString;
  120.     }
  121.     
  122.     /**
  123.     * Serialize node to a TriX string
  124.     *
  125.     * @param Node 
  126.     * @return   string 
  127.     * @access    private
  128.     */
  129.     function _node2string($node)
  130.     {
  131.         switch ($node)
  132.         {
  133.             case (is_a($node,'BlankNode')):
  134.                 return ('<id>'.$node->getLabel().'</id>');
  135.             
  136.             case (is_a($node,'Resource')):
  137.                 return ('<uri>'.$node->getLabel().'</uri>');
  138.             
  139.             case (is_a($node,'Literal')):
  140.             
  141.                 if ($node->dtype!=null)
  142.                     return ('<typedLiteral datatype="'.htmlentities($node->dtype).'">'.$node->getLabel().'</typedLiteral>');
  143.  
  144.                 if ($node->lang!=null)
  145.                     return ('<plainLiteral xml:lang="'.htmlentities($node->lang).'">'.$node->getLabel().'</plainLiteral>');
  146.                     
  147.                 return ('<plainLiteral>'.htmlentities($node->getLabel()).'</plainLiteral>');
  148.         }
  149.     }
  150. }
  151. ?>

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