1 Hogeschool West-Vlaanderen Master Industriële Wetenschappen: Elektronica-ICT Voorzitter: prof. ir. F. De Pauw Implementatie van een verrijkingsraamw...
Hogeschool West-Vlaanderen Master Industri¨ele Wetenschappen: Elektronica-ICT Voorzitter: prof. ir. F. De Pauw
Implementatie van een verrijkingsraamwerk voor het beschrijven van linked data provenance door Sander Vanden Hautte
Promotoren: drs. ir. S. Coppens, dr. S. Verstockt
Scriptie ingediend tot het behalen van de academische graad van Master in de Industri¨ ele Wetenschappen: elektronica-ICT optie ICT Academiejaar 2012–2013
VOORWOORD
i
Voorwoord Dit onderzoek situeert zich in het onderzoek omtrent het Semantisch Web: de volgende evolutie die het Web dat we elke dag gebruiken zal doormaken. Het technisch opzet ervan wordt verderop in deze scriptie uit de doeken gedaan. In elk geval is het Semantisch Web een veelbelovend concept. Het stelt, naast mensen, ook computers in staat de data op het internet te kunnen interpreteren. Het is niet zo dat een computer dus binnen enkele jaren een beter antwoord dan eenvoudigweg “42” zal kunnen verzinnen op d´e ultieme vraag over het leven, het universum en al het andere, maar wie weet stellen we binnen enkele jaren andere zeer complexe vragen aan onze smartphones: “Ik heb een zware week achter de rug op het werk, ik heb zin om mij eens goed te amuseren met mijn vrienden dit weekend. Daarbij is het al een eind geleden dat ik mijn medestudenten uit het hoger onderwijs nog gezien heb. Kan je eens tickets regelen voor een voorstelling van een komiek die ik en mijn vrienden goed vinden?”
De smartphone app (een software agent genoemd in dit geval) zal die vraag interpreteren en vervolgens het volgende doen: uitzoeken op je sociale netwerken wie je beste vrienden waren toen je studeerde aan het hoger onderwijs, hun software agents contacteren en — met de toestemming van je vrienden — hun vrije momenten in hun agenda voor het komende weekend opvragen, voorstellingen van komieken opzoeken in de regio, uitzoeken welke komiek het best past bij je eigen persoonlijke voorkeur en die van je vrienden,
nagaan in de agenda van je vrienden waar ze zullen zijn het komende weekend en welke voorstelling er het best bereikbaar is voor iedereen, de best passende voorstelling melden aan je vrienden en jezelf en toestemming vragen om door te mogen gaan, de tickets bestellen, en tenslotte de afspraak registreren in de agenda van iedereen die aanwezig kan zijn.
Dit soort voorbeelden toont aan waartoe de toekomstige versies van het Web in staat zullen zijn. Het spreekt immers alvast tot mijn verbeelding — en ik denk dat dat bij andere lezers misschien ook het geval zal zijn. Ik heb dan ook met veel interesse dit onderzoek op mij genomen. Een welbepaalde vriendin vroeg me onlangs hoe het met mijn onderzoek stond, met de bijkomende vraag “het is waarschijnlijk veel technisch prutswerk?”. Ik vond het grappig uitgedrukt, maar soms bleek het inderdaad eens niet mee te vallen. De software waarvan ik gebruik gemaakt heb is open source software en vaak ging die gepaard met weinig of verouderde documentatie. Ik heb dan ook soms eens gevloekt. Maar al bij al heb ik in de loop van het voorbije jaar geen spijt gekregen van mijn keuze voor dit onderzoek. Het einde van dit masterproefjaar nadert. Ik zou dan ook enkele mensen willen bedanken voor hun steun. Eerst en vooral denk ik daarbij aan mijn promotoren Sam Coppens en Steven Verstockt. Ik wil hen bedanken voor hun goede raad en hun bereidheid mijn deliverables zeer grondig te evalueren. Zonder hun inzet was dit werk waarschijnlijk nooit tot een goed einde gekomen. Ik wil niet alleen mijn promotoren bedanken voor het nalezen van dit werk. Mijn neef Thomas slaagde er in om op zeer korte tijd deze scriptie volledig te overlezen en een hele reeks bijzonder nuttige opmerkingen te formuleren. Ook wil ik mijn vriendin Sarah bedanken. Ik mocht mijn kopzorgen kwijt aan haar luisterend oor en vaak was het een verademing om tijdens het drukke laatste jaar eens een avond midden in de lesweek samen te kunnen doorbrengen met een aflevering van onze lievelingsseries of het binnenvallen van een Gents studentenrestaurantje. Nu het einde van dit schooljaar nadert, zal het oplossen van haar computerproblemen binnenkort weer minder lang op zich laten wachten.
Dat laatste geldt eveneens voor mijn ouders, broer en zussen thuis. Ik wil hen bovendien bedanken voor het verdragen van mijn stressmomenten en het lawaai in de nacht wanneer ik weer eens laat ging slapen. Dit jaar is helaas het laatste jaar van mijn studententijd. Een speciaal dankwoord gaat daarom uit naar mijn medestudenten in de klas. We zijn een hechte groep geworden na vier jaar samen studeren en eens over de middag zitten zeveren kan deugd doen. In het bijzonder wil ik in die context Felix bedanken — hij weet waarom. Een aantal andere mensen maakten van dit laatste jaar eentje om niet te vergeten en spelen een belangrijke rol in mijn leven. Ik wil hen daarom ook een woord van mijn dankbaarheid meedelen: mijn familie, de familie van mijn vriendin en mijn vrienden uit het middelbaar onderwijs, het harmonie-orkest en onze studentenvereniging EcLipticA. Aan al deze mensen en enkele personen die ik hier misschien vergeten heb te noemen: bedankt. Jullie zijn fantastisch.
Sander Vanden Hautte, juni 2013
Implementatie van een verrijkingsraamwerk voor het beschrijven van linked data provenance door Sander Vanden Hautte Scriptie ingediend tot het behalen van de academische graad van Master in de Industri¨ ele Wetenschappen elektronica-ICT: optie ICT Academiejaar 2012–2013 Promotoren: drs. ir. S. Coppens, dr. S. Verstockt Hogeschool West-Vlaanderen Associatie Universiteit Gent Master Industri¨ele Wetenschappen: Electronica-ICT Voorzitter: prof. ir. F. De Pauw
Samenvatting Voor het aanbieden van aanbevelingen van culturele evenementen is een goede datastructurering een vereiste. Wanneer de data gestructureerd wordt in de vorm van linked data, moet de data gelinkt worden met informatie uit andere datasets. Verrijkingsraamwerken die deze links automatisch kunnen aanleggen, genereren nog geen metadata die verantwoordt in hoeverre de aangemaakte verrijkingen mogen vertrouwd worden. Dit onderzoek richt zich op het implementeren van een verrijkingsraamwerk die dergelijke provenance metadata kan genereren.
Trefwoorden linked data, verrijking, provenance, trust, Semantisch Web
Implementatie van een verrijkingsraamwerk voor het beschrijven van linked data provenance Sander Vanden Hautte Supervisor(s): Sam Coppens, Steven Verstockt Abstract— Voor het aanbieden van aanbevelingen van culturele evenementen is een goede datastructurering een vereiste. Wanneer de data gestructureerd wordt in de vorm van linked data, moet de data gelinkt worden met informatie uit andere datasets. Verrijkingsraamwerken die deze links automatisch kunnen aanleggen, genereren nog geen metadata die verantwoordt in hoeverre de aangemaakte verrijkingen mogen vertrouwd worden. Dit onderzoek richt zich op het implementeren van een verrijkingsraamwerk dat dergelijke provenance metadata kan genereren. Keywords—verrijking, provenance, linked data, trust, Semantisch Web
I. M OTIVATIE ET vertrekpunt van dit onderzoek is de culturele sector in Vlaanderen. Veel van de grote spelers in deze sector hebben een webapplicatie die culturele evenementen aanbeveelt op maat van hun gebruikers. Dergelijke aanbevelingen worden gegenereerd op basis van contentgebaseerde algoritmes. Een vereiste voor dit soort aanbevelingsalgoritmes is dat de productdata zeer goed gestructureerd is. Traditioneel wordt hiervoor een database gebruikt. Linked data komt echter ook tegemoet aan de eisen qua datastructuur. Deze voorstellingswijze wordt op dit moment nog niet toegepast in de Vlaamse culturele evenementensector. Een van de vereisten voor linked data is dat de entiteiten in de dataset — bijvoorbeeld evenementen, plaatsen en personen — worden gelinkt met overeenkomstige vermeldingen van dezelfde entiteiten in een andere dataset.[1] Deze links worden verrijkingen genoemd. Verrijkingen kunnen worden gegenereerd op basis van de eigenschappen die de beide entiteiten (die gelinkt worden) hebben. Er bestaan vele verrijkingsraamwerken die deze links automatisch kunnen aanleggen. Er is echter geen enkel verrijkingsraamwerk dat extra informatie opslaat bij elke link over waarom die werd gegenereerd. Deze zogenaamde provenance metadata kan zijn nut bewijzen wanneer software gebruik wil maken van dataverrijkingen, maar eerst zeker wil weten of deze wel te vertrouwen zijn.
H
II. P ROBLEEMSTELLING De bedoeling van dit onderzoek was dus om een manier te vinden om provenance-informatie over verrijkingen voor te stellen. Op basis daarvan moest een verrijkingsraamwerk ge¨ımplementeerd worden dat in staat was provenance metadata te genereren bij verrijkingen. Er was eveneens een configuratie nodig die het verrijkingsraamwerk zou opdragen verrijkingen aan te brengen in een evenementendataset, zodat de daaruit voortkomende provenance metadata kon worden ge¨evalueerd.
III. M ETHODE A. Conversie van de evenementendatabase Linked data werd in de motivatie voorgesteld als een alternatief voor de klassieke databases die voor aanbevelingswebapplicaties worden gebruikt. Om te voldoen aan de principes van linked data moet data beschreven worden met behulp van het Resource Description Framework (RDF).[2] Dit is een XMLgebaseerde datarepresentatie. De meeste evenementendata wordt nog steeds in databases bijgehouden. Een dergelijke evenementendatabase moet dus worden omgezet naar een dataset met behulp van RDF. Voor deze eerste stap werd gebruik gemaakt van het D2RQ Platform[3]. Voor elk concepteel kennisdomein is een woordenschat nodig, opdat entiteiten zouden kunnen beschreven worden in RDF. De evenementen in de database werden beschreven met de ontologie LODE.[4] Er werd een configuratiebestand (een zogenaamde mapping) opgesteld dat D2RQ opdroeg hoe, op basis van onder andere LODE, de database moest worden omgezet in een RDF dataset. B. Opstelling van een verrijkingsconfiguratie Data verrijken is, zoals al in de motivatie werd uitgelegd, e´ e´ n van de linked data-principes. De volgende stap in het onderzoek was dus het uitkiezen van een verrijkingsraamwerk. Er werd gekozen voor Silk[5], omdat het goed gedocumenteerd is en e´ e´ n van de meest gebruikte verrijkingsraamwerken is in de academische wereld. Het is bovendien open source software. Het was dus mogelijk de broncode van dit raamwerk uit te breiden voor het genereren van provenance metadata, het uiteindelijke doel van dit onderzoek. Er werd een verrijkingsconfiguratie opgesteld die zou worden gebruikt om het ge¨ımplementeerde verrijkingsraamwerk te evalueren. Deze configuratie stelt Silk in om locaties waarop evenementen in Vlaanderen plaatsvinden te linken met steden en dorpen in DBpedia[6]. De evenementenlocaties werden uiteraard gehaald uit een lokale dataset, het resultaat van de RDFconversie van de evementendatabase. C. Gebruik van het SPARQL-endpoint van Virtuoso Silk maakt gebruik van zogenaamde SPARQL[7] endpoints om data op te halen uit de datasets die in de verrijkingsconfiguratie worden opgegeven, zie figuur 1. Het D2RQ-platform bevat een dergelijke SPARQL endpoint, maar typerend voor dit platform is dat de data die langs die weg verkregen wordt pas op het moment van de aanvraag vertaald wordt naar RDF vanuit de achterliggende evenementendatabase. Deze database is echter
zeer groot en de prestaties van D2RQ waren daarom niet goed genoeg. Er werd besloten om D2RQ een volledige database-omzetting te laten doen en het resultaat te dumpen in e´ e´ n groot RDFbestand. Dat bestand werd ingebracht in een triple store, een softwarecomponent die specifiek gericht is op het bewaren van RDF-data. Het softwarepakket dat hiervoor werd gebruikt, is OpenLink Virtuoso Universal Server[8]. Hiermee verliep het verrijken van de omvangrijke evenementendataset sneller en foutloos.
IV. R ESULTATEN Een eerste resultaat is de implementatie van de uitbreiding van Silk zelf. Deze implementatie werd ge¨evalueerd met de opgestelde configuratie voor het verrijken van steden. Een eerste bestand dat Silk aanmaakt na de uitvoer van het verrijkingsproces bevat de geaccepteerde verrijkingen in NQuadsformaat, zoals vereist was. Het formaat van e´ e´ n zo’n verrijking wordt hieronder weergegeven. .
Een tweede outputbestand bevat de gegenereerde provenance metadata over de verrijkingen, waarvan hieronder een klein fragment wordt weergegeven. s d : e n r i c h m e n t 2 0 1 3 −05−11 07 −05−14T r i p l e 0 a p r o v : E n t i t y ; p r o v : w a s G e n e r a t e d B y s d : e n r i c h m e n t A c t i v i t y 2 0 1 3 −05−11 07 −05−14 ; prov : q u a l i f i e d G e n e r a t i o n [ a prov : Generation ; p r o v : a c t i v i t y s d : e n r i c h m e n t A c t i v i t y 2 0 1 3 −05−11 07 −05−14 ; prov : hadRole sd : c r e a t e d E n r i c h m e n t L i n k ] ; p r o v : g e n e r a t e d A t T i m e ‘‘2013−05−11T07 : 0 5 : 3 1 ” ˆ ˆ x s d : d a t e T i m e . s d : e n r i c h m e n t A c t i v i t y 2 0 1 3 −05−11 07 −05−14 a p r o v : A c t i v i t y ; p r o v : s t a r t e d A t T i m e ‘‘2013−05−11T07 : 0 5 : 1 4 ” ˆ ˆ x s d : d a t e T i m e ; p r o v : endedAtTime ‘‘2013−05−11T07 : 0 6 : 1 3 ” ˆ ˆ x s d : d a t e T i m e ; p r o v : w a s A s s o c i a t e d W i t h s d : s i l k v 2 −5−4 ; prov : q u a l i f i e d A s s o c i a t i o n [ a prov : A s s o c i a t i o n ; prov : agent s d : s i l k v 2 −5−4 ; prov : hadRole sd : enrichmentFramework ; p r o v : h a d P l a n s d : e n r i c h m e n t 2 0 1 3 −05−11 07 −05−14C o n f i g u r a t i o n ] ;
V. C ONCLUSIE
Fig. 1. Algemeen overzicht van de aaneenschakeling van componenten tot een architectuur voor de generatie van verrijkingen en provenance metadata.
De uitvoer van de aanpassing van het verrijkingsraamwerk komt overeen met de beoogde beschrijving zoals die in het datamodel voorzien was. De implementatie van het verrijkingsraamwerk genereert met succes provenance metadata. Gebruikers en programma’s kunnen zich er op baseren om besluiten over de betrouwbaarheid van verrijkingen te kunnen nemen. R EFERENCES
D. N-Quads Silk schrijft verrijkingen weg naar bestanden in een formaat genaamd N-Triples[9]. Dergelijke triples kunnen niet geannoteerd worden met provenance metadata, gezien ze geen identificatie meegekregen hebben. Daarom werd Silk aangepast om verrijkingen in het formaat N-Quads[10] weg te schrijven. Elke verrijking krijgt in dit formaat een identificatie, waardoor de provenance metadata door Silk kan beschreven worden als ‘over de verrijking met identificatie X weet ik het volgende: (...)’. E. Opstelling van een model voor het beschrijven van provenance metadata van verrijkingen De provenance metadata die de uitbreiding van Silk moet genereren, wordt beschreven in RDF, zodat ze samen met de verrijkingen in een triple store kan worden geladen. Provenance werd met de ontologie PROV-O[11] beschreven. Er werd op basis van deze ontologie een datamodel opgezet dat Silk in staat stelt provenance metadata over verrijkingen aan te maken. F. Uitbreiding van Silk De implementatie van Silk werd aangepast en uitgebreid om verrijkingen e´ n provenance metadata te genereren.
[1]
Tim Berners-Lee, “Linked Data — Design Issues,” http://www.w3. org/DesignIssues/LinkedData.html, 2006. [2] Frank Manola, Eric Miller, and Brian McBride, “RDF Primer,” Tech. Rep., W3C, 2004, http://www.w3.org/TR/rdf-primer/. [3] Christian Bizer and Andy Seaborne, “D2RQ — Treating Non-RDF Databases as Virtual RDF Graphs,” 2004. [4] Ryan Shaw, Rapha¨el Troncy, and Lynda Hardman, LODE: Linking Open Descriptions of Events, pp. 153–167, Springer Berlin Heidelberg, 2009. [5] Julius Volz, Christian Bizer, Martin Gaedke, and Georgi Kobilarov, “Silk – A Link Discovery Framework for the Web of Data,” in Proceedings of the WWW2009 Workshop on Linked Data on the Web, 2009. [6] Christian Bizer, Jens Lehmann, Georgi Kobilarov, S¨oren Auer, Christian Becker, Richard Cyganiak, and Sebastian Hellmann, “DBpedia — A crystallization point for the Web of Data,” Web Semantics: Science, Services and Agents on the World Wide Web, vol. 7, no. 3, pp. 154–165, 2009. [7] Eric Prud’Hommeaux and Andy Seaborne, “SPARQL Query Language for RDF,” Tech. Rep., W3C, 2008, http://www.w3.org/TR/ rdf-sparql-query/. [8] Orri Erling, “Virtuoso, a Hybrid RDBMS/Graph Column Store,” Bulletin of the Technical Committee on Data Engineering, vol. 35, no. 1, pp. 3–8, 2012. [9] Jan Grant, Dave Beckett, and Brian McBride, “RDF Test Cases,” Tech. Rep., W3C, 2004, http://www.w3.org/TR/rdf-testcases/. [10] Gavin Carothers, “N-quads — A line-based syntax for RDF datasets,” Tech. Rep., W3C, 2013, http://www.w3.org/TR/n-quads/. [11] Timothy Lebo, Satya Sahoo, Deborah McGuinness, Khalid Belhajjame, James Cheney, David Corsar, Daniel Garijo, Stian Soiland-Reyes, Stephan Zednik, and Jun Zhao, “PROV-O: The PROV Ontology,” Tech. Rep., W3C, 2013, http://www.w3.org/TR/prov-o/.
Implementation of a linked data enrichment framework that generates provenance metadata Sander Vanden Hautte Supervisor(s): Sam Coppens, Steven Verstockt Abstract— Engines for social event recommendation heavily rely upon well structured data collections. Data sets that were created according to the linked data principles must be linked with other data sets. Enrichment frameworks automate this task, but none of these frameworks are able to produce metadata that informs users and applications on the Web about how the enrichments were constructed. This research aims to implement an enrichment framework that is able to produce such provenance metadata about enrichments, providing a basis for enrichment quality assessments and trustworthiness judgements on the Web. Keywords—enrichment, provenance, linked data, trust, Semantic Web
I. I NTRODUCTION OST of the big companies in the Flemish cultural sector offer web applications to their users that produce recommendations of social events, according to the user’s preferences. These recommendations are made by content based algorithms.
M
This kind of recommendation algorithms require well structured product data. Most of the time databases are used for this purpose. The Linked data publishing mindset enables developers to meet the data structure requirements as well. Linked data has not yet been applied in the Flemish cultural event sector. Resources in a linked data set — for instance events, locations and performers — must be linked to occurrences of the same entities in other datasets.[1] These relations are called enrichments. Enrichments can be generated when resources have equal properties. Many enrichment frameworks can produce these links automatically, but none of the existing frameworks is able to generate information about why each link has been approved to be a valid enrichment. This provenance metadata can be very useful for humans and software agents on the Web that intend to use enrichment data. Provenance metadata would allow these agents to assess the quality of enrichment data. This way the software can decide whether it will trust the enrichments to be valid before it makes use of those data. II. R ESEARCH GOALS The first aim of this research was to find a way to represent provenance information about enrichments. Using this representation model, an implementation of an enrichment framework was necessary to produce provenance metadata together with its corresponding enrichment data. This research paper also presents a configuration of the enrichment framework to enrich a given events data set, in order to verify the enrichment and provenance results of the framework implementation.
III. A PPROACH A. Conversion of the events database As mentioned in the introduction, linked data was chosen as an alternative to the traditional database solutions used for web applications. In order to comply with the linked data principles[1], data must be described using the Resource Description Framework (RDF).[2] This is an XML-based data representation method. Most of the event data on the Web is still stored in databases. Given such a database, the data in it must be converted using RDF. The D2RQ Platform[3] was used to automate this conversion step. Each conceptual knowledge domain has its own vocabulary. In order to describe the properties of resources in a data set as RDF, a vocabulary representation must be used. The LODE ontology[4] was used to map all event properties in the given database to an RDF data set. This mapping has been written to a D2RQ configuration file as a setup file for database conversions. B. Configuring the enrichment framework Describing resources according to the RDF standard is one of the linked data principles. Another very important rule is to enrich data by linking resources of one data set to corresponding resources in another data set. The next step in this research was to pick an enrichment framework to automate this linking process. Silk[5] was chosen, because it is the most used enrichment framework for academic purposes and because it is well documented and open source software. This way, the code of this framework could be extended to support the production of provenance metadata, the main purpose of this research. Silk has been configured to enrich event locations in the local data set that was created with D2RQ. The configuration orders Silk to link the location resources with records of cities and villages in the DBpedia[6] dataset. The purpose of this enrichment configuration was to evaluate the results that Silk generated after its implementation was modified. C. Usage of the Virtuoso SPARQL endpoint Silk queries SPARQL[7] endpoints to fetch data that must be enriched, as shown on figure 1. The D2RQ Platform has a built-in SPARQL endpoint, but it translates database records to RDF at runtime when it receives a SPARQL query. The given event database was rather large and as a result the performance of D2RQ was not sufficient for Silk to work with. This problem was tackled by making the D2RQ Platform convert the whole database at once in a single RDF file. This data
dump has been inserted in a triple store, a software component that is specifically made for RDF data storage with high read/write performance. The software package that has been used to accomplish this task, is OpenLink Virtuoso Universal Server[8]. This combination of Virtuoso and Silk ensured that the enrichment process executed errorless and faster.
IV. R ESULTS One accomplishment is the extension of the Silk enrichment framework. This implementation has been configured to enrich a local event dataset. This configuration was made to evaluate the output that the framework generated. One of the output files contains the accepted enrichments in N-Quads format, as was required. One such an enrichment is shown below. .
A second output file that contains the provenance metadata that Silk produced about the enrichments. A fragment of the metadata is shown below. s d : e n r i c h m e n t 2 0 1 3 −05−11 07 −05−14T r i p l e 0 a p r o v : E n t i t y ; p r o v : w a s G e n e r a t e d B y s d : e n r i c h m e n t A c t i v i t y 2 0 1 3 −05−11 07 −05−14 ; prov : q u a l i f i e d G e n e r a t i o n [ a prov : Generation ; p r o v : a c t i v i t y s d : e n r i c h m e n t A c t i v i t y 2 0 1 3 −05−11 07 −05−14 ; prov : hadRole sd : c r e a t e d E n r i c h m e n t L i n k ] ; p r o v : g e n e r a t e d A t T i m e ‘‘2013−05−11T07 : 0 5 : 3 1 ” ˆ ˆ x s d : d a t e T i m e . s d : e n r i c h m e n t A c t i v i t y 2 0 1 3 −05−11 07 −05−14 a p r o v : A c t i v i t y ; p r o v : s t a r t e d A t T i m e ‘‘2013−05−11T07 : 0 5 : 1 4 ” ˆ ˆ x s d : d a t e T i m e ; p r o v : endedAtTime ‘‘2013−05−11T07 : 0 6 : 1 3 ” ˆ ˆ x s d : d a t e T i m e ; p r o v : w a s A s s o c i a t e d W i t h s d : s i l k v 2 −5−4 ; prov : q u a l i f i e d A s s o c i a t i o n [ a prov : A s s o c i a t i o n ; prov : agent s d : s i l k v 2 −5−4 ; prov : hadRole sd : enrichmentFramework ; p r o v : h a d P l a n s d : e n r i c h m e n t 2 0 1 3 −05−11 07 −05−14C o n f i g u r a t i o n ] ;
V. C ONCLUSION Fig. 1. An overview of the approach taken to implement an enrichment framework, in order to produce enrichment data and provenance metadata.
D. N-Quads Silk writes enrichments to output files in a format called NTriples[9]. This kind of triples cannot be annotated with provenance metadata, because the triple itself has no identification. The implementation of Silk has been adapted to write enrichments in N-Quads format[10]: each enrichment is assigned a graph URI label that uniquely identifies the enrichment triple. This enables Silk to provide provenance information as follows: “This is the metadata of the enrichment with identification URI X: (...)”. E. Creating a model for provenance descriptions about enrichments Provenance metadata about enrichments should be described as RDF statements, so that it can be loaded in the enrichment triple store. For this purpose, a model has been made, so that Silk knows how to represent provenance information in RDF when writing it to output files. The model was based on the PROV-O ontology[11]. F. Implementing the enrichment framework extension The source code of Silk has been adapted and extended to support production of provenance metadata.
The output of the implemented extension of the enrichment framework demonstrates that the implementation successfully generates provenance metadata about linked data enrichments. The provenance metadata is produced in RDF, according to the model that has been described earlier. Users and applications on the Web can use this provenance metadata to assess the quality of enrichments, in order to judge their trustworthiness. R EFERENCES [1]
Tim Berners-Lee, “Linked Data — Design Issues,” http://www.w3. org/DesignIssues/LinkedData.html, 2006. [2] Frank Manola, Eric Miller, and Brian McBride, “RDF Primer,” Tech. Rep., W3C, 2004, http://www.w3.org/TR/rdf-primer/. [3] Christian Bizer and Andy Seaborne, “D2RQ — Treating Non-RDF Databases as Virtual RDF Graphs,” 2004. [4] Ryan Shaw, Rapha¨el Troncy, and Lynda Hardman, LODE: Linking Open Descriptions of Events, pp. 153–167, Springer Berlin Heidelberg, 2009. [5] Julius Volz, Christian Bizer, Martin Gaedke, and Georgi Kobilarov, “Silk – A Link Discovery Framework for the Web of Data,” in Proceedings of the WWW2009 Workshop on Linked Data on the Web, 2009. [6] Christian Bizer, Jens Lehmann, Georgi Kobilarov, S¨oren Auer, Christian Becker, Richard Cyganiak, and Sebastian Hellmann, “DBpedia — A crystallization point for the Web of Data,” Web Semantics: Science, Services and Agents on the World Wide Web, vol. 7, no. 3, pp. 154–165, 2009. [7] Eric Prud’Hommeaux and Andy Seaborne, “SPARQL Query Language for RDF,” Tech. Rep., W3C, 2008, http://www.w3.org/TR/ rdf-sparql-query/. [8] Orri Erling, “Virtuoso, a Hybrid RDBMS/Graph Column Store,” Bulletin of the Technical Committee on Data Engineering, vol. 35, no. 1, pp. 3–8, 2012. [9] Jan Grant, Dave Beckett, and Brian McBride, “RDF Test Cases,” Tech. Rep., W3C, 2004, http://www.w3.org/TR/rdf-testcases/. [10] Gavin Carothers, “N-quads — A line-based syntax for RDF datasets,” Tech. Rep., W3C, 2013, http://www.w3.org/TR/n-quads/. [11] Timothy Lebo, Satya Sahoo, Deborah McGuinness, Khalid Belhajjame, James Cheney, David Corsar, Daniel Garijo, Stian Soiland-Reyes, Stephan Zednik, and Jun Zhao, “PROV-O: The PROV Ontology,” Tech. Rep., W3C, 2013, http://www.w3.org/TR/prov-o/.
A Appendix: Gedetailleerde resultaten A.1 Structuur van de gegeven evenementendatabase . . . . . . . . . . . . . . . A.2 Mapping voor de omzetting van de database met D2RQ . . . . . . . . . . . A.3 Verrijkingen als resultaat van de uitvoer van Silk v´oo´r softwarewijzigingen A.4 Model voor het beschrijven van provenance over verrijkingen . . . . . . . . A.5 Configuratiebestand voor de provenance-uitbreiding van Silk . . . . . . . . A.6 Uitbreiding van de taken van Silk: GenerateLinksTask . . . . . . . . . . . A.7 ProvGenerator: de kernklasse van de provenance-uitbreiding van Silk . . .
53 55 57 62 62 66 69 71 72 74
89 89 91 103 104 106 112 117
INHOUDSOPGAVE
xi
Bibliografie
125
Lijst van figuren
130
Lijst van tabellen
133
GEBRUIKTE AFKORTINGEN
Gebruikte afkortingen API
Application Programmable Interface
ASP
Active Server Pages
ASP.NET
Active Server Pages binnen het .NET-framework
CB
Content Based algoritmes
CF
Collaborative Filteringprincipe
CIA
Central Intelligence Agency
CMS
Content Management System
CURIE
Compact URI
ERD
Entity Relationship Diagram
HTML
HyperText Markup Language
HTTP
HyperText Transfer Protocol
IMDb
(de) Internet Movie Database
ISBN
International Standard Book Number
JSON
JavaScript Object Notation
JSP
Java Server Pages
JVM
Java Virtual Machine
LOD
Linked Open Data
LODE
Linking Open Descriptions of Events
MRI
Magnetic resonance imaging
N3
Notation3
OWL
Web Ontology Language
xii
GEBRUIKTE AFKORTINGEN PC
Personal Computer
PHP
Hypertext Preprocessor
POM
Project Object Model
PROV-O
Provenance Ontology
RDB2RDF
Relational database to RDF
RDF
Resource Description Framework
RDFa
Resource Description Framework in attributes
RDFS
RDF Schema
REST
Representational state transfer
RSS
Really Simple Syndication
Silk-LSL
Silk Link Specification Language
SQL
Structured Query Language
Turtle
Terse RDF Triple Language
URI
Uniform Resource Identifier
URL
Uniform Resource Locator
W3C
World Wide Web Consortium
XML
eXtensible Markup Language
xiii
INLEIDING: AANBEVELINGEN VAN CULTURELE EVENEMENTEN
1
Hoofdstuk 1 Inleiding: aanbevelingen van culturele evenementen De uitvinding en evolutie van het internet heeft de manier waarop informatie gedeeld, verzameld en verwerkt kan worden drastisch veranderd. Zo ook de manier waarop informatie over culturele evenementen verspreid en bekeken kan worden. Culturele centra en organisatoren van evenementen gebruiken het internet reeds op enorme schaal voor hun marketing. Het heeft oudere technieken (zoals flyeren, advertenties en stadsreclame) niet verdrongen, maar is uitgegroeid tot een in vele gevallen supplementair of zelfs beter communicatiemiddel. De zogeheten sandwichmen van weleer bijvoorbeeld — personen die een reclamebord aan voor- en achterzijde van hun lichaam dragen — zijn niet vaak meer te zien in het straatbeeld. De massa betogers op het Tahrirplein in Ca¨ıro zou daarentegen waarschijnlijk nooit zo groot geweest zijn als het internet en de sociale media er niet waren geweest. Het internet is uitgegroeid tot een belangrijk communicatiemiddel dat, onder andere, organisatoren van evenementen toelaat om een vroeger vaak onbereikbaar doelpubliek een overzicht te geven van het enorme en gevarieerde evenementenaanbod.[29] Tegenwoordig plaatst zo goed als iedereen wel eens informatie over een bepaald evenement online, of geeft men aan dat men aan een evenement zal deelnemen, op Facebook1 bijvoorbeeld. Het overaanbod van evementen en de beperkte vrije tijd van de mensen bemoeilijkt het selectieproces. Vele websites geven daarom evenementaanbevelingen weer aan hun bezoekers, gebaseerd op algoritmes die proberen na te gaan welke evenementen een bepaalde bezoeker meer zal bevallen. 1
http://www.facebook.com
1.1 Collaborative Filtering
1.1
2
Collaborative Filtering
De meest gebruikte soort algoritmes voor het aanbieden van productaanbevelingen werken volgens het Collaborative Filteringprincipe.[15] Gebruikers kunnen de waarde van een bepaald product inschatten naar hun eigen mening door het bijvoorbeeld een aantal sterren toe te kennen, zoals op Amazon2 of op IMDb3 , zie figuur 1.1. Als een websitebezoeker dan op zoek gaat naar een bepaald type product, dan worden de meest waardevol geachte producten bovenaan op de pagina weergegeven.
Figuur 1.1: Collaborative Filtering toegepast in de website van de filmdatabase IMDb
Bij evenementen werkt dit type aanbevelingsalgoritme niet, tenzij ze meermaals plaatsvinden.[18] De reden daarvoor is dat de bezoekers van een evenement pas na afloop hun appreciatie of ongenoegen kunnen meedelen. Deze feedback heeft geen zin meer voor het aanbevelen van het evenement aan andere gebruikers: het evenement is al afgelopen. 2 3
http://www.amazon.com http://www.imdb.com
1.2 Contentgebaseerde algoritmes
1.2
3
Contentgebaseerde algoritmes
Om toch aanbevelingen van evenementen te kunnen generen, worden contentgebaseerde algoritmes gebruikt.[15, 18] Deze combineren de meta-informatie over het evenement (bijvoorbeeld dat het een toneelvoorstelling is in Gent) met het profiel en de voorkeuren van de gebruiker in het verleden. Figuur 1.2 illustreert dit idee. Het toneelstuk van daarnet zal dan enkel aanbevolen worden aan gebruikers die eerder al enkele toneelstukken bezochten en in de buurt van de voorstelling wonen. Zo kan dus een beter publiek worden aangesproken.
Figuur 1.2: Uit in Vlaanderen, een Vlaamse evenementendatabank, past contentgebaseerde algoritmes toe om aanbevelingen van evenmenten te genereren.
Contentgebaseerde algoritmes maken dus gebruik van veel data. Hoe meer bronnen er worden aangesproken, hoe rijker de informatie over het evenement wordt. Voor vele gebruikers is het een toegevoegde waarde om niet alleen te zien wie op het eerstvolgende concert in de Ancienne Belgique speelt, op welke dag dat is en hoe duur de tickets zijn; maar ook
1.3 Problemen met datastructurering
4
waar de Ancienne Belgique precies gelegen is in Brussel, hoe men er kan geraken en welke hotels en restaurants er in de buurt zijn.
1.3
Problemen met datastructurering
Voor contentgebaseerde algoritmes is een goede structuur in de te gebruiken data van cruciaal belang. En het is net hier dat het schoentje knelt. De data op het ‘traditionele’ internet wordt onvoldoende gestructureerd voorgesteld naar de buitenwereld (gebruikers en andere websites) toe, wat voor problemen zorgt bij het ophalen van informatie.[35] Enerzijds wordt het attractief weergeven van informatie bemoeilijkt, bijvoorbeeld wanneer die moet weergegeven worden tussen de resultaten van een zoekmachine, of een website die de data van een andere website gebruikt. Anderzijds maakt een gebrek aan datastructurering het moeilijker om te zoeken naar informatie — zowel voor zoekmachines als mensen tijdens het surfen op het internet. Dit is niet bevorderlijk voor het overbrengen van evenementinformatie. Een oorzaak van deze problemen is dat de hoeveelheid data op het internet enorm toegenomen is de laatste jaren (en blijft toenemen). Er ontstaat een ware ‘stortvloed’ van data.[26] Bedrijven en overheden plaatsen bepaalde data online, communities en sociale netwerken op het internet maken het iedereen mogelijk ‘content te genereren’, en met de opkomst van het Internet of Things kan iedereen die dat wil ook met een gsm, smartphone en/of tablet met het internet verbinden. Meer en meer andere apparaten worden ook met het internet verbonden: tv’s, decoders voor digitale televisie, enzovoort. Al deze apparaten produceren en consumeren data op het internet. De wirwar van data die ontstaat bemoeilijkt het overbrengen van informatie over evenementen ook. Dat dit een gevoel is dat echt onder de internetgebruikers leeft, kan aangetoond worden met bijvoorbeeld ´e´en van de besluiten uit de feedback van de testgebruikers over een recent aanbevelingsplatform voor evenementen, CUPID. De testgebruikers bleken het de moeite waard te vinden om de tijd te nemen om een nieuw profiel aan te maken, zolang ze daardoor goede en gerichte aanbevelingen kunnen krijgen en zelf gemakkelijk filters kunnen instellen, in plaats van te moeten graven in een overaanbod van evenementinformatie, die vaak totaal niet op hen is afgestemd.[15] Met de komst en de evolutie van het internet heeft de manier waarop evenementinformatie wordt aangeboden dus een verandering doorgemaakt. Men stuit tegenwoordig op
1.3 Problemen met datastructurering
5
problemen met informatiepresentatie, waardoor evenementinformatie vaak niet aantrekkelijk voorgesteld en eenvoudig opgezocht kan worden. Het belang van evenementen is groot, daar kan de gekte omtrent de oudejaarsfeestjes of de snel uitverkopende festivals bijvoorbeeld bewijs voor zijn.
1.3.1
Op weg naar een verbeterde datastructurering
Om gerichte evenementaanbevelingen naar potenti¨ele klanten te verbeteren, zou het vinden van een oplossing voor de genoemde problemen een ware vooruitgang betekenen voor zowel organisatoren als bezoekers van evenementen. De visie van het semantisch web, dat informatie beter structureert en het uitwisselen van data vereenvoudigt, moet die oplossing brengen. In het volgende hoofdstuk, de literatuurstudie, wordt de visie van het Semantisch Web in detail beschreven. Dit onderzoek vertrekt immers vanuit het idee om af te stappen van het bijhouden van evenementendata in een database. De evenementendata wordt gepubliceerd zoals de linked data-principes voorschrijven. Om te voldoen aan deze principes moet de evenementendata verrijkt worden met behulp van een verrijkingsraamwerk. Geen enkel verrijkingsraamwerk biedt extra informatie aan over de manier waarop de data verrijkt werd. Nochtans kan deze informatie een groot belang spelen voor programma’s die verrijkingen willen gebruiken: zo kunnen ze nagaan hoe betrouwbaar elke verrijking is. Dit is in een notendop de onderzoeksvraag die wordt behandeld in deze scriptie. Om dit inleidend hoofdstuk niet te lijvig te laten worden, volgt een uitgebreide verduidelijking van elk nieuw concept in het volgende hoofdstuk. Voor elk van deze nieuwe concepten was er immers een stuk literatuurstudie vereist.
LITERATUURSTUDIE
6
Hoofdstuk 2 Literatuurstudie De visie van het semantisch web bestaat al sinds de uitvinding van het World Wide Web meer dan twintig jaar geleden.[5, 7] Toch is het pas de laatste jaren dat deze visie een realiteit aan het worden is. Om te begrijpen waarom, moet de evolutie die het Web heeft doorgemaakt eens van naderbij worden bekeken.
2.1
Web 1.0: het informatieweb
Web 1.0 is de benaming van de eerste fase van ingebruikname van het World Wide Web, het idee van een informatiesysteem dat Sir Tim Berners-Lee voor het eerst voorstelde in 1989[5]. Berners-Lee bouwde verder op het concept van het internet als een netwerk van gelinkte computers dat al langer bestond en bouwde er een informatiesysteem bovenop. Het was gebaseerd op het concept van hypertext: webpagina’s konden informatie weergeven en de lezer via hyperlinks toelaten naar een andere webpagina verder te surfen. Na de ontwikkeling van het protocol HTTP (HyperText Transfer Protocol ) voor de overdracht van webpagina’s en HTML (HyperText Markup Language) als opmaaktaal voor die pagina’s, had Berners-Lee een systeem opgezet met veel potentieel. Het was initieel bedoeld als een informatiesysteem om te gebruiken in het onderzoekscentrum CERN, maar bleek al snel ook daarbuiten nuttig te zijn. Vele organisaties en bedrijven wilden websites maken: een collectie van webpagina’s voor zichzelf en de buitenwereld. Het aantal websites nam snel toe. Deze eerste fase van het Web, achteraf ‘Web 1.0’ gedoopt, had het volgende belangrijke kenmerk: webpagina’s werden door veel mensen gelezen, maar door relatief weinig mensen geschreven, zie figuur 2.1. Al snel ontstonden ook web directories en zoekmachines om de vele webpagina’s in kaart te brengen.[40] In elk geval legde Web 1.0 een stevige basis voor
2.2 Web 2.0: het sociale web
7
het doen van zaken op afstand, een nieuwe manier van communicatie (e-mail werd in deze periode uitgevonden) en het documenteren van kennis (knowledge management).[1]
Figuur 2.1: Web 1.0: weinig mensen publiceerden webpagina’s, verhoudingsgewijs waren er meer lezers. Bemerk dus dat de termen ‘publisher’ en ‘consumer’ in dit geval wijzen op mensen die respectievelijk een webpagina aanmaken of lezen.
2.2
Web 2.0: het sociale web
In een tweede fase werd het web een stuk dynamischer: het liet alle gebruikers toe, indien de website er was op voorzien, z´elf informatie (content) online te plaatsen[40], zie figuur 2.2 Het web veranderde in een zogeheten read-write web en de mogelijkheid om zelf content te genereren transformeerde het web in een socialere versie van het Web 1.0. Er ontstonden communities: groeperingen van mensen op het web die samenkomen om iets op te bouwen, bijvoorbeeld Wikipedia1 en YouTube2 ; of om elkaar te helpen, bijvoorbeeld StackOverflow3 , een website waarop programmeurs hun problemen meedelen aan de gemeenschap en sneller oplossingen kunnen vinden. Ook sociale netwerken als Facebook4 en Twitter5 ontstonden. 1
Figuur 2.2: Web 2.0: een sociaal platform waarop iedereen content publiceert en consumeert.
Nieuwe manieren om met informatie op het internet om te gaan werden aan de lopende band uitgewerkt: mashups (het samenbrengen van informatie afkomstig van verschillende bronnen), web syndication met RSS feeds om altijd op de hoogte te blijven van de laatste nieuwtjes, browsergebaseerde applicaties, cloud computing... Vele idee¨en volgden elkaar in slechts enkele jaren op, het aantal websites en webgebruikers barstte uit zijn voegen. Dit was de ontstaansreden voor vele ongemakken.
2.2.1
Problemen omtrent data-uitwisseling in Web 2.0
Web 1.0 en Web 2.0 zijn in feite een web van documenten. Websites in Web 2.0 wilden steeds meer gebruik maken van de informatie op andere websites. Het idee was dus om de achterliggende data uit hun documenten te kunnen halen. Dat ligt echter niet voor de hand. Daar zijn verschillende redenen voor.[26] Vandaag de dag wordt data meestal uit databases gehaald om ze in webpagina’s te plaatsen. Databases zijn in feite niets meer dan een verzameling tabellen die gegevens bevatten over een bepaald concept, bijvoorbeeld de muziekinstrumenten die verkocht worden in een bepaalde winkel. Wanneer een bepaalde pagina wordt opgevraagd, bijvoorbeeld de pianopagina, dan draagt een bepaald script (een programma) de webserver (de machine die de pagina levert aan de bezoeker) op informatie over alle beschikbare piano’s op te halen uit de database aan de hand van een zogenoemde query (een data-aanvraag) en die data in te voegen in de webpagina. Figuur 2.3 illustreert dit proces.
2.2 Web 2.0: het sociale web
9
Figuur 2.3: Werking van een Web 2.0-applicatie
Een eerste oorzaak van de gebrekkige behandelbaarheid van data ligt dus in de manier waarop de 3 tier client-serverarchitectuur tot op heden meestal werd aangepakt[35]. Het is nochtans de meest gebruikte architectuur op het internet voor het weergeven van websites: de database op de server houdt zich bezig met het bijhouden van de data (de data tier), een andere component is verantwoordelijk voor de logica (het opvangen van de wensen van de gebruiker en het ophalen van de overeenstemmende data) en er is ook een weergavecomponent. De gebruiker krijgt op deze manier alle informatie te zien over alle piano’s die beschikbaar zijn in de winkel. Het probleem is dat de originele informatie uit de database niet meer zo eenvoudig te vinden is: de tabel muziekinstrumenten kon bijvoorbeeld een kolom prijs bevatten, maar op de webpagina wordt de prijs niet meer specifiek met dat label gepresenteerd in de opmaaktaal. HTML, de opmaaktaal voor documenten op het web, wordt dus gebruikt voor het opmaken van een document, niet zozeer voor het stuctureren van de data die erin vervat zit. Op het web ontbreekt dus een taal om de data op zich gestructureerd over te brengen. Zoals al werd gezegd in de inleiding van deze scriptie, is het gevolg van het ontbreken van een gestructureerde datavoorstelling dat zoekmachines en websites moeite hebben met het attractief weergeven van en het vinden van relevante zoekresultaten uit de informatie op andere websites.[35, 1] Dit zorgt ervoor dat een deel van het publiek dat zich kan aangetrokken voelen tot een website van een evenementenorganisator uiteindelijk nooit op die website belandt. Een deel van de potenti¨ele klanten wordt dus niet bereikt. Soms biedt een website toch mogelijkheden aan om op een iets handigere manier hun data op te vragen: met een Web API (voluit een Web Application Programmable Interface) of
2.2 Web 2.0: het sociale web
10
een web service. Het jammere van de zaak is dat men bij het opvragen van data via die weg dan alweer aan strikte afspraken moet voldoen. Wanneer een website zijn data wil ophalen bij verschillende andere websites moeten opnieuw telkens weer andere afspraken nageleefd worden. De architectuur van twee databases kan ook compleet verschillend zijn, al houden ze misschien dezelfde soort data bij. De structuur van relationele databanken wordt immers bepaald door een verzameling tabellen die aan elkaar gelinkt zijn. Zo kan het aantal gebruikte tabellen en kolommen verschillen, de namen ervan kunnen verschillen, zelfs de data in de databasevelden kan anders benoemd worden, ook al gaat het uiteindelijk over eenzelfde concept. De tabelstructuur in relationele databanken kan dus zeer uiteenlopend zijn. Om data uit een welbepaalde database in te brengen in een andere database, moeten dus vaak tabelstructuren worden aangepast. De moeilijkheden bij data-uitwisseling hebben ertoe geleid dat het traditionele internet bestaat uit ‘data-eilanden’.[26] Een derde probleem is dat het web zich heeft ontwikkeld als een enorme verzameling webpagina’s waarin vaak het bos door de bomen niet meer is te zien. Maar al te vaak is het zo dat een gebruiker vele webpagina’s moet overlopen vooraleer hij het antwoord vindt op een bepaalde vraag.[1] Voorbeelden van zo’n vragen zijn: ‘Hoe lang is de Boeing 747?’, ‘Wat is de familiestamboom van president Obama?’ en ‘Wat is de beste plaats voor de volgende vestiging van mijn bedrijf?’. Vaak begint de zoektocht naar het antwoord op veel van die vragen in een zoekmachine. Het ware veel handiger als de zoekmachine die vraag kon interpreteren. Het antwoord zou dan ook beter zijn, aangezien er dan niet alleen sleutelwoorden maar ook context wordt verschaft aan de zoekmachine. Naast alle problemen met groeiende bergen data en hun voorstellingswijze in HTML, wordt ook semantiek belangrijk. Bijvoorbeeld: in de ene database kan in een veld ene ‘Peter Jackson’ vermeld staan, in een andere ook. In de eerste wordt de beroemde regisseur bedoeld van onder andere de Lord of the Rings-trilogie en de Hobbit-trilogie, in de andere database doelt men op een gelijknamige tafeltennisspeler — nochtans ook uit Nieuw Zeeland afkomstig. Niets uit de database kan het onderscheid duidelijk maken, wat gegarandeerd voor problemen zorgt bij het uitwisselen of samenbrengen van delen van de twee databases. Het omgekeerde is ook mogelijk: in de ene database kan een bepaald architectenbureau genoteerd staan als ‘Boris Denul Architectenbureau NV’ en in een andere ‘Boris Denul Architecten’. Beide bedrijven zijn dezelfde, maar dat kan niet automatisch afgeleid worden. Met andere woorden: de traditionele manieren om gegevens over concepten voor te stellen, zijn niet in
2.3 Web 3.0: het Semantisch Web
11
staat de betekenis ervan mee te dragen.[6, 1] Nochtans werd al duidelijk gemaakt dat het Web er op vooruit zou gaan als data niet alleen door mensen kon worden ge¨ınterpreteerd, maar ook door computerprogramma’s — zoekmachines zijn slechts een voorbeeld. Er zijn wel degelijk standaarden voor datatransport die data b´eter voorstellen dan HTML dat doet, XML6 en JSON7 bijvoorbeeld. Maar ook deze formaten konden niet overweg met semantiek. Samengevat werd Web 2.0 een socialere plek op het internet dan Web 1.0, maar rezen er problemen op in verband met data-uitwisseling en -representatie. Zowel mensen als computerprogramma’s botsten op deze problemen en het werd hoog tijd dat data ook leesbaarder werd voor computers. Het Web was immers tot dan toe meer uitgegroeid als een medium voor informatie ontworpen voor mensen, terwijl het originele ontwerp ook voorzag in het uitwisselen van informatie op een betekenisvolle manier tussen computers onderling.[6, 7] Daarom werd Web 3.0 voorgesteld om de genoemde problemen de wereld uit te helpen.
2.3
Web 3.0: het Semantisch Web
Bij het opzet van Web 3.0 komt heel wat kijken. De belangrijke onderwerpen worden hieronder stuk voor stuk wat meer verduidelijkt.
2.3.1
Definitie en algemene beschrijving van het Semantisch Web
Het Semantisch Web betekent de overgang van een Web dat gecentreerd is rond documenten, naar een Web dat zich focust op data. Het wordt zo een Web of Data, waarin de achterliggende data van de webpagina’s als betekenisvolle inhoud gepresenteerd wordt en zowel leesbaar is voor mensen als voor computers.[12] Figuur 2.4 illustreert dit idee. Het woord “semantisch” in “Semantisch Web” duidt op het betekenis voorstellen van data. Het World Wide Web Consortium — oftewel W3C — is de wereldleidende organisatie op het vlak van standaarden voor het web. Het W3C formuleert de visie van het semantische web als volgt: 6 7
Figuur 2.4: Web 3.0: semantische technologie laat ook machines (software agents) toe data te consumeren.
“Het semantische web levert een gemeenschappelijk framework dat toelaat data te delen en te hergebruiken tussen applicaties, bedrijven en communities onderling. Het is een gezamelijke inspanning die geleid wordt door het W3C en is gebseerd op het Resource Description Framework (RDF)”.8
RDF is het gemeenschappelijke raamwerk waarover de definitie spreekt en vormt de basis voor het Semantisch Web. Het wordt verderop verduidelijkt. Het Semantisch Web is uiteraard meer dan louter een definitie en dat wordt hieronder verduidelijkt. Het Semantisch Web — of Web 3.0 — is niet een nieuw, volledig op zichzelf staand Web. Het steunt, net als Web 2.0 op Web 1.0 steunde, op de vorige architectuur.[6, 12] De 3-tier architectuur wordt behouden, enkel wordt de representatie gewijzigd van de data op het web, zodat betekenis kan worden gegeven aan de data die zich op een pagina bevindt. HTML blijft de opmaaktaal voor de webpagina’s, maar de achterliggende data wordt ook gemodelleerd, gebruik makende van RDF, zie figuur 2.5. 8
Definitie van op de hoofdpagina van de activiteiten van het W3C rond het Semantisch Web: http: //www.w3.org/2001/sw/
2.3 Web 3.0: het Semantisch Web
13
Figuur 2.5: Werking van een Web 3.0-applicatie
De gepubliceerde data is betekenisvol en machine-leesbaar. De techniek die daarachter schuilt is die van de knowledge representation, oorspronkelijk een techniek gebruikt door onderzoekers in het vakgebied van de kunstmatige intelligentie.[6] Onderzoekers die de idee¨en over het semantische web vastlegden, hebben deze techniek overgenomen en de gevolgen daarvan zijn verstrekkend. Data en daarbijhorende logica kunnen nu worden aangewend om computers te laten redeneren. De semantiek die Web 3.0 aanbiedt, maakt het mogelijk gegevens eenvoudiger te integreren. De betekenis van de data gaat nu niet langer verloren bij omzetting naar HTML, de RDF-representatie van de data kan gebruikt worden. Ook kan nu het onderscheid gemaakt worden tussen twee termen die naar eenzelfde concept verwijzen; of het omgekeerde: twee verschillende concepten met een zelfde naamgeving. Dit laatste wordt ook wel disambiguatie genoemd. Zoekmachines zullen relevante resultaten kunnen weergeven, gebaseerd op de concepten die gebruikers bedoelen, niet de letterlijke trefwoorden die ze opgeven.[1] Misschien wordt het binnen een aantal jaren zelfs mogelijk een zoekmachine gewoon een vraag te stellen. Tenslotte worden applicaties nu in staat gesteld om redeneringen te maken op basis van data.[6] Mash-uptoepassingen kunnen met behulp van de technieken van het Semantisch Web de zoektocht naar het antwoord op een bepaalde onderzoeksvraag vereenvoudigen. ’Wat is de beste plaats voor een nieuwe vestiging van mijn bedrijf?’ beantwoorden wordt op deze manier mogelijk. In de toekomst moeten zogeheten software agents dienen als multifunctionele mash-ups en zelfs in staat kunnen ge-
2.3 Web 3.0: het Semantisch Web
14
steld worden onderling data uit te wisselen, om zo een value chain voor informatieuitwisseling te vormen en nieuwe besluiten te trekken.[6] Software agents zijn nog niet zo krachtig als ze zouden kunnen worden, ook al wordt er onderzoek naar gedaan. De sleuteltechnologie¨en die het Semantische Web ondersteunen, bestaan al. Web 3.0 is een feit. Het grootste probleem voor de overgang op een voll´edig operationeel Web 3.0 is de overname van de technologie op het hele Web. Dat zal tijd kosten, en de overgang zal versnellen naarmate er meer en meer hulpmiddelen worden aangereikt om de overgang te vereenvoudigen[1]. Er is echter al heel wat ondersteuning: PHP, JSP, ASP en bepaalde content managementsystemen (CMS) bieden al implementaties.[24] De overstap biedt veel voordelen en zal de manier waarop data zal worden gebruikt, drastisch veranderen.[12] Of zoals Tim Berners-Lee, niet alleen uitvinder van Web 1.0, maar ook voorvechter van het semantische web, zelf zegt: “Het Semantische Web kan bijdragen tot de evolutie van de menselijke kennis.”[6]
2.3.2
De technologie¨ en van het Semantisch Web
Eerder werd al vermeld dat het Semantische Web steunt op een gemeenschappelijk framework: RDF. Web 3.0 steunt echter op nog meer technologie¨en dan enkel RDF. Een vaak gebruikte illustratie daarvan is de zogenoemde technology stack of layer cake.[12, 1, 26] Deze wordt in figuur 2.6 afgebeeld. Sommige van bovenstaande technologie¨en zijn beter van toepassing dan andere, afhankelijk van hoe de modellering van de semantische informatie moet gebeuren.[12] E´en constante echter, is dat de basis van de hele layer cake berust op RDF en dat dit framework in elke toepassing voorkomt — tenzij zijn variant RDFa9 gebruikt wordt. RDFa verschilt van RDF in het feit dat data die achter een webpagina steekt, wordt ingebed in de HTMLopmaakcode van de webpagina zelf, in plaats van in een apart RDF-databestand.
2.3.3
RDF: een framework voor het beschrijven van resources
RDF, voluit Resource Description Framework, is een framework dat toelaat metadata over web resources te beschrijven.[28] Een resource, ook wel entiteit genoemd, is elk concept 9
http://www.w3.org/TR/xhtml-rdfa-primer/
2.3 Web 3.0: het Semantisch Web
15
Figuur 2.6: De technology stack van het Semantisch Web.
waarvan een representatie terug te vinden is op het web. Metadata is informatie over welk soort concept dan ook, in een machine-leesbare vorm.[1] Het is dus in feite ‘data over data’. RDF en de andere technologie¨en van de technology stack maken het mogelijk om data machine-interpreteerbaar voor te stellen. RDF beschrijft informatie over een concept aan de hand van triples.[6, 28, 1] Een triple, ook wel statement genoemd, beschrijft een concept met behulp van een predicaat en een object. Een voorbeeld van een triple is ‘J.K. Rowling is een schrijver’. Het concept is ‘J.K. Rowling’, het predicaat ‘is een’ en het object is ‘schrijver’. Dit heel simpel model laat toe informatie over welk concept dan ook te beschrijven. Een bijkomende regel voor het model is dat het onderwerp, attribuut en indien mogelijk het object aangeduid wordt met een URI wordt opgeslagen. Een URI, oftewel Uniform Resource Identifier, is een unieke verwijzing naar een resource: het ‘ding’ dat wordt beschreven, bijvoorbeeld een veld in een database of een webpagina.10 10
De URI-specificatie is te vinden op http://www.ietf.org/rfc/rfc2396.txt.
2.3 Web 3.0: het Semantisch Web De uniciteit van de URI lost het probleem van disambiguatie op: het maken van onderscheid tussen twee verschillende concepten met eenzelfde naam.[6] Meestal is URI een link naar een item op het web, een webadres, of dus een zogeheten URL: Uniform Resource Locator. Kort gezegd houdt dat in dat de resource op het internet worden opgezocht door die link te volgen.
16 een een een kan
URI’s kunnen ingekort worden tot zogenoemde Compact URIs 11 met behulp van een declaratie van een prefix, die vanaf dan kan gelden als een vervanger voor het deel van de URI dat niet de aanduiding van het concept is. Bijvoorbeeld: de Compact URI van http://www.w3.org/1999/02/22-rdf-syntax-ns#type is rdf:type. Deze notatie van URI’s wordt vaak ook de Turtle-notatie genoemd, omdat in die serialisatie van RDF elke URI met een Compact URI wordt genoteerd. Het voorbeeldstatement ‘J.K. Rowling is een schrijver’ kan worden beschreven met de volgende RDF/XML-code: 1 2 4 5 6 r d f : D e s c r i p t i o n> 7 rdf:RDF>
Als een object niet met een URI voorgesteld wordt, dan is het een literal : een bepaalde waarde. Dat kan bijvoorbeeld een object van het datatype string (een opeenvolging van karakters) zijn, zoals ’Joanne Rowling’ in het RDF-statement ‘De volledige naam van J.K. Rowling is Joanne Kathleen Rowling’. Het bovenstaande RDF-statement werd neergeschreven in XML-syntax. XML wordt dus gebruikt voor het structureren van data, RDF is het framework dat toelaat concepten in die data te beschrijven.[6] RDF heeft naast RDF/XML ook andere serialisaties (syntaxvormen). Zo zijn er ook RDFa, Turtle, N-Triples, N3 en RDF/JSON.[26] Deze serialisaties zorgen ervoor dat de entiteitsbeschrijvingen in documentvorm kunnen worden voorgesteld, gezien de architectuur van het Web reeds zeer goed in staat is om documenten uit te wisselen. Alle specificaties omtrent RDF werden vastgelegd in een W3C-standaard.12 11 12
De syntax daarvoor — CURIE genaamd — is te vinden op: http://www.w3.org/TR/curie/. http://www.w3.org/RDF/
2.3 Web 3.0: het Semantisch Web
17
RDF statements worden vaak weergegeven aan de hand van een gelabelde, gerichte graaf.[1] Knooppunten stellen concepten voor — onderwerpen of objecten, want objecten kunnen zelf ook weer het onderwerp van een nieuw statement worden. Deze interconnectie van concepten leidt uiteindelijk tot ´e´en grote graaf. Figuur 2.7 geeft een voorbeeld van zo’n graaf.
Figuur 2.7: Een graafvoorstelling van meerdere RDF triples. In feite is dit een grafische voorstelling van een fragment uit de data over J.K. Rowling in de dataset van DBpedia (http://dbpedia.org).
RDF is domeinonafhankelijk: met dit framework kunnen concepten beschreven worden, maar alle predicaten en objecten die in de beschrijving gebruikt worden moeten worden ge¨ımporteerd uit een bepaalde woordenschat, afhankelijk van het kennisdomein van het predicaat of object.[1] Voor het beschrijven van zo’n woordenschat wordt RDF Schema (RDFS) of de Web Ontology Language (OWL) gebruikt.[23] Het zijn dus vocabulary languages: een dergelijke taal kan de domeinspecifieke termen uitdrukken waarvan gebruik kan gemaakt worden voor het beschrijven van data. RDFS en OWL laten dus toe om een heel conceptdomein te modelleren. Het begrip ‘schrijver’ had met behulp van een vocabulary voor beschrijvingen van boeken kunnen worden voorgesteld. In het gegeven voorbeeld werd het begrip ‘schrijver’ gehaald uit de ontologie van DBpedia. Een ontologie is een vocabularybeschrijving van een nog hoger niveau dan RDFS. Deze worden in de Web Ontology Language (OWL) beschreven en bevatten meer informatie over de termen in de woordenschat. Reasoners maken hier gebruik van. Een voorbeeld
2.3 Web 3.0: het Semantisch Web
18
daarvan is ‘mannelijk en vrouwelijk zijn disjuncte eigenschappen’, wat betekent dat een bepaalde resource niet beide eigenschappen kan hebben. Vocabularies (de andere veel gebruikte benaming van een RDF woordenschat) en ontologie¨en of kunnen aangemaakt of hergebruikt worden. Zoals eerder werd al gezegd, wordt RDF vaak in XML geserialiseerd. XML laat toe syntaxelementen (tags genoemd) aan te maken en die te gebruiken in een databeschrijving. Een XML namespace is een verzameling van een woordenschat bestaande uit tags specifiek voor een conceptueel domein. De declaratie van namespaces in XML wordt toegepast om dus RDF Vocabularies of OWL ontologies in te voegen. De termen in zo’n woordenschat worden dan in XML-tags uitgedrukt.
2.3.4
Linked Data
Het kunnen beschrijven van relaties, hergebruiken van ontologie¨en en de enorme kracht van het linken van concepten en URI’s leidt tot een enorm web van data in een standaardformaat waartussen relaties beschreven worden: The Web of Data, visueel voor te stellen door een enorme graaf. Die verzameling gerelateerde data wordt benoemd als Linked Data en is het hart van het Semantisch Web.[26] De meeste onderzoekers en developers die actief zijn in het Linked Data-gebeuren kunnen zich vinden in de vier Linked Data Principles, een raadgeving voor het optimaal vormgeven van linked data, uitgeschreven door Tim Berners-Lee:[8, 26] 1. URI’s moeten gebruikt worden als identifacties van concepten. 2. Deze URI’s moeten HTTP URI’s zijn, URL’s dus, zodat mensen en computers deze link kunnen volgen om die concepten op te zoeken. 3. Zorg ervoor dat, wanneer een concept wordt opgezocht, die blijk van interesse in dat bepaald concept met nuttige informatie daarover moet kunnen beantwoord. De standaarden daarvoor zijn RDF (voor het leesbaar maken van data voor machines) en HTML, zodat mensen de data te zien krijgen in webpaginavorm (via hun browser). 4. Voeg links toe naar andere gerelateerde resources, zodat de data een meerwaarde krijgt naar gebruikers toe. Deze links tussen resources worden RDF links of verrijkingen genoemd.
2.3 Web 3.0: het Semantisch Web
19
Niet alle ingewijden zijn het eens over de exacte formulering van deze vier principes. De reden daarvoor is dat ze eigenlijk een persoonlijke aanbeveling zijn van Berners-Lee en niet formeel aanbevolen worden door het W3C. Bovendien dwingen ze het gebruik af van bijvoorbeeld RDF, iets waar wat discussie over is geweest. Paul Miller bijvoorbeeld geeft de voorkeur aan een lichtjes andere formulering, maar geeft net als Berners-Lee aan dat het opvolgen van standaarden aanbevolen is om linked data tot zijn volledige potentieel te laten komen.[30] Naast de vier basisprincipes werden er ook beschouwingen gepubliceerd over de levenscycli van linked data: een high-level overzicht van de stappen die worden doorlopen vooraleer een volwaardige linked data-applicatie up en running is op het internet. Michael Hausenblas stelt een proces voor in zes stappen[25], zie figuur 2.8. Deze zes stappen zijn: 1. bewustzijn van de data op het web (data awareness), 2. het opstellen van een datamodel via hergebruik en eventueel aanmaken van ontologie¨en (data modeling), 3. publicatie van de data (data publication), 4. ontdekking van andere relevante datasets (data discovery), 5. integratie van de eigen dataset met de ontdekte data set van anderen (data integration), en 6. ontwikkeling van een concrete toepassing (use case).
Figuur 2.8: De linked data lifecycles van linked-data-life-cycles.info)
Hausenblas.
(Bron:
http://
De eerste en laatste fases noemt Hausenblas bijkomstige fases, omdat ze niet altijd voorkomen in een nieuw linked dataproject. Een use case opzetten is bijvoorbeeld niet noodzakelijk, het doel kan zijn om enkel een dataset online te publiceren. De eerste fase kan eveneens gezien worden als een losstaande fase, omwille van het feit dat ze niet specifiek
2.3 Web 3.0: het Semantisch Web
20
gerelateerd is aan de dataset die tijdens het proces wordt gepubliceerd, deze fase duidt eeder op een bewustwording van linked en open data in het algemeen.[31] Hausenblas is niet de enige die probeerde een levenscyclusmodel op te stellen, S¨oren Auer publiceerde er bijvoorbeeld ook een, met meer levensfasen, zie figuur 2.9.[2]
Figuur 2.9: Het levenscyclusmodel van Auer voor linked data. (Bron: http://stack.lod2. org)
Terwijl de bovenstaande levenscyclusmodellen eerder theoretisch van aard zijn, worden ook praktischere publicatiestappen beschreven in de literatuur.[9, 16] De rode draad doorheen die praktischere versies komt telkens neer op het volgende proces: 1. het uittekenen van een gepast RDF-model om de data voor te stellen, 2. het kiezen van een linked data serverinfrastructuur, 3. het gieten van de beschikbare data in het gekozen datamodel, en 4. een verrijkingsstap, die nagaat naar welke datasets op het web kan gelinkt worden om te voldoen aan het vierde linked dataprincipe.
Tijdens de eerste stap passeren enkele belangrijke ontwerpkwesties de revue. Zo moet besloten worden met welke URI de dataconcepten zullen worden voorgesteld. Vaak wordt
2.3 Web 3.0: het Semantisch Web
21
het principe van content negotiation toegepast.[16] Bij opvraging van een bepaalde resourcebeschrijving via REST (het meegeven in de URI van parameters die de gewenste resourcebeschrijving aanduiden), bijvoorbeeld http://dbpedia.org/resource/Belgium, verwerkt de server de binnengekregen HTTP request en stuurt ofwel de HTML-pagina terug (http://dbpedia.org/page/Belgium), ofwel een RDF-representatie (http://dbpedia. org/data/Belgium.rdf). Zo krijgen mensen en computers de beschrijving voorgeschoteld waarvoor ze de meeste voorkeur hebben. Naast het kiezen van een URI-patroon moet ook besloten worden of er al dan niet nieuwe ontologie¨en moeten aangemaakt worden om het kennisdomein te kunnen representeren.[9] Het kan dat bestaande ontologie¨en voldoende zijn. Combinaties van hergebruik van bestaande en aanmaak van nieuwe ontologie¨en zijn uiteraard ook een optie. Het kiezen van een serialisatie voor het beschrijven van de data — RDF/XML, N-triples, Turtle, of RDFa — kan ook een ontwerpbeslissing zijn. RDFa is een veelgebruikt alternatief voor content negotiation: zowel machines als mensen krijgen eenzelfde document te zien, semantische annotaties worden in de HTML-opmaak van de webpagina voorzien.[16] Een linked data serverinfrastructuur kan opgezet worden met enkele hulpmiddelen die op het internet beschikbaar zijn, vaak als open source. Zo zijn er tools: om datasets te publiceren, om een linked data-laag boven een relationele database te voorzien, om een SPARQL endpoint te voorzien voor het bevragen van de dataset, om gewoon een collectie triples online op te slaan (triple stores) , en om Linked Data frontends te voorzien. Dit zijn interfaces op de server naar de data vanuit het SPARQL endpoint om content negotiation te kunnen voorzien.[16, 9]
Linked data wordt soms ook gepubliceerd met een open licensie, gelijkaardig aan de manier waarop software als open source wordt gedistribueerd over het internet.[12] Er is geen wereldwijde overeenkomst over een bepaalde definitie voor deze Linked Open Data (LOD). Open Knowledge Definition doet een poging met de volgende definitie: “A piece of knowledge is open if you are free to use, reuse and redistribute it.”13 13
http://www.opendefinition.org
2.3 Web 3.0: het Semantisch Web
22
Er is echter een struikelblok. Linked data kan open zijn, maar is dat niet altijd, en open data is ook niet altijd linked data.[30] Linked data kan immers beperkende licensies hebben; ook kan het gebeuren dat open data niet voldoet aan de vier principes van Berners-Lee om linked data genoemd te mogen worden. De overheid in het Verenigd Koninkrijk en de Verenigde Staten doen beide enorme pogingen om veel van hun data online te gooien als linked open data.14 Hun redenering is dat veel van hun gegevens verzameld zijn met belastingsgeld van de bevolking, waardoor de bevolking dan ook recht op inzage en gebruik van die gegevens heeft. Het Linking Open Data project15 is een mooi voorbeeld van de toename en diversiteit van linked open data op het web. Het doel ervan was om het Web of Data een duwtje in de rug te geven, door het identificeren van welke datasets er online beschikbaar waren onder een open licensie en voldeden aan de linked dataprincipes. De resultaten van die zoektocht werden van tijd tot tijd gepubliceerd. Het mooiste resultaat daarvan is de LOD cloud 16 , weergegeven op figuur 2.10. Het stelt een wolk voor van alle ge¨ıdentificeerde datasets die online beschikbaar zijn en aan de voorwaarden voldeden, samen met hun interconnecties. Een opvallende dataset in de LOD cloud is die van DBpedia 17 . Deze dataset bevat alle informatie die in Wikipedia beschikbaar is in de infokadertjes die rechtsbovenaan op veel van de artikelpagina’s staan. De reden waarom DBpedia zo pertinent aanwezig is, is omdat die dataset wordt gebruikt als een soort linking hub.[10] Tim Berners-Lee schreef naast de linked dataprincipes eveneens een vijfsterrenranking uit voor het publiceren van open data.[8] Die ranking bestaat uit 5 richtlijnen voor LOD. Per regel extra waar een dataset aan voldoet, wordt een extra ster toegekend. Een vijfsterren LOD dataset voldoet dus aan alle richtlijnen. Of linked data nu een open licensie krijgt of niet, er zijn drie grote categorie¨en te onderscheiden in de wereld van de linked data-toepassingen:[9] browsers die gebruikers toelaten te navigeren over het Web of Data, zoekmachines, en 14
De website van de Engelse open data is data.gov.uk, die van de VS is www.data.gov. http://esw.w3.org/topic/SweoIG/TaskForces/CommunityProjects/LinkingOpenData 16 http://lod-cloud.net 17 http://dbpedia.org 15
2.3 Web 3.0: het Semantisch Web
23
Figuur 2.10: Recentste versie (2011) van het Linking Open Data Cloud diagram, door Richard Cyganiak en Anja Jentzsch. Bron: http://lod-cloud.net/.
domeinspecifieke applicaties.
De querytaal SPARQL werd al enkele keren genoemd als d´e taal — en eigenlijk is het ook een protocol — om een dataset op het Semantisch Web te bevragen. In de volgende paragraaf wordt daarop verder ingegaan.
2.3.5
SPARQL: een taal voor het opvragen van data op het Semantisch Web
Resources in het Web of Data zijn — als gevolg van de linked data-principes — in een dergelijke mate met elkaar verbonden dat ´e´en grote database op wereldschaal ontstaat.[7] Net zoals SQL de onmisbare taal is voor het ophalen van data uit een klassieke database, is SPARQL[33] onder andere omwille van zijn gelijkenis met SQL uitgegroeid als d´e taal voor
2.3 Web 3.0: het Semantisch Web
24
het bevragen van RDF-datasets.[16] SPARQL wordt uitgesproken als “sparkle”. Het is een aanbeveling van het W3C en is in feite niet alleen een taal, maar ook een protocol[14], dat toelaat queries en hun resultaten uit te wisselen tussen bijvoorbeeld een mashuptoepassing en de SPARQL endpoint van een achterliggende RDF store. SPARQL laat toe datasets te bevragen met een eenvoudige SELECT-structuur gelijkaardig aan die van SQL.[33, 1] Verkorte notaties aan de hand van prefixen, zoals in de RDF syntax, zijn ook toegelaten in SPARQL. Een voorbeeldquery in SPARQL wordt hieronder weergegeven. Deze draagt de SPARQL endpoint van DBpedia op de naam van de Burgemeester van Gent weer te geven. 1 SELECT ? Burgemeester 2 WHERE 3 { 4 ? p l a a t s r d f : type dbpedia−owl : P l a c e ; 5 dbpedia−owl : c o u n t r y dbpedia : Belgium ; 6 r d f s : l a b e l ”Gent”@nl ; 7 dbpprop : mayor ? Burgemeester . 8 }
In de SELECT-regel worden de resources opgegeven waarnaar wordt gezocht in de dataset. Dat wordt gedaan aan de hand van een vraagteken, gevolgd door een naam voor de variabele. In de WHERE-clausule wordt immers bevolen dat het resultaat van de query alle triples moet bevatten die voldoen aan de opgegeven statements — die de namen van de variabelen bevat. De bovenstaande query verwacht dus de titel van alle boeken uit de dataset. Uiteraard kunnen in de WHERE-clausule meerdere criteria worden opgegeven. Enkel de triples die voldoen aan alle criteria zullen dan in het resultaat te zien zijn. Extra parameters zoals datatypes of de taal van een string, die in RDF ook kunnen meegegeven worden, kunnen ook in de query worden geplaatst. WHERE-clausules kunnen net zoals in SQL logische expressies evalueren. Een vraag als “geef de namen van alle bezoekers ouder dan 45 jaar”kan in een SPARQL query worden omgezet met behulp van het sleutelwoord FILTER.[33] Het resultaat van SELECT-queries in SPARQL geeft de waarden terug van de variabelen die werden opgevraagd. Er zijn echter ook andere soorten queries, CONSTRUCT-queries bijvoorbeeld. Het resultaat daarvan is een RDF-graaf en heeft dus net dezelfde syntax als het datamodel van de triplestore.
2.3 Web 3.0: het Semantisch Web
25
Resultaten van een SPARQL-query kunnen geretourneerd worden in vele formaten, onder andere ook terug. Hieronder wordt het antwoord in RDF/XML-formaat weergegeven dat DBpedia terugzendt als resultaat van de eerder al beschreven query: 1 2 3 4 < r e s : r e s u l t V a r i a b l e>Burgemeester r e s : r e s u l t V a r i a b l e> 5 < r e s : s o l u t i o n r d f : n o d e I D=” r 0 ”> 6 7 < r e s : v a r i a b l e>Burgemeester r e s : v a r i a b l e> 8 Dani ¨e l Termont r e s : v a l u e> 9 r e s : b i n d i n g> 10 r e s : s o l u t i o n> 11 r d f : D e s c r i p t i o n> 12 rdf:RDF>
2.3.6
Verrijking
Eerder (in paragraaf 2.3.5 Linked Data) werd al aangehaald dat het verrijken van een dataset een stap in het publicatieproces van een dataset is. Verrijking is het toevoegen van RDF links, ook wel eens URI aliases genoemd: deze links zijn extra statements in de RDF-code die concepten in de eigen dataset linken met referenties naar eenzelfde concept in een andere dataset.[9] Deze RDF link kan bijvoorbeeld worden beschreven met de RDF properties owl:sameAs, rdfs:seeAlso of foaf:primaryTopic. Een RDF link kan er (in Turtleformaat) dan bijvoorbeeld zo uit zien: 1 dbpedia : Ghent
owl : sameAs
h t t p : / / data . nytimes . com /48099839982249908521 .
Op deze manier voldoet linked data aan het vierde linked data principe, namelijk de aanbeveling om links in te voegen naar andere URIs, zodat gebruikers (mensen of computers) deze links kunnen volgen naar andere interessante informatie die te maken heeft met de data in de dataset. Bij het publiceren van linked open data levert het voorzien van RDF links de vijfde ster op van de al eerder vernoemde vijfsterrenranking van Berners-Lee. De generatie van dergelijke links biedt twee grote voordelen.[16] Het is een hulpmiddel bij disambiguatie, het verhelpen van problemen bij het onderscheiden van verschillende resources met eenzelfde naam. Een URI die toegekend
2.3 Web 3.0: het Semantisch Web
26
werd aan beide resources aan de hand van verrijking, biedt een unieke identificatie waarmee elke resource kan onderscheiden worden. Het tweede voordeel van verrijking is het aanbrengen van een verwijzing naar extra informatie voor resources in een dataset, waardoor de data daarin meer waarde krijgt voor de eindgebruikers.
SPARQL speelt een belangrijke rol in het verrijkingsproces.[16] Het is aan de hand van een SPARQL endpoint dat andere datasets kunnen worden bevraagd tijdens de zoektocht naar relevante data om naar te linken. Verrijkingen kunnen zowel manueel aangebracht worden in een dataset, maar ook semiautomatisch of volautomatisch.[16, 9] In elk van deze gevallen kan dat op basis van een patroon dat aanwezig is in de dataset, of op basis van een eigenschap die resources bezitten. De patroongebaseerde verrijkingsmethode vindt links voor de resources in een dataset aan de hand van wijdverspreide identificatiesystemen: postcodes voor steden, ISBNnummers voor boeken, rijksregisternummers voor personen, enzovoort. Op deze manier kan een resource in de dataset gelinkt worden met een resource in een andere dataset, wanneer deze tweede dataset ook met die naamgevingen werkt. De eigenschapgebaseerde methode probeert verrijkingen te vinden aan de hand van een combinatie van eigenschappen van een resource waarmee die resource uniek kan voorgesteld worden. Figuur 2.11 illustreert dit idee met een voorbeeld. Wanneer in een andere dataset een resource gevonden wordt die dezelfde eigenschappen heeft, dan bestaat de kans dat de beide resources hetzelfde concept voorstellen. Vooraleer een link tussen twee resources aangenomen wordt als een geldige verrijking is het dus uiteraard de bedoeling om de resources in de twee datasets te vergelijken op basis van eigenschappen die het specifieke soort resource kunnen identificeren. In het weergegeven voorbeeld worden steden vergeleken. Steden kunnen bijvoorbeeld worden ge¨ıdentificeerd op basis van postcode, stadsnaam en land. Het spreekt voor zich dat hoe meer overeenkomstige eigenschappen er zijn tussen twee resources, hoe groter de kans is dat deze eenzelfde concept voorstellen. Het kan dus voorkomen dat de kans niet groot genoeg is om te mogen aannemen dat de twee resources mogen gelinkt worden. Bijvoorbeeld: een stad in de lokale dataset heeft eenzelfde naam als in DBpedia, maar in de lokale dataset ontbreekt informatie over de postcode en de landsnaam van de stad. Dan zijn er twee mogelijkheden:
2.3 Web 3.0: het Semantisch Web
27
Figuur 2.11: Verrijkingen van steden in twee datasets.
Een volautomatisch verrijkingsproces zal de verrijking van de desbetreffende resource overslaan wegens het ontbreken van de nodige gegevens. Een semi-automatisch verrijkingsframework kan van dit problematisch geval een melding maken, met alle beschikbare gegevens over de resource in de ene en in de andere dataset, waarna manuele interventie duidelijk moet maken of het wel degelijk om ´e´en en dezelfde resource gaat, of niet.
Een applicatie die gebruik wil maken van de verrijkingen die door een derde partij werden gegenereerd, wil zeker zijn dat de verrijkingen zijn gemaakt op basis van alle nodige eigenschappen, of op basis van de meeste eigenschappen ´en een extra manuele interventie ter verificatie. Deze informatie moet bij de verrijkingen worden beschreven. Dit soort metadata wordt provenance metadata genoemd.
2.3.7
Provenance
Provenance is de vakterm in de literatuur die wijst op het aanduiden van de herkomst van data in een dataset: wie is verantwoordelijk voor het aanmaken van de data, wanneer is dat gebeurd, enzovoort. Data zal altijd inconsistenties bevatten.[32] Immers: Errare humanum est. Zo luidt het spreekwoord althans. Verrijkingen kunnen manueel aangelegd worden. Door het invoegen van een foute verrijking in een dataset kan iemand ernstige problemen veroorzaken. Stel bijvoorbeeld dat een dokter een verrijking aanbrengt in een pati¨entendataset. De dokter
2.3 Web 3.0: het Semantisch Web
28
geeft verkeerdelijk aan dat de MRI-scan in een dataset toebehoort aan een bepaalde pati¨ent in een andere dataset. De pati¨ent komt een week later bij zijn huisdokter langs en krijgt te horen dat er een tumor is ontdekt in zijn been en er wordt besloten dat het been geamputeerd moet worden. Een rampzalig scenario. In de evenementensector zal het niet direct zo levensbedreigend aflopen, hoewel het een groot verlies van inkomsten kan betekenen wanneer de plaatsnaam in het evenementadres gelinkt wordt met een gelijknamige plaats in een andere provincie. Het ware interessant wanneer er informatie over de verrijking kan worden toegevoegd als metadata aan de data zelf die verrijkt werd: de tijd waarop de actie plaatsvond, de reden waarom die is doorgegaan, enzovoort. Deze extra informatie wordt provenance metadata genoemd. Stel dat de dokter in kwestie de lichaamsscans opzettelijk aan de verkeerde pati¨enten heeft gelinkt, omdat hij wil natrappen na zijn ontslag. Als het ziekenhuis ´e´en verkeerde verrijking heeft ontdekt, dan kunnen ze simpelweg de metadata van alle verrijkingen doorlopen, opvragen welke ervan aangemaakt zijn door de dokter in kwestie sinds zijn ontslag en al deze verrijkingen terugroepen (vernietigen). Het voorbeeld zal verduidelijkt hebben dat het beschrijven van herkomst van data zeer belangrijk is. Omdat het Web 3.0 het toelaat dat niet alleen mensen data consumeren, maar ook software agents (webapplicaties die kunnen redeneren op basis van linked data), is het ook voor deze software agents van belang dat de data die op het web gepubliceerd wordt, correct is.[38] Er is zelfs sprake van zogeheten inference chains: ketens van software agents die telkens verder redeneren op het resultaat van de vorige. Wanneer een eerste software agent in de keten een conclusie heeft getrokken op foute data, dan zou de fout propageren. Daarom zou het goed zijn data te annoteren met provenance metadata, zodat elke software agent in de keten in staat zou zijn te detecteren dat op die data al dan niet mag geredeneerd worden. Het spreekt voor zich dat wanneer op data geredeneerd wordt die van een derde partij komt, er dus een bepaald mechanisme moet zijn dat garanties kan geven over de betrouwbaarheid van de data: een referentie naar bronnen (provenance metadata), of een digitale handtekening van een gevestigde instelling die garandeert dat de informatie geverifieerd werd.[6] Deze mechanismes moeten ervoor zorgen dat een applicatie vertrouwen krijgt in de data die het gebruikt. Dit vertrouwen wordt in de literatuur aangeduid met de term trust. Dit is een probleem waar de laatste jaaren veel onderzoek naar wordt gedaan: Een grote uitdaging is immers het kunnen opzetten van een dataverwerkingsmethode die semi-automatisch overweg kan met issues zoals trust, reputatie, integriteit en provenance.[37]
2.3 Web 3.0: het Semantisch Web
29
Een andere uitdaging is het uitdenken van een manier waarop de metadata inzake de bovenstaande begrippen moet worden gepresenteerd naar gebruikers van het Semantisch Web toe.[9] Zoals al aangegeven, moet deze metadata voor softwaretoepassingen snel, eenvoudig en semi-automatisch kunnen worden uitgewisseld. Voor mensen is het dan weer belangrijk dat deze informatie op een interactieve, begrijpelijke en gebruiksvriendelijke manier kan worden weergegeven. Het bekendste voorbeeld is het idee van Tim Berners-Lee in 1997 om een “Oh yeah?”-knop te voorzien in de browser van de toekomst.[4] Een gebruiker die surft op het Semantisch Web, of gebruik maakt van een software agent, zou bij twijfel over de juistheid van de gepresenteerde besluiten uit data kunnen drukken op die knop. Op die manier wordt de website of de software agent bevolen een rapport weer te geven van de manier waarop de conclusie werd getrokken.
Omdat het fundamenteel idee van het Semantisch Web is dat naast mensen ook machines data kunnen interpreteren, wordt er verondersteld dat trust dan ook ´e´en van de belangrijkste pijlers van dat Web 3.0 zal worden vanuit het oogpunt van mensen. Dit is de reden waarom trust als hoogstgelegen component in de semantic technology stack wordt getekend, zie figuur 2.6. Dit onderzoek focust zich op het cre¨eren van provenance metadata, om trust te verwezenlijken op het gebied van verrijkingen. Eerder in deze literatuurstudie werden een aantal benaderingen beschreven van de levenscyclus die linked data doormaakt. Het publiceren van provenance metadata wordt er vaak niet expliciet in vermeld. Andere bronnen in de literatuur maken er wel tijd en ruimte voor. Zo is bijvoorbeeld het publiceren van provenance metadata expliciet als een aparte stap opgenomen in een linked data publishing checklist, zodat besluiten gevormd zouden kunnen worden omtrent de oorsprong en kwaliteit van de data.[26] Een belangrijke referentie voor het onderwerp is het Provenance XG Final Report.[20] Dat rapport is het besluit van de W3C Provenance Incubator Group18 , dat, omwille van een enorme toenemende interesse in provenance bij onderzoekers en ontwikkelaars, de bestaande bronnen over het onderwerp heeft samengelegd en een aanbeveling over de toekomstige aanpak ervan heeft vastgelegd. Het rapport vertrekt vanuit een definitie van provenance die werd opgesteld, ter omlijning van het toepassingsgebied dat werd onderzocht. 18
Er werden use cases voor beschrijving van provenance-informatie verzameld en daaruit werden drie typerende gebruiksscenario’s opgesteld: een aggregator van verschillende nieuwsbronnen, het beschrijven van de uitbraak van een ziekte en het beheren van een zakencontract tussen bedrijven en de nakomst ervan, gebaseerd op de ondernomen acties van de verschillende spelers. Op basis van deze drie belangrijke gebruiksscenario’s werden eisen vastgelegd waaraan provenance-beschrijvingen moeten voldoen. Samenvattende werken in de literatuur en bestaande provenance vocabularies werden onderling met elkaar vergeleken — onder meer het Open Provenance Model, Dublin Core, de Semantic Web Publishing Vocabulary. Die vergelijking werd in een mappingtabel[34] gegoten die ontwikkelaars van software op het Semantisch Web in staat kan stellen interoperabiliteit tussen applicaties (gebaseerd op verschillende provenance vocabularies) te verwezenlijken. De discrepanties tussen de onderzochte state of art en de eisen voor de gebruiksscenario’s leidden tot de opstelling van een hele reeks tekortkomingen in de toenmalige aanpak van het opstellen van provenance metadata. Omdat er op het Semantisch Web een groeiende interesse was voor provenance, besloot de Provenance Incubatorgroep dat er een inspanning moest ondernomen worden om de tekortkomingen uit de wereld te helpen en een eengemaakte taal voor het uitdrukken van provenance op te stellen, gebaseerd op de gemeenschappelijke concepten die voorkwamen in elke onderzochte bestaande vocabulary. De taal moest voorzien worden met uitbreidingsmechanismes, zodat andere vocabularies hun extra voorzieningen zouden kunnen aanleggen. De bedoeling van dit alles was uiteraard om er voor te zorgen dat heterogene systemen onderling provenance-informatie zouden kunnen uitwisselen, door die te exporteren in die standaardtaal voor provenance-beschrijving. Er werden acht aanbevelingen opgelijst waaraan moest voldaan zijn, waarvan de opsomming hieronder de eerste drie weergeeft: 1. De standaardtaal moest ten minste drie basisentiteiten in provenance-beschrijvingen kunnen voorstellen: een URI-mechanisme om in provenance-beschrijvingen te refereren naar het object waarover metadata wordt verschaft, een persoon of andere entiteit die in verband kan worden gebracht met dat object, en verwerkingsprocessen die tot dat object hebben geleid. 2. De standaard moest toegangsmogelijkheden verschaffen om specifiekere provenanceinformatie zoals licenties en digitale handtekeningen opvraagbaar te maken. 3. Het provenance-raamwerk zou het mogelijk moeten maken om provenance-metadata op een selectieve manier opvraagbaar te maken.
2.3 Web 3.0: het Semantisch Web
31
Deze drie aanbevelingen werden aanzien als de topprioriteit. De andere vijf waren langetermijnaanbevelingen waarvan het vakgebied in kwestie nog niet matuur genoeg was op dat moment om specifieke doelen vast te leggen omtrent de manier waarop ze in een standaard moesten worden ingewerkt. Er was eerst meer onderzoek nodig. Voor het opstellen van het nieuwe gemeenschappelijke provenance-raamwerk dat de Provenance Incubator Group voor ogen had voor het uitwisselen van provenance-informatie tussen applicaties, werd een nieuwe werkgroep opgericht: de W3C Provenance Work Group.19 Zeer recentelijk (voorjaar 2013) zijn de activiteiten van deze werkgroep tot een einde gekomen. Uitendelijk werden zeven van de acht aanbevelingen van de Provenance Incubator Group uitgewerkt.20 De tweede aanbeveling werd niet tot de standardisatietaken van de groep gerekend, maar men neemt aan dat de uitbreidbaarheid van de opgestelde standaard een uitwerking van de tweede aanbeveling mogelijk maakt. De voorgestelde standaard draagt de naam PROV en bestaat eigenlijk uit een verzameling specificaties[22], zie figuur 2.12. Het document dat aanzien wordt als het startpunt voor een studie van deze specificatie, is de Prov Model Primer.[44] Drie documenten van PROV zijn offici¨ele W3C-aanbevelingen: deze over de Prov Ontology[43], het Prov Data Model[42] en de notatie voor menselijk gebruik: Prov-N [41]. De overige documenten gelden als begeleidende informatie.
Figuur 2.12: Een overzicht van de specificaties die samen PROV vormen. Overview (www.w3.org/TR/prov-overview). 19 20
Het datamodel voor provenance data achter de specificaties steekt, bestaat uit de drie basisklassen die de Provenance Incubator Group voorstelde.[42] Figuur 2.13 geeft een visuele voorstelling van dit model weer. Entities zijn de voorstelling de objecten waarover provenance metadata wordt beschreven, activities stellen de processen voor die uiteindelijk tot het object in zijn huidige staat hebben geleid, en agents zijn de personen, organisaties of software agents die daartoe hebben bijgedragen. Ze hebben een bepaalde rol in een activity en dragen dus een bepaalde verantwoordelijkheid in het proces dat tot het object heeft geleid. De figuur maakt ook duidelijk dat tijd een belangrijk concept is in provenance-informatie, de PROV specificaties zijn hier dan ook op voorzien.
Figuur 2.13: Een overzicht van de specificaties die samen PROV vormen. Bron: Presentation - An Overview of W3C PROV.
Er is een serialisatie van PROV in XML voor applicaties die niet gebruikmaken van de technologie van het Semantisch Web.21 Echter, om gebruik te kunnen maken van het Prov Data Model op het Semantisch Web werd het omgezet in een OWL ontologie, PROV-O (voluit simpelweg “de PROV ontologie”).[43] De namespace van de termen in die ontologie is http://www.w3.org/ns/prov#. Alle voorstellingen in het datamodel werden dus een URI toegewezen (bijvoorbeeld prov:Agent, rekening houdend met de PROV-O namespace prefix). Uiteraard is er ook logische informatie beschreven over de termen, typisch voor 21
Hook Hua; Curt Tilmes; Stephan Zednik; eds. PROV-XML: The PROV XML Schema. 30 April 2013, W3C Note. URL: http://www.w3.org/TR/2013/NOTE-prov-xml-20130430/
2.4 Web 4.0: een Semantisch Web waar ook machines data in publiceren
33
een ontologie, zoals de datatypes van elke term en de toepasbaarheid van elke term ten opzichte van andere. Enkel de basistermen werden hier weergegeven, de PROV-specificaties bieden een uitgebreider overzicht over onder andere prov:SoftwareAgent, prov:Collection, prov:alternateOf en andere termen. Meestal wordt provenance beschreven als triples (uitspraken) over resources (objecten) op het Web of Data. Het doel van dit onderzoek is echter het beschrijven van provenance metadata over verrijkingen van linked data. Met PROV-O kan het verrijkingsproces gezien worden als een prov:Activity, een verrijking als prov:Entity die werd gegenereerd door het verrijkingsproces, en de betrokken personen, organisaties en verrijkingssoftware als prov:Agent. Tijdstippen en andere provenance-informatie kan ook met PROV-O worden beschreven. Het model dat werd opgesteld voor deze beschrijvingen, wordt beschreven in het ontwerphoofdstuk. Verrijkingen zijn echter zelf al triples, geen resources. Er moeten dus eigenlijk provenance triples beschreven worden over verrijkingstriples. In het ontwerphoofdstuk wordt ingegaan op een oplossing hiervoor.
2.4
Web 4.0: een Semantisch Web waar ook machines data in publiceren
Kort samengevat is de evolutie van het Web tot nu toe als volgt gegaan: 1. Web 1.0 was een read-only Web van informatie; 2. Web 2.0 is het sociale Web waarin mensen samen content genereerden — een readwrite web dus; en 3. Web 3.0 is de evolutie van een Web dat hoofdzakelijk voor mensen bedoeld was, naar een Web waarop semantische technologie machines in staat stelt ook de achterliggende data te kunnen lezen en interpreteren.
De meest logische volgende stap in de evolutie van het Web is er een waarin machines op het Semantisch Web niet alleen data kunnen lezen, maar ook schrijven.[17] Er wordt dan in feite overgegaan op een volledig read-write web, zowel voor mensen als machines, zie
2.4 Web 4.0: een Semantisch Web waar ook machines data in publiceren
34
figuur 2.14. Reasoners kunnen dan hun conclusies op het Web publiceren, ook weer in het semantisch formaat uiteraard, en idee¨en als inference chains 22 zijn dan niet veraf meer.
Figuur 2.14: Web 4.0: een Web waarop mensen en software agents data consumeren en publiceren.
Er wordt voorzien dat dit Web 4.0 de volgende eigenschappen zal hebben:[17] 1. datasets zullen onderhevig zijn aan data updates door machines; 2. machine-leesbare dataschema’s gemaakt door mensen zullen niet meer de hoofdmoot vormen van de data op het Web; 3. het Web van Services en het Web van Data zullen gecombineerd worden tot vorming van read-write data; 4. reasoning op het Web zal door de vele updates van data op een snapshot ervan moeten gebeuren, waardoor het redeneerproces zal moeten geoptimaliseerd worden om rekening te houden met versie-informatie van data; 22
Deze kettingen van software agents werden eerder in deze scriptie al besproken. In feite komt dit idee neer op het feit dat telkens een volgende software agent in de keten zich baseert op conclusies van een of meerdere andere software agents. Op die manier ontstaat een waardeketen van informatie.
2.4 Web 4.0: een Semantisch Web waar ook machines data in publiceren
35
5. het Web of Things (het Web waarop alle objecten en apparaten in het echte leven een virtuele voorstelling krijgt) en gepersonaliseerde applicaties zijn twee onderzoeksgebieden die een ongeziene verandering zullen doormaken.
Er werd al beschreven dat op het Semantisch Web (Web 3.0) de interesse voor het publiceren van provenance metadata stijgt. De eerste en vierde voorspelling in de bovenstaande lijst onderlijnen dat het belang van het beschrijven van provenance nog meer zal toenemen. Het opzet van Web 4.0 impliceert bovendien dat software die data op het Web verrijkt, direct zijn verrijkingsresultaten weer op het Web zou publiceren. Het zal dan ook duidelijk zijn dat het onderzoeken van manieren om provenance metadata over deze verrijkingen te genereren, zeer nuttig zal blijken: niet alleen voor het verwezenlijken van trust vandaag de dag, maar ook naar de toekomst (Web 4.0) toe.
ONTWERP EN IMPLEMENTATIE
36
Hoofdstuk 3 Ontwerp en implementatie Het doel van deze masterproef was het implementeren van een verrijkingsraamwerk dat niet alleen verrijkingslinks legt tussen resources van twee datasets, maar ook extra informatie genereert bij elke verrijking over waarom dat nu net een geldige link is. Dat wil zeggen: het framework moet een verantwoording achterlaten van hoe het tot het besluit is gekomen dat de resource in de ene dataset overeenkomt met een resource in een andere dataset. Deze zogenaamde provenance metadata wordt, net zoals de resources die werden gelinkt, opgeslagen in RDF-formaat. Op deze manier kunnen zowel mensen als computerprogramma’s nagaan hoe betrouwbaar de verrijking is. Het volgende voorbeeld illustreert hoe belangrijk dat is. Veronderstel een gebruiker die op een website een verblijf boekt in een hotel in Rome. Die website heeft zijn hoteldataset verrijkt op een zodanige manier dat de verblijfsplaatsen erin gelinkt werden met telkens de dichtstbijzijnde stad waar er een grote luchthaven is. Die data wordt gehaald uit de datasets van luchtvaartmaatschappijen. Omdat de gebruiker een verblijf in Rome boekte, zoekt de website dus de best passende vlucht op en boekt die voor hem. Het verrijkingsraamwerk dat de daarvoor gebruikte link legde tussen de twee betrokken datasets, heeft dat gedaan op basis van een reeks eigenschappen. Door een verkeerde instelling van het verrijkingsproces werd de link gelegd ´enkel op basis van de stadsnaam (Rome), men vergat erbij op te geven dat de stad Rome in Itali¨e bedoeld werd. De gebruiker betaalt zijn reis, leest zijn aankoopbevestiging niet grondig door en merkt bij aankomst op de luchthaven dat zijn vlucht richting de stad Rome in de Verenigde Staten gaat... Had het verrijkingsraamwerk daarentegen zijn instellingen mee opgeslagen als extra informatie bij de verrijkingen, dan had de website die er gebruik van maakte direct geweten dat ze niet deugden. Een verrijkingsraamwerk dat provenance metadata opslaat bij de links die het genereert, doet
3.1 Algemeen overzicht van het ontwerp
37
dus zeer nuttig werk.
3.1
Algemeen overzicht van het ontwerp
Dit hoofdstuk geeft een overzicht van het ontwerp van het verrijkingsraamwerk dat aan deze eisen beantwoordt. Figuur 3.1 geeft de verschillende grote componenten weer die werden gebruikt. In de volgende paragrafen wordt verduidelijkt welke rol elke component vervult in het geheel.
Figuur 3.1: Algemeen overzicht van de aaneenschakeling van softwarecomponenten tot het beoogde verrijkingsraamwerk.
3.2 Omzetting van de evenementendatabase naar RDF-formaat
3.2
38
Omzetting van de evenementendatabase naar RDFformaat
In de literatuurstudie werd al verduidelijkt dat een betere structurering van data wonderen kon doen op vlak van datauitwisseling en -presentatie, en dat Linked Data die beloften kon waarmaken. Het derde principe waaraan voldaan moest worden om een dataset correct als Linked Data te mogen bestempelen, luidde: Wanneer iemand informatie opvraagt over een bepaalde resource, via zijn URI op het Web, bied dan waardevolle informatie over die resource, gebruik makende van de bestaande standaarden, zoals RDF en SPARQL. Ook was te zien op figuur 3.1 dat Silk, het gebruikte verrijkingsraamwerk, datasets in RDF-formaat inleest met behulp van het SPARQL-protocol. De data waarvan gebruik mocht gemaakt worden in deze masterproef bevond zich echter nog in een MySQL database. De database moest dus eerst nog geconverteerd worden naar een RDF-dataset.
3.2.1
Overzicht van RDB2RDF-software en keuze voor D2RQ
Uiteraard bestaat er software die dergelijke databaseconversies onder handen kan nemen. Meestal wordt dit soort software gecategoriseerd onder de naam RDB2RDF-software. Die benaming spreekt voor zich: het vertrekpunt is een relationele database, het resultaat van de omzetting is een dataset in RDF-formaat. Er zijn een heleboel programma’s die dit werk verrichten. De bekendste zijn: Het D2RQ-platform1 , dbtriples2 , Sponger3 — een component in het pakket OpenLink Virtuoso, Ultrawrap4 , een commercieel pakket; en 1
3.2 Omzetting van de evenementendatabase naar RDF-formaat
39
spyder5 : gratis te downloaden, maar aangeboden met een optioneel commercieel support model, bijvoorbeeld voor installatie.
Er zijn uiteraard ook nog een aantal alternatieven, zij het iets minder bekend, bijvoorbeeld Karma6 en SparqlMap7 . Er is een werkgroep binnen het W3C8 die zich toegespitst heeft op het uittekenen van een standaardsyntax voor de configuratiebestanden van zo’n software. Dat soort bestanden wordt aangemaakt door de gebruiker om de convertor te vertellen op welke manier de database-inhoud moet vertaald worden naar de uiteindelijke dataset. Zo moet de gebruiker bij het overschakelen op een ander RDB2RDF-softwarepakket zich niet telkens een nieuwe syntax eigen maken. Helaas is die standaard nog niet in alle pakketten opgenomen. Vele van de opgesomde frameworks zijn in elk geval open source, maar er is weinig informatie beschikbaar over hoe goed ze presteren en hun hoeveelheid documentatie varieert ook sterk (van voldoende tot zo goed als niets). Een uitgebreide vergelijking is een volledige thesis waard op zich en valt niet binnen de scope van dit onderzoek. De keuze is gevallen op het D2RQ-platform, gezien het een van de meest gebruikte is in de academische wereld, out-of-the-box werkt en goed gedocumenteerd is.
3.2.2
Het D2RQ-platform
D2RQ9 is een open source platform dat een verbinding legt met een relationele database en die op basis van een configuratiebestand (een zogenaamde mapping) vertaalt naar een virtuele read-only dataset in RDF-formaat[11], zie figuur 3.2. Dat laatste betekent dat de dataset zich niet in een triple store moet bevinden en alleen kan bevraagd worden, niet gewijzigd. D2RQ bewijst zijn nut op een aantal vlakken: het stelt gebruikers in staat een relationele database te publiceren als Linked Data op het web, zodat die bevraagd kan worden met SPARQL. Bovendien kan de volledige database gedumpt worden in een RDF-bestand, en 5
3.2 Omzetting van de evenementendatabase naar RDF-formaat
40
Figuur 3.2: Gebruik van het D2RQ-platform voor het omzetten van de evenementendatabase.
met Jena10 krijgt een Java-programmeur de volledige vrijheid om applicaties te bouwen die gebruik maken van de database. Het D2RQ-platform kan op basis van de mapping niet alleen een hele database omzetten, het kan ook in real time een specifiek stuk data in RDF retourneren wanneer een gebruiker daar om vraagt. Een specifiek stuk data kunnen opvragen is zeer nuttig: de mapping kan zo bijvoorbeeld stuk voor stuk opgebouwd en getest worden. Om dat duidelijk te maken is een dieper inzicht in de opbouw en werking van het D2RQ-platform nodig. Figuur 3.3 geeft daarom een overzicht van de componenten waaruit D2RQ bestaat. In feite is het gewoon hetzelfde schema als in figuur 3.2. In plaats van D2RQ als een black box te beschouwen wordt nu ook de interne structuur zichtbaar. De D2RQ engine is de centrale component die elke opvraging van data op basis van de mapping vertaalt in een SQL query, deze vervolgens afvuurt op de geconnecteerde database en het resultaat ervan in RDF vertaalt — opnieuw op de manier die beschreven is in de mapping-specificatie. Die is geschreven in een eigen syntax: de D2RQ Mapping Language11 . De volledige database kan omgezet worden met een hulpmiddel in het framework, dump-rdf genaamd. D2R Server is de tweede grote component, deze fungeert net zoals een gewone HTTP server: 10
Apache Jena (http://jena.apache.org/) is een Java framework dat gebruikt kan worden om applicaties en servers te ontwikkelen voor het Semantisch Web. 11 http://d2rq.org/d2rq-language
3.2 Omzetting van de evenementendatabase naar RDF-formaat
41
Figuur 3.3: Het D2RQ-platform werd gebruikt om de data om te zetten naar RDF-formaat, zodat het door een verrijkingsraamwerk kan gebruikt worden.
clients sturen die een bepaalde request (een SPARQL query, een vraag om RDF data of een webpagina over een bepaalde resource) en de server antwoordt met een gepast antwoord. Dat is respectievelijk een SPARQL resultatenset, een RDF-bestand, of een webpagina. De D2R Server bevindt zich gewoonlijk op het adres http://localhost:202012 . Telkens wanneer D2R Server een HTTP request ontvangt, geeft deze de D2RQ engine de opdracht om de opgevraagde data te vertalen op dat moment zelf. Zo geeft een wijziging van de mapping een ander resultaat al vanaf de eerstvolgende request ontvangen wordt. Dit is, zoals eerder gezegd, handig om de mapping stelselmatig aan te passen en te evalueren. De D2RQ Mapping Language13 is de declaratieve taal waarmee de mapping beschreven wordt. Ze wordt neergeschreven in een Turtle syntax, een van de serialisaties van RDF. De Mapping Language beschrijft de eigenschappen van relationele databases (bijvoorbeeld over de connectie, tabellen en kolommen) in termen van RDF vocabularies en OWL ontologie¨en. 12 13
Een ander adres kan opgegeven worden in de mapping. http://d2rq.org/d2rq-language
3.2 Omzetting van de evenementendatabase naar RDF-formaat
42
Deze masterproef vertrekt van een evenementendatabase, dus is het belangrijk om een vocabulary of ontologie te vinden die evenementen kan beschrijven.
3.2.3
LODE: een ontologie om evenementen te beschrijven
Om de evenementen in de database als linked data te beschrijven, wordt de ontologie LODE14 gebruikt. Het acronym staat voor Linking Open Descriptions of Events: LODE is met andere woorden een heel eenvoudige ontologie die enkel en alleen gericht is op het publiceren van evenementen op het Web of Data.[36] Tabel 3.1 vat de verschillende termen in LODE samen15 . Elke eigenschap heeft een domein, dit is het datatype dat een resource moet hebben om de eigenschap erover te mogen beschrijven. Ook heeft elke eigenschap een range, dit is het datatype dat het object of de literal waarnaar de eigenschap verwijst, moet hebben. Met behulp van dit overzicht kunnen evenementen altijd via RDF statements van deze vorm beschreven worden: <eventURI> <propertyURI> <descriptionObjectURI> . Een kort dummyvoorbeeld is: example:event1126583 rdf:type lode:Event . example:event1126583 lode:atPlace example:location12345 . In de tabel wordt gebruik gemaakt van een aantal prefixen van ontologie¨en en vocabularies. De daarmee overeenkomende namespace URIs zijn: lode http://linkedevents.org/ontology/ (LODE) dul http://www.loa-cnr.it/ontologies/DUL.owl# (DOLCE+DnS UltraLite) owltime http://www.w3.org/2006/time# (OWL-TIME) owl http://www.w3.org/2002/07/owl# (OWL) geo http://www.w3.org/2003/01/geo/wgs84_pos# (WGS84 Geo Positioning RDF vocabulary) Met LODE achter de hand kan de evenementendatabase nu in RDF beschreven worden. 14
http://linkedevents.org/ontology/ Het type van elke term wordt er simplistisch voorgesteld ter vereenvoudiging. Om volledig en technisch correct te zijn: de Turtle-notatie van het type klasse is owl:Class, die van eigenschap is owl:ObjectProperty. 15
eigenschap
eigenschap
eigenschap
eigenschap
lode:inSpace
lode:involved
lode:involvedAgent
lode:Event
Domein n.v.t. lode:Event
owltime: TemporalEntity eigenschap voor een owl:Thing, gebruikt om een evene- owl:Thing ment aan te duiden waarover het owl:Thing (typisch een mediabestand) meer informatie geeft. wijst een regio aan, bijvoorbeeld West-Vlaanderen, lode:Event waarin de gebeurtenis zich ergens voordeed. verwijst naar een fysisch, sociaal of denkbeeldig object lode:Event dat betrokken is bij het beschreven evenement. duidt een persoon, groep, organisatie of software agent lode:Event aan die betrokken is bij een evenement.
lode:illustrate
lode:circa
lode:atTime
Type Definitie klasse Een evenement of gebeurtenis die heeft plaatsgevonden. eigenschap duidt een plaats aan waarop een evenement plaatsvindt — waarden die aan deze property gekoppeld worden kunnen zowel absoluut benoemde plaatsen (bijvoorbeeld Kortrijk ) als relatief beschreven locaties (bijvoorbeeld ongeveer 13 km ten zuidwesten van Ca¨ıro) zijn. eigenschap verwijst naar een subjectieve beschrijving van een moment of een tijdsinterval waarop de beschreven gebeurtenis zich heeft voorgedaan. eigenschap duidt de tijdsspanne van een evenement aan met behulp van precies beschreven dagen en tijden.
Term lode:Event lode:atPlace
Tabel 3.1: Een overzicht van de termen in LODE.
dul:Agent
dul:Object
geo:SpatialThing
lode:Event
owltime: DateTimeInterval
owltime: TemporalEntity
Range n.v.t. dul:Place
3.2 Omzetting van de evenementendatabase naar RDF-formaat 43
3.3 Genereren van verrijkingen met Silk
3.2.4
44
Opstellen van de D2RQ-mapping
De evenementendatabase die werd omgezet, bevat informatie over 49236 evenementen in Vlaanderen, waarvan de meeste plaatsgevonden hebben tussen 2006 en 2010. In appendix A.1 is een ERD van de structuur van de evenementendatabase afgebeeld. De interne structuur van de database was ingewikkeld en vooral de centrale event-tabel bevatte een groot aantal kolommen. De database volledig normaliseren en vervolgens een mapping opmaken zodat de volledige structuur kan worden overgezet naar RDF-formaat is dus een monnikenwerkje dat buiten de scoop van dit onderzoek valt. Dit onderzoek richt zich op het genereren van provenance metadata over verrijkingen die gemaakt kunnen worden uit deze evenementendata. Daarom werd de database slechts gedeeltelijk omgezet voor gebruik in het proof of concept: enkel basisinformatie over evenementen werd behouden, zoals starttijden, locaties en betrokken personen. Het spreekt voor zich dat dit een volledig aangepaste versie is van de automatisch gegenereerde mapping die opgemaakt werd met de component generate-mapping tijdens het opzetten van het D2RQ Platform. Die basisversie is immers niet gelinkt aan ontologie¨en op het web, en is dus niet bruikbaar op het Web of Data. De volledige opgemaakte mapping is te vinden in bijlage A.2. Met commentaar worden de belangrijke delen verduidelijkt. Nu er een RDF-dataset aangemaakt is, kan de evenementeninformatie verrijkt worden.
3.3
Genereren van verrijkingen met Silk
In de literatuurstudie werd beschreven wat verrijkingen zijn. Ze vergemakkelijken disambiguaties en verhogen de waarde van een dataset en worden manueel aangebracht of semiautomatisch gegenereerd. Deze masterproef richt zich op de semi-automatische aanmaak van verrijkingen. De dataset die gebruikt wordt in de proof of concept bevat dan ook informatie over bijna 50000 evenementen, niemand zal staan trappelen om die allemaal met de hand te mogen gaan linken met andere datasets. Het publicatieproces van linked data werd in de literatuurstudie al besproken aan de hand van 2 theoretische modellen. Verrijking komt overeen met hetdata integration-proces in het model van Hausenblas, Auer noemde verrijking onder de term interlinking/fusing. In elk geval kan besloten worden dat verrijking een belangrijke stap vormt in het publicatie van linked data.
3.3 Genereren van verrijkingen met Silk
45
De bekendste linked data verrijkingsraamwerken zijn Silk16 , Limes17 en Sieve18 . Deze raamwerken zijn zeer vergelijkbaar. De keuze is gevallen op Silk.
3.3.1
Silk Link Discovery Framework
Silk19 , voluit Silk Link Discovery Framework, is een platformonafhankelijk framework dat RDF links (verrijkingen) aanmaakt tussen datasets door ze te bevragen via hun SPARQL endpoint.[39, 27] Net als bij D2RQ is er weer een configuratiebestand vereist. Dat draagt Silk op welke resources er moeten worden opgehaald uit de beide datasets, op basis van welke criteria er echt over een verrijking kan worden gesproken en in welke van de twee datasets er een link moet worden aangebracht. Figuur 3.4 verduidelijkt dit opzet. Silk steunt op eigenschapsgebaseerde verrijking, de methode die al in de literatuurstudie werd besproken. Er bestaan 4 varianten van Silk: Silk Single Machine wordt gebruikt om verrijkingen te genereren op een desktop-PC. Silk MapReduce wordt gebruikt op Amazon Elastic MapReduce instances en is gebaseerd op Hadoop. Deze variant wordt gebruikt om verrijkingen te genereren tussen enorme datasets, doordat ze kunnen worden uitgerekend op een cluster van meerdere machines. Op deze manier worden de hoge computationele vereisten voor dergelijke grootschalige verrijkingsprojecten toch nog gehaald. Silk Server is een variant die op een servermachine kan worden ge¨ınstalleerd en via een HTTP API kan worden aangesproken. Silk Workbench wordt op de offici¨ele pagina niet als een variant gerekend, maar kan toch als zodanig worden beschouwd. Het is in feite niets meer dan een web applicatie die, in tegenstelling tot de vorige varianten, de gebruiker een grafische interface biedt om configuraties van verrijkingen op te stellen, ze te beheren en uit te voeren. Alle varianten steunen op de Silk Link Discovery Engine. Deze leest de verrijkingsconfiguratie in, voert ze uit en schrijft de resultaten weg. De engine maakt gebruik van effici¨ente caching en multi-threading en haalt daarom zeer hoge prestaties. 16
Figuur 3.4: Grafische illustratie van het gebruik van Silk.
3.3.2
Silk-LSL
De verrijkingsconfiguratie wordt bijgehouden in een tekstbestand en is neergeschreven in Silk-LSL: de Silk Link Specification Language 20 . Deze XML-gebaseerde syntax bestaat uit een aantal belangrijke delen: Prefixes: Verderop in de verrijkingsconfiguratie kan steeds een prefix gebruikt worden om de notatie van URI’s te verkorten, zoals de gewente is in Turtle. Daarom worden de gebruikte prefixen en de daarmee overeenkomende namespaces bovenaan in de configuratie gedeclareerd. DataSources: Deze sectie beschrijft de verschillende datasets waartussen verrijkingen moeten worden aangelegd. Een noodzakelijke parameter in deze sectie is de SPARQL 20
endpoint URI, zodat Silk weet tijdens het uitvoeren op welk adres de datasets moeten bevraagd worden. Interlinks: Het genereren van een verrijking komt neer op het beschrijven van een RDF link tussen twee resources die zich elk in een dataset uit de sectie DataSources bevinden. De parameters die voor zo’n set-up moeten worden opgegeven, worden gebundeld onder de naam Interlink. Zoals de naam van de sectie (Interlinks) duidelijk maakt, stelt dit onderdeel van de configuratie de gebruiker in staat om meer dan ´e´en Interlink te specifi¨eren. Op die manier kunnen in een verrijkingsconfiguratie bijvoorbeeld zowel een Interlink staan die beschrijft hoe links moeten worden gegenereerd tussen DBpedia21 en MusicBrainz22 — ´en Interlink voor het aanmaken van verrijkingen tussen een eigen dataset en de World Fact Book van de CIA23 .
Een Interlink bestaat op zijn beurt uit 6 grote delen: Een LinkType: legt Silk op welke RDF property er moet gebruikt worden om twee resources aan elkaar te linken in een verrijkingsstatement, bijvoorbeeld owl:sameAs of rdfs:seeAlso. Een SourceDataset: een dataset die eerder in de configuratie werd opgegeven (in de sectie DataSources), vanwaar de link moet vertrekken. Een TargetDataset: de dataset waar de links naar moeten verwijzen Een LinkageRule: op basis van de voorwaarden in deze sectie moeten resources met elkaar vergeleken worden. De vergelijkingsalgoritmes die dit voor hun rekening nemen, drukken de mate van overeenkomst uit in een afstand, kwestie van aan de overeenkomst een getal te kunnen toekennen. Hoe groter de overeenkomst, hoe kleiner de afstand — en omgekeerd. Die afstand wordt voor elke kandidaat-verrijking berekend. De vergelijkingsvoorwaarden worden opgebouwd met vergelijkingsalgoritmes (stringvergelijkingen bijvoorbeeld), aggregaten (zoals een gewogen gemiddelde) en transformaties (bijvoorbeeld vervangingen van karakters in strings). Een Filter: hoe lager de afstandsscore van een bepaalde link, hoe hoger de betrouwbaarheid (confidence) op overeenkomst tussen de twee resources die gelinkt worden. De 21
betrouwbaarheidsscores van LinkageRules die deze threshold -waarde niet overschrijden, maken geen kans om als verrijking te worden bestempeld. Ze worden als het ware weggegooid in de loop van het verrijkingsproces. Outputs: deze sectie geeft Silk instructies over waar de resulterende verrijkingen moeten weggeschreven worden. Ook tijdens dat proces, dat het allerlaatste is dat Silk doorloopt, is er nog een kans om verrijkingen te filteren. Op die manier kunnen de links waarvan de betrouwbaarheidsscore groot genoeg is, direct worden weggeschreven als geldige verrijkingen. De overige —meer twijfelachtige — links kunnen naar een ander bestand worden geschreven, zodat die manueel kunnen geverifieerd worden.
3.3.3
Configuratie van Silk voor het genereren van plaatsverrijkingen
Voor het proof of concept werd een configuratie opgesteld die links legt tussen locaties in de eigen evenementendataset en plaatsen in DBpedia24 . Deze configuratie (met commentaar ter verduidelijking) is als volgt: 1 2 <S i l k> 3 < !−− 4 SILK ENRICHMENT CONFIGURATION FILE 5 6 This c o n f i g u r a t i o n e n r i c h e s t h e e v e n t l o c a t i o n r e s o u r c e s i n t h e l o c a l dataset . 7 These l o c a t i o n s a r e l i n k e d w i t h c i t i e s i n t h e DBpedia d a t a s e t ( h t t p : // dbpedia . org ) , 8 as l o n g as t h e y meet t h e g i v e n l i n k c o n d i t i o n s . 9 −−> 10 11 < !−− P r e f i x e s used i n t h e c o n f i g u r a t i o n b e l o w : −−> 12
P r e f i x e s> < !−− D e s c r i b i n g t h e d a t a s e t s t h a t c o n t a i n t h e r e s o u r c e s t h a t s h o u l d be i n t e r l i n k e d d u r i n g t h e e n r i c h m e n t p r o c e s s : −−> < !−− For more i n f o r m a t i o n a b o u t t h i s DataSources s e c t i o n , c h e c k h t t p s : //www. a s s e m b l a . com/ w i k i / show / s i l k / D a t a S o u r c e s . −−> <Param name=” endpointURI ” v a l u e=” h t t p : // l o c a l h o s t : 8 8 9 0 / s p a r q l ” /> < !−− ” h t t p : // l o c a l h o s t : 2 0 2 0 / s p a r q l ” f o r D2R S e r v e r . −−> <Param name=” r e t r y C o u n t ” v a l u e=” 3 ” /> DataSource> <Param name=” endpointURI ” v a l u e=” h t t p : // dbpedia . o r g / s p a r q l ” /> <Param name=” graph ” v a l u e=” h t t p : // dbpedia . o r g ” /> <Param name=” r e t r y C o u n t ” v a l u e=” 3 ” /> DataSource> DataSources> < !−− Uncomment t h e b l o c k i n g c o n f i g u r a t i o n b e l o w t o s p e e d up e n r i c h m e n t by e n t e r i n g a s p e c i f i c number o f b l o c k s . When t h e r e i s no amount o f b l o c k s s p e c i f i e d ( f o r i n s t a n c e i f t h i s p a r t o f t h e c o n f i g u r a t i o n i s k e p t b e t w e e n comment t a g s ) , t h e default amount o f b l o c k s t h a t i s used by s i l k i s 1 0 0 . Compromise: not a l l e n r i c h m e n t l i n k s may be found due t o a bad c h o i c e o f b l o c k amount . Most o f t h e time , 100 ( t h e default ) i s a good s e t t i n g . −−> < !−− −−> < !−− D e f i n i n g t h e l i n k c o n d i t i o n s : −−> < I n t e r l i n k s> < I n t e r l i n k i d=” c i t i e s ”>
r d f s : s e e A l s o LinkType> <S o u r c e D a t a s e t d a t a S o u r c e=” e v e n t d a t a ” var=” e v d c ”> ? evd c r d f : t y p e dul:Place R e s t r i c t T o> S o u r c e D a t a s e t> < !−− Only B e l g i a n p l a c e r e s o u r c e s w i t h l a b e l s ( names ) i n d u t c h must be downloaded from DBpedia , b e c a u s e t h e e v e n t d a t a s e t on l o c a l h o s t o n l y c o n t a i n s d u t c h p l a c e names . −−> ? dbp c r d f : t y p e dbpedia−o w l : P l a c e . ? dbp c dbpedia−o w l : c o u n t r y d b p e d i a : B e l g i u m . ? dbp c r d f s : l a b e l ? l a b e l . FILTER ( l a n g ( ? l a b e l ) = ” n l ” ) R e s t r i c t T o> T a r g e t D a t a s e t> < !−− For more i n f o r m a t i o n a b o u t t h i s L i n k a g e R u l e s e c t i o n : go t o h t t p s : //www. a s s e m b l a . com/ w i k i / show / s i l k / L i n k a g e R u l e −−> < !−− By removing b l a n k s ( w h i t e s p a c e s ) , s t r i n g s l i k e ” Lubbeek ” and ” Antwerpen 2 ” ( a f t e r alphaReduce ) w i l l g e t e n r i c h e d . −−> < !−− removing numbers from t h e s t r i n g : t h i s w i l l make i t p o s s i b l e t o e n r i c h s t r i n g s l i k e ” Antwerpen 2 ”. −−> < !−− converting to lowercase:
t h i s w i l l make i t p o s s i b l e t o even e n r i c h s t r i n g s l i k e ”SINT−PIETERS−WOLUWE” . −−> < !−− ” vcard2006: ” avoiding disambiguation problems with ” v c a r d : ” = ” h t t p : //www. w3 . o r g /2001/ vcard−r d f /3.0# ” I f ” v c a r d : ” was used , no e n r i c h m e n t l i n k s would be found ! −−> TransformInput> TransformInput> TransformInput> < !−− remove w h i t e s p a c e s . This makes e n r i c h m e n t o f ” DePinte ” i n t h e e v e n t d a t a s e t ( b e c a u s e w h i t e s p a c e s a r e s t r i p p e d t h e r e ) p o s s i b l e w i t h t h e s t r i n g ”De P i n t e ” i n t h e DBpedia d a t a s e t . −−> < !−− Removing s t r i n g p a r t s l i k e ” ( gemeente ) ” i n t h e DBpedia c i t y names . −−> < !−− alphaReduce i s not n e c e s s a r y on t h e DBpedia d a t a items , t h o s e do not c o n t a i n numbers . −−> < !−− converting to lowercase: ”SINT−PIETERS−WOLUWE” i n t h e e v e n t d a t a s e t i s c o n v e r t e d t o ” s i n t −p i e t e r s −woluwe ” b u t must match w i t h ” S i n t − P i e t e r s −Woluwe” i n DBpedia ( i f a r e s o u r c e w i t h t h a t name e x i s t s t h e r e ) . −−> TransformInput> <Param name=” s e a r c h ” v a l u e=” ( s t a d ) ” /> <Param name=” r e p l a c e ” v a l u e=” ” /> TransformInput> <Param name=” s e a r c h ” v a l u e=” ( gemeente ) ” /> <Param name=” r e p l a c e ” v a l u e=” ” />
TransformInput> <Param name=” s e a r c h ” v a l u e=” ( B e l g i ¨e ) ” /> <Param name=” r e p l a c e ” v a l u e=” ” /> TransformInput> TransformInput> LinkageRule> < !−− One DBpedia p l a c e r e s o u r c e o n l y f o r each and e v e r y e v e n t p l a c e : −−> < F i l t e r l i m i t=” 1 ” /> < !−− This s e c t i o n s p e c i f i e s t h e f i l e l o c a t i o n s f o r t h e e n r i c h m e n t o u t p u t . −−> < !−− F i l e for the accepted enrichments ( t h e i r c o n f i d e n c e s c o r e i s h i g h enough ) : −−>