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

Documentation generated on Fri, 13 Jan 2006 07:49:51 +0100 by phpDocumentor 1.3.0RC4