function triples2string() {
		$xml = '<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">';
		foreach ($this->triples as $s => $po) {
			# Start with subject.
			$xml .= "\n<rdf:Description";
			if ('_:' == substr($s, 0, 2))
				$xml .= ' rdf:nodeID="' . htmlspecialchars(substr($s,2)) . '"';
			else
				$xml .= ' rdf:about="' . htmlspecialchars($s) . '"';
			$xml .= ">";
			# Loop through predicate/object pairs.
			foreach($po as $x) {
				list($p, $o) = $x;
				# Output predicate.
				$nsuri = RDFUtil::guessNamespace($p);
				$local = RDFUtil::guessName($p);
				if ('http://www.w3.org/1999/02/22-rdf-syntax-ns#' != $nsuri)
					$xml .= "\n  <ns:" . $local . ' xmlns:ns="' . $nsuri . '"';
				else
					$xml .= "\n  <rdf:" . $local;
				# Output object.
				if (is_array($o)) {
					if ('' != $o[1])
						$xml .= ' xml:lang="' . htmlspecialchars($o[1]) . '"';
					if ('http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral' == $o[2])
						$xml .= ' rdf:parseType="Literal">' . str_replace('\"', '"', $o[0]);
					else if ('' != $o[2])
						$xml .= ' rdf:datatype="' . htmlspecialchars($o[2]) . '">' . $o[0];
					else
						$xml .= '>' . htmlspecialchars($o[0]);
					if ('http://www.w3.org/1999/02/22-rdf-syntax-ns#' != $nsuri)
						$xml .= '</ns:' . $local;
					else
						$xml .= '</rdf:' . $local;
				} else if ('_:' == substr($o, 0, 2))
					$xml .= ' rdf:nodeID="' . htmlspecialchars(substr($o, 2)) . '"/';
				else
					$xml .= ' rdf:resource="' . htmlspecialchars($o) . '"/';
				$xml.=">";
			};
			$xml.="\n</rdf:Description>";
		}
		$xml.="\n</rdf:RDF>";
		return $xml;
	}
Example #2
0
 /**
  * Returns the namespace of the resource. May return null.
  * @access	public
  * @return string
  */
 function getNamespace()
 {
     // Import Package Utility
     include_once RDFAPI_INCLUDE_DIR . PACKAGE_UTILITY;
     return RDFUtil::guessNamespace($this->uri);
 }
 /**
  * 
  */
 function renderURI($URI, &$nsPrefix)
 {
     $ns = RDFUtil::guessNamespace($URI);
     $qName = RDFUtil::guessName($URI);
     $html = '<a class="uri" href="' . $URI . '" title="' . $URI . '">';
     if (array_key_exists($ns, $nsPrefix)) {
         $html .= '<small>' . $nsPrefix[$ns] . ':</small>' . $qName;
     } else {
         $html .= $URI;
     }
     $html .= '</a>';
     return $html;
 }
