ttl2html 2.1.2 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/ttl2html/template.rb +88 -23
- data/lib/ttl2html/version.rb +1 -1
- data/lib/ttl2html.rb +9 -3
- data/templates/default.html.erb +3 -0
- data/templates/triples.html.erb +1 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50b5adc471f4582c8773ce30e684c4b21f013f717e2abd577ca31445c1d32058
|
4
|
+
data.tar.gz: e7b1f6c9463f8a16d3b4ecfb0df6ae5a67ee9d26a47d198a08cc759eaa21a82c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88eecf013c95e8f90cb502b6c23590753b3cc8805e64ed4c5ee1ed98b42c2aa0e2c8b81725d2b73bded97ab8e1a0b1637f71013639770c811132ba93a645f341
|
7
|
+
data.tar.gz: 67395144f89f18dc418acf14cf0600d9e0a37faf7f814cc47382557c2d68b9cb1136c0dae03057f0d55c459dea450563641fc2165b2d0196df0a6de7acc36b12
|
data/lib/ttl2html/template.rb
CHANGED
@@ -164,27 +164,20 @@ module TTL2HTML
|
|
164
164
|
end
|
165
165
|
end
|
166
166
|
def get_title(data, default_title = "no title")
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
http://purl.org/dc/elements/1.1/title
|
182
|
-
http://schema.org/name
|
183
|
-
http://www.w3.org/2004/02/skos/core#prefLabel
|
184
|
-
).each do |property|
|
185
|
-
return shorten_title(get_language_literal(data[property])) if data[property]
|
186
|
-
end
|
187
|
-
default_title
|
167
|
+
resolve_title(data,
|
168
|
+
default: default_title,
|
169
|
+
use_default: true,
|
170
|
+
property_key: :title_property,
|
171
|
+
perclass_key: :title_property_perclass
|
172
|
+
)
|
173
|
+
end
|
174
|
+
def get_subtitle(data, default_title = nil)
|
175
|
+
resolve_title(data,
|
176
|
+
default: default_title,
|
177
|
+
use_default: false,
|
178
|
+
property_key: :subtitle_property,
|
179
|
+
perclass_key: :subtitle_property_perclass
|
180
|
+
)
|
188
181
|
end
|
189
182
|
def get_language_literal(object)
|
190
183
|
if object.is_a? Array
|
@@ -215,7 +208,13 @@ module TTL2HTML
|
|
215
208
|
if /\Ahttps?:\/\// =~ object.to_s
|
216
209
|
rel_path = relative_path_uri(object, param[:base_uri])
|
217
210
|
if param[:data_global][object]
|
218
|
-
"<a href=\"#{rel_path}\">#{get_title(param[:data_global][object]) or object}</a>"
|
211
|
+
result = "<a href=\"#{rel_path}\">#{get_title(param[:data_global][object]) or object}</a>"
|
212
|
+
subtitle = get_subtitle(param[:data_global][object])
|
213
|
+
if subtitle
|
214
|
+
result += " <small>#{subtitle}</small>"
|
215
|
+
else
|
216
|
+
result
|
217
|
+
end
|
219
218
|
else
|
220
219
|
"<a href=\"#{rel_path}\">#{object}</a>"
|
221
220
|
end
|
@@ -281,5 +280,71 @@ module TTL2HTML
|
|
281
280
|
param_local = @param.dup.merge(data: version)
|
282
281
|
to_html_raw("version.html.erb", param_local)
|
283
282
|
end
|
283
|
+
|
284
|
+
private
|
285
|
+
|
286
|
+
def resolve_title(data, default:, use_default:, property_key:, perclass_key:)
|
287
|
+
return default if data.nil?
|
288
|
+
# rdf:type
|
289
|
+
type_key = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"
|
290
|
+
# 1. クラスごとのプロパティ指定がある場合
|
291
|
+
if @param[perclass_key].is_a?(Hash) && data[type_key]
|
292
|
+
Array(data[type_key]).each do |klass|
|
293
|
+
if @param[perclass_key][klass]
|
294
|
+
prop = @param[perclass_key][klass]
|
295
|
+
if valid_value?(data[prop])
|
296
|
+
return shorten_title(get_language_literal(data[prop]))
|
297
|
+
end
|
298
|
+
end
|
299
|
+
end
|
300
|
+
end
|
301
|
+
# 2. 一般プロパティ
|
302
|
+
if @param[property_key] && valid_value?(data[@param[property_key]])
|
303
|
+
return shorten_title(get_language_literal(data[@param[property_key]]))
|
304
|
+
end
|
305
|
+
# 3. デフォルト候補を順にチェック
|
306
|
+
if use_default
|
307
|
+
[
|
308
|
+
"http://www.w3.org/2000/01/rdf-schema#label",
|
309
|
+
"http://purl.org/dc/terms/title",
|
310
|
+
"http://purl.org/dc/elements/1.1/title",
|
311
|
+
"http://schema.org/name",
|
312
|
+
"http://www.w3.org/2004/02/skos/core#prefLabel"
|
313
|
+
].each do |prop|
|
314
|
+
return shorten_title(get_language_literal(data[prop])) if valid_value?(data[prop])
|
315
|
+
end
|
316
|
+
end
|
317
|
+
# 4. fallback
|
318
|
+
default
|
319
|
+
end
|
320
|
+
def valid_value?(value)
|
321
|
+
value && !(value.respond_to?(:empty?) && value.empty?)
|
322
|
+
end
|
323
|
+
def sort_criteria(val, data_global)
|
324
|
+
resource = data_global[val]
|
325
|
+
results = []
|
326
|
+
[
|
327
|
+
"http://purl.org/linked-data/cube#order",
|
328
|
+
"http://schema.org/position",
|
329
|
+
].each do |order_elem|
|
330
|
+
if resource and resource[order_elem]
|
331
|
+
order_val = resource[order_elem].first.to_s
|
332
|
+
if data_global[order_val] and data_global[order_val][RDF::RDFV::value.to_s]
|
333
|
+
results << data_global[order_val][RDF::RDFV::value.to_s].first.to_i
|
334
|
+
else
|
335
|
+
results << order_val.to_i
|
336
|
+
end
|
337
|
+
else
|
338
|
+
results << Float::INFINITY
|
339
|
+
end
|
340
|
+
end
|
341
|
+
if val.to_s =~ /^_:/
|
342
|
+
results << resource.to_s
|
343
|
+
else
|
344
|
+
results << val.to_s
|
345
|
+
end
|
346
|
+
#p [val, results]
|
347
|
+
results
|
348
|
+
end
|
284
349
|
end
|
285
|
-
end
|
350
|
+
end
|
data/lib/ttl2html/version.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
TTL2HTML::VERSION = "2.1
|
1
|
+
TTL2HTML::VERSION = "2.2.1"
|
data/lib/ttl2html.rb
CHANGED
@@ -83,10 +83,13 @@ module TTL2HTML
|
|
83
83
|
result << @data[subject.to_s].keys.sort.map do |predicate|
|
84
84
|
str = "<#{predicate}> "
|
85
85
|
str << @data[subject.to_s][predicate].sort_by do |object|
|
86
|
-
|
86
|
+
#p [subject, predicate, object, depth]
|
87
|
+
if object.to_s =~ /^_:/ and @data[object.to_s]
|
87
88
|
qb_order = "http://purl.org/linked-data/cube#order"
|
89
|
+
schema_position = "http://schema.org/position"
|
88
90
|
shacl_order = "http://www.w3.org/ns/shacl#order"
|
89
|
-
[ @data[object.to_s][
|
91
|
+
[ @data[object.to_s][schema_position] ? @data[object.to_s][schema_position].first.to_i : Float::INFINITY,
|
92
|
+
@data[object.to_s][qb_order] ? @data[object.to_s][qb_order].first.to_i : Float::INFINITY,
|
90
93
|
@data[object.to_s][shacl_order] ? @data[object.to_s][shacl_order].first.to_i : Float::INFINITY,
|
91
94
|
format_turtle(object, depth + 1)
|
92
95
|
]
|
@@ -172,6 +175,9 @@ module TTL2HTML
|
|
172
175
|
param[:data_inverse_global] = @data_inverse
|
173
176
|
param[:data_global] = @data
|
174
177
|
param[:title] = template.get_title(v)
|
178
|
+
if @config[:subtitle_property] or @config[:subtitle_property_perclass]
|
179
|
+
param[:subtitle] = template.get_subtitle(v)
|
180
|
+
end
|
175
181
|
if param[:breadcrumbs]
|
176
182
|
param[:breadcrumbs_items] = build_breadcrumbs(uri, template)
|
177
183
|
end
|
@@ -496,7 +502,7 @@ module TTL2HTML
|
|
496
502
|
end
|
497
503
|
dir = File.dirname(file)
|
498
504
|
FileUtils.mkdir_p(dir) if not File.exist?(dir)
|
499
|
-
|
505
|
+
str = format_turtle(uri)
|
500
506
|
str << format_turtle_inverse(uri)
|
501
507
|
open(file, "w") do |io|
|
502
508
|
io.puts str.strip
|
data/templates/default.html.erb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
<div class="jumbotron">
|
2
2
|
<div class="container">
|
3
3
|
<h1><%=h param[:title] %></h1>
|
4
|
+
<%- if param[:subtitle] -%>
|
5
|
+
<p class="lead"><%=h param[:subtitle] %></p>
|
6
|
+
<%- end -%>
|
4
7
|
<p><i class="bi bi-link-45deg"></i> <a href="<%=h param[:uri] %>"><%=h param[:uri] %></a></p>
|
5
8
|
</div>
|
6
9
|
</div>
|
data/templates/triples.html.erb
CHANGED
@@ -5,13 +5,7 @@
|
|
5
5
|
[ order, k ]
|
6
6
|
}.each do |k, v| -%>
|
7
7
|
<dt class="col-sm-3"><%=h format_property(k, param[:labels]) %></dt>
|
8
|
-
<%- v.sort_by{|e|
|
9
|
-
if /\A_:/ =~ e.to_s and param[:data_global][e]
|
10
|
-
param[:data_global][e].to_s
|
11
|
-
else
|
12
|
-
e
|
13
|
-
end
|
14
|
-
}.each_with_index do |v2, idx| -%>
|
8
|
+
<%- v.sort_by{|e| sort_criteria(e, param[:data_global]) }.each_with_index do |v2, idx| -%>
|
15
9
|
<%- if v2.respond_to? :language and v2.language? -%>
|
16
10
|
<dd class="col-sm-9<%= ' offset-sm-3' if idx > 0 %>" lang="<%=h v2.language %>"><%= format_object v2, param[:data], param[:type] %></dd>
|
17
11
|
<%- else -%>
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ttl2html
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masao Takaku
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-07-10 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: nokogiri
|