/** * (non-PHPdoc) * @see \oat\generis\model\data\RdfInterface::add() */ public function add(\core_kernel_classes_Triple $triple) { if (!in_array($triple->modelid, $this->model->getReadableModels())) { $this->model->addReadableModel($triple->modelid); } $query = "INSERT INTO statements ( modelId, subject, predicate, object, l_language) VALUES ( ? , ? , ? , ? , ? );"; return $this->getPersistence()->exec($query, array($triple->modelid, $triple->subject, $triple->predicate, $triple->object, is_null($triple->lg) ? '' : $triple->lg)); }
/** * (non-PHPdoc) * @see \oat\generis\model\data\RdfInterface::add() */ public function add(\core_kernel_classes_Triple $triple) { if (!in_array($triple->modelid, $this->model->getReadableModels())) { $this->model->addReadableModel($triple->modelid); } $query = "INSERT INTO statements ( modelId, subject, predicate, object, l_language) VALUES ( ? , ? , ? , ? , ? );"; $success = $this->getPersistence()->exec($query, array($triple->modelid, $triple->subject, $triple->predicate, $triple->object, is_null($triple->lg) ? '' : $triple->lg)); if ($triple->predicate == RDFS_SUBCLASSOF || $triple->predicate == RDF_TYPE) { PermissionManager::getPermissionModel()->onResourceCreated(new core_kernel_classes_Resource($triple->subject)); } return $success; }
/** * (non-PHPdoc) * @see \oat\generis\model\data\RdfInterface::add() */ public function add(\core_kernel_classes_Triple $triple) { if (!in_array($triple->modelid, $this->model->getReadableModels())) { $this->model->addReadableModel($triple->modelid); } $query = "INSERT INTO statements ( modelId, subject, predicate, object, l_language, epoch, author) VALUES ( ? , ? , ? , ? , ? , ?, ?);"; $success = $this->getPersistence()->exec($query, array($triple->modelid, $triple->subject, $triple->predicate, $triple->object, is_null($triple->lg) ? '' : $triple->lg, $this->getPersistence()->getPlatForm()->getNowExpression(), is_null($triple->author) ? '' : $triple->author)); if ($triple->predicate == RDFS_SUBCLASSOF || $triple->predicate == RDF_TYPE) { $eventManager = $this->getServiceManager()->get(EventManager::CONFIG_ID); $eventManager->trigger(new ResourceCreated(new core_kernel_classes_Resource($triple->subject))); } return $success; }
public function run() { $this->out('Bypassing model restriction'); $oldUpdatableModels = core_kernel_persistence_smoothsql_SmoothModel::getUpdatableModelIds(); core_kernel_persistence_smoothsql_SmoothModel::forceUpdatableModelIds(core_kernel_persistence_smoothsql_SmoothModel::getReadableModelIds()); $this->out('Loading extensions'); $diffPath = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'ontologyData26' . DIRECTORY_SEPARATOR; // remove All foreach (common_ext_ExtensionsManager::singleton()->getInstalledExtensions() as $extension) { $diffFile = $diffPath . 'diff' . ucfirst($extension->getId()) . '.php'; if (file_exists($diffFile)) { $this->out('Updating model of ' . $extension->getId()); $data = (include $diffFile); foreach ($data['toRemove'] as $tripple) { $this->remove($tripple); } } } // add All foreach (common_ext_ExtensionsManager::singleton()->getInstalledExtensions() as $extension) { $diffFile = $diffPath . 'diff' . ucfirst($extension->getId()) . '.php'; if (file_exists($diffFile)) { $this->out('Updating model of ' . $extension->getId()); $data = (include $diffFile); foreach ($data['toAdd'] as $tripple) { $this->add($tripple); } } } $this->out('Restoring model restriction'); core_kernel_persistence_smoothsql_SmoothModel::forceUpdatableModelIds($oldUpdatableModels); }
/** * uninstall an extension * * @access public * @author Jerome Bogaerts, <*****@*****.**> * @return boolean */ public function uninstall() { common_Logger::i('Uninstalling ' . $this->extension->getId(), 'UNINSTALL'); // uninstall possible if (is_null($this->extension->getManifest()->getUninstallData())) { throw new common_Exception('Problem uninstalling extension ' . $this->extension->getId() . ' : Uninstall not supported'); } // installed? if (!common_ext_ExtensionsManager::singleton()->isInstalled($this->extension->getId())) { throw new common_Exception('Problem uninstalling extension ' . $this->extension->getId() . ' : Not installed'); } // check dependcies if (helpers_ExtensionHelper::isRequired($this->extension)) { throw new common_Exception('Problem uninstalling extension ' . $this->extension->getId() . ' : Still required'); } common_Logger::d('uninstall script for ' . $this->extension->getId()); $this->uninstallScripts(); // hook $this->extendedUninstall(); common_Logger::d('unregister extension ' . $this->extension->getId()); $this->unregister(); // we purge the whole cache. $cache = common_cache_FileCache::singleton(); $cache->purge(); // reload session (for readable models) core_kernel_persistence_smoothsql_SmoothModel::forceReloadModelIds(); common_Logger::i('Uninstalled ' . $this->extension->getId()); return true; }
/** * Setup the ontology configuration * * @access public * @author Joel Bout, <*****@*****.**> * @return mixed */ public function install() { if ($this->extension->getId() != 'generis') { throw new common_ext_ExtensionException('Tried to install "' . $this->extension->getId() . '" extension using the GenerisInstaller'); } $this->installLoadDefaultConfig(); $model = new \core_kernel_persistence_smoothsql_SmoothModel(array(\core_kernel_persistence_smoothsql_SmoothModel::OPTION_PERSISTENCE => 'default', \core_kernel_persistence_smoothsql_SmoothModel::OPTION_READABLE_MODELS => array('1'), \core_kernel_persistence_smoothsql_SmoothModel::OPTION_WRITEABLE_MODELS => array('1'), \core_kernel_persistence_smoothsql_SmoothModel::OPTION_NEW_TRIPLE_MODEL => '1', \core_kernel_persistence_smoothsql_SmoothModel::OPTION_SEARCH_SERVICE => ComplexSearchService::SERVICE_ID)); $model->setServiceLocator(ServiceManager::getServiceManager()); ModelManager::setModel($model); $this->installOntology(); // $this->installLocalData(); // $this->installModuleModel(); $this->installRegisterExt(); common_cache_FileCache::singleton()->purge(); common_Logger::d('Installing custom script for extension ' . $this->extension->getId()); $this->installCustomScript(); }
public function testRightModels() { $namespaces = common_ext_NamespaceManager::singleton()->getAllNamespaces(); $localNamespace = $namespaces[LOCAL_NAMESPACE . '#']; // In tao context, the only one model which is updatable $updatableModels = core_kernel_persistence_smoothsql_SmoothModel::getUpdatableModelIds(); $this->assertEquals(1, count($updatableModels)); $this->assertEquals(1, $localNamespace->getModelId()); $readableModels = core_kernel_persistence_smoothsql_SmoothModel::getReadableModelIds(); $this->assertTrue(count($readableModels) > 3); $this->assertTrue(array_search(1, $readableModels) !== false); $this->assertTrue(array_search(2, $readableModels) !== false); $this->assertTrue(array_search(3, $readableModels) !== false); $this->assertTrue(array_search(4, $readableModels) !== false); // Try to delete a resource of a locked model $property = new core_kernel_classes_Property(RDFS_LABEL); $domain = new core_kernel_classes_Property(RDFS_DOMAIN, __METHOD__); $this->assertFalse($property->removePropertyValues($domain, array('pattern' => RDFS_LABEL))); // Try to remove a property value which is lg dependent of a locked model $clazz = new core_kernel_classes_Class('http://www.tao.lu/middleware/Rules.rdf#And'); $this->assertFalse($clazz->removePropertyValueByLg($property, 'EN')); }
public static function buildFilterQuery(core_kernel_persistence_smoothsql_SmoothModel $model, $classUri, array $propertyFilters, $and = true, $like = true, $lang = '', $offset = 0, $limit = 0, $order = '', $orderDir = 'ASC') { $orderDir = self::sanitizeOrderDirection($orderDir); $persistence = $model->getPersistence(); // Deal with target classes. if (is_array($classUri) === false) { $classUri = array($classUri); } $propertyQueries = array(self::buildPropertyQuery($model, RDF_TYPE, $classUri, false)); foreach ($propertyFilters as $propertyUri => $filterValues) { $propertyQueries[] = self::buildPropertyQuery($model, $propertyUri, $filterValues, $like, $lang); } $unionQuery = self::buildUnionQuery($propertyQueries); if (($propCount = count($propertyFilters)) === 0) { $query = self::buildPropertyQuery($model, RDF_TYPE, $classUri, false, $lang); } else { $unionCount = $and === true ? $propCount + 1 : 2; $query = "SELECT subject FROM ({$unionQuery}) AS unionq GROUP BY subject HAVING count(*) >= {$unionCount}"; } // Order... if (!empty($order)) { $orderPredicate = $persistence->quote($order); $sqlLang = ''; if (!empty($lang)) { $sqlEmptyLang = $persistence->quote(''); $sqlRequestedLang = $persistence->quote($lang); $sqlLang = " AND (l_language = {$sqlEmptyLang} OR l_language = {$sqlRequestedLang})"; } $orderQueryId = $persistence->getPlatForm()->quoteIdentifier('orderq'); $orderQuerySubject = $orderQueryId . '.' . $persistence->getPlatForm()->quoteIdentifier('subject'); $orderQueryObject = $orderQueryId . '.' . $persistence->getPlatForm()->quoteIdentifier('object'); $sqlOrderFilter = "mainq.subject = {$orderQuerySubject} AND predicate = {$orderPredicate}{$sqlLang}"; $query = "SELECT mainq.subject, {$orderQueryObject} FROM ({$query}) AS mainq LEFT JOIN "; $query .= "statements AS {$orderQueryId} ON ({$sqlOrderFilter}) ORDER BY {$orderQueryObject} {$orderDir}"; } // Limit... if ($limit > 0) { $query = $persistence->getPlatForm()->limitStatement($query, $limit, $offset); } // Suffix order... if (empty($order) === false) { $query = "SELECT subject FROM ({$query}) as rootq"; } return $query; }
protected function getNewTripleModelId() { return $this->model->getNewTripleModelId(); }
* * */ use oat\generis\model\data\ModelManager; use oat\generis\model\kernel\persistence\file\FileIterator; use oat\tao\model\extension\ExtensionModel; use oat\tao\scripts\update\ModelFixer; require_once dirname(__FILE__) . '/../includes/raw_start.php'; $persistence = common_persistence_SqlPersistence::getPersistence('default'); $smoothIterator = new core_kernel_persistence_smoothsql_SmoothIterator($persistence, array(1)); $count = 0; foreach ($smoothIterator as $triple) { $count++; } echo PHP_EOL . $count . ' user triples in ontology' . PHP_EOL; $modelIds = array_diff(core_kernel_persistence_smoothsql_SmoothModel::getReadableModelIds(), core_kernel_persistence_smoothsql_SmoothModel::getUpdatableModelIds()); $smoothIterator = new core_kernel_persistence_smoothsql_SmoothIterator($persistence, $modelIds); $count = 0; foreach ($smoothIterator as $triple) { $count++; } echo PHP_EOL . $count . ' system triples in ontology' . PHP_EOL; $files = array(); $rdfIterator = new AppendIterator(); foreach (common_ext_ExtensionsManager::singleton()->getInstalledExtensions() as $ext) { $model = new ExtensionModel($ext); $rdfIterator->append($model); } $count = 0; foreach ($rdfIterator as $triple) { $count++;
/** * Updates the session by reloading references to models. * * @access public * @author Joel Bout, <*****@*****.**> * @deprecated */ public function update() { common_Logger::w('The function ' . __FUNCTION__ . ' is deprecated'); core_kernel_persistence_smoothsql_SmoothModel::forceReloadModelIds(); }