skos2html 0.0.3 → 0.0.4
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.
- data/lib/skos2html.rb +58 -10
- metadata +1 -1
data/lib/skos2html.rb
CHANGED
@@ -86,6 +86,7 @@ class Skos2Html
|
|
86
86
|
head.meta(:charset => "UTF-8")
|
87
87
|
head.title(title)
|
88
88
|
head.meta(:name => "generator", :content => "skos2html")
|
89
|
+
head.comment! "Edit styles and other html in this file as you like but do not change text or id-attributes."
|
89
90
|
head.style("""
|
90
91
|
html {
|
91
92
|
margin: auto;
|
@@ -209,30 +210,22 @@ div.concept {
|
|
209
210
|
if conceptschemes.size == 1
|
210
211
|
|
211
212
|
scheme = conceptschemes[0]
|
212
|
-
@log.info("
|
213
|
+
@log.info("Concept scheme " + scheme.scheme)
|
213
214
|
|
214
215
|
scheme_info = RDF::Query.execute(@graph) do
|
215
216
|
pattern [scheme.scheme, :predicate, :object]
|
216
217
|
end
|
217
218
|
|
218
|
-
# Title
|
219
219
|
title = ""
|
220
|
-
|
221
|
-
# Description
|
222
220
|
description = ""
|
223
|
-
|
224
|
-
# Creators
|
225
221
|
creators = []
|
226
|
-
|
227
|
-
# Contributors
|
228
222
|
contributors = []
|
229
223
|
|
230
224
|
# get values
|
231
225
|
scheme_info.each do |solution|
|
232
226
|
|
233
227
|
case solution.predicate
|
234
|
-
when "http://purl.org/dc/terms/title"
|
235
|
-
when "http://www.w3.org/2000/01/rdf-schema#label"
|
228
|
+
when "http://purl.org/dc/terms/title", "http://www.w3.org/2000/01/rdf-schema#label"
|
236
229
|
title = string_for(solution.object, @default_lang)
|
237
230
|
when "http://purl.org/dc/terms/description"
|
238
231
|
description = string_for(solution.object, @default_lang)
|
@@ -300,6 +293,7 @@ div.concept {
|
|
300
293
|
# title element
|
301
294
|
def concept_scheme_title
|
302
295
|
|
296
|
+
# Possible properties
|
303
297
|
title_properties = ["http://purl.org/dc/terms/title",
|
304
298
|
"http://www.w3.org/2000/01/rdf-schema#label",
|
305
299
|
"http://www.w3.org/2004/02/skos/core#prefLabel"]
|
@@ -335,9 +329,31 @@ div.concept {
|
|
335
329
|
|
336
330
|
|
337
331
|
|
332
|
+
def concept_preflabel(concept_uri)
|
333
|
+
|
334
|
+
uri = RDF::URI.new(concept_uri)
|
335
|
+
|
336
|
+
labels = RDF::Query.execute(@graph) do
|
337
|
+
pattern [uri, RDF::SKOS.prefLabel, :object]
|
338
|
+
end
|
339
|
+
|
340
|
+
labels.filter { |label| label.object.language == @default_lang }
|
341
|
+
|
342
|
+
if labels.size > 0
|
343
|
+
return labels[0].object.value
|
344
|
+
else
|
345
|
+
@log.error("Preflabel missing for #{concept_uri}")
|
346
|
+
return ""
|
347
|
+
end
|
348
|
+
end
|
349
|
+
|
350
|
+
|
351
|
+
|
338
352
|
# Generate the HTML for an individual concept.
|
339
353
|
def generate_concept(concept_uri)
|
340
354
|
|
355
|
+
@log.info("Generate concept #{concept_uri}")
|
356
|
+
|
341
357
|
concept_info = RDF::Query.execute(@graph) do
|
342
358
|
pattern [concept_uri, :predicate, :object]
|
343
359
|
end
|
@@ -345,6 +361,8 @@ div.concept {
|
|
345
361
|
preflabels = []
|
346
362
|
altlabels = []
|
347
363
|
definition = ""
|
364
|
+
has_broader = nil
|
365
|
+
has_narrower = nil
|
348
366
|
|
349
367
|
concept_info.each do |solution|
|
350
368
|
|
@@ -363,6 +381,10 @@ div.concept {
|
|
363
381
|
end
|
364
382
|
when "http://www.w3.org/2004/02/skos/core#definition"
|
365
383
|
definition = string_for(solution.object, @default_lang)
|
384
|
+
when "http://www.w3.org/2004/02/skos/core#broader"
|
385
|
+
has_broader = solution.object.value
|
386
|
+
when "http://www.w3.org/2004/02/skos/core#narrower"
|
387
|
+
has_narrower = solution.object.value
|
366
388
|
end
|
367
389
|
|
368
390
|
end
|
@@ -394,6 +416,32 @@ div.concept {
|
|
394
416
|
end
|
395
417
|
end
|
396
418
|
|
419
|
+
|
420
|
+
if has_broader
|
421
|
+
|
422
|
+
has_broader_uri = has_broader
|
423
|
+
|
424
|
+
unless has_broader.start_with?("http://")
|
425
|
+
r = RDF::URI.new(concept_uri)
|
426
|
+
r.fragment = has_broader[1..-1]
|
427
|
+
has_broader_uri = r.to_s
|
428
|
+
end
|
429
|
+
|
430
|
+
html.dt("Has broader", :class => "broader")
|
431
|
+
html.dd(:class => "broader") {
|
432
|
+
html.a(concept_preflabel(has_broader_uri), :href => has_broader)
|
433
|
+
}
|
434
|
+
end
|
435
|
+
|
436
|
+
|
437
|
+
if has_narrower
|
438
|
+
html.dt("Has narrower", :class => "narrower")
|
439
|
+
html.dd(:class => "narrower") {
|
440
|
+
html.a(has_narrower, :href => has_narrower)
|
441
|
+
}
|
442
|
+
end
|
443
|
+
|
444
|
+
|
397
445
|
html.dt("Identifier", :class => "identifier")
|
398
446
|
html.dd(concept_uri, :class => "identifier")
|
399
447
|
}
|