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));
             }
         }
     }
 }