public function getTree($node, $ontology)
 {
     $filename = getcwd() . "/cache/onto-" . urlencode($ontology->url) . ".json";
     if (is_readable($filename)) {
         return json_decode(file_get_contents($filename));
     }
     $count = new PrefixCounter($ontology->prefix);
     $graph = new Graphite();
     $xml = simplexml_load_file($ontology->url);
     foreach ($xml->getNamespaces(true) as $prefix => $uri) {
         $graph->ns($prefix, stripslashes($uri));
     }
     $graph->load($ontology->url);
     $classes = $graph->allOfType("owl:Class");
     $classes = $classes->append($graph->allOfType("rdfs:Class"));
     $toplevel = $classes->except($classes->all("-rdfs:subClassOf"));
     $json = array();
     foreach ($toplevel as $class) {
         $uri = $graph->shrinkUri($class);
         $children = Ontology::getChildren($graph, $class, $count);
         $count->step();
         $json[] = array("id" => $count->value(), "text" => $uri, "iconCls" => "class", "children" => $children, "leaf" => empty($children));
     }
     file_put_contents($filename, json_encode($json));
     return $json;
 }