Mercurial > hg > rr-repo
diff sites/all/libraries/ARC2/arc/parsers/ARC2_SGAJSONParser.php @ 4:ce11bbd8f642
added modules
author | danieleb <danielebarchiesi@me.com> |
---|---|
date | Thu, 19 Sep 2013 10:38:44 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sites/all/libraries/ARC2/arc/parsers/ARC2_SGAJSONParser.php Thu Sep 19 10:38:44 2013 +0100 @@ -0,0 +1,63 @@ +<?php +/* +homepage: http://arc.semsol.org/ +license: http://arc.semsol.org/license + +class: ARC2 SG API JSON Parser +author: Benjamin Nowack +version: 2010-11-16 +*/ + +ARC2::inc('JSONParser'); + +class ARC2_SGAJSONParser extends ARC2_JSONParser { + + function __construct($a, &$caller) { + parent::__construct($a, $caller); + } + + function __init() {/* reader */ + parent::__init(); + $this->rdf = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'; + $this->nsp = array($this->rdf => 'rdf'); + } + + /* */ + + function done() { + $this->extractRDF(); + } + + function extractRDF() { + $s = $this->getContext(); + $os = $this->getURLs($this->struct); + foreach ($os as $o) { + if ($o != $s) $this->addT($s, 'http://www.w3.org/2000/01/rdf-schema#seeAlso', $o, 'uri', 'uri'); + } + } + + function getContext() { + if (!isset($this->struct['canonical_mapping'])) return ''; + foreach ($this->struct['canonical_mapping'] as $k => $v) return $v; + } + + function getURLs($struct) { + $r =array(); + if (is_array($struct)) { + foreach ($struct as $k => $v) { + if (preg_match('/^http:\/\//', $k) && !in_array($k, $r)) $r[] = $k; + $sub_r = $this->getURLs($v); + foreach ($sub_r as $sub_v) { + if (!in_array($sub_v, $r)) $r[] = $sub_v; + } + } + } + elseif (preg_match('/^http:\/\//', $struct) && !in_array($struct, $r)) { + $r[] = $struct; + } + return $r; + } + + /* */ + +}