File: ARC2_POSHRDFSerializer.php

package info (click to toggle)
php-arc 2~20101006-2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 720 kB
  • sloc: php: 12,692; makefile: 31
file content (105 lines) | stat: -rw-r--r-- 2,635 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?php
/*
homepage: http://arc.semsol.org/
license:  http://arc.semsol.org/license

class:    ARC2 POSH RDF Serializer
author:   Benjamin Nowack
version:  2010-11-16
*/

ARC2::inc('RDFSerializer');

class ARC2_POSHRDFSerializer extends ARC2_RDFSerializer {

  function __construct($a, &$caller) {
    parent::__construct($a, $caller);
  }
  
  function __init() {
    parent::__init();
    $this->content_header = 'text/html';
  }

  /*  */
  
  function getLabel($res, $ps = '') {
    if (!$ps) $ps = array();
    foreach ($ps as $p => $os) {
      if (preg_match('/[\/\#](name|label|summary|title|fn)$/i', $p)) {
        return $os[0]['value'];
      }
    }
    if (preg_match('/^\_\:/', $res)) return "An unnamed resource";
    return preg_replace("/^(.*[\/\#])([^\/\#]+)$/", '\\2', str_replace('_', ' ', $res));
  }
  
  function getSerializedIndex($index, $res = '') {
    $r = '';
    $n = "\n";
    if ($res) $index = array($res => $index[$res]);
    //return Trice::dump($index);
    foreach ($index as $s => $ps) {
      /* node */
      $r .= '
        <div class="rdf-view">
          <h3><a class="rdf-s" href="' . $s . '">' . $this->getLabel($s, $ps)  . '</a></h3>
      ';
      /* arcs */
      foreach ($ps as $p => $os) {
        $r .= '
          <div class="rdf-o-list">
            <a class="rdf-p" href="' . $p . '">' . ucfirst($this->getLabel($p)) . '</a>
        ';
        foreach ($os as $o) {
          $r .= $n . $this->getObjectValue($o);
        }
        $r .= '    
          </div>
        ';
      }
      /* node */
      $r .= '
        <div class="clb"></div>
        </div>
      ';
    }
    return $r;
  }
  
  function getObjectValue($o) {
    if ($o['type'] == 'uri') {
      if (preg_match('/(jpe?g|gif|png)$/i', $o['value'])) {
        return $this->getImageObjectValue($o);
      }
      return $this->getURIObjectValue($o);
    }
    if ($o['type'] == "bnode") {
      return $this->getBNodeObjectValue($o);
    }
    return $this->getLiteralObjectValue($o);
  }
  
  function getImageObjectValue($o) {
    return '<img class="rdf-o" src="' . htmlspecialchars($o['value']) . '" alt="img" />';
  }
  
  function getURIObjectValue($o) {
    $href = htmlspecialchars($o['value']);
    $label = $o['value'];
    $label = preg_replace('/^https?\:\/\/(www\.)?/', '', $label);
    return '<a class="rdf-o" href="' . $href . '">' . $label . '</a>';
  }

  function getBNodeObjectValue($o) {
    return '<div class="rdf-o" title="' . $o['value']. '">An unnamed resource</div>';
  }

  function getLiteralObjectValue($o) {
    return '<div class="rdf-o">' . $o['value'] . '</div>';
  }

  /*  */

}