danielebarchiesi@4
|
1 <?php
|
danielebarchiesi@4
|
2 /*
|
danielebarchiesi@4
|
3 homepage: http://arc.semsol.org/
|
danielebarchiesi@4
|
4 license: http://arc.semsol.org/license
|
danielebarchiesi@4
|
5
|
danielebarchiesi@4
|
6 class: ARC2 DC Extractor
|
danielebarchiesi@4
|
7 author: Benjamin Nowack
|
danielebarchiesi@4
|
8 version: 2010-11-16
|
danielebarchiesi@4
|
9 */
|
danielebarchiesi@4
|
10
|
danielebarchiesi@4
|
11 ARC2::inc('RDFExtractor');
|
danielebarchiesi@4
|
12
|
danielebarchiesi@4
|
13 class ARC2_DcExtractor extends ARC2_RDFExtractor {
|
danielebarchiesi@4
|
14
|
danielebarchiesi@4
|
15 function __construct($a, &$caller) {
|
danielebarchiesi@4
|
16 parent::__construct($a, $caller);
|
danielebarchiesi@4
|
17 }
|
danielebarchiesi@4
|
18
|
danielebarchiesi@4
|
19 function __init() {
|
danielebarchiesi@4
|
20 parent::__init();
|
danielebarchiesi@4
|
21 $this->a['ns']['dc'] = 'http://purl.org/dc/elements/1.1/';
|
danielebarchiesi@4
|
22 }
|
danielebarchiesi@4
|
23
|
danielebarchiesi@4
|
24 /* */
|
danielebarchiesi@4
|
25
|
danielebarchiesi@4
|
26 function extractRDF() {
|
danielebarchiesi@4
|
27 $t_vals = array();
|
danielebarchiesi@4
|
28 $t = '';
|
danielebarchiesi@4
|
29 foreach ($this->nodes as $n) {
|
danielebarchiesi@4
|
30 foreach (array('title', 'link', 'meta') as $tag) {
|
danielebarchiesi@4
|
31 if ($n['tag'] == $tag) {
|
danielebarchiesi@4
|
32 $m = 'extract' . ucfirst($tag);
|
danielebarchiesi@4
|
33 list ($t_vals, $t) = $this->$m($n, $t_vals, $t);
|
danielebarchiesi@4
|
34 }
|
danielebarchiesi@4
|
35 }
|
danielebarchiesi@4
|
36 }
|
danielebarchiesi@4
|
37 if ($t) {
|
danielebarchiesi@4
|
38 $doc = $this->getFilledTemplate($t, $t_vals, $n['doc_base']);
|
danielebarchiesi@4
|
39 $this->addTs(ARC2::getTriplesFromIndex($doc));
|
danielebarchiesi@4
|
40 }
|
danielebarchiesi@4
|
41 }
|
danielebarchiesi@4
|
42
|
danielebarchiesi@4
|
43 /* */
|
danielebarchiesi@4
|
44
|
danielebarchiesi@4
|
45 function extractTitle($n, $t_vals, $t) {
|
danielebarchiesi@4
|
46 if ($t_vals['title'] = $this->getPlainContent($n)) {
|
danielebarchiesi@4
|
47 $t .= '<' . $n['doc_url'] . '> dc:title ?title . ';
|
danielebarchiesi@4
|
48 }
|
danielebarchiesi@4
|
49 return array($t_vals, $t);
|
danielebarchiesi@4
|
50 }
|
danielebarchiesi@4
|
51
|
danielebarchiesi@4
|
52 /* */
|
danielebarchiesi@4
|
53
|
danielebarchiesi@4
|
54 function extractLink($n, $t_vals, $t) {
|
danielebarchiesi@4
|
55 if ($this->hasRel($n, 'alternate') || $this->hasRel($n, 'meta')) {
|
danielebarchiesi@4
|
56 if ($href = $this->v('href uri', '', $n['a'])) {
|
danielebarchiesi@4
|
57 $t .= '<' . $n['doc_url'] . '> rdfs:seeAlso <' . $href . '> . ';
|
danielebarchiesi@4
|
58 if ($v = $this->v('type', '', $n['a'])) {
|
danielebarchiesi@4
|
59 $t .= '<' .$href. '> dc:format "' . $v . '" . ';
|
danielebarchiesi@4
|
60 }
|
danielebarchiesi@4
|
61 if ($v = $this->v('title', '', $n['a'])) {
|
danielebarchiesi@4
|
62 $t .= '<' .$href. '> dc:title "' . $v . '" . ';
|
danielebarchiesi@4
|
63 }
|
danielebarchiesi@4
|
64 }
|
danielebarchiesi@4
|
65 }
|
danielebarchiesi@4
|
66 return array($t_vals, $t);
|
danielebarchiesi@4
|
67 }
|
danielebarchiesi@4
|
68
|
danielebarchiesi@4
|
69 function extractMeta($n, $t_vals, $t) {
|
danielebarchiesi@4
|
70 if ($this->hasAttribute('http-equiv', $n, 'Content-Type') || $this->hasAttribute('http-equiv', $n, 'content-type')) {
|
danielebarchiesi@4
|
71 if ($v = $this->v('content', '', $n['a'])) {
|
danielebarchiesi@4
|
72 $t .= '<' . $n['doc_url'] . '> dc:format "' . $v . '" . ';
|
danielebarchiesi@4
|
73 }
|
danielebarchiesi@4
|
74 }
|
danielebarchiesi@4
|
75 return array($t_vals, $t);
|
danielebarchiesi@4
|
76 }
|
danielebarchiesi@4
|
77
|
danielebarchiesi@4
|
78 /* */
|
danielebarchiesi@4
|
79
|
danielebarchiesi@4
|
80 }
|