source: Dev/branches/rest-dojo-ui/jQueryUI/server/rdfapi/syntax/JsonParser.php @ 312

Last change on this file since 312 was 312, checked in by jkraaijeveld, 13 years ago
File size: 1.7 KB
Line 
1<?php
2/**
3 * This class provides capabilities to parse json encoded rdf models.
4 *
5 * @package syntax
6 * @author Philipp Frischmuth <philipp@frischmuth24.de>
7 * @version $Id: JsonParser.php 555 2007-12-11 20:27:34Z p_frischmuth $
8 */
9class JsonParser extends Object {
10       
11        /**
12         * This method takes a json encoded rdf-model and a reference to aa (usually empty) MemModel, parses the json
13         * string and adds the statements to the given MemModel.
14         *
15         * @param string $jsonString The string that contains the rdf model, encoded as a json-string.
16         * @param MemModel $model A reference to the model, where to add the statements, usually an empty MemModel.
17         */
18        public function generateModelFromString($jsonString, $model) {
19               
20                $jsonModel = array();
21                $jsonModel = json_decode($jsonString, true);
22               
23                // throws an excpetion if json model was corrupt
24                if (!is_array($jsonModel)) {
25                        throw new Exception('error in json string');
26                }
27               
28                foreach ($jsonModel as $subject=>$remain) {
29                        foreach ($remain as $predicate=>$object) {
30                                $s = (strpos($subject, '_') === 0) ? new BlankNode(substr($subject, 2)) : new Resource($subject);
31                                $p = new Resource($predicate);
32                               
33                                foreach ($object as $obj) {
34                                        if ($obj['type'] === 'uri') {
35                                                $o = new Resource($obj['value']);
36                                        } else if ($obj['type'] === 'bnode') {
37                                                $o = new BlankNode(substr($obj['value'], 2));
38                                        } else {
39                                                $dtype = (isset($obj['datatype'])) ? $obj['datatype'] : '';
40                                                $lang = (isset($obj['lang'])) ? $obj['lang'] : '';
41
42                                                $oVal = $obj['value'];
43
44                                                $o = new Literal($oVal, $lang);
45                                                $o->setDatatype($dtype);
46                                        }
47                                       
48                                        $model->add(new Statement($s, $p, $o));
49                                }
50                        }
51                }
52        }
53}
54?>
Note: See TracBrowser for help on using the repository browser.