Example #4
0
 /**
  * Generates a dot-file for drawing graphical output with the
  * graphviz-application which can be downloaded at http://www.graphviz.org
  * If the graphviz-application is installed and its path is set to the
  * correct value in constants.php we can directly generate any
  * file format graphviz supports, e.g. SVG, PNG
  * Parameters: model to visualize, output format, use prefixes
  *
  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  * WARNING: Graphviz can be slow with large models.
  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  *
  * @author   Anton Köstlbacher <*****@*****.**>
  * @param    object  Model
  * @param    string  $format
  * @param    boolean $short_prefix
  * @return   string, binary
  * @access   public
  * @throws   PhpError
  */
 function visualizeGraph(&$model, $format = "input_dot", $short_prefix = TRUE)
 {
     global $graphviz_param;
     $i = 0;
     foreach ($model->triples as $key => $statement) {
         $subject = $statement->getLabelSubject();
         $predicate = $statement->getLabelPredicate();
         $object = $statement->getLabelObject();
         // format subject
         if (!isset($attrib[$subject])) {
             if (is_a($statement->subject(), 'BlankNode')) {
                 $attrib[$subject] = $graphviz_param['BLANKNODE_STYLE'];
             } else {
                 if ($short_prefix == TRUE && RDFUtil::guessPrefix($subject, $model) != FALSE) {
                     $prefix = RDFUtil::guessPrefix($subject, $model);
                     $subject_label = $prefix . ":" . RDFUtil::guessName($subject);
                     $attrib[$subject] = "label=\"" . $subject_label . "\" ";
                     if (!isset($prefix_array[$prefix])) {
                         $prefix_array[$prefix] = RDFUtil::guessNamespace($subject);
                     }
                 }
                 if (GRAPHVIZ_URI == TRUE) {
                     $attrib[$subject] .= "URL=\"" . $subject . "\"";
                 }
             }
         }
         // format predicate
         if ($short_prefix == TRUE && RDFUtil::guessPrefix($predicate, $model) != FALSE) {
             $prefix = RDFUtil::guessPrefix($predicate, $model);
             $predicate_label = "label=\"" . $prefix . ":" . RDFUtil::guessName($predicate) . "\"";
             if (!isset($prefix_array[$prefix])) {
                 $prefix_array[$prefix] = RDFUtil::guessNamespace($predicate);
             }
         } else {
             $predicate_label = "label=\"" . $predicate . "\"";
         }
         if (is_a($statement, 'InfStatement')) {
             $predicate_label .= " " . $graphviz_param['INFERRED_STYLE'];
         } else {
             if (GRAPHVIZ_URI == TRUE) {
                 $predicate_label .= "URL=\"" . $predicate . "\"";
             }
         }
         // format object
         if (!isset($attrib[$object])) {
             if (is_a($statement->object(), 'BlankNode')) {
                 $attrib[$object] = $graphviz_param['BLANKNODE_STYLE'];
             } elseif (is_a($statement->object(), 'Literal')) {
                 $object_label = $object;
                 $object = "literal" . $i;
                 $i++;
                 $attrib[$object] = "label=\"{$object_label}\" " . $graphviz_param['LITERAL_STYLE'];
             } else {
                 if ($short_prefix == TRUE && RDFUtil::guessPrefix($object, $model) != FALSE) {
                     $prefix = RDFUtil::guessPrefix($object, $model);
                     $object_label = $prefix . ":" . RDFUtil::guessName($object);
                     $attrib[$object] = "label=\"" . $object_label . "\" ";
                     if (!isset($prefix_array[$prefix])) {
                         $prefix_array[$prefix] = RDFUtil::guessNamespace($object);
                     }
                 }
                 if (GRAPHVIZ_URI == TRUE) {
                     $attrib[$object] .= "URL=\"" . $object . "\"";
                 }
             }
         }
         // fill graph array
         $graph[] = "\"" . $subject . "\" -> \"" . $object . "\" [" . $predicate_label . "];";
     }
     //generate DOT-file
     $dot = "digraph G { " . $graphviz_param['GRAPH_STYLE'] . "\n edge [" . $graphviz_param['PREDICATE_STYLE'] . "]\n node [" . $graphviz_param['RESOURCE_STYLE'] . "]\n";
     if (isset($attrib)) {
         foreach ($attrib as $key => $value) {
             $dot .= "\"{$key}\" [{$value}];\n";
         }
     }
     if (!isset($graph)) {
         $dot .= "error [shape=box,label=\"No Statements found!\"]";
     } else {
         $dot .= implode("\n", $graph);
     }
     if (GRAPHVIZ_STAT == TRUE) {
         $stat_label = "| " . $model->size() . " Statements drawn";
     }
     if (strstr($graphviz_param['GRAPH_STYLE'], 'rankdir="LR"') === FALSE && strstr($graphviz_param['GRAPH_STYLE'], 'rankdir=LR') === FALSE) {
         $sep1 = "}";
         $sep2 = "";
     } else {
         $sep1 = "";
         $sep2 = "}";
     }
     if ($short_prefix == TRUE && isset($prefix_array)) {
         $struct_label = "{ { Base URI: " . $model->getBaseURI() . " {$sep1} | { { " . implode("|", array_keys($prefix_array)) . " } | { " . implode("|", $prefix_array) . " } } {$stat_label} } {$sep2}";
     } else {
         $struct_label = "{ { Base URI: " . $model->getBaseURI() . "{$sep1} " . $stat_label . " } }";
     }
     $dot .= "\n struct [shape=Mrecord,label=\"{$struct_label}\"," . $graphviz_param['BOX_STYLE'] . "];\n";
     $dot .= " vocabulary [style=invis];\n struct -> vocabulary [style=invis];\n}";
     // if needed call dot.exe
     if ($format != "input_dot" && defined('GRAPHVIZ_PATH') && strstr(GRAPHVIZ_FORMAT, $format) !== FALSE) {
         mt_srand((double) microtime() * 1000000);
         $filename = GRAPHVIZ_TEMP . md5(uniqid(mt_rand())) . ".dot";
         $file_handle = @fopen($filename, 'w');
         if ($file_handle) {
             fwrite($file_handle, $dot);
             fclose($file_handle);
         }
         $dotinput = " -T" . $format . " " . $filename;
         ob_start();
         passthru(GRAPHVIZ_PATH . $dotinput);
         $output = ob_get_contents();
         ob_end_clean();
         unlink($filename);
         echo $output;
         return TRUE;
     } elseif ($format == "input_dot") {
         echo $dot;
         return TRUE;
     } else {
         return FALSE;
     }
 }
Example #5
0
 /**
  * @param STRING $elementName
  * @access   private
  */
 function getElementText($elementName)
 {
     $namespace = RDFUtil::guessNamespace($elementName);
     $localName = RDFUtil::guessName($elementName);
     if ($namespace == "") {
         return $localName;
     }
     $prefix = array_search($namespace, $this->m_namespaces);
     if ($prefix === FALSE) {
         $errmsg = RDFAPI_ERROR . "(class: Serializer; method: getElementText): Prefix for element '" . $elementName . "' cannot be found.";
         trigger_error($errmsg, E_USER_ERROR);
     }
     switch ($prefix) {
         case RDF_NAMESPACE_PREFIX:
             return $this->rdf_qname_prefix . $localName;
         case NULL:
             return $localName;
         default:
             return $prefix . ":" . $localName;
     }
 }