Beispiel #1
0
function toRDF($obj)
{
    $data = json_decode($obj, true);
    if (!$data) {
        echo '{ "status": "failed", "error": "json error" }';
        return;
    }
    $objects = array();
    $store = new LibRDF_Storage();
    $model = new LibRDF_Model($store);
    $document = new LibRDF_URINode($_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
    $predicate = new LibRDF_URINode(RDF_BASE_URI . "type");
    $object = new LibRDF_URINode(ROAP . "Document");
    $statement = new LibRDF_Statement($document, $predicate, $object);
    $model->addStatement($statement);
    if (is_array($data['data'])) {
        $predicate = new LibRDF_URINode(ROAP . "lines");
        $lineSeq = new LibRDF_BlankNode();
        $statement = new LibRDF_Statement($document, $predicate, $lineSeq);
        $model->addStatement($statement);
        $predicate = new LibRDF_URINode(RDF_BASE_URI . "type");
        $object = new LibRDF_URINode(RDF_BASE_URI . "Seq");
        $statement = new LibRDF_Statement($lineSeq, $predicate, $object);
        $model->addStatement($statement);
        foreach ($data['data'] as $line) {
            $predicate = new LibRDF_URINode(RDF_BASE_URI . "li");
            $lineObj = new LibRDF_BlankNode();
            $objects['line_' . $line['lineId']] = $lineObj;
            $statement = new LibRDF_Statement($lineSeq, $predicate, $lineObj);
            $model->addStatement($statement);
            $predicate = new LibRDF_URINode(RDF_BASE_URI . "type");
            $object = new LibRDF_URINode(ROAP . "Line");
            $statement = new LibRDF_Statement($lineObj, $predicate, $object);
            $model->addStatement($statement);
            $predicate = new LibRDF_URINode(ROAP . "words");
            $wordSeq = new LibRDF_BlankNode();
            $statement = new LibRDF_Statement($lineObj, $predicate, $wordSeq);
            $model->addStatement($statement);
            $predicate = new LibRDF_URINode(RDF_BASE_URI . "type");
            $object = new LibRDF_URINode(RDF_BASE_URI . "Seq");
            $statement = new LibRDF_Statement($wordSeq, $predicate, $object);
            $model->addStatement($statement);
            if (!is_array($line['data'])) {
                continue;
            }
            foreach ($line['data'] as $word) {
                $predicate = new LibRDF_URINode(RDF_BASE_URI . "li");
                $wordObj = new LibRDF_BlankNode();
                $objects['text_' . $line['textId']] = $lineObj;
                $statement = new LibRDF_Statement($wordSeq, $predicate, $wordObj);
                $model->addStatement($statement);
                $predicate = new LibRDF_URINode(RDF_BASE_URI . "type");
                $object = new LibRDF_URINode(ROAP . "Word");
                $statement = new LibRDF_Statement($wordObj, $predicate, $object);
                $model->addStatement($statement);
                $predicate = new LibRDF_URINode(ROAP . "value");
                $object = new LibRDF_LiteralNode($word['data']);
                $statement = new LibRDF_Statement($wordObj, $predicate, $object);
                $model->addStatement($statement);
            }
        }
    }
    if (is_array($data['retos'])) {
        foreach ($data['retos'] as $reto) {
            $predicate = new LibRDF_URINode(ROAP . "rethoricalAnnotation");
            $retoObj = new LibRDF_BlankNode();
            $statement = new LibRDF_Statement($document, $predicate, $retoObj);
            $model->addStatement($statement);
            $predicate = new LibRDF_URINode(RDF_BASE_URI . "type");
            $object = new LibRDF_URINode(ROAP . $reto['type']);
            $statement = new LibRDF_Statement($retoObj, $predicate, $object);
            $model->addStatement($statement);
            // TODO: items
        }
    }
    $serializer = new LibRDF_Serializer('rdfxml-abbrev');
    $str = $model->serializeStatements($serializer);
    $str = str_replace("\n", '\\n', addslashes($str));
    echo '{ "status" : "success", "data": "' . $str . '"}';
}
Beispiel #2
0
 /**
  * Run the query against a model.
  *
  * @param   LibRDF_Model    $model  The model to query
  * @return  LibRDF_QueryResults     The result of the query
  * @throws  LibRDF_Error            If unable to execute the query
  * @access  public
  */
 public function execute(LibRDF_Model $model)
 {
     $results = librdf_query_execute($this->query, $model->getModel());
     if (!$results) {
         throw new LibRDF_Error("Unable to execute query");
     }
     return LibRDF_QueryResults::makeQueryResults($results);
 }