protected function parseInstances($response, &$titles) { global $smwgSPARQLResultEncoding; // PHP strings are always interpreted in ISO-8859-1 but may be actually encoded in // another charset. if (isset($smwgSPARQLResultEncoding) && $smwgSPARQLResultEncoding == 'UTF-8') { $response = utf8_decode($response); } $dom = simplexml_load_string($response); $results = $dom->xpath('//result'); foreach ($results as $r) { $children = $r->children(); // binding nodes $b = $children->binding[0]; // instance $sv = $b->children()->uri[0]; if (is_null($sv)) { $sv = $b->children()->bnode[0]; } if (is_null($sv)) { continue; } $metadataMap = array(); foreach ($sv->attributes() as $mdProperty => $mdValue) { if (strpos($mdProperty, "_meta_") === 0) { $metadataMap[strtoupper($mdProperty)] = explode("|||", $mdValue); } } list($url, $title) = TSHelper::makeLocalURL((string) $sv); $instance = array($title, $url, $metadataMap); $categories = array(); $b = $children->binding[1]; // categories foreach ($b->children()->uri as $sv) { $category = TSHelper::getTitleFromURI((string) $sv); if (!is_null($instance) && !is_null($category)) { $titles[] = array($instance, array((string) $sv, TSHelper::getTitleFromURI((string) $sv))); } else { $titles[] = array($instance, array(NULL, NULL)); } } } }