/** * (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) 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())); 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; }
/** * Build where part of filter query * @param SmoothModel $model * @param array|string $class list of types (classes) * @return string */ public static function buildWhereQuery(SmoothModel $model, $class) { $persistence = $model->getPersistence(); $result = 'WHERE s.predicate = ' . $persistence->quote(RDF_TYPE) . PHP_EOL; if (is_array($class) === false) { $class = [$class]; } $typeConditions = []; foreach ($class as $type) { $typeConditions[] = 's.object ' . self::buildSearchPattern($persistence, $type, false); } $result .= 'AND (' . implode(' OR ', $typeConditions) . ')' . PHP_EOL; $result .= 'AND s.modelid IN (' . implode(',', $model->getReadableModels()) . ')'; return $result; }
protected function getModelReadSqlCondition() { return 'modelid IN (' . implode(',', $this->model->getReadableModels()) . ')'; }