You are here

function ARC_erdf_parser::get_rdfxml in Taxonomy import/export via XML 6.2

Same name and namespace in other branches
  1. 5.2 arc/ARC_erdf_parser.php \ARC_erdf_parser::get_rdfxml()
  2. 5 arc/ARC_erdf_parser.php \ARC_erdf_parser::get_rdfxml()
  3. 6 arc/ARC_erdf_parser.php \ARC_erdf_parser::get_rdfxml()

File

arc/ARC_erdf_parser.php, line 635

Class

ARC_erdf_parser

Code

function get_rdfxml() {
  $infos = $this
    ->get_triple_infos();
  $nl = "\n";
  $ind = "  ";
  $ni = $nl . $ind;
  $ni2 = $ni . $ind;
  $result = '<?xml version="1.0" encoding="UTF-8"?>';
  $result .= $nl . '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"';
  if (isset($infos["triples"])) {
    $triples = $infos["triples"];
    $prefixes = $infos["prefixes"];
    if (!isset($prefixes["rdfs"])) {
      $prefixes["rdfs"] = "http://www.w3.org/2000/01/rdf-schema#";
    }
    if (!isset($prefixes["owl"])) {
      $prefixes["owl"] = "http://www.w3.org/2002/07/owl#";
    }

    /* ns declarations */
    foreach ($prefixes as $prefix => $iri) {
      $result .= !in_array($prefix, array(
        "rdf",
      )) ? $ni . 'xmlns:' . $prefix . '="' . htmlspecialchars($iri) . '"' : '';
    }

    /* base */
    $result .= $ni . 'xml:base="' . htmlspecialchars($this->base) . '"';
    $result .= '>';

    /* triples */
    $r_props = array();
    foreach ($triples as $t) {
      $cur_result = "";

      /* s */
      $s = $t["s"];
      if (!isset($r_props[$s])) {
        $r_props[$s] = array();
      }

      /* p, o */
      $p = $t["p"];
      $p_qname = $t["p_qname"];
      $p_type = $t["p_type"];
      $cur_result = $ni2 . '<' . $p_qname;
      if ($p_type == "obj") {
        $cur_result .= ' rdf:resource="' . htmlspecialchars($t["o"]) . '" />';
      }
      else {
        $cur_result .= '>' . htmlspecialchars(trim($t["o"])) . '</' . $p_qname . '>';
      }
      if (!in_array($cur_result, $r_props[$s])) {
        $r_props[$s][] = $cur_result;
      }
    }
    foreach ($r_props as $s => $props) {
      $result .= $nl . $ni . '<rdf:Description rdf:about="' . htmlspecialchars($s) . '">';
      foreach ($props as $cur_prop) {
        $result .= $cur_prop;
      }
      $result .= $ni . '</rdf:Description>';
    }
  }
  else {
    $result .= '>';
  }
  $result .= $nl . '</rdf:RDF>' . $nl;
  return $result;
}