Publicatie:Linked open data publicatie van (metadata over) periodieke publicaties
De publicatie beschrijft de resultaten van de proof of concept die wordt uitgevoerd binnen de het project KX-files ontrafeld. Periodieke publicaties ontsloten. Tijdens dit project wordt gewerkt rond de registratie en verrijking van data over analoge en digitale jaarlijkse uitgaven van middenveldorganisaties, zoals jaarverslagen, programma's en jaarboeken.
In de proof of concept zal een beperkte testset van de verrijkte collectiedata uit het project beschikbaar gesteld worden als linked open data om het potentieel ervan te onderzoeken. Per deelcollectie (KX1, KX2, enzovoort) wordt onderzocht of de gegevens in aanmerking komen voor publicatie als (linked) open data en hoe dit kan opgezet worden. Volgende vragen zullen o.a. beantwoord worden: Welke data komen in aanmerking? Via welke platformen kunnen de data best verspreid worden? Hoe worden deze data gefilterd en geëxporteerd? Hoe worden de data beschikbaar gemaakt? Hoe kan het gebruik gemeten worden? Welke processen kunnen (semi-)automatisch verlopen? Is er een evenwicht tussen de kosten en de baten?
De resultaten van deze proof of concept zijn direct toepasbaar op andere collecties van periodieke publicaties, zoals tijdschriften en dagbladen.
Titel | Linked open data publicatie van (metadata over) periodieke publicaties (Voorkeurstitel) |
Locatie | Rapport project KX-Files ontrafeld. Periodieke publicaties ontsloten: instructie linked open data publicatie via Wikidata en conclusie van de proof of concept |
Uitgever | |
Jaar van uitgave | 2021 |
Rechten | CC-BY |
Persistent ID |
Auteurs
- Thomas Dirkx (KADOC)
- Katrien Weyns (KADOC)
Inleiding
KADOC wil de collectie periodieke publicaties (KX-collectie) onder de aandacht brengen van een breed publiek d.m.v. publicatie van de metadata als linked open data (LOD) in Wikidata. De metadata zijn zo beschikbaar voor hergebruik in de Wikimedia community en elders.
Er werd gekozen om metadata te verspreiden via Wikidata, omdat dit het beste aansluit bij de doelstelling om data naar een ruimer publiek te verspreiden. Er bestaan reeds links tussen Wikidata en andere LOD-bronnen zoals VIAF en DBpedia, zodat de data effectief verder verspreid worden. Er is ook een integratie met Wikipedia, een zeer laagdrempelige bron die gebruikt wordt door een breed publiek.
Vooral basisdata uit de bibliotheekcatalogus Alma en vooral data die kan gekoppeld worden aan andere bronnen komen in aanmerking, zoals titel, imprint, uitgever, taal, gerelateerde id’s van ODIS. Gegevens betreffende alleenstaande publicaties komen niet in aanmerking voor opname in Wikidata, maar reeksen en periodieken wel. Dit is een geldende afspraak die afgetoetst werd met de Wikimedia-community via meemoo. Dit wil zeggen dat congresverslagen, die zich veelal tussen monografie en periodiek bevinden niet geschikt zijn. Een kopie van de cover uit de KX-collectie is veelal niet interessant om te publiceren. Het gros van de publicaties bevat een titel op een onaantrekkelijke cover.
De metadata zelf kunnen als open data gepubliceerd worden. Zij zijn niet auteursrechtelijk beschermd. Op het gros van de inhoud rust er nog wel auteursrecht.
In Wikidata worden de publicatiegegevens uit de bibliotheekcatalogus Alma gekoppeld aan gegevens over organisaties uit ODIS. Zonder context over deze organisaties heeft de dataset weinig waarde en weinig kans om hergebruikt te worden. De gegevens over organisaties worden daarom als eerste opgenomen in Wikidata.
Workflow:
- Export van data over organisaties uit ODIS
- Export van data over publicaties uit Alma
- Datacleaning in OpenRefine
- Data reconciliation in OpenRefine
- Uploaden naar Wikidata (met QuickStatements)
Enkele uitgewerkte voorbeelden: organisatie https://www.wikidata.org/wiki/Q45751046 en publicatie https://www.wikidata.org/wiki/Q100368639
Onder punt 7 zijn in dit document de resultaten en conclusies van de proof of concept opgenomen. Onder punt 8 is een overzicht opgenomen van relevante Wikidata terms en statements voor periodieke publicaties (voor KADOC) inclusief mapping naar MARC21-tags.
Export van data over organisaties uit ODIS
Gegevens van organisaties worden geëxporteerd uit ODIS als CSV. Het gaat om organisaties die gelinkt zijn aan de publicaties. Minstens volgende elementen worden geëxporteerd.
- odis id
- titel
- datering
Deze gegevens worden eerst geïmporteerd in OpenRefine en Wikidata, ga direct naar punt 3 en volgende. Daarna worden de data uit Alma in OpenRefine en Wikidata opgeladen en gelinkt aan de eerste dataset uit ODIS.
Export van data over publicaties uit Alma
Stel een set in Alma samen en exporteer die.
Set analoge KX-records:
- Zoek in Alma Quick Search via ‘Physical title’ op de call number = KX (zie screenshot hieronder)
- Filter het zoekresultaat zodat enkel Material Type ‘journals’ overblijven. Zo worden de meeste stuksgewijze beschrijvingen weg gefilterd.
- Bewaar de set voorlopig onder een naam bv. [JJJJMMDD]_KX_journal. In een volgende stap moeten de laatste stuksbeschrijvingen verwijderd worden.
- Open de set opnieuw en filter nu verder op Resource type ‘serial component part’. Bewaar de set onder een naam bv. [JJJJMMDD]_KX_serial_component.
- Combineer vervolgens de set [JJJJMMDD]_KX_journal met JJJJMMDD]_KX_serial_component (met de not-functie) zodat de serial components verwijderd worden.
- Bewaar de gecombineerde set onder een naam bv. [JJJJMMDD]_KX_analoog, want dit bevat enkel analoge exemplaren. Nu moet er een set opgemaakt worden voor de digitale titels. Beide sets moeten daarna gecombineerd worden.
Set digitale KX-records:
- Zoek in Alma Quick Search via ‘Digital titles’ op Keywords = KXE.
- Volg dezelfde stappen als hierboven:
- filter op Material types ‘journals’ en sla voorlopig op.
- filter verder op Resource type ‘serial component part’ en sla die subset op.
- combineer de sets met de not-functie.
- bewaar de gecombineerde set onder een naam bv. [JJJJMMDD]_KX_digitaal.
Combineer de sets KX_digitaal en KX_analoog:
- Ga naar de set KX_analoog en combineer die met KX_digitaal met de or-functie.
- Bewaar de set via ‘Save Query’ met naam “[JJJJMMDD]_Wikidata_KX_export” als een publieke set. Zo kunnen collega’s later zien wat opgenomen is in Wikidata en wanneer. Door het combineren van de sets is alles al Itemized (dus statisch).
- Vraag van deze set de Limo URL’s op samen met het MMS id.
Exporteer de set [JJJJMMDD]_Wikidata_KX_export naar een Marc-record:
- Admin > Run a job > Export bibliographic records.
- Zoek de set [JJJJMMDD]_Wikidata_KX_export en selecteer deze.
- Kies volgende instellingen en druk Submit:
Je zou ook een XML kunnen extraheren, maar dat gaf geen goed resultaat bij het inladen in OpenRefine en Excel. Ik koos om enkel relevante velden van het MARC-record om te zetten naar CSV via MarcEditor.
- De export kan even duren en blijven staan in de tab Running. Na afronding staat het resultaat onder de tab History. Klik op de naam van het record > in het volgende scherm op de link to exported record > in het volgende scherm op de drie punten achteraan en kies ‘download’.
Converteer en filter het Marc-record naar een CSV met bv. MARC Edit:
- Kies in MarcEdit: Tools > Export > Export Tab Delimited Records
- Neem volgende MARC-tags op in de CSV (of laad ze op): o 001
- 008$35
- 008$36
- 245$a
- 245$b
- 247$a
- 247$g
- 260$a
- 260$b
- 260$c
- 264$a
- 264$b
- 264$c
- 650$2
- 650$a
- 650$6
- 340$a
- 710$a
- 893$a
- 653$a
- 852$h
- Sla de CSV op de file server op met in de bestandsnaam minstens de datum van de export bv. [JJJJMMDD]_Wikidata_KX_export en voor de URL’s to aan de hand van de MMS id’s. Dit bestand is een referentie voor volgende imports in Wikidata.
Datacleaning in OpenRefine
Introductievideo door meemoo: https://vimeo.com/453961913
In OpenRefine wordt de geëxporteerde dataset opgeladen als bv. CSV om de gegevens op te schonen, aan te vullen en klaar te maken voor upload in Wikidata.
Instructievideo bij deze stap door meemoo: https://vimeo.com/455450747
Download OpenRefine via: https://OpenRefine.org/download.html
Open OpenRefine via de .exe of de shortcut die aangemaakt werd en maak een project aan
Kies bij ‘Create Project’ voor ‘Choose Files’, selecteer de CSV die je aanmaakte in stap 1 of 2 en klik ‘Next’. Reeds aangemaakte projecten open je via ‘Open Project’.
- Nu zie je een preview van de lijst.
- De projectnaam kan je bovenaan aanpassen.
- Kies voor UTF-8 als character encoding
- ‘Parse next’ aanpassen indien nodig (bepaalt of bovenste regel correct wordt meegenomen
- Klik rechts bovenaan op ‘Create Project’ om in bewerkingsmodus te gaan
- Je kan kolommen verslepen via Dropdown-menu all (helemaal vooraan) > edit columns > re-order/remove Columns.
Bepaal vooraf hoe je de data wilt Een sjabloon met relevante Wikidata terms en statements voor periodieke publicaties inclusief mapping naar MARC21-tags vindt je in bijlage.
Via het Dropdown-menu per kolom voer je de meeste bewerkingen uit:
- Hernoemen: edit column > rename this column
- Verwijderen: edit column > remove this column
- Overzicht per kolom voor grote datasets a.d.h.v. ‘facets’: facet > tekst facet
- Aan linkerkant venster met alle opties in die kolom met aantallen (bv. ook om te zien of een kolom echt leeg is als je niet alle resultaten tegelijk kan bekijken)
- Door je muis over de opties te houden krijg je ‘edit’ te zien. Dit kan je gebruiken om bepaalde waarden aan te passen en data op te schonen, bv. als er inconsistenties zoals typefouten tussen de opties zitten.
- Splitsen van kolommen: edit column > split into several columns
- Je kan best een komma of ander teken gebruiken als separator
- Selecteer separator
- Vink ‘Remove this column’ aan of uit om gesplitste kolom al dan niet te verwijderen
- Druk vervolgens op ‘OK’
- Je kan best een komma of ander teken gebruiken als separator
- Samenvoegen van kolommen: edit column > Add column based on this column
- Gebruik het dropdown-menu van één van de kolommen die je wilt samenvoegen
- Geef een nieuwe naam in
- In het kader met ‘value’ vul je aan welke kolom je wilt toevoegen gebruikmakend van een GREL-expression (General Refine Expression Language)
- Gebruik het dropdown-menu van één van de kolommen die je wilt samenvoegen
- value + cells[‘naam van de kolom die je wilt toevoegen’].value
- bv. de datering (onzekere datering [ ] en s.d.) gelijktijdig aanpassen via GREL-expression
- Edit cell > replace: s.d. = [1901C]
- Add column based on this column: value.replace (‘[‘, ‘circa_’)
- Vervolgens kolom splitsen op _ en enkel ‘circa’ bewaren via het filteren van facets en verwijderen van andere waarden
- in de originele kolom de [ ] opkuisen via Edit cell > replace: [ = leeg en daarna ] = leeg
- bv. een spatie tussen de twee waarden aanmaken je door een spatie tussen aanhalingstekens toe te voegen (‘ ‘) zoals in onderstaand voorbeeld:
- Druk vervolgens op ‘OK’
Data reconciliation in OpenRefine
Reconciliëren = automatisch termen en namen matchen met bestaande records in databanken Instructievideo bij deze stap door meemoo: https://vimeo.com/456461500/a56d6d0ec2
Om te reconciliëren:
- Dropdownmenu op kolom die je wil reconciliëren > reconcile > start reconciling
- Selecteer Wikidata
Het linkervak toont suggesties over wat je wil reconciliëren.
- Indien dit niet klopt kan je daaronder selecteren: ‘reconcile against type’ en invoeren als je precies weet wat je zoekt. Anders kan je ‘reconcile against no particular type’ aanvinken.
- ‘Auto-match candidates with high confidence’ uitvinken.
- Klik ‘start reconciling’. Voorstellen worden getoond in de kolom.
- Selecteer het juiste item, indien nodig kan je dit controleren door te klikken en naar de Wikidata-pagina te gaan.
- Je kan kiezen om enkel de geselecteerde cel te reconciliëren of voor alle identieke cellen.
- Een groene balk verschijnt onder de kolomtitel met het percentage van gereconcilieerde cellen. Voor de upload naar wikidata moet dit telkens 100% zijn.
- Je kan de facet-functie per kolom gebruiken om te zien welke al gereconcilieerd zijn en welke nog niet: Dropdown-menu kolom > reconcile > facets > by judgement
- Het is ook een optie om de match manueel te zoeken met: ‘search for match’
Indien er geen matches zijn: manueel record aanmaken
- Eerst manueel controleren op wikidata.org of er echt geen match bestaat, want je wilt geen dubbels aanmaken.
- Indien niet: links ‘create a new item’ klikken
Ter info: in OpenRefine kan je tenslotte ook data uit gereconcilieerde waarden trekken.
- Dropdown-menu > edit column > add columns for reconciled values
- Hiermee kan je allerlei waarden opvragen uit Wikidata en toevoegen in je dataset als een nieuwe kolom
Uploaden naar Wikidata (met QuickStatements)
Instructievideo voor deze stap door meemoo: https://vimeo.com/meemoo/review/458099328/a20fec3f26
Alle kolommen die je wilt reconciliëren, volledig reconciliëren!
- Dus als er geen matches zijn, kies voor: ‘Create new item’
Voor de upload maak je eerst een schema aan in OpenRefine (bij vookeur in Firefox):
- Dit schema specifieert hoe je gegevens in Wikidata geïmporteerd worden. Maak gebruik van het sjabloon in bijlage om je schema vorm te geven.
- Klik rechts bovenaan op wikidata extensions > edit wikidata schema.
- Begin met de kolom die de ruggengraat vormt, bv. titel, en sleep die kolom naar het vakje.
Maak een onderscheid tussen:
- Terms = tekstvelden met informatie over het object: ‘labels’, ‘descriptions’, ‘also known as’
- Toevoegen labels: via ‘add items’ o Je moet altijd een label toevoegen
- Taal selecteren
- In het veld erna opnieuw de hoofdkolom slepen (bv. titel)
- Description toevoegen (altijd nodig!)
- ‘Issues’-tabblad bovenaan geeft aan waar problemen zijn of iets ontbreekt
- Toevoegen labels: via ‘add items’ o Je moet altijd een label toevoegen
- Statements = gestructureerde triple statements om de data weer te geven
- Via ‘Add statement’, in eerste vakje naam statement of P-code typen, in het tweede de titel van de kolom selecteren via slepen bv. ‘Instance of’ = ‘periodical’. o Bij elke statement kan je volgende specificeren:
- Add qualifier: statement over een statement Bv. bij een datering ‘circa’ toevoegen
- Add reference: referenties
- Idealiter worden deze bij alle statements toegevoegd.
- Verwijs liefst naar specifieke url’s: ‘reference URL’
- Indien niet ‘official website’
- Add value. Bv. specifiekere beschrijvingen
- Andere statements:
- Zie lijst van properties die je kan invoegen als statement in bijlage.
- Via ‘Add statement’, in eerste vakje naam statement of P-code typen, in het tweede de titel van de kolom selecteren via slepen bv. ‘Instance of’ = ‘periodical’. o Bij elke statement kan je volgende specificeren:
Je kan controleren op het ‘preview’ tabblad hoe een wikidatafiche er zal uit zien.
- Twee manieren om het schema te uploaden:
- 1. Via OpenRefine: Extensions > Wikidata > Upload edits to Wikidata
- De upload wordt ongecontroleerd uitgevoerd. Je weet niet precies welke data niet zijn opgeladen. Verkies daarom upload via QuickStatements
- 2. Via OpenRefine: Extensions > Wikidata > Export to QuickStatements
- QuickStatements = Code die de verschillende statements verpakt zodat Wikidata het kan lezen. Dit heeft het voordeel dat je de verschillende uploads die je doet, kan bewaren om deze te controleren en op te volgen.
- Er wordt geëxporteerd naar een tekstfile. Bewaar het bestand en open het. Kopieer alle tekst (de code) via ctrl+a en ctrl+c.
- Ga naar QuickStatements.toolforge.org om de dataset in batch op te laden via de gekopieerde code.
- Login (rechts boven) met je Wikimedia-account zodat je batch gelogd wordt.
- ‘New batch’ kiezen en naam geven, daarna alle code plakken in het vak
- Klik op de knop eronder: ‘import quick statements’ zodat alle gegevens worden ingeladen. Kijk of er fouten zijn (rechts onder ‘fouten’ kiezen en los deze eventueel eerst op.
- klik onderaan op ‘Start op de achtergrond’ om de import van QuickStatements in Wikidata te starten in batch en om die batch te bewaren.
- De foutmelding ‘Edit group not found.’ Los je op door in te loggen in editgroups: https://editgroups.toolforge.org/ met je Wikimedia-account
- 1. Via OpenRefine: Extensions > Wikidata > Upload edits to Wikidata
Resultaten en conclusies van de proof of concept
- http://www.wikidata.org/entity/Q100368638
- http://www.wikidata.org/entity/Q100368639
- http://www.wikidata.org/entity/Q100368640
- http://www.wikidata.org/entity/Q100368641
- http://www.wikidata.org/entity/Q100368642
- http://www.wikidata.org/entity/Q100368643
- http://www.wikidata.org/entity/Q106288145
- http://www.wikidata.org/entity/Q106288147
- http://www.wikidata.org/entity/Q106288148
- http://www.wikidata.org/entity/Q106288149
- http://www.wikidata.org/entity/Q106288151
- http://www.wikidata.org/entity/Q106288152
- http://www.wikidata.org/entity/Q106288154
- http://www.wikidata.org/entity/Q106288155
- http://www.wikidata.org/entity/Q106288156
- http://www.wikidata.org/entity/Q106288157
- http://www.wikidata.org/entity/Q106288158
- http://www.wikidata.org/entity/Q106288160
- http://www.wikidata.org/entity/Q106288161
- http://www.wikidata.org/entity/Q106288162
- http://www.wikidata.org/entity/Q106288163
- http://www.wikidata.org/entity/Q106288164
- http://www.wikidata.org/entity/Q106288165
- http://www.wikidata.org/entity/Q106288167
- http://www.wikidata.org/entity/Q106288168
- http://www.wikidata.org/entity/Q106288170
- http://www.wikidata.org/entity/Q106288171
- http://www.wikidata.org/entity/Q106288172
- http://www.wikidata.org/entity/Q106288173
- http://www.wikidata.org/entity/Q106288174
- http://www.wikidata.org/entity/Q106288175
Door gebruik te maken van de tools QuickStatements en OpenRefine kunnen geëxporteerde datasets van KADOC semi-geautomatiseerd en gecontroleerd ingeladen worden in Wikidata. Via de reconciliate-functie van OpenRefine kunnen gegevens ook semi-automatisch gekoppeld worden aan andere data in Wikidata. Het valideren van de gegevens is wel tijdsintensief. Het risico op creatie van dubbele gegevens in Wikidata is daarbij groot. De oplossing is echter goed schaalbaar. Al bij al kunnen op een relatief korte tijd veel gegevens ingeladen worden.
Of de zichtbaarheid van de collectie daadwerkelijk verbeterd is, is moeilijk in te schatten. Aan de hand van tools als pageviews.toolforge.org kan je voor meerdere Wikidata items nagaan hoeveel pageviews ze hebben en welke items populair zijn. Dit kan een aanwijzing zijn van het hergebruik. Daarnaast kan je voor elk item via de optie What links here nagaan of er links zijn gelegd met andere items. Deze laatste optie kan je helaas niet in bulk opvragen. Er is ook weinig duidelijkheid en transparantie over het hergebruik van de data in bijvoorbeeld de infoboxen van Wikipedia-pagina’s. Er kan dus niet geconcludeerd worden dat publicatie op Wikidata direct de zichtbaarheid van de collectie verbetert, maar op langere termijn kan dat wel het geval zijn. De kans op hergebruik en visibiliteit zou vergroot kunnen worden door afbeeldingen van bijvoorbeeld een cover te linken. Voor de KX-collectie van KADOC gaat het echter om weinig aantrekkelijke afbeeldingen en is de meerwaarde wellicht beperkt.
BIJLAGE: Wikidata terms en statements voor periodieke publicaties inclusief mapping naar MARC21 tags
Bij elke statement wordt een persistente referentielink opgenomen die verwijst naar het ODIS PID of naar de KADOC catalogus (Limo). Deze lijst kwam tot stand op basis van de aanwezige data, https://www.wikidata.org/wiki/Wikidata:WikiProject_Periodicals en raadpleging van gelijkaardige Wikidata items. Een volledige overzicht van Wikidata properties vind je in List of properties en PropBrowse.
Property label | Wikidata id | Description | Note or example | MARC element |
---|---|---|---|---|
Term: Label | - | NL | 245$a; 245$b | |
Term: Description | - | NL en ENG | ‘Belgian periodical’; ‘Belgische periodiek’ | |
Term: Alias | - | Voorgaande of opvolgende titels. | 247$a; 247$b | |
Term: Title | P1476 | published title of a work, such as a newspaper article, a literary work, a website, or a performance work | Herhaling van het label. Bv. Q180445, Q20124, Q98925803 | 245$a; 245$b |
Instance of | P31 | that class of which this subject is a particular example and member | Default: ‘periodical’ (Q1002697) | Eventueel specificeren d.m.v.: 653$a |
Publication interval | P2896 | standard publication interval for daily or periodical publications | Default: ‘1’ en ‘year’ (Q577) | |
Country of origin | P495 | country of origin of this item (creative work, food, phrase, product, etc.) | Default: ‘Belgium’ (Q31) | |
Place of publication | P291 | geographical place of publication of the edition (use 1st edition when referring to works) | Stad of gemeente (reconcile) | 260$a; 264$a |
Publication date | P577 | date or point in time when a work was first published or released | Eerste datum verschijning. Om complexe datering toe te voegen: Date + qualifier: ‘earliest possible date’ of ‘latest possible date’ of ‘circa’ | 008$7 |
End time | P582 | time an item ceases to exist or a statement stops being valid | Laatste datum verschijning. Om complexe datering toe te voegen: Date + qualifier: ‘earliest possible date’ of ‘latest possible date’ of ‘circa’ | 008$11 |
Language of work or name | P407 | language associated with this creative work (such as books, shows, songs, or websites) or a name (for persons use ‘native language’ (P103) and ‘languages spoken, written or signed’ (P1412)) | Taal (reconcile) |
008$35; 008$36 |
Main subject | P921 | primary topic of a work (see also P180: depicts) | Bv. Corporatisme (reconcile) Qualifier: part of ‘Catholicism’ Qualifier: ODIS ID | 650$a; 650$6 |
Publisher | P123 | organization or person responsible for publishing books, periodicals, games or software | Bv. Q44996, Q165929, Q9684, Q1633717 (reconcile) | 260$b; 264$b; 710$a |
Location | P276 | location of the object, structure or event. In the case of an administrative entity as containing item use P131 for statistical entities P8138. In the case of a geographic entity use P706. Use P7153 for locations associated with the object. | Default: ‘KADOC’ (Q1846753) | |
Inventory number | P217 | identifier for a physical object or a set of physical objects in a collection | Signatuurnummer KADOC + Qualifier: P195 collection =‘KADOC’ (Q1846753) | 983$a; 852$h |
Collection | P195 | art, museum, archival, or bibliographic collection the subject is part of | ‘KADOC’ (Q1846753) + Qualifier: P217 inventory number | 983$a; 852$h |
Described at URL | P973 | item is described at the following URL | Limo URL of ODIS PID + Qualifier: P407 language of work | Inhoudscel |
Copyright status | P6216 | copyright status for intellectual creations like works of art, publications, software, etc. | Default : ‘copyrighted’ tenzij periodiek gestopt vóór 1920: ‘public domain’ + qualifier: P459 determination method ‘70 years after authors death’ | Inhoudscel |