/**
  * (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));
 }
Esempio n. 2
0
 /**
  * (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;
 }
Esempio n. 3
0
 /**
  * (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;
 }
Esempio n. 6
0
 /**
  * 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();
 }
Esempio n. 7
0
 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'));
 }
Esempio n. 8
0
 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;
 }
Esempio n. 9
0
 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++;
Esempio n. 11
0
 /**
  * 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();
 }