/** * fetches all titles according the given array if Uris * * @param array resourceUris */ private function _fetchTitlesFromResourcePool($resourceUris) { $resourcePool = $this->_erfurtApp->getResourcePool(); $resources = array(); if (!empty($this->_model)) { $modelUri = $this->_model->getModelIri(); $resources = $resourcePool->getResources($resourceUris, $modelUri); } else { $resources = $resourcePool->getResources($resourceUris); } $memoryModel = new Erfurt_Rdf_MemoryModel(); foreach ($resources as $resourceUri => $resource) { $resourceDescription = $resource->getDescription(); $memoryModel->addStatements($resourceDescription); $found = false; foreach ($this->_titleProperties as $titleProperty) { $values = $memoryModel->getValues($resourceUri, $titleProperty); foreach ($values as $value) { if (!empty($value['lang'])) { $language = $value['lang']; } else { $language = ''; } $this->_resources[$resourceUri][$titleProperty][$language] = $value['value']; } } } }
/** * Returns a list of properties used by the current list of resources. * Original Name was getValues() * @return array */ public function getAllProperties($inverse = false) { if (empty($this->_resources) && $this->_resourcesUptodate) { return array(); } $pool = Erfurt_App::getInstance()->getResourcePool(); $propertyUris = array(); $memoryModel = new Erfurt_Rdf_MemoryModel(); foreach ($this->_resources as $item) { $resourceUri = $item['value']; $resource = $pool->getResource($resourceUri, (string) $this->_model); if ($inverse == false) { $resourceDescription = $resource->getDescription(); $memoryModel->addStatements($resourceDescription); } else { $resourceDescription = $resource->getDescription(array('fetchInverse' => true)); $memoryModel->addStatements($resourceDescription); //remove s from memory model to extract only inverse relations $memoryModel->removeS($resourceUri); } } $predicates = $memoryModel->getPredicates(); foreach ($predicates as $uri) { $propertyUris[] = array('uri' => $uri); } return $this->convertProperties($propertyUris); }