source: main/trunk/model-sites-dev/eurovision-lod/collect/eurovision/transform/pages/about.xsl@ 35066

Last change on this file since 35066 was 35066, checked in by davidb, 3 years ago

Text/syntax tidy-up

  • Property svn:executable set to *
File size: 29.3 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE videocollection [
3 <!ENTITY ndash "&#8211;">
4 <!ENTITY mdash "&#8212;">
5]>
6<xsl:stylesheet version="1.0"
7 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
8 xmlns:java="http://xml.apache.org/xslt/java"
9 xmlns:util="xalan://org.greenstone.gsdl3.util.XSLTUtil"
10 xmlns:gslib="http://www.greenstone.org/skinning"
11 xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat"
12 extension-element-prefixes="java util"
13 exclude-result-prefixes="java util">
14
15
16 <xsl:template name="coll-description">
17 <gsf:style src="sites/{$site_name}/collect/{$collName}/css/eurovision.css"/>
18 <gsf:script src="sites/{$site_name}/collect/{$collName}/js/jquery.show-more.js"/>
19
20 <div id="about-desc">
21 <h2>Introduction</h2>
22 <!--
23 <p style="padding-bottom: 10px;">
24 The <a href="https://eurovision.tv">Eurovision Song
25 Content</a> is a live-broadcast televised event that
26 was first held in 1956 featuring artists singing original songs from
27 7 countries. Since then it has grown into an event involving
28 over 40 countries, and streamed all around the world. ...
29
30 </p>
31 -->
32
33 <p style="padding-bottom: 10px;">
34 <i style="padding-right:6px;">A help to shore up a post war Europe in 1956 it
35 all began, where there were only seven countries and one
36 camera man!</i>
37 </p>
38 <p>
39 The <a href="https://eurovision.tv">Eurovision Song
40 Contest</a> is a long-running, live-broadcast televised multi-national
41 competition with a collaborative mission, not dissimilar
42 in spirit to the Olympics.
43 The contest has grown significantly from
44 that modest start with 7 countries (and one cameraman),
45 with over 40 countries competing these days—even
46 Australia takes part now, through a specially
47 arranged invitation. It's an annual celebration of
48 European culture and the highlight of many people's
49 year.
50 </p>
51
52 <div id="about-show-more">
53 <p>
54 At Eurovision there is no division because wherever
55 you come from Eurovision is home. The Eurovision song
56 contest is widely known as a safe space for LGBTQIA+
57 people and a platform for free expression. For example
58 trans-woman
59 <a href="https://en.wikipedia.org/wiki/Dana_International">Dana International</a>
60 won as far back as 1998.
61 There have been songs in many different languages over the
62 years, although most are in English these days. This
63 doesn't matter, however, because music is a language we all
64 know how to speak.
65 </p>
66 <p>
67 In its latest incarnation, after
68 all the performances are over, artists wait
69 nervously as via live television link-ups the show's hosts visit each
70 of the 40+ countries in turn collecting all points cast
71 by the country appointed juries. This includes
72 the all important top score that can be cast, 12 points
73 (douze points!), a double-increment up from the
74 10 points awarded to the song a country ranks second,
75 followed by 8, 7, 6 
 1 points awarded.
76 With over 20 countries competing in a final, this means
77 that not all performers gets points from that country.
78 Next comes the &quot;the popular vote&quot;
79 where fans, still grouped by country, have
80 the votes they cast by phone, SMS or the Eurovision app
81 tallied and mapped into the same format of 12 points for 1st
82 place, and so on.
83 This all culminates in a new winner being crowned, with
84 the competition typically being hosted the following year
85 in that country.
86 </p>
87 </div>
88 <gsf:script>
89 $('#about-show-more').showMore({
90 minheight: 0,
91 buttontxtmore:"show more ...",
92 buttontxtless:"... show less"
93 });
94 </gsf:script>
95
96
97 <h2>Features of this Website</h2>
98
99 <p>
100 This (unofficial) website has been developed by a small
101 team of dedicated Digital Library researchers who also
102 happen to be <i>huge</i> fans of Eurovision. We wish to
103 share our love for the competition, and at the same time
104 demonstrate what is possible when—harnessing some of that
105 passion!—the techniques of
106 <a href="https://en.wikipedia.org/wiki/Linked_data">Linked
107 Open Data</a> are applied
108 to the Open Source
109 <a href="https://www.greenstone.org">Greenstone3</a>
110 Digital Library platform. For the technically interested
111 see the
112 <a href="{$library_name}/collection/{$collName}/page/about#it-all-started-with">
113 <i style="padding-right: 6px;">It All Started with a Little <strike>Sparkle</strike>SPARQL</i></a>
114 below for details about how the digital library was formed.
115 </p>
116
117 <!--
118 <p>
119 For those who want to jump right in and access information about, as well as see and hear some of the past performances,
120 we suggest you
121 start by exploring the assembled information through
122 the browsing tabs, such as
123 <a href="{$library_name}/collection/{$collName}/browse/CL3">browse by countries</a>
124 if you want (for instance) to reminisce about songs your country have entered in the past, or
125 <a href="{$library_name}/collection/{$collName}/browse/CL4">browse by years</a> if
126 you are curious about who were the countries competing in that inaugural year of 1956.
127 Alternatively, use the quick-search box to query the DL collection for a term that you sparks
128 interest, such as
129 <a href="{$library_name}/collection/{$collName}/search/TextQuery?qs=1&amp;rt=rd&amp;s1.level=Doc&amp;startPage=1&amp;s1.query=love&amp;s1.index=ZZ">love</a>
130 and
131 <a href="{$library_name}/collection/{$collName}/search/TextQuery?qs=1&amp;rt=rd&amp;s1.level=Doc&amp;startPage=1&amp;s1.query=amore&amp;s1.index=ZZ">amore</a>,
132 or maybe something more frivolous such as
133 <a href="{$library_name}/collection/{$collName}/search/TextQuery?qs=1&amp;rt=rd&amp;s1.level=Doc&amp;startPage=1&amp;s1.query=la&amp;s1.index=ZZ">la</a>.
134
135 </p>
136-->
137
138 <p>
139 For those who want to jump right in and access information about, as well as see and hear some of the past performances,
140 we suggest you
141 start by exploring the assembled information through
142 the browsing tabs. For example:
143 <ul>
144 <li><a href="{$library_name}/collection/{$collName}/browse/CL3">Browse by countries</a>
145 if you want (for instance) to reminisce about songs your country have entered in the past; or</li>
146 <li><a href="{$library_name}/collection/{$collName}/browse/CL4">Browse by years</a> if
147 you are curious about who were the countries competing in that inaugural year of 1956.</li>
148 </ul>
149 </p>
150 <p>
151 Alternatively, use the quick-search box to query the DL collection for a term that sparks
152 your interest. For example:
153 <ul>
154 <li>
155 <a href="{$library_name}/collection/{$collName}/search/TextQuery?qs=1&amp;rt=rd&amp;s1.level=Doc&amp;startPage=1&amp;s1.query=love&amp;s1.index=ZZ">love</a>
156 and
157 <a href="{$library_name}/collection/{$collName}/search/TextQuery?qs=1&amp;rt=rd&amp;s1.level=Doc&amp;startPage=1&amp;s1.query=amore&amp;s1.index=ZZ">amore</a>,
158 or maybe something more frivolous such as
159 <a href="{$library_name}/collection/{$collName}/search/TextQuery?qs=1&amp;rt=rd&amp;s1.level=Doc&amp;startPage=1&amp;s1.query=la&amp;s1.index=ZZ">la</a>.
160 </li>
161 </ul>
162 </p>
163
164
165 <h2>Data Analysis and Visualization</h2>
166
167 <gsf:script src="ext/jena/sgvizler2/sgvizler2.js"/>
168
169 <gsf:script>
170 $(document).ready(
171 function() {
172
173 // Exaple triple
174 // "s": { "type": "uri" , "value": "http://127.0.0.1:8383/greenstone3/library/collection/eurovision/document/HASH0191e9cc7bfdf14743472257s10" } ,
175 // "p": { "type": "uri" , "value": "gsdlextracted:Country" } ,
176 // "o": { "type": "literal" , "value": "United Kingdom" }
177
178 sgvizler2.containerDraw('sgvizler2-country-count');
179 }
180 );
181 </gsf:script>
182
183 <xsl:variable name="graphURI">https://so-we-must-think.space<xsl:value-of select="$siteURL"/><xsl:value-of select="$library_name"/>/collection/<xsl:value-of select="$collName"/></xsl:variable>
184 <div id="sgvizler2-country-count"
185 data-sgvizler-endpoint="//sowemustthink.space/greenstone3-lod3/greenstone/query"
186 data-sgvizler-chart="google.visualization.BarChart"
187 data-sgvizler-chart-options="title=Number of Songs from each Country|legend.position=none|height=900|chartArea.height=840|fontSize=11"
188 data-sgvizler-log="2"
189 style="width:900px; height:300px; margin-left: auto; margin-right: auto; overflow-y: scroll; overflow-x: hidden;">
190 <xsl:attribute name="data-sgvizler-query">
191 PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
192 PREFIX gsdlextracted: &lt;http://greenstone.org/gsdlextracted#&gt;
193
194 SELECT ?country (COUNT(?country) AS ?freqCount)
195 WHERE {
196 GRAPH &lt;<xsl:value-of select="$graphURI"/>&gt; {
197 {
198 SELECT DISTINCT ?country ?year WHERE {
199 ?s gsdlextracted:Country ?country.
200 ?s gsdlextracted:Year ?year.
201 } ORDER BY ?country ?year
202 }
203 }
204 }
205 GROUP BY ?country ORDER BY ASC(?country)
206 </xsl:attribute>
207 <xsl:text> Loading ...</xsl:text>
208 </div>
209
210
211 <p style="padding-top: 10px;">
212 All the metadata in the digital library is simultaneously
213 published as linked data, meaning it is possible to
214 extract and analyze the data contained here in a variety
215 of ways. To aid in such analysis we have
216 added in a data visualization layer to the digital
217 library. This is how the bar-graph above has been
218 created, which shows how many times each country has
219 competed, alphabetically sorted.
220 </p>
221 <p>
222 Through our:
223 <ul>
224 <li>
225 <a href="{$library_name}/collection/{$collName}/page/sgvizler">Visualizer page</a>
226 </li>
227 </ul>
228 </p>
229 <p>
230 we provide samples you can try out to give you an idea of
231 the sorts of visualization that can be produced. More
232 importantly, these samples are editable so you are free to
233 change them however you wish. On the visualization page
234 you'll find a sample that shows you how often different
235 countries have won Eurovision, but perhaps you'd like to
236 find out who has lost the most often? We also provide a
237 sample dataflow visualization of jury voting patterns over
238 the last decade, which makes for interesting viewing!
239 Adjust the values used to discover how this compares
240 with other time periods.
241 </p>
242
243 <div id="viz-show-more" style="margin-bottom: 10px;">
244
245 <p>
246 In addition to the visualizer, through the:
247 <ul>
248 <li>
249 <a href="{$library_name}/collection/{$collName}/page/sparql">Data Analysis page</a>
250 </li>
251 </ul>
252 you will find a set of samples you can test-drive to give you an idea of the
253 sorts of raw data analysis that can be done. The syntax used is called
254 <a href="https://en.wikipedia.org/wiki/SPARQL" target="_blank">SPARQL</a> (pronounced &quot;sparkle&quot;). If you are unfamiliar
255 with this syntax, there are a variety of tutorials available online where you can learn about query language, such as
256 the one done by <a href="https://jena.apache.org/tutorials/sparql.html" target="_blank">Apache Jena</a>, an Open Source
257 initiative that provides a variety of Semantic Web and Linked Data tools.
258 As before, these samples are editable so you are free to
259 change them however you wish to adjust the analysis undertaken, or once you're mastered the
260 query syntax, develop completely original forms of
261 analysis.
262 </p>
263
264
265 <p>
266 We suggest starting with viewing <a href="{$library_name}/collection/{$collName}/page/sgvizler">sample visualizations</a> to see what's possible,
267 and making minor edits to that to adjust what is visualized.
268 Then, if you want to start visualizing the data in a more substantially different way
269 or else export the data for more detailed analysis under your own control,
270 switch to the <a href="{$library_name}/collection/{$collName}/page/sparql">SPARQL-based data analysis</a> page to ensure the underlying
271 data retrieved is as you intended. Then take the newly developed SPARQL query back to the visualizer page, and through the
272 additional text-input fields provided there, develop the visualization.
273
274 </p>
275
276 </div>
277
278 <gsf:script>
279 $('#viz-show-more').showMore({
280 minheight: 0,
281 buttontxtmore:"show more ...",
282 buttontxtless:"... show less"
283 });
284 </gsf:script>
285
286<!--
287 <p>
288 If you'd like to dig into the data behind this Digital Library collection, this can be done directly
289 using the <a href="{$library_name}/collection/{$collName}/page/sparql">SPARQL Query interface</a>.
290 This is a good place to go to see what sort of data is being stored, and we provide some sample
291 queries to get you going. But if you like to see the data presented more visually, we suggest
292 you try out the <a href="{$library_name}/collection/{$collName}/page/sgvizler">SGVizler page</a>,
293 which takes things to the next level, using pie-charts, histograms and other forms of
294 visualization to present the data.
295 </p>
296
297-->
298
299 <h2 id="it-all-started-with">It All Started with a Little <strike>Sparkle</strike>SPARQL</h2>
300
301
302 <p>
303 In terms of how this collection was developed using the
304 Greenstone3 Digital Library (DL) architecture, we are
305 being a touch irreverent to say <i>it all started with a
306 little SPARQL</i>.
307 It is certainly true to say that, operationally, the DL
308 was created using SPARQL query that draws down JSON
309 records from
310 <a href="https://dbpedia.org" target="_blank">DBPedia</a>
311 about all the different entrants in the Eurovision. This
312 is then ingested into Greenstone using its document- and
313 metadata-processing pipeline: expand through the <i>show
314 more ...</i> button below to see the actual query.
315 But in truth, our starting point of the SPARQL query is
316 only possible due to the Herculean efforts of the
317 contributors to the Wikipedia pages about
318 the Eurovision Song Contest, and following on from
319 that the endeavors of the DBPedia project to
320 transform a substantial portion of that information
321 into machine-readable linked data.
322 </p>
323
324 <p>
325 Continuing the technical development of the DL,
326 to the DBpedia extracted content, we then added in voting metadata—again
327 using the Greenstone document- and metadata- processing
328 pipeline—this time in the form of CSV-based spreadsheet derived from the
329 <a href="https://www.kaggle.com/datagraver/eurovision-song-contest-scores-19752019" target="_blank">Kaggle Eurovision Voting dataset 1975-2019</a>.
330 </p>
331
332
333 <div id="dl-tech-show-more">
334 <p>
335 Here's the SPARQL query that retrieves, for every year
336 Eurovision has been held, the countries that took part.
337 At under 20 lines of code, we think it's pretty awesome!
338 The information retrieved includes the country, year,
339 title of the song, and name of the entrant (the
340 act/artist), amongst other things. All useful core
341 information to seed the digital library collection. As
342 the 2020 Eurovision event did not run due to the
343 Covid-19 Pandemic, and (at the time of writing the 2021
344 is yet to occur), we have opted to filter the matches
345 returned to be prior to 2020.
346 </p>
347<!--
348# bind( REPLACE(str(?country_in_year), ".*(\\d{4})", "$1") AS ?year).
349
350PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
351xsd:
352skos:
353prov:
354
355dbc:
356dbp:
357
358dct:
359-->
360 <pre style="background-color: #fff; color: #000; padding: 12px; margin-right: 6px;">
361SELECT ?countries_in_esc_by_year ?country_in_year (?year AS ?Year) (?country AS ?Country) ?entrant (?entrant_label AS ?Creator) ?song (?song_label AS ?Title) (?was_derived_from AS ?WikipediaURL)
362WHERE {
363 ?countries_in_esc_by_year skos:broader dbc:Countries_in_the_Eurovision_Song_Contest_by_year.
364
365 ?country_in_year dct:subject ?countries_in_esc_by_year.
366 ?country_in_year dbp:year ?year.
367 FILTER ( xsd:integer(?year) &lt; 2020).
368
369 ?country_in_year dbp:country ?country.
370
371 ?country_in_year dbp:entrant ?entrant.
372 ?entrant rdfs:label ?entrant_label
373 FILTER (lang(?entrant_label) = 'en').
374
375 ?country_in_year dbp:song ?song.
376 ?song rdfs:label ?song_label
377 FILTER (lang(?song_label) = 'en').
378
379 OPTIONAL {
380 ?song prov:wasDerivedFrom ?was_derived_from
381 }
382}
383ORDER BY DESC(?countries_in_esc_by_year)
384 </pre>
385
386 <p>
387 You can try this query out yourself if you like. Select the entirety of the SPARQL query
388 in the above text box, and press <i>Control-C</i> to place it in your Copy-buffer.
389 Next visit the DBPedia SPARQL Endpoint given below, and in the main text box of the page
390 that appears, press <i>Control-V</i>
391 to paste in your SPARQL query. Finally, click on the <i>Execute Query</i> button
392 to initiate the search.
393 <ul>
394 <li>
395 <a href="https://dbpedia.org/sparql/" target="_blank">DBpedia's SPARQL endpoint</a>
396 </li>
397 </ul>
398 </p>
399 <p>
400 Through the SPARQL Endpoint you can change the output format that is used to, for example, JSON or Turtle.
401 For convenience, if you are just interested in seeing what the outcome of running the query is, displayed as a web page:
402 <ul>
403 <li>
404 <a href="https://dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&amp;query=SELECT+%3Fcountries_in_esc_by_year+%3Fcountry_in_year+%3Fyear+as+%3FYear+%3Fcountry+as+%3FCountry+%3Fentrant+%3Fentrant_label+as+%3FCreator+%3Fsong+%3Fsong_label+as+%3FTitle+%3Fwas_derived_from+as+%3FWikipediaURL%0D%0AWHERE+%7B%0D%0A++++%3Fcountries_in_esc_by_year+skos%3Abroader+dbc%3ACountries_in_the_Eurovision_Song_Contest_by_year.%0D%0A%0D%0A++++%3Fcountry_in_year+dct%3Asubject+%3Fcountries_in_esc_by_year.%0D%0A++++bind%28+REPLACE%28str%28%3Fcountry_in_year%29%2C+%22.*%28%5C%5Cd%7B4%7D%29%22%2C+%22%241%22%29+as+%3Fyear%29.%0D%0A++++FILTER+%28+xsd%3Ainteger%28%3Fyear%29+%3C+2020%29.%0D%0A%0D%0A++++%3Fcountry_in_year+dbp%3Acountry+%3Fcountry.%0D%0A%0D%0A++++%3Fcountry_in_year+dbp%3Aentrant+%3Fentrant.%0D%0A++++%3Fentrant+rdfs%3Alabel+%3Fentrant_label%0D%0A++++++FILTER+%28lang%28%3Fentrant_label%29+%3D+%27en%27%29.%0D%0A%0D%0A++++%3Fcountry_in_year+dbp%3Asong+%3Fsong.%0D%0A++++%3Fsong+rdfs%3Alabel+%3Fsong_label%0D%0A++++++FILTER+%28lang%28%3Fsong_label%29+%3D+%27en%27%29.%0D%0A%0D%0A++++OPTIONAL+%7B%0D%0A++++++%3Fsong+prov%3AwasDerivedFrom+%3Fwas_derived_from%0D%0A++++%7D%0D%0A%7D%0D%0AORDER+BY+DESC%28%3Fcountries_in_esc_by_year%29&amp;format=text%2Fhtml&amp;timeout=30000&amp;signal_void=on&amp;signal_unconnected=on" target="_blank">Click here to run the query directly</a>
405 </li>
406 </ul>
407 </p>
408
409 <h2>Triplestore Errata</h2>
410
411 <p>
412 The above SPARQL query is a good starting point to
413 extract all the Eurovision entries over the years,
414 however a more careful study of the returned results
415 revealed a few complications that needed to be
416 addressed. One issue stems from the fact that in its
417 inaugural year, countries were allowed to send two
418 entries each. For 1956, for every URI representing a
419 country in that year there are two title and two
420 entrants represented. As initially expressed, the
421 SPARQL query does not cater for this circumstance and
422 results in 2 x 2 = 4 combinations of artist and title
423 per song.
424 </p>
425 <p>
426 The way to address this is to include an additional
427 constraint that ensures that the URI representing
428 <i>?song</i> includes the relationship <i>dbp:artist</i>
429 for <i>?entrant</i>, effectively locking in to the
430 artist that performed that particular song. Studying
431 the result of this change, however, showed up a more
432 wide-reaching problem which was that not all the
433 <i>?country_year</i> URI entries expressed relationships
434 to songs and artists that were themselves URI: sometimes
435 they were represented as a string literal, meaning the
436 added constraint would fail, and reject entirely the
437 details about a country's entry in that
438 year. Compounding this, we also saw that some of the
439 processing work by DBPedia to turn the manually curated
440 information in Wikipedia into machine-readable form
441 erroneously handled the formation of some of the song
442 titles and artists.
443 </p>
444 <p>
445 Given that the erroneous entries were strings (even
446 integer numbers at times!) and not URI gave us a way in
447 to see how wide-spread the problem was. Using adapted
448 versions of the the main SPARQL query we had formulated,
449 we were able to produce lists of the affected entries.
450 The lists are available here through the following
451 links:
452 <ul>
453 <li>
454 <a target="_blank" href="sites/{$site_name}/collect/{$collName}/prepare/problem-lod-lists/dbpedia-problem-songs.html">Problem Songs (titles are literals not URIs/IRIs)</a>
455 </li>
456 <li>
457 <a target="_blank" href="sites/{$site_name}/collect/{$collName}/prepare/problem-lod-lists/dbpedia-problem-entrants.html">Problem Entrants (artists are literals not URIs/IRIs)</a>
458 </li>
459 </ul>
460 </p>
461
462 <p>
463 The generation of these lists also provided the key to
464 the approach we used to compensate for the complications
465 these issues introduced. Skipping ahead slightly to the
466 formation of the Digital Library collection with
467 Greenstone3, we make use of this software architecture's
468 Triplestore Extension, which means that in addition to
469 the main DL and Open Archive Initiative (OAI) server
470 endpoints, there is also a triplestore backend. While
471 the triplestore extension was designed to provide SPARQL
472 access to the metadata and document content of the DL
473 collections, its existence means we can include in it a
474 graph that represents the necessary errata information
475 we need to &quot;course correct&quot; the SPARQL query
476 to perform how it is intended.
477 </p>
478
479 <p>
480 This does admittedly complicate the expression of the
481 query, but the additions are manageable. The expanded
482 query makes use of SPARQL's federated search feature:
483 the query starts as before with the retrieval of triples
484 from the DBPedia endpoint; based on resolved values of
485 entities such as <i>?country_year</i> and <i>?song</i>,
486 it then optionally retrieves matching items from the DL
487 SPARQL endpoint. The final step is to use a conditional
488 clause (if-statement) to test to see if the DBpedia
489 version of the song is a literal, and if it is and if
490 there is a bound value for the DL retrieved one, then it
491 selects that one in preference.
492 </p>
493
494 <p>
495 The DBpedia SPARQL endpoint doesn't allow for federated
496 queries, and so we initiate the SPARQL queries through
497 the DLs SPARQL endpoint, using SERVICE blocks to specify
498 the parts of the query that are run on the DBpedia endpoint.
499 <ul>
500 <li>
501 <a href="{$library_name}/collection/{$collName}/page/sparql">DL's (local) SPARQL endpoint</a>
502 </li>
503 </ul>
504 </p>
505
506 <h3>Adding in Voting Metadata</h3>
507
508 <p>
509 Access to and the analysis of how countries have voted over the years
510
511 To fulfill our vision of developing this DL collection as a rich resource to
512 through which people can explore the phenomenon.
513
514 </p>
515
516 <h3>Patching in Missing Data: Page Scraping</h3>
517
518
519 <p>
520 Despite our best intentions to work solely with ....
521 .. missing categories ...
522
523 totting up how many entrie per year ...
524 thousands of entries
525
526 We took the opportunity to add in further fields: Performing Position, Placement, Voting Total, thumbnail flag image.
527
528 <ul>
529 <li>
530 <a href="sites/{$site_name}/collect/{$collName}/prepare/problem-lod-lists/dbpedia-problem-category-in-year.html">Problem Category pages (some countries not listed in a given year despite competing)</a>
531 </li>
532 </ul>
533 </p>
534
535
536 </div>
537 <gsf:script>
538 $('#dl-tech-show-more').showMore({
539 minheight: 0,
540 buttontxtmore:"show more ...",
541 buttontxtless:"... show less"
542 });
543 </gsf:script>
544
545
546 <div>
547 <h2>The Gory Details</h2>
548<!--
549 <p>
550 The resulting SPARQL query result set (JSON format
551 selected for output) is then ingested into a Greenstone
552 DL collection, and used in a variety of ways. For now
553 an (admittedly cryptic) list of technical steps that
554 were developed and/or deployed to provide the
555 functionality encountered in interacting with this site.
556
557 <ul>
558 <li>New SPARQL plugin for <i>download_from.pl</i> developed, used in GLI to enter the above query</li>
559 <li>New SPARQL <i>Document Processing</i> plugin developed</li>
560 <li>Greenstone3 Apache Jena Triple Store Extension activated</li>
561 <li>SGVizler used to display Google Visualizations such as the pie-chart above.</li>
562 <li>Metadata in document view enhanced through Greenstone Format Statements micro-data</li>
563 <li>Custom <i>interface</i> developed</li>
564 </ul>
565 </p>
566-->
567 <p>
568 Viewing the
569 <a download="collectionConfig.xml"
570 href="sites/{$site_name}/collect/{$collName}/etc/collectionConfig.xml">collection
571 configuration file</a> provides a good insight into how
572 all of these technical aspects are brought together.
573 </p>
574
575 <p>
576 Full disclosure as to how the collection all ticks is
577 provided through our Subversion repository. Topping up
578 our
579 <a href="https//trac.greenstone.org/browser/main/trunk/greenstone3">Greenstone3
580 code base</a> we have:
581
582 <ul>
583 <li>The site: <a href="https://trac.greenstone.org/browser/main/trunk/model-sites-dev/eurovision-lod">eurovision-lod</a></li>
584 <li>The interface: <a href="https://trac.greenstone.org/browser/main/trunk/model-interfaces-dev/eurovision-lod">eurovision-lod</a></li>
585 <li>The triplestore extension: <a href="https://trac.greenstone.org/browser/gs2-extensions/apache-jena/trunk/src">apache-jena</a></li>
586 </ul>
587
588 </p>
589
590 </div>
591
592<!--
593 <div id="technicaldev-turnstyle" style="margin-top: 12px;">
594 <div class="turnstyle-header" style="background-image: none; background-color: hsl(195, 47%, 35%);">
595 DL Technical Development
596 </div>
597
598 <div style="display: none; padding-left: 6px; padding-top: 6px; margin-left: 2px; margin-right: 2px; border-left: white solid 1px; border-right: white solid 1px; border-bottom: white solid 1px;">
599 <p>
600 In terms of how this collection was developed using the
601 Greenstone DL architecture, the starting point is the
602 formulation of a SPARQL query to retrieve from DBpedia
603 entries about all the entrants in the contest over the
604 years:
605
606 </p>
607
608 </div>
609 </div>
610
611 <script>
612 <xsl:text disable-output-escaping="yes">
613 $(function(){
614 transformToTurnstyleBlock("technicaldev");
615 });
616 </xsl:text>
617 </script>
618-->
619
620<!--
621 <div id="LOD-turnstyle" style="margin-top: 12px;">
622 <div class="turnstyle-header" style="background-image: none; background-color: hsl(195, 47%, 35%);">
623 Linked Open Data
624 </div>
625
626 <div style="display: none; padding-left: 6px; padding-top: 6px; margin-left: 2px; margin-right: 2px; border-left: white solid 1px; border-right: white solid 1px; border-bottom: white solid 1px;">
627
628
629 <h2>Eurovision LOD SPARQL Endpoints</h2>
630 <p>
631 The source data can be access vis the DBpedia SPARQL endpoint. The ingested,
632 data (with correction) is available through the collection's local
633 SPARQL endpoint:
634 <ul>
635 <li>
636 <a href="https://dbpedia.org/sparql/">DBpedia's SPARQL endpoint</a>
637 </li>
638 <li>
639 <a href="{$library_name}/collection/{$collName}/page/sparql">DL's (local) SPARQL endpoint</a>
640 </li>
641 </ul>
642 </p>
643
644 <h2>Eurovision LOD Errata</h2>
645 </div>
646 </div>
647
648 <script>
649 <xsl:text disable-output-escaping="yes">
650 $(function(){
651 transformToTurnstyleBlock("LOD");
652 });
653 </xsl:text>
654 </script>
655-->
656
657<!--
658 <div id="voting-turnstyle" style="margin-top: 12px;">
659 <div class="turnstyle-header" style="background-image: none; background-color: hsl(195, 47%, 35%);">
660 Voting Data
661 </div>
662
663 <div style="display: none; padding-left: 6px; padding-top: 6px; margin-left: 2px; margin-right: 2px; border-left: white solid 1px; border-right: white solid 1px; border-bottom: white solid 1px;">
664 <p>
665 The Voting data used in this collection is sourced from the Kaggle, which in turn
666 is derived from work available through Data Graver:
667 <ul>
668 <li><a href="https://www.kaggle.com/datagraver/eurovision-song-contest-scores-19752019">Kaggle Eurovision Voting dataset 1975-2019</a></li>
669 <li><a href="https://data.world/datagraver/eurovision-song-contest-scores-1975-2019">Data Graver</a></li>
670 <li><a href="https://docs.google.com/spreadsheets/d/1veXpiF54hQGP4OVuf1xjowumIe8HUOhI/edit#gid=528591420">Google Spreadsheet (internal use only)</a></li>
671
672 </ul>
673 </p>
674 </div>
675 </div>
676
677 <script>
678 <xsl:text disable-output-escaping="yes">
679 $(function(){
680 transformToTurnstyleBlock("voting");
681 });
682 </xsl:text>
683 </script>
684
685-->
686
687 </div>
688
689 </xsl:template>
690
691
692</xsl:stylesheet>
693
Note: See TracBrowser for help on using the repository browser.