/** * 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']; } } } }
/** * Method that counts already existing distinct datasets for given uri * * @param $uri uri string * * @return int distinct existing datasets */ private function countUriPattern($uri) { $query = new Erfurt_Sparql_Query2(); $query->setDistinct(true); $unions = new Erfurt_Sparql_Query2_GroupOrUnionGraphPattern(); $subjectVar = new Erfurt_Sparql_Query2_Var('s'); $query->addProjectionVar($subjectVar); // create six temporary vars (not selected in query) $tempVars = array(); for ($i = 0; $i < 6; $i++) { $tempVars[] = new Erfurt_Sparql_Query2_Var('var' . $i); } $singlePattern = new Erfurt_Sparql_Query2_GroupGraphPattern(); $singlePattern->addTriple($subjectVar, $tempVars[0], $tempVars[1]); $unions->addElement($singlePattern); $singlePattern = new Erfurt_Sparql_Query2_GroupGraphPattern(); $singlePattern->addTriple($tempVars[2], $subjectVar, $tempVars[3]); $unions->addElement($singlePattern); $singlePattern = new Erfurt_Sparql_Query2_GroupGraphPattern(); $singlePattern->addTriple($tempVars[4], $tempVars[5], $subjectVar); $unions->addElement($singlePattern); $query->getWhere()->addElement($unions); $filter = new Erfurt_Sparql_Query2_ConditionalOrExpression(); $filter->addElement(new Erfurt_Sparql_Query2_Regex($subjectVar, new Erfurt_Sparql_Query2_RDFLiteral('^' . $uri), new Erfurt_Sparql_Query2_RDFLiteral('i'))); $query->addFilter($filter); $result = $this->_owApp->erfurt->getStore()->countWhereMatches($this->_model->getModelIri(), $query->getWhere(), 's', true); return $result; }
public function getDescription($options = array()) { // merge given options into default options $options = array_merge(array('maxDepth' => self::DESCRIPTION_MAX_DEPTH), $options); $this->_description = Erfurt_App::getInstance()->getStore()->getResourceDescription($this->getIri(), $this->_model ? $this->_model->getModelIri() : false, $options); return $this->_description; }
/** * Constructor */ public function __construct(Erfurt_Store $store, Erfurt_Rdf_Model $graph) { // system variables $this->_store = $store; $this->_config = OntoWiki::getInstance()->config; $this->_logger = OntoWiki::getInstance()->logger; $this->_eventDispatcher = Erfurt_Event_Dispatcher::getInstance(); if (isset($this->_config->system->inference) && !(bool) $this->_config->system->inference) { $this->_inference = false; } // data variables $this->_graph = $graph->getModelIri(); $this->_model = $graph; $this->_titleHelper = new OntoWiki_Model_TitleHelper($this->_model, $store); // $this->_titleProperties = array_flip($this->_config->properties->title->toArray()); $this->_titleProperties = array_flip($graph->getTitleProperties()); }