| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
package RDF::RDFa::Generator::HTML::Pretty; |
|
2
|
|
|
|
|
|
|
|
|
3
|
4
|
|
|
4
|
|
76
|
use 5.008; |
|
|
4
|
|
|
|
|
13
|
|
|
4
|
4
|
|
|
4
|
|
22
|
use base qw'RDF::RDFa::Generator::HTML::Hidden'; |
|
|
4
|
|
|
|
|
10
|
|
|
|
4
|
|
|
|
|
494
|
|
|
5
|
4
|
|
|
4
|
|
35
|
use strict; |
|
|
4
|
|
|
|
|
9
|
|
|
|
4
|
|
|
|
|
128
|
|
|
6
|
4
|
|
|
4
|
|
22
|
use constant XHTML_NS => 'http://www.w3.org/1999/xhtml'; |
|
|
4
|
|
|
|
|
37
|
|
|
|
4
|
|
|
|
|
339
|
|
|
7
|
4
|
|
|
4
|
|
40
|
use Encode qw'encode_utf8'; |
|
|
4
|
|
|
|
|
8
|
|
|
|
4
|
|
|
|
|
208
|
|
|
8
|
4
|
|
|
4
|
|
15863
|
use Icon::FamFamFam::Silk; |
|
|
4
|
|
|
|
|
2251
|
|
|
|
4
|
|
|
|
|
127
|
|
|
9
|
4
|
|
|
4
|
|
2068
|
use RDF::RDFa::Generator::HTML::Pretty::Note; |
|
|
4
|
|
|
|
|
12
|
|
|
|
4
|
|
|
|
|
125
|
|
|
10
|
4
|
|
|
4
|
|
28
|
use XML::LibXML qw':all'; |
|
|
4
|
|
|
|
|
19
|
|
|
|
4
|
|
|
|
|
33
|
|
|
11
|
|
|
|
|
|
|
|
|
12
|
4
|
|
|
4
|
|
651
|
use warnings; |
|
|
4
|
|
|
|
|
9
|
|
|
|
4
|
|
|
|
|
11389
|
|
|
13
|
|
|
|
|
|
|
|
|
14
|
|
|
|
|
|
|
|
|
15
|
|
|
|
|
|
|
our $VERSION = '0.200'; |
|
16
|
|
|
|
|
|
|
|
|
17
|
|
|
|
|
|
|
sub create_document |
|
18
|
|
|
|
|
|
|
{ |
|
19
|
8
|
|
|
8
|
1
|
1332
|
my ($proto, $model, %opts) = @_; |
|
20
|
8
|
50
|
|
|
|
34
|
my $self = (ref $proto) ? $proto : $proto->new; |
|
21
|
|
|
|
|
|
|
|
|
22
|
8
|
|
50
|
|
|
154
|
my $html = sprintf(<<HTML, ($self->{'version'}||'1.0'), ($self->{'title'} || 'RDFa Document'), ref $self); |
|
|
|
|
50
|
|
|
|
|
|
23
|
|
|
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa %1\$s"> |
|
24
|
|
|
|
|
|
|
<head profile="http://www.w3.org/1999/xhtml/vocab"> |
|
25
|
|
|
|
|
|
|
<title>%2\$s</title> |
|
26
|
|
|
|
|
|
|
<meta name="generator" value="%3\$s" /> |
|
27
|
|
|
|
|
|
|
</head> |
|
28
|
|
|
|
|
|
|
<body> |
|
29
|
|
|
|
|
|
|
<h1>%2\$s</h1> |
|
30
|
|
|
|
|
|
|
<main/> |
|
31
|
|
|
|
|
|
|
<footer> |
|
32
|
|
|
|
|
|
|
<p><small>Generated by %3\$s.</small></p> |
|
33
|
|
|
|
|
|
|
</footer> |
|
34
|
|
|
|
|
|
|
</body> |
|
35
|
|
|
|
|
|
|
</html> |
|
36
|
|
|
|
|
|
|
HTML |
|
37
|
|
|
|
|
|
|
|
|
38
|
8
|
|
|
|
|
66
|
return $proto->inject_document($html, $model, %opts); |
|
39
|
|
|
|
|
|
|
} |
|
40
|
|
|
|
|
|
|
|
|
41
|
|
|
|
|
|
|
sub injection_site |
|
42
|
|
|
|
|
|
|
{ |
|
43
|
8
|
|
|
8
|
0
|
49
|
return '//xhtml:main'; |
|
44
|
|
|
|
|
|
|
} |
|
45
|
|
|
|
|
|
|
|
|
46
|
|
|
|
|
|
|
|
|
47
|
|
|
|
|
|
|
sub nodes |
|
48
|
|
|
|
|
|
|
{ |
|
49
|
8
|
|
|
8
|
1
|
29
|
my ($proto, $model, %opts) = @_; |
|
50
|
8
|
50
|
|
|
|
45
|
my $self = (ref $proto) ? $proto : $proto->new; |
|
51
|
|
|
|
|
|
|
|
|
52
|
8
|
|
|
|
|
51
|
my $stream = $self->_get_stream($model); |
|
53
|
8
|
|
|
|
|
15454
|
my @nodes; |
|
54
|
|
|
|
|
|
|
|
|
55
|
8
|
|
|
|
|
73
|
my $root_node = XML::LibXML::Element->new('div'); |
|
56
|
8
|
|
|
|
|
52
|
$root_node->setNamespace(XHTML_NS, undef, 1); |
|
57
|
|
|
|
|
|
|
|
|
58
|
8
|
|
|
|
|
202
|
my $subjects = {}; |
|
59
|
8
|
|
|
|
|
51
|
while (my $st = $stream->next) |
|
60
|
|
|
|
|
|
|
{ |
|
61
|
20
|
50
|
|
|
|
2370
|
next if $st->subject->is_literal; # ??? |
|
62
|
20
|
100
|
|
|
|
549
|
my $s = $st->subject->is_resource ? |
|
63
|
|
|
|
|
|
|
$st->subject->abs : |
|
64
|
|
|
|
|
|
|
('_:'.$st->subject->value); |
|
65
|
20
|
|
|
|
|
1577
|
push @{ $subjects->{$s} }, $st; |
|
|
20
|
|
|
|
|
103
|
|
|
66
|
|
|
|
|
|
|
} |
|
67
|
|
|
|
|
|
|
|
|
68
|
8
|
|
|
|
|
507
|
foreach my $s (sort keys %$subjects) |
|
69
|
|
|
|
|
|
|
{ |
|
70
|
11
|
|
|
|
|
160
|
my $subject_node = $root_node->addNewChild(XHTML_NS, 'div'); |
|
71
|
|
|
|
|
|
|
|
|
72
|
11
|
|
|
|
|
60
|
my $id = _make_id($s, $opts{'id_prefix'}); |
|
73
|
11
|
100
|
|
|
|
52
|
$subject_node->setAttribute('id', $id) if defined $id; |
|
74
|
|
|
|
|
|
|
|
|
75
|
11
|
|
|
|
|
116
|
$self->_process_subject($subjects->{$s}->[0], $subject_node); |
|
76
|
11
|
|
|
|
|
99
|
$self->_resource_heading($subjects->{$s}->[0]->subject, $subject_node, $subjects->{$s}); |
|
77
|
11
|
|
|
|
|
319
|
$self->_resource_classes($subjects->{$s}->[0]->subject, $subject_node, $subjects->{$s}); |
|
78
|
11
|
|
100
|
|
|
218
|
$self->_resource_statements($subjects->{$s}->[0]->subject, $subject_node, $subjects->{$s}, $opts{'interlink'}||0, $opts{'id_prefix'}, $model); |
|
79
|
|
|
|
|
|
|
$self->_resource_notes($subjects->{$s}->[0]->subject, $subject_node, $model, $opts{'notes_heading'}||'Notes', $opts{'notes'}) |
|
80
|
11
|
100
|
50
|
|
|
162
|
if defined $opts{'notes'}; |
|
81
|
|
|
|
|
|
|
} |
|
82
|
|
|
|
|
|
|
|
|
83
|
8
|
50
|
33
|
|
|
164
|
if (defined($self->{'version'}) && $self->{'version'} == 1.1 |
|
|
|
|
33
|
|
|
|
|
|
84
|
|
|
|
|
|
|
and $self->{'prefix_attr'}) |
|
85
|
|
|
|
|
|
|
{ |
|
86
|
0
|
0
|
|
|
|
0
|
if (defined($self->{namespacemap}->rdfa)) { |
|
87
|
|
|
|
|
|
|
$root_node->setAttribute('prefix', $self->{namespacemap}->rdfa->as_string) |
|
88
|
0
|
|
|
|
|
0
|
} |
|
89
|
|
|
|
|
|
|
} |
|
90
|
|
|
|
|
|
|
else |
|
91
|
|
|
|
|
|
|
{ |
|
92
|
8
|
|
|
|
|
46
|
while (my ($prefix, $nsURI) = $self->{namespacemap}->each_map) { |
|
93
|
281
|
|
|
|
|
31911
|
$root_node->setNamespace($nsURI->as_string, $prefix, 0); |
|
94
|
|
|
|
|
|
|
} |
|
95
|
|
|
|
|
|
|
} |
|
96
|
|
|
|
|
|
|
|
|
97
|
8
|
|
|
|
|
847
|
push @nodes, $root_node; |
|
98
|
8
|
50
|
|
|
|
113
|
return @nodes if wantarray; |
|
99
|
0
|
|
|
|
|
0
|
my $nodelist = XML::LibXML::NodeList->new; |
|
100
|
0
|
|
|
|
|
0
|
$nodelist->push(@nodes); |
|
101
|
0
|
|
|
|
|
0
|
return $nodelist; |
|
102
|
|
|
|
|
|
|
} |
|
103
|
|
|
|
|
|
|
|
|
104
|
|
|
|
|
|
|
sub _make_id |
|
105
|
|
|
|
|
|
|
{ |
|
106
|
13
|
|
|
13
|
|
91
|
my ($ident, $prefix) = @_; |
|
107
|
|
|
|
|
|
|
|
|
108
|
13
|
100
|
66
|
|
|
78
|
if (defined($prefix) && ($prefix =~ /^[A-Za-z][A-Za-z0-9\_\:\.\-]*$/)) |
|
109
|
|
|
|
|
|
|
{ |
|
110
|
4
|
|
|
|
|
18
|
$ident =~ s/([^A-Za-z0-9\_\:\.])/sprintf('-%x-',ord($1))/ge; |
|
|
6
|
|
|
|
|
30
|
|
|
111
|
4
|
|
|
|
|
22
|
return $prefix . $ident; |
|
112
|
|
|
|
|
|
|
} |
|
113
|
|
|
|
|
|
|
|
|
114
|
9
|
|
|
|
|
27
|
return undef; |
|
115
|
|
|
|
|
|
|
} |
|
116
|
|
|
|
|
|
|
|
|
117
|
|
|
|
|
|
|
sub _resource_heading |
|
118
|
|
|
|
|
|
|
{ |
|
119
|
11
|
|
|
11
|
|
43
|
my ($self, $subject, $node, $statements) = @_; |
|
120
|
|
|
|
|
|
|
|
|
121
|
11
|
|
|
|
|
83
|
my $heading = $node->addNewChild(XHTML_NS, 'h3'); |
|
122
|
11
|
100
|
|
|
|
49
|
$heading->appendTextNode( $subject->is_resource ? $subject->abs : ('_:'.$subject->value) ); |
|
123
|
11
|
100
|
|
|
|
903
|
$heading->setAttribute('class', $subject->is_resource ? 'resource' : 'blank' ); |
|
124
|
|
|
|
|
|
|
|
|
125
|
11
|
|
|
|
|
353
|
return $self; |
|
126
|
|
|
|
|
|
|
} |
|
127
|
|
|
|
|
|
|
|
|
128
|
|
|
|
|
|
|
sub _resource_classes |
|
129
|
|
|
|
|
|
|
{ |
|
130
|
11
|
|
|
11
|
|
38
|
my ($self, $subject, $node, $statements) = @_; |
|
131
|
|
|
|
|
|
|
|
|
132
|
|
|
|
|
|
|
my @statements = sort { |
|
133
|
0
|
0
|
|
|
|
0
|
$a->predicate->abs cmp $b->predicate->abs |
|
134
|
|
|
|
|
|
|
or $a->object->abs cmp $b->object->abs |
|
135
|
|
|
|
|
|
|
} |
|
136
|
|
|
|
|
|
|
grep { |
|
137
|
11
|
100
|
|
|
|
34
|
$_->predicate->abs eq 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' |
|
|
20
|
|
|
|
|
1196
|
|
|
138
|
|
|
|
|
|
|
and $_->object->is_resource |
|
139
|
|
|
|
|
|
|
} |
|
140
|
|
|
|
|
|
|
@$statements; |
|
141
|
|
|
|
|
|
|
|
|
142
|
11
|
100
|
|
|
|
862
|
return unless @statements; |
|
143
|
|
|
|
|
|
|
|
|
144
|
7
|
|
|
|
|
66
|
my $SPAN = $node->addNewChild(XHTML_NS, 'span'); |
|
145
|
7
|
|
|
|
|
39
|
$SPAN->setAttribute('class', 'rdf-type'); |
|
146
|
7
|
|
|
|
|
101
|
$SPAN->setAttribute('rel', $self->_make_curie('http://www.w3.org/1999/02/22-rdf-syntax-ns#type')); |
|
147
|
|
|
|
|
|
|
|
|
148
|
7
|
|
|
|
|
100
|
foreach my $st (@statements) |
|
149
|
|
|
|
|
|
|
{ |
|
150
|
7
|
|
|
|
|
87
|
my $IMG = $SPAN->addNewChild(XHTML_NS, 'img'); |
|
151
|
7
|
|
|
|
|
184
|
$IMG->setAttribute('about', $st->object->abs); |
|
152
|
7
|
|
|
|
|
666
|
$IMG->setAttribute('alt', $st->object->abs); |
|
153
|
7
|
|
|
|
|
616
|
$IMG->setAttribute('src', $self->_img($st->object->abs)); |
|
154
|
7
|
|
|
|
|
57147
|
$IMG->setAttribute('title', $st->object->abs); |
|
155
|
|
|
|
|
|
|
} |
|
156
|
|
|
|
|
|
|
|
|
157
|
7
|
|
|
|
|
684
|
return $self; |
|
158
|
|
|
|
|
|
|
} |
|
159
|
|
|
|
|
|
|
|
|
160
|
|
|
|
|
|
|
|
|
161
|
|
|
|
|
|
|
sub _resource_statements |
|
162
|
|
|
|
|
|
|
{ |
|
163
|
11
|
|
|
11
|
|
58
|
my ($self, $subject, $node, $statements, $interlink, $id_prefix, $model) = @_; |
|
164
|
|
|
|
|
|
|
|
|
165
|
|
|
|
|
|
|
my @statements = sort { |
|
166
|
6
|
50
|
|
|
|
499
|
$a->predicate->abs cmp $b->predicate->abs |
|
167
|
|
|
|
|
|
|
or $a->object->ntriples_string cmp $b->object->ntriples_string |
|
168
|
|
|
|
|
|
|
} |
|
169
|
|
|
|
|
|
|
grep { |
|
170
|
11
|
100
|
|
|
|
34
|
$_->predicate->abs ne 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' |
|
|
20
|
|
|
|
|
1033
|
|
|
171
|
|
|
|
|
|
|
or !$_->object->is_resource |
|
172
|
|
|
|
|
|
|
} |
|
173
|
|
|
|
|
|
|
@$statements; |
|
174
|
|
|
|
|
|
|
|
|
175
|
11
|
100
|
|
|
|
1281
|
return unless @statements; |
|
176
|
|
|
|
|
|
|
|
|
177
|
7
|
|
|
|
|
59
|
my $DL = $node->addNewChild(XHTML_NS, 'dl'); |
|
178
|
|
|
|
|
|
|
|
|
179
|
7
|
|
|
|
|
22
|
my $current_property = undef; |
|
180
|
7
|
|
|
|
|
25
|
foreach my $st (@statements) |
|
181
|
|
|
|
|
|
|
{ |
|
182
|
13
|
50
|
66
|
|
|
301
|
unless (defined($current_property) && ($st->predicate->abs eq $current_property)) |
|
183
|
|
|
|
|
|
|
{ |
|
184
|
13
|
|
|
|
|
463
|
my $DT = $DL->addNewChild(XHTML_NS, 'dt'); |
|
185
|
13
|
|
|
|
|
271
|
$DT->setAttribute('title', $st->predicate->abs); |
|
186
|
13
|
|
|
|
|
934
|
$DT->appendTextNode($self->_make_curie($st->predicate)); |
|
187
|
|
|
|
|
|
|
} |
|
188
|
13
|
|
|
|
|
540
|
$current_property = $st->predicate->abs; |
|
189
|
|
|
|
|
|
|
|
|
190
|
13
|
|
|
|
|
940
|
my $DD = $DL->addNewChild(XHTML_NS, 'dd'); |
|
191
|
|
|
|
|
|
|
|
|
192
|
13
|
50
|
33
|
|
|
106
|
if ($st->object->is_resource && $st->object->abs =~ /^javascript:/i) |
|
|
|
50
|
33
|
|
|
|
|
|
|
|
100
|
33
|
|
|
|
|
|
|
|
50
|
33
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
193
|
|
|
|
|
|
|
{ |
|
194
|
0
|
|
|
|
|
0
|
$DD->setAttribute('class', 'resource'); |
|
195
|
|
|
|
|
|
|
|
|
196
|
0
|
|
|
|
|
0
|
my $A = $DD->addNewChild(XHTML_NS, 'span'); |
|
197
|
0
|
|
|
|
|
0
|
$A->setAttribute('rel', $self->_make_curie($st->predicate)); |
|
198
|
0
|
|
|
|
|
0
|
$A->setAttribute('resource', $st->object->abs); |
|
199
|
0
|
|
|
|
|
0
|
$A->appendTextNode($st->object->abs); |
|
200
|
|
|
|
|
|
|
} |
|
201
|
|
|
|
|
|
|
elsif ($st->object->is_resource) |
|
202
|
|
|
|
|
|
|
{ |
|
203
|
0
|
|
|
|
|
0
|
$DD->setAttribute('class', 'resource'); |
|
204
|
|
|
|
|
|
|
|
|
205
|
0
|
|
|
|
|
0
|
my $A = $DD->addNewChild(XHTML_NS, 'a'); |
|
206
|
0
|
|
|
|
|
0
|
$A->setAttribute('rel', $self->_make_curie($st->predicate)); |
|
207
|
0
|
|
|
|
|
0
|
$A->setAttribute('href', $st->object->abs); |
|
208
|
0
|
|
|
|
|
0
|
$A->appendTextNode($st->object->abs); |
|
209
|
|
|
|
|
|
|
} |
|
210
|
|
|
|
|
|
|
elsif ($st->object->is_blank) |
|
211
|
|
|
|
|
|
|
{ |
|
212
|
3
|
|
|
|
|
241
|
$DD->setAttribute('class', 'blank'); |
|
213
|
|
|
|
|
|
|
|
|
214
|
3
|
|
|
|
|
71
|
my $A = $DD->addNewChild(XHTML_NS, 'span'); |
|
215
|
3
|
|
|
|
|
18
|
$A->setAttribute('rel', $self->_make_curie($st->predicate)); |
|
216
|
3
|
|
|
|
|
62
|
$A->setAttribute('resource', '[_:'.$st->object->value.']'); |
|
217
|
3
|
|
|
|
|
54
|
$A->appendTextNode('_:'.$st->object->value); |
|
218
|
|
|
|
|
|
|
} |
|
219
|
|
|
|
|
|
|
elsif ($self->{'safe_xml_literals'} |
|
220
|
|
|
|
|
|
|
&& $st->object->is_literal |
|
221
|
|
|
|
|
|
|
&& $st->object->datatype->value eq 'http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral') |
|
222
|
|
|
|
|
|
|
{ |
|
223
|
0
|
|
|
|
|
0
|
$DD->setAttribute('property', $self->_make_curie($st->predicate)); |
|
224
|
0
|
|
|
|
|
0
|
$DD->setAttribute('class', 'typed-literal datatype-xmlliteral'); |
|
225
|
0
|
|
|
|
|
0
|
$DD->setAttribute('datatype', $self->_make_curie($st->object->datatype)); |
|
226
|
0
|
|
|
|
|
0
|
$DD->setAttribute('content', encode_utf8($st->object->value)); |
|
227
|
0
|
|
|
|
|
0
|
$DD->addNewChild(XHTML_NS, 'pre')->addNewChild(XHTML_NS, 'code')->appendTextNode(encode_utf8($st->object->value)); |
|
228
|
|
|
|
|
|
|
} |
|
229
|
|
|
|
|
|
|
elsif ($st->object->is_literal |
|
230
|
|
|
|
|
|
|
&& $st->object->datatype->value eq 'http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral') |
|
231
|
|
|
|
|
|
|
{ |
|
232
|
0
|
|
|
|
|
0
|
$DD->setAttribute('property', $self->_make_curie($st->predicate)); |
|
233
|
0
|
|
|
|
|
0
|
$DD->setAttribute('class', 'typed-literal datatype-xmlliteral'); |
|
234
|
0
|
|
|
|
|
0
|
$DD->setAttribute('datatype', $self->_make_curie($st->object->datatype)); |
|
235
|
0
|
|
|
|
|
0
|
$DD->appendWellBalancedChunk(encode_utf8($st->object->value)); |
|
236
|
|
|
|
|
|
|
} |
|
237
|
|
|
|
|
|
|
elsif ($st->object->is_literal) |
|
238
|
|
|
|
|
|
|
{ |
|
239
|
10
|
|
|
|
|
3404
|
$DD->setAttribute('property', $self->_make_curie($st->predicate)); |
|
240
|
10
|
|
|
|
|
160
|
$DD->setAttribute('class', 'typed-literal'); |
|
241
|
10
|
100
|
|
|
|
125
|
if ($st->object->has_language) { |
|
242
|
3
|
|
|
|
|
46
|
$DD->setAttribute('xml:lang', ''.$st->object->language); |
|
243
|
|
|
|
|
|
|
} |
|
244
|
10
|
|
|
|
|
270
|
$DD->setAttribute('datatype', $self->_make_curie($st->object->datatype)); |
|
245
|
10
|
|
|
|
|
242
|
$DD->appendTextNode(encode_utf8($st->object->value)); |
|
246
|
|
|
|
|
|
|
} |
|
247
|
|
|
|
|
|
|
|
|
248
|
13
|
100
|
100
|
|
|
134
|
if ($interlink && !$st->object->is_literal) |
|
249
|
|
|
|
|
|
|
{ |
|
250
|
1
|
50
|
|
|
|
56
|
if ($model->count_quads($st->object, undef, undef, undef)) |
|
251
|
|
|
|
|
|
|
{ |
|
252
|
1
|
|
|
|
|
352
|
$DD->appendTextNode(' '); |
|
253
|
1
|
|
|
|
|
6
|
my $seealso = $DD->addNewChild(XHTML_NS, 'a'); |
|
254
|
1
|
50
|
|
|
|
7
|
$seealso->setAttribute('about', $st->object->is_resource ? $st->object->abs : '[_:'.$st->object->value.']'); |
|
255
|
1
|
|
|
|
|
54
|
$seealso->setAttribute('rel', $self->_make_curie('http://www.w3.org/2000/01/rdf-schema#seeAlso')); |
|
256
|
1
|
50
|
|
|
|
18
|
$seealso->setAttribute('href', '#'._make_id($st->object->is_resource ? $st->object->abs : '_:'.$st->object->value, $id_prefix)); |
|
257
|
1
|
|
|
|
|
15
|
$seealso->appendTextNode($interlink); |
|
258
|
|
|
|
|
|
|
} |
|
259
|
|
|
|
|
|
|
} |
|
260
|
|
|
|
|
|
|
} |
|
261
|
|
|
|
|
|
|
|
|
262
|
7
|
100
|
|
|
|
176
|
if ($interlink) |
|
263
|
|
|
|
|
|
|
{ |
|
264
|
2
|
|
|
|
|
15
|
my $iter = $model->get_quads(undef, undef, $subject, undef)->materialize; |
|
265
|
2
|
100
|
|
|
|
5381
|
if ($iter->peek) |
|
266
|
|
|
|
|
|
|
{ |
|
267
|
1
|
|
|
|
|
203
|
my $seealsoDT = $DL->addNewChild(XHTML_NS, 'dt'); |
|
268
|
1
|
|
|
|
|
5
|
$seealsoDT->setAttribute('class', 'seeAlso'); |
|
269
|
1
|
|
|
|
|
18
|
$seealsoDT->appendTextNode($interlink); |
|
270
|
|
|
|
|
|
|
|
|
271
|
1
|
|
|
|
|
3
|
my $sadata = {}; |
|
272
|
1
|
|
|
|
|
4
|
while (my $sast = $iter->next) |
|
273
|
|
|
|
|
|
|
{ |
|
274
|
1
|
50
|
|
|
|
82
|
my $sas = $sast->subject->is_resource ? $sast->subject->abs : '_:'.$sast->subject->value; |
|
275
|
1
|
|
|
|
|
146
|
my $p = $self->_make_curie($sast->predicate); |
|
276
|
1
|
|
|
|
|
23
|
$sadata->{$sas}->{$p} = $sast->predicate->abs; |
|
277
|
|
|
|
|
|
|
} |
|
278
|
|
|
|
|
|
|
|
|
279
|
1
|
|
|
|
|
138
|
my $seealso = $DL->addNewChild(XHTML_NS, 'dd'); |
|
280
|
1
|
|
|
|
|
7
|
$seealso->setAttribute('class', 'seeAlso'); |
|
281
|
1
|
|
|
|
|
20
|
my @keys = sort keys %$sadata; |
|
282
|
1
|
|
|
|
|
5
|
foreach my $sas (@keys) |
|
283
|
|
|
|
|
|
|
{ |
|
284
|
1
|
|
|
|
|
10
|
my $span = $seealso->addNewChild(XHTML_NS, 'span'); |
|
285
|
1
|
|
|
|
|
6
|
$span->appendTextNode('is '); |
|
286
|
1
|
|
|
|
|
3
|
my @pkeys = sort keys %{$sadata->{$sas}}; |
|
|
1
|
|
|
|
|
9
|
|
|
287
|
1
|
|
|
|
|
6
|
foreach my $curie (@pkeys) |
|
288
|
|
|
|
|
|
|
{ |
|
289
|
1
|
|
|
|
|
6
|
my $i = $span->addNewChild(XHTML_NS, 'i'); |
|
290
|
1
|
|
|
|
|
6
|
$i->appendTextNode($curie); |
|
291
|
1
|
|
|
|
|
4
|
$i->setAttribute(title => $sadata->{$sas}->{$curie}); |
|
292
|
1
|
50
|
|
|
|
17
|
$span->appendTextNode( $curie eq $pkeys[-1] ? '' : ', ' ); |
|
293
|
|
|
|
|
|
|
} |
|
294
|
1
|
|
|
|
|
25
|
$span->appendTextNode(' of '); |
|
295
|
1
|
|
|
|
|
8
|
my $a = $span->addNewChild(XHTML_NS, 'a'); |
|
296
|
1
|
50
|
|
|
|
14
|
$a->setAttribute('about', $sas !~ /^_:/ ? $sas : '[_:'.$sas.']'); |
|
297
|
1
|
|
|
|
|
18
|
$a->setAttribute('rel', $self->_make_curie('http://www.w3.org/2000/01/rdf-schema#seeAlso')); |
|
298
|
1
|
|
|
|
|
18
|
$a->setAttribute('href', '#'._make_id($sas, $id_prefix)); |
|
299
|
1
|
|
|
|
|
14
|
$a->appendTextNode($sas); |
|
300
|
1
|
50
|
|
|
|
21
|
$seealso->appendTextNode( $sas eq $keys[-1] ? '.' : '; ' ); |
|
301
|
|
|
|
|
|
|
} |
|
302
|
|
|
|
|
|
|
} |
|
303
|
|
|
|
|
|
|
} |
|
304
|
|
|
|
|
|
|
|
|
305
|
7
|
|
|
|
|
162
|
return $self; |
|
306
|
|
|
|
|
|
|
} |
|
307
|
|
|
|
|
|
|
|
|
308
|
|
|
|
|
|
|
sub _resource_notes |
|
309
|
|
|
|
|
|
|
{ |
|
310
|
2
|
|
|
2
|
|
8
|
my ($self, $subject, $node, $model, $notes_heading, $notes) = @_; |
|
311
|
|
|
|
|
|
|
|
|
312
|
2
|
|
|
|
|
4
|
my @relevant; |
|
313
|
|
|
|
|
|
|
|
|
314
|
2
|
|
|
|
|
6
|
foreach my $note (@$notes) |
|
315
|
|
|
|
|
|
|
{ |
|
316
|
2
|
100
|
|
|
|
14
|
push @relevant, $note |
|
317
|
|
|
|
|
|
|
if $note->is_relevant_to($subject); |
|
318
|
|
|
|
|
|
|
} |
|
319
|
|
|
|
|
|
|
|
|
320
|
2
|
100
|
|
|
|
488
|
if (@relevant) { |
|
321
|
1
|
|
|
|
|
11
|
my $wrapper = $node->addNewChild(XHTML_NS, 'aside'); |
|
322
|
1
|
|
|
|
|
8
|
my $heading = $wrapper->addNewChild(XHTML_NS, 'h4'); |
|
323
|
1
|
|
50
|
|
|
7
|
$heading->appendTextNode($notes_heading || 'Notes'); |
|
324
|
|
|
|
|
|
|
|
|
325
|
1
|
|
|
|
|
5
|
my $list = $wrapper->addNewChild(XHTML_NS, 'ul'); |
|
326
|
|
|
|
|
|
|
|
|
327
|
1
|
|
|
|
|
3
|
foreach my $note (@relevant) |
|
328
|
|
|
|
|
|
|
{ |
|
329
|
1
|
|
|
|
|
9
|
$list->appendChild( $note->node(XHTML_NS, 'li') ); |
|
330
|
|
|
|
|
|
|
} |
|
331
|
|
|
|
|
|
|
} |
|
332
|
|
|
|
|
|
|
|
|
333
|
2
|
|
|
|
|
50
|
return $self; |
|
334
|
|
|
|
|
|
|
} |
|
335
|
|
|
|
|
|
|
|
|
336
|
|
|
|
|
|
|
sub _img |
|
337
|
|
|
|
|
|
|
{ |
|
338
|
7
|
|
|
7
|
|
459
|
my ($self, $type) = @_; |
|
339
|
|
|
|
|
|
|
|
|
340
|
7
|
50
|
|
|
|
31
|
if ($type eq 'urn:x-rdf-rdfa-linter:internals:OpenGraphProtocolNode') |
|
341
|
|
|
|
|
|
|
{ |
|
342
|
0
|
|
|
|
|
0
|
return 'data:image/png;charset=binary;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oFEBYGBzcdoOEAAALhSURBVCjPJdLfb4trHADw7/d53nbr2661X9ZV29mE/VLMYplwchwnmCziR7iSEHbpQnAj7lxJJBIhJELcSBAh50iErAcJ2wnLRrJstQXdL7Sbtmpv173P3vd9nq8Ln7/hg3/t6BJCAEB9Q/2Na1d8Xt1YmsuaSVsKn7u6Sl/lZjoAIiIAEJG2aJpSyi2dnceOH87I4UfD12fyw7aJ0mIu3fHqZbHa7s4VxwLuECJDRA0Bund3vXz1cmWCjMyzz33uz31e4zsCANcg2Kimtz8Ya32xv+VC1N/BkPM//tzW03MEArN3b/1X6vJ8G+VKYmWUwjEyC8A0TPa7hVjMlsUbKjf7S2r4m//7YVl6sHB56q1uzGJkPYkC1HdQrEulxrAiAkgwMaC5y5ac6kRrdbfm83kfj9yYGtK4BvUdKhFnjENmEhbnubQwEcdwTK3rVh96S0KxkanIG61o56fyQzNDnrU7VfPf0jQwO4luDy1kcVmI5mehba8Mr6Ovw2wuoY83xrW8mHEslf+KP9P4/l+emUQ9QBURUJJsAVzDj694bpqQQW6GZcykJpUgQMeC+TQgQ2GAcjA1BqBAOuDYkE+hJcAyQdoglaWVuYPIHV8l1bVTzRo18pRbJoRalFVEZJCbxtadMhyj3kuat1L5Sqo1f0ltuR6qaTRSH7C2BQpZNGbBsTgiWSYW81j8gQs5MjK44YAT9W9iHF0bQwcbti6kEqzvJrcFlAagrl1tOSq95RQI0qd+9uKqFmpWVVG+KXyIAWBb8FBT0+rYHpGbZv7l5KugQgYKGSzmMdhITduULUDSUlfzmYf34khERJQujj4YPTk+mB154jHm0OUh7oKlAgKDtr2yPCpe34YTPacGBt4hEf1umBMTzycvJr68zk2UZpPMsdBbTsEWq2pF6a7m02ay7uy587Zto1Lqd10AcJSVLo6OZ3u/L35ylPC5qiL+9rbQvn8ePr9z9346lXKk/AUjmnS/afx+BwAAAABJRU5ErkJggg=='; |
|
343
|
|
|
|
|
|
|
} |
|
344
|
|
|
|
|
|
|
|
|
345
|
7
|
|
|
|
|
407
|
my $icons = { |
|
346
|
|
|
|
|
|
|
'http://bblfish.net/work/atom-owl/2006-06-06/#Entry' => 'page_white_link', |
|
347
|
|
|
|
|
|
|
'http://bblfish.net/work/atom-owl/2006-06-06/#Feed' => 'feed', |
|
348
|
|
|
|
|
|
|
'http://commontag.org/ns#AuthorTag' => 'tag_green', |
|
349
|
|
|
|
|
|
|
'http://commontag.org/ns#AutoTag' => 'tag_red', |
|
350
|
|
|
|
|
|
|
'http://commontag.org/ns#ReaderTag' => 'tag_yellow', |
|
351
|
|
|
|
|
|
|
'http://commontag.org/ns#Tag' => 'tag_blue', |
|
352
|
|
|
|
|
|
|
'http://ontologi.es/doap-bugs#Bug' => 'bug', |
|
353
|
|
|
|
|
|
|
'http://purl.org/goodrelations/v1#PriceSpecification' => 'money', |
|
354
|
|
|
|
|
|
|
'http://purl.org/NET/book/vocab#Book' => 'book', |
|
355
|
|
|
|
|
|
|
'http://purl.org/NET/c4dm/event.owl#Event' => 'date', |
|
356
|
|
|
|
|
|
|
'http://purl.org/ontology/bibo/Book' => 'book', |
|
357
|
|
|
|
|
|
|
'http://purl.org/rss/1.0/channel' => 'feed', |
|
358
|
|
|
|
|
|
|
'http://purl.org/rss/1.0/item' => 'page_white_link' , |
|
359
|
|
|
|
|
|
|
'http://purl.org/stuff/rev#Review' => 'award_star_gold_1', |
|
360
|
|
|
|
|
|
|
'http://rdf.data-vocabulary.org/#Organization' => 'chart_organisation', |
|
361
|
|
|
|
|
|
|
'http://rdf.data-vocabulary.org/#Person' => 'user', |
|
362
|
|
|
|
|
|
|
'http://rdf.data-vocabulary.org/#Review-aggregate' => 'award_star_add', |
|
363
|
|
|
|
|
|
|
'http://rdf.data-vocabulary.org/#Review' => 'award_star_gold_1', |
|
364
|
|
|
|
|
|
|
'http://schema.org/Person' => 'user_orange', |
|
365
|
|
|
|
|
|
|
'http://schema.org/Event' => 'date', |
|
366
|
|
|
|
|
|
|
'http://schema.org/FinancialService' => 'money', |
|
367
|
|
|
|
|
|
|
'http://schema.org/TennisComplex' => 'sport_tennis', |
|
368
|
|
|
|
|
|
|
'http://schema.org/Bakery' => 'cake', |
|
369
|
|
|
|
|
|
|
'http://schema.org/Map' => 'world', |
|
370
|
|
|
|
|
|
|
'http://schema.org/GolfClub' => 'sport_golf', |
|
371
|
|
|
|
|
|
|
'http://schema.org/CafeOrCoffeeShop' => 'cup', |
|
372
|
|
|
|
|
|
|
'http://schema.org/ProfilePage' => 'page_green', |
|
373
|
|
|
|
|
|
|
'http://usefulinc.com/ns/doap#Project' => 'application_double', |
|
374
|
|
|
|
|
|
|
'http://usefulinc.com/ns/doap#Version' => 'application_lightning', |
|
375
|
|
|
|
|
|
|
'http://www.holygoat.co.uk/owl/redwood/0.1/tags/Tagging' => 'tag_blue_add', |
|
376
|
|
|
|
|
|
|
'http://www.holygoat.co.uk/owl/redwood/0.1/tags/Tag' => 'tag_blue', |
|
377
|
|
|
|
|
|
|
'http://www.w3.org/1999/02/22-rdf-syntax-ns#Property' => 'arrow_right', |
|
378
|
|
|
|
|
|
|
'http://www.w3.org/2000/01/rdf-schema#Class' => 'cog', |
|
379
|
|
|
|
|
|
|
'http://www.w3.org/2002/12/cal/ical#Vcalendar' => 'calendar', |
|
380
|
|
|
|
|
|
|
'http://www.w3.org/2002/12/cal/ical#Vevent' => 'date', |
|
381
|
|
|
|
|
|
|
'http://www.w3.org/2002/07/owl#AnnotationProperty' => 'arrow_right', |
|
382
|
|
|
|
|
|
|
'http://www.w3.org/2002/07/owl#AsymmetricProperty' => 'arrow_right', |
|
383
|
|
|
|
|
|
|
'http://www.w3.org/2002/07/owl#Class' => 'cog', |
|
384
|
|
|
|
|
|
|
'http://www.w3.org/2002/07/owl#DatatypeProperty' => 'arrow_right', |
|
385
|
|
|
|
|
|
|
'http://www.w3.org/2002/07/owl#DeprecatedProperty' => 'arrow_right', |
|
386
|
|
|
|
|
|
|
'http://www.w3.org/2002/07/owl#FunctionalProperty' => 'arrow_right', |
|
387
|
|
|
|
|
|
|
'http://www.w3.org/2002/07/owl#InverseFunctionalProperty' => 'arrow_right', |
|
388
|
|
|
|
|
|
|
'http://www.w3.org/2002/07/owl#IrreflexiveProperty' => 'arrow_right', |
|
389
|
|
|
|
|
|
|
'http://www.w3.org/2002/07/owl#ObjectProperty' => 'arrow_right', |
|
390
|
|
|
|
|
|
|
'http://www.w3.org/2002/07/owl#OntologyProperty' => 'arrow_right', |
|
391
|
|
|
|
|
|
|
'http://www.w3.org/2002/07/owl#ReflexiveProperty' => 'arrow_right', |
|
392
|
|
|
|
|
|
|
'http://www.w3.org/2002/07/owl#SymmetricProperty' => 'arrow_right', |
|
393
|
|
|
|
|
|
|
'http://www.w3.org/2002/07/owl#TransitiveProperty' => 'arrow_right', |
|
394
|
|
|
|
|
|
|
'http://www.w3.org/2003/01/geo/wgs84_pos#Point' => 'world', |
|
395
|
|
|
|
|
|
|
'http://www.w3.org/2003/01/geo/wgs84_pos#SpatialThing' => 'world', |
|
396
|
|
|
|
|
|
|
'http://www.w3.org/2004/02/skos/core#Concept' => 'brick', |
|
397
|
|
|
|
|
|
|
'http://www.w3.org/2004/02/skos/core#ConceptScheme' => 'bricks', |
|
398
|
|
|
|
|
|
|
'http://www.w3.org/2006/vcard/ns#Address' => 'house', |
|
399
|
|
|
|
|
|
|
'http://www.w3.org/2006/vcard/ns#Location' => 'world', |
|
400
|
|
|
|
|
|
|
'http://www.w3.org/2006/vcard/ns#Vcard' => 'vcard', |
|
401
|
|
|
|
|
|
|
'http://www.w3.org/ns/auth/rsa#RSAPublicKey' => 'key', |
|
402
|
|
|
|
|
|
|
'http://xmlns.com/foaf/0.1/Agent' => 'user_gray', |
|
403
|
|
|
|
|
|
|
'http://xmlns.com/foaf/0.1/Document' => 'page_white_text', |
|
404
|
|
|
|
|
|
|
'http://xmlns.com/foaf/0.1/Group' => 'group', |
|
405
|
|
|
|
|
|
|
'http://xmlns.com/foaf/0.1/Image' => 'image', |
|
406
|
|
|
|
|
|
|
'http://xmlns.com/foaf/0.1/OnlineAccount' => 'status_online', |
|
407
|
|
|
|
|
|
|
'http://xmlns.com/foaf/0.1/Organization' => 'chart_organisation', |
|
408
|
|
|
|
|
|
|
'http://xmlns.com/foaf/0.1/Person' => 'user_green', |
|
409
|
|
|
|
|
|
|
'http://xmlns.com/foaf/0.1/PersonalProfileDocument' => 'page_green', |
|
410
|
|
|
|
|
|
|
}; |
|
411
|
|
|
|
|
|
|
|
|
412
|
7
|
|
50
|
|
|
88
|
return Icon::FamFamFam::Silk->new($icons->{$type}||'asterisk_yellow')->uri; |
|
413
|
|
|
|
|
|
|
} |
|
414
|
|
|
|
|
|
|
|
|
415
|
|
|
|
|
|
|
1; |