fileName = 'data/answers/answers.rdf'; } /** * function get() * @param type $arguments: An array having one or more of the following elements: * 'uid', 'question', 'values'. */ public function get($arguments) { $this->load(); //Create the querystring $querystring = ' PREFIX predicates: <' . SURVEYTOOL_PREDICATES_NAMESPACE . '> PREFIX resources: <' . SURVEYTOOL_RESOURCES_NAMESPACE . '> SELECT DISTINCT ?uid, ?question_code WHERE { _answer predicates:resource_type resources:answer; predicates:uid ?uid ; predicates:question_code ?question_code ; ' . $this->createArguments($arguments) . ' }'; //Query the model $results = $this->model->sparqlQuery($querystring); //An answer can have multiple values, get all these values for the answer instances found. $answers = array(); if(!empty($results)) { foreach($results as $result) { $answers[] = new Answer($result['?uid']->label, $result['?question_code']->label, $this->getValues($result['?uid']->label)); } } return $answers; } /** * function getValues() * @param type $uid : The uid of the Answer for which the values should be gotten. */ private function getValues($uid) { $result = $this->model->findRegex("[(".$uid.")]", "[(answered)]", null); $iterator = $result->getStatementIterator(); $values = array(); while($iterator->hasNext()) { $element = $iterator->next(); $values[] = $element->getLabelObject(); } return $values; } /** * function set() * @param type $rToolObject : The ResearchToolObject to be saved. */ public function set($rToolObject) { $this->load(); //If evaluation fails, some references are incorrect. //We shouldn't save in this case. Instead - let the user know. This function returns false if the evaluation has failed. //TODO: Decide how to fix invalid references graciously. if(!$rToolObject->evaluate()) return false; $resourceAnswer = new Resource(ANSWER.'/'.$rToolObject->uid); //Remove the old value stored with the given id $this->model->subtract($this->model->find($resourceAnswer, null, null)); //Save all the new values $resourceAnswerType = new Resource(ANSWER); $predicateRType = new Resource(RTYPE); $this->model->add(new Statement($resourceAnswer,$predicateRType,$resourceAnswerType)); $answerId = new Literal($rToolObject->uid); $predicateId = new Resource(UID); $this->model->add(new Statement($resourceAnswer, $predicateId, $answerId)); $questionId = new Literal($rToolObject->question->uid); $predicateQId = new Resource(QCODE); $this->model->add(new Statement($resourceAnswer, $predicateQId, $questionId)); if(isset($rToolObject->values)) { foreach($rToolObject->values as $value) { $answerValue = new Literal($value); $predicateAnswer = new Resource(ANSWERED); $this->model->add(new Statement($resourceAnswer, $predicateAnswer, $answerValue)); } } $this->save(); return true; } } ?>