public function getContents()
 {
     $query = new Erfurt_Sparql_SimpleQuery();
     $results = false;
     $similars = array();
     $typesArr = array();
     $types = $this->_getTypes();
     $url = new OntoWiki_Url(array('route' => 'properties'), array('r'));
     $listUrl = new OntoWiki_Url(array('route' => 'instances'), array());
     $titleHelper = new OntoWiki_Model_TitleHelper($this->_owApp->selectedModel);
     $titleHelper->addResources($types);
     foreach ($types as $typeUri) {
         if (!array_key_exists($typeUri, $typesArr)) {
             $typesArr[$typeUri] = $typeUri;
         }
         $query->resetInstance()->setProloguePart('SELECT DISTINCT ?uri')->setWherePart('WHERE {
                     ?uri a <' . $typeUri . '> .
                     FILTER (!sameTerm(?uri, <' . (string) $this->_owApp->selectedResource . '>))
                     FILTER (isURI(?uri))
                 }')->setLimit(OW_SHOW_MAX + 1);
         if ($instances = $this->_owApp->selectedModel->sparqlQuery($query)) {
             $results = true;
             $url->setParam('r', $typeUri, true);
             // create properties url for the class
             $typesArr[$typeUri] = array('uri' => $typeUri, 'url' => (string) $url, 'title' => $titleHelper->getTitle($typeUri, $this->_lang), 'has_more' => false);
             // has_more is used for the dots
             if (count($instances) > OW_SHOW_MAX) {
                 $typesArr[$typeUri]['has_more'] = true;
                 $instances = array_splice($instances, 0, OW_SHOW_MAX);
             }
             $instTitleHelper = new OntoWiki_Model_TitleHelper($this->_owApp->selectedModel);
             $instTitleHelper->addResources($instances, 'uri');
             $conf['filter'][0] = array('mode' => 'rdfsclass', 'rdfsclass' => $typeUri, 'action' => 'add');
             // the list url is used for the context menu link
             $listUrl->setParam('instancesconfig', json_encode($conf), true);
             $listUrl->setParam('init', true, true);
             $typesArr[$typeUri]['listUrl'] = (string) $listUrl;
             foreach ($instances as $row) {
                 $instanceUri = $row['uri'];
                 // set URL
                 $url->setParam('r', $instanceUri, true);
                 if (!array_key_exists($typeUri, $similars)) {
                     $similars[$typeUri] = array();
                 }
                 // add instance
                 $similars[$typeUri][$instanceUri] = array('uri' => $instanceUri, 'title' => $instTitleHelper->getTitle($instanceUri, $this->_lang), 'url' => (string) $url);
             }
         }
     }
     $this->view->types = $typesArr;
     $this->view->similars = $similars;
     if (!$results) {
         $this->view->message = 'No matches.';
     }
     return $this->render('similarinstances');
 }
 public function getContents()
 {
     $titleHelper = new OntoWiki_Model_TitleHelper($this->_owApp->selectedModel);
     $query = new Erfurt_Sparql_SimpleQuery();
     $results = false;
     $_predicates = $this->_predicates;
     $properties = array();
     $instances = array();
     $url = new OntoWiki_Url(array('route' => 'properties'), array('r'));
     $titleHelper->addResources($_predicates, 'uri');
     foreach ($_predicates as $predicate) {
         $predicateUri = $predicate['uri'];
         $url->setParam('r', $predicateUri, true);
         // create properties url for the relation
         $properties[$predicateUri]['uri'] = $predicateUri;
         $properties[$predicateUri]['url'] = (string) $url;
         $properties[$predicateUri]['title'] = $titleHelper->getTitle($predicateUri, $this->_lang);
         $query->resetInstance()->setProloguePart('SELECT DISTINCT ?uri')->setWherePart('WHERE {
                     ?uri <' . $predicateUri . '> <' . (string) $this->_owApp->selectedResource . '> .
                     FILTER (isURI(?uri))
                 }')->setLimit(OW_SHOW_MAX + 1);
         if ($subjects = $this->_owApp->selectedModel->sparqlQuery($query)) {
             $results = true;
             // has_more is used for the dots
             if (count($subjects) > OW_SHOW_MAX) {
                 $properties[$predicateUri]['has_more'] = true;
                 $subjects = array_splice($subjects, 0, OW_SHOW_MAX);
             } else {
                 $properties[$predicateUri]['has_more'] = false;
             }
             $subjectTitleHelper = new OntoWiki_Model_TitleHelper($this->_owApp->selectedModel);
             $subjectTitleHelper->addResources($subjects, 'uri');
             foreach ($subjects as $subject) {
                 $subjectUri = $subject['uri'];
                 $subject['title'] = $subjectTitleHelper->getTitle($subjectUri, $this->_lang);
                 // set URL
                 $url->setParam('r', $subjectUri, true);
                 $subject['url'] = (string) $url;
                 if (array_key_exists($predicateUri, $instances)) {
                     if (!array_key_exists($subjectUri, $instances[$predicateUri])) {
                         $instances[$predicateUri][$subjectUri] = $subject;
                     }
                 } else {
                     $instances[$predicateUri] = array($subjectUri => $subject);
                 }
             }
         }
     }
     $this->view->resource = $this->_owApp->selectedResource;
     $this->view->properties = $properties;
     $this->view->instances = $instances;
     if (!$results) {
         $this->view->message = 'No matches.';
     }
     return $this->render('linkinghere');
 }