Source for file TriXSerializer.php

Documentation is available at TriXSerializer.php

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

Documentation generated on Thu, 7 Jul 2005 13:44:01 +0200 by phpDocumentor 1.3.0RC3