TheaterEncyclopedie:Koppeling met Adlib

Uit TheaterEncyclopedie
Ga naar: navigatie, zoeken

>>> Werk in Uitvoering <<<

Deze pagina bevat informatie over de koppeling van de TheaterEncyclopedie met Adlib. Adlib is het collectie beheersysteem van de UvA-UB, waarin de Theatercollectie is geregistreerd. Het systeem is toegankelijk via de website theatercollectie.uva.nl.

Onder deze koppeling vallen in de huidige situatie (2018):

  • Script/bot voor het downloaden/uploaden van afbeeldingen
  • PHP-script voor het downloaden/kopiëren van gegevens uit Adlib naar de TheaterEncyclopedie (TINbot)
  • Procedure voor het toevoegen van producties aan Adlib en de TE
  • Richtlijnen voor het aanpassen en aanvullen van gegevens over bestaande producties (etc.) in Adlib en TE

Daarnaast is er een aantal noodzakelijke en/of wenselijke ontwikkelingen voor de koppeling:

  • Onderzoek naar het herschrijven van de huidige scripts in PHP versie 7
  • Onderzoeken en (mogelijk) ontwikkelen van alternatieven voor de huidige scripts

Huidige situatie (2018)

Script/bot voor het uploaden van afbeeldingen

Dagelijks (?) wordt met behulp van dit script afbeeldingen vanuit Adlib naar de Theaterencyclopedie overgebracht. Dit script maakt geen deel uit van de automatische dagelijkse "cronjob" om gegevens te importeren.

Gebruiker: Gebruiker:Tinbot Framework: Peachy wikibot

TINbot - PHP-script voor het kopiëren van gegevens naar de TE

Via een automatisch commando (cron-job - cron.sh) wordt iedere nacht een aantal scripts gestart:

  • filecache rebuild script (standaard MediaWiki maintenance script)
  • backupwiki script
  • people.php (standaard wordt dit script niet uitgevoerd)
  • productions.php (feitelijke TINbot script)

NB: Het script bestaat uit meer dan hierboven genoemd (library.php, adlib.class.php, adlibkeys.php, scripts-config.php etc.)

De api van de adlib-service is bereikbaar via de url: http://servicetin.adlibhosting.com/te4/wwwopac.ashx

korte beschrijving

(bron Documentatie#TINbot)

TINbot is een PHP script dat communiceert met de API van de Adlib database en de API van de wiki en elke nacht de Theaterencyclopedie bijwerkt. Alle voorstellingen die worden ingevoerd in bovengenoemde productiedatabase zijn ook zichtbaar op de Theaterencyclopedie. Tenminste, als zij over de drie vereiste datavelden beschikken, namelijk: titel-producent-premièredatum. Dit is de unieke code waarmee elke voorstelling een aparte pagina krijgt in de Theaterencyclopedie, de titel van een pagina bestaat namelijk uit deze drie elementen. Voor dit systeem is gekozen vanwege drie argumenten: 1. Uniek, 2. Doorzoekbaar, 3. Leesbaar

In de productiedatabase worden ook voorstellingen ingevoerd waarvan de premièredatum op dat moment onbekend is (die wordt dan hopelijk later aangevuld), deze voorstellingen verschijnen niet in de Theaterencyclopedie. TINbot vergelijkt dus elke nacht de inhoud van de database (Adlib) met de inhoud van de Theaterencyclopedie, daarbij kijkt TINbot 5 dagen terug in de tijd. Alle voorstellingen die zijn aangevuld in de productiedatabase krijgen automatisch een nieuwe pagina in de Theaterencyclopedie.

Voor meer informatie zie de pagina Theaterencyclopedie: Documentatie TINbot.

Ontwikkelingen

De scripts voor het uploaden en downloaden van de diverse gegevens uit Adlib zijn maatwerk software geschreven in PHP (Versie 5). Onderhoud en documentatie komt daarmee terecht bij de UvA UB / DD zelf.

Bij de upgrade van MediaWiki 1.23 naar 1.27 is het script “ongewijzigd” blijven functioneren; bij de eerstkomende upgrade van MediaWiki naar 1.31 moet her script in ieder geval aangepast worden naar PHP versie 7.x . Dat is inmiddels gebeurd.

Er is toentertijd gekeken naar alternatieven, zoals het gebruik van standaard extensies van (Semantic) MediaWiki, die vergelijkbare functionaliteit hebben.

De extensies die hiervoor in aanmerking komen zijn (deels) beschreven op op MediaWikiGids (Werk in uitvoering!). Vooral de extensie “ExternalData” lijkt veel van de benodigde functionaliteit te kunnen bieden (zie: Gebruiksaanwijzing met enkele voorbeelden.

NOTE: De voorbeelden maken gebruik van de test-server van adlib. Deze server is met enige regelmaat niet beschikbaar, waardoor de voorbeelden niet goed zichtbaar zijn
Zie ook: http://api.adlibsoft.com/

Enkele mogelijke (en nog te evalueren) import scenario’s

De combinatie van Semantic MediaWiki en de extensie ExternalData biedt verschillende (beproefde) om gegevens uit andere bestanden binnen een MediaWiki-installatie te gebruiken (te importeren). Uitgaande van het gebruik voor de TheaterEncyclopedie, komen de volgende import scenario's in aanmerkingen.

  1. Alleen downloaden en semantisch registreren van Adlib-benaming en essentieel attributen van een afbeelding. Direct weergeven ("serven") van afbeeldingen uit Adlib (Gebruik hiervoor bijvoorbeeld de reeds geïnstalleerde extensie Widget).
  2. Totaal overzicht downloaden en semantisch registreren van Voorstellingen + adlib id (gebruik ExternalData)
    > Per voorstelling (wikipagina) overzicht downloaden van betrokken personen, acteurs etc. en semantisch registreren (gebruik hiervoor SMW internal objects of maak een import-tabel).
  3. Totaal overzicht downloaden en semantisch registreren van Theaters + adlib id (gebruik ExternalData)
    > Per Theater (wikipagina) een overzicht downloaden en semantisch registreren van attributen
    Als alternatief voor Adlib: gebruik informatie van van WikiData/Wikibase gegevens.


Zie ook:

Ontwikkeling- & migratie scenario

De TheaterEncyclopedie is na de upgrade van juli 2018 gebaseerd op MediaWiki 1.27.4 en draait op PHP versie 5. De eerstevolgend LTS-release van MediaWiki is 1.31, waarvoor PHP 7 noodzakelijk is en een aanpassing van de Adlib-scripts OF alternatief. Dit betekent dat er voor de eerstvolgende MediaWiki systeemupgrade:

  1. een keuze gemaakt moet zijn in de oplossingsrichting voor de koppeling met Adlib (upgrade scripts of alternatief op basis van ExternalData of ...)
  2. de ontwikkeling van de koppeling moet plaatsvinden
  3. Integratietesten van deze koppeling met de nieuwe systeemversie 1.31 moeten zijn uitgevoerd.


Omdat het tevens gaat om de kerngegevens van de TheaterEncyclopedie en tevens de schaalgrootte (bestandsgrootte) aanzienlijk is, moet een migratiescenario zeer robuust zijn.

  • Uitsluiten van onbeschikbaar zijn of verlies van gegevens
  • Mogelijkheid tot terugdraaien naar oorspronkelijke situatie
  • Mogelijkheid tot tussentijds wijzigen van scenario bij voortschrijdend inzicht
  • Tussentijdse testmogelijkheden
  • etc. etc.

Voorbeeld van een migratiescenario:

  1. Onderzoek & ontwikkeling importmethodiek
    1. Bouw test / pilot van alternatieve importmethodiek in bestaande 1.27 test-versie
    2. Bij problemen terugvallen naar upgrade van scripts naar PHP 7
  2. Integratietest van importmethode in combinatie met 1.31 (test.theaterencyclopie_1.31.nl bijv.)
  3. Migreer en ga live met nieuwe methodiek bij de livegang van MediaWiki 1.31


Upgrade van Adlib naar Axiell Collections (2022 - )

In 2022 is begonnen met het aanpassen van de Adlib-gegevens t.b.v. de registratie in Axiell Collections.

Uit e-mail Hennie Dolfsma:

"Voor onze situatie houdt dat in dat we voor de database (de “applicatie”) van versie 3.4 naar versie 5.0 gaan. Daarbij zullen sommige veldnamen veranderen. Versie 5.0 gaat uit van één grote Objecten database (“collect”), waarin in elk geval de huidige Document database opgaat (boeken, teksten, audiovisueel). Ook custom objecten, zoals onze Producties, worden in principe opgenomen in de Collect database. Voor Document en Producties zou dat betekenen dat hun recordnummers (prirefs) veranderen. Andere informatie blijft behouden en ook het oorspronkelijke recordnummer kan in het record worden vastgelegd. Het al dan niet opnemen van Producties in Collect is een keuze, aantrekkelijk omdat we dan dichter bij de default installatie blijven en gemakkelijker kunnen uitwisselen met andere instellingen."

Migratie van de TE

Vanuit de TheaterEncyclopedie gezien is de meest elegante oplossing zoals we het nu zien en hebben besproken als volgt:

  1. Verwijzingen naar “Adlib” (de huidige situatie), laten we intact en ongewijzigd
  2. We voegen en nieuwe verwijzing toe in de semantische database naar “Axiell” (de nieuwe situatie)
  3. Met behulp van een referentie-tabel met de huidige Adlib-referentie en de bijbehorende nieuwe Axiell-referentie, vullen we eenmalig dit nieuw semantische veld. Wanneer er een eenduidige relatie is tussen de “oude" Adlib-referentie en de “nieuwe” Axiell-referentie, dan kan dat handig zijn, maar het niet echt noodzakelijk.
  4. Het huidige Tinbot-script kan waarschijnlijk tot nader order blijven werken op basis van de Adlib-referentie; het aangepaste Tinbot-script kan t.z.t. de synchronisatie overnemen op basis van de nieuwe Axiell-referentie en (mogelijk) nieuwe gegevensstructuur.

Dit bovenstaande is bedoeld voor de Productiedatabase c.q. de referenties m.b.t. de premières. Er is hierbij geen sprake van het opnieuw laden van alle producties/productiegegevens uit Axiell/Adlib v 5.0, maar slechts het eenmalig laden van de nieuwe referenties.

We zullen nog een onderzoek(je) doen naar het gebruik van de overige referenties naar Adlib:

  • Multimedia (reeds genoemde AV-records)
  • Personen
  • Foto’s/affiches
  • … ??

Zie hiervoor TE:Koppeling met Adlib/Migratie naar Axiell

Zie ook LOD van UvA

Test-migratie d.d. juni 2023

Zie e-mail van HD d.d. 15-6-2023, "Samenvatting upgrade Adlib naar Axiell Collections".

  • Test referentie-/concordantielijsten opgeleverd

Snapshot van de files:

recordnummer,orig_perform_priref,productiecode
500000001,1,128283012.001
500000002,2,129801871.001
500000003,3,129801871.003
500000004,4,129702455.001
500000005,5,123990005.001
500000006,6,123990005.002
500000007,7,123990005.003
500000008,8,123890042.003
500000009,9,129502351.001

Bevindingen:

Test 1:

Info uit Adlib:

  • Titel: !Ay, Carmela!
  • Productiecode: 129601214.002
  • Producent/Gezelschap: Nieuw Amsterdam, De
  • Premieredatum: 1996-10-10

RESULTAAT:

  • Concordantie- entry: 24061: 500023858,24061,129601214.002 (correct)

Opmerkingen:

Vragen uit e-mail/antwoorden:

  1. is dit voldoende om de TE bij te werken voor de links naar Axiell?
    • Dit is "in principe" voldoende informatie voor producties
    • Pas na een technische "proof-of-concept" kunnen we definitief aangeven of het ook in de praktijk gaat werken
    • De lijst bevat geen personen
    • Andere referenties (Repro-code) zijn niet benoemd
  2. Als het handiger is wanneer ik de lijsten samenvoeg, of juist in meer slices verdeel, laat het weten
    • Lijsten samenvoegen is handiger
    • Format van de code conform TE voorkomt waarschijnlijk ook problemen: "perform/<nummer>" en evt. "people/<nummer> (voorloop nullen??)

PoC

  • Lijsten samenvoegen tot 1 referentielijst
  • Lijst in CSV-format uploaden naar de TE (als standaard bestand - evt. upload van CSV mogelijk maken via config)
  • Test: lijst importeren m.b.v. "external-data"-extensie (reeds beschikbaar)
  • Test: Definitief opslaan van nieuwe Axiell referentie in de Infobox (zodat deze evt. bewerkt/aangepast kan worden) - Niet geslaagd
    • Dit is niet mogelijk met standaard MediaWiki-functionaliteit (en ook niet met extensies); hiervoor is een (Python-)script nodig


Vervolg op PoC

De bovengenoemde methode is geschikt om snel de informatie uit de referentielijst met nieuwe nummers ("concordantielijst") in de TE op te nemen en de linking naar de productiedatabase en/of Axiell te implementeren.

Nieuwe producties kunnen via de normale weg (Tinbot) worden toegevoegd (met een nieuwe referentienummer en zonder oude priref). Het aanpassen van de priref/Axiell-referentie via het standaard formulier:Productie is echt niet mogelijk (want gekoppeld aan referentielijst/concordantielijst !).


Vervolg / extra's / alternatieven:

  • (Eenmalig) Bijwerken van productiepagina's m.b.v. een script, waarbij de semantische waarde van test:Eigenschap:HeeftAxiellRef in de wikitekst-infobox wordt opgeslagen
    • Dit sluit aan bij de werkwijze voor de nieuw via Tinbot toe te voegen producties (met alleen een nieuwe Axiell-referentie)
    • Hierbij wordt de waarde "bewerkbaar" via het formulier
    • In technische zin is deze manier efficiënter (aangezien niet eerst een query via de oude priref hoeft te worden gedaan om de Axiell-ref te verkrijgen en tevens de -redundante- relatie tussen oude Priref en nieuwe Axiell-referentie kan komen te vervallen).
    • NB: Het bijwerken kan is niet kritiek voor de werking van de koppeling (back-link vanuit de TE) met Axiell en kan op een later moment worden uitgevoerd.
  • Overgaan naar "officiële" URI-referentie (i.p.v. ID) - Info d.d. 29-2-2024 (HD): De PID wordt nog niet bij de eerste oplevering van Axiell geïmplementeerd, maar komt later.
  • Met behulp van de nieuwe Axiell-referentie bestaande informatie importeren uit Axiell via de API (dit als test/PoC voor de methode die wordt voorgesteld bij TE: Verbetering koppeling TheaterEncyclopedie en TheaterCollectie (2023)
  • Met behulp van de nieuwe Axiell-referentie eventueel extra informatie uit Axiell importeren vanuit de API (pas als PID is geïmplementeerd )

Uitleg t.b.v. eenmalig bijwerken met script

Nadere uitleg over de vervolgstap om de productiepagina's definitief bij te werken met een (te ontwikkelen) script:

  1. We importeren de concordantielijst om te kijken aan welke pagina welk nieuw nummer gekoppeld moet worden. We zien daarmee welke pagina welk nieuw nummer moet krijgen, maar kunnen dit vanuit de geüploade concordantielijst niet (automatisch & "vast") op die pagina opslaan. De koppeling blijft afhankelijk van de concordantielijst
  2. Om dat wel te kunnen doen, hebben we een script nodig dat, met behulp van die geïmporteerde en gekoppelde informatie, de nieuwe nummers daadwerkelijk in een formulier-/infoboxveld op alle pagina's invoert. Die van de concordantielijst geïmporteerde en aan de pagina gekoppelde informatie dient dus als bron voor het script.

De van de concordantielijst geïmporteerde informatie kan dus wèl in (de semantische database) van de TE worden opgeslagen, maar dit is en blijft afhankelijk van die lijst. Als de lijst weg is, is de gekoppelde info ook weg. Bovendien willen we de nieuwe nummers (waarschijnlijk op kleine schaal, maar zonodig toch) kunnen wijzigen. Dat kan alleen als die informatie dus op de pagina in de inforbox via het formulier bewerkt kan worden.

Procedure voor het (nieuwe / aan te passen) script:

Op basis van een lijst van alle productie/voorstellingspagina's moet het onderstaande gebeuren. (Het samenstellen van de lijst kan met het bestaande "scraper"-script gemaakt door Heidi of met het bestaande API-script gemaakt door Bart).

  1. Opvragen via de Semantische API van de waarde van de Axiell-referentie (Eigenschap:HeeftAxiellRef)
  2. Zoeken en vervangen (c.q. toevoegen) m.b.t. Regex van een regel: | Axiell = <opgevraagde Axiell-referentie>
  3. Opslaan van de pagina met toegevoegde regel

Met name het opvragen van de informatie via de Semantisch API van de TE is nieuwe code (de rest is ook bij eerdere projecten gedaan). De beschrijving van de Semantische API is hier gedocumenteerd.

Voorbeeld voor het opvragen van informatie over de pagina Cristina Deutekom via Semantic-API: https://theaterencyclopedie.nl/w/api.php?action=browsebysubject&subject=Cristina_Deutekom

Implementatie op de Productie-TE

Uploaden (definitieve versie) van: Bestand:Export slice 123.csv

Importeren van pagina's (hulp-sjablonen etc.):

Niet nodig om aan te maken:

Aanmaken van importpagina's, waarop het sjabloon:Laden AXIELL-data wordt geplaatst (DONE voor dummy):

Informatie uit overleg 9-11-2023

  • Backlinks naar ProductieDB/Axiell ("gebruikersinterface") komen later beschikbaar dan migratie van data (dus tijdelijk dode links)
  • Na migratie data blijft Adlib nog (tijdelijk) bijgewerkt worden, totdat overige onderdelen Axiell (API, Webinterface, ...) beschikbaar zijn
    • Tinbot kan in de tussentijd dus "normaal" doorwerken.
    • Daarna volgt een finale "update" naar Axiell
  • Het Foto-uploadtool wordt als onderdeel van Tinbot aangepast; Repro-codes hebben de aandacht en collect/prirefs (Eigenschap:CollectDB) blijven ongewijzigd
  • De url van de productieDB kan mogelijk wijzigen
  • Er worden - naast de nieuwe collect-referentienummers - ook PID's / URI's geïmplementeerd
    • Dit gebeurt mogelijk LATER dan de migratie
    • De voorkeur bij de TE is om dit in 1x te implementeren
  • people/priref wordt krijgen geen nieuw collect-referentienummer (hoeft dus ook niet aangepast/aangevuld in de TE)

Nog niet besproken:

  • Mogelijk ontwikkeling van script om producties aan te passen (ipv via ExternalData)

Zie ook: e-mail (verslag) van Bianca de Waal d.d. 9-11-2023

Informatie uit overleg 29-2-2024

  • Oplevering nu gepland voor eind maart / begin april 2024
  • PID's worden nog niet direct geïmplementeerd bij de eerste oplevering van Axiell

Status en planning

NOTE: Eind 2018 is in overleg vastgesteld dat het onderhoud en het upgraden van het bestaande maatwerk PHP-script voor de TINbot naar PHP 7 door de afdeling Digitale Diensten kan worden uitgevoerd. De mogelijkheid om de koppeling met behulp van standaard extensie ExternalData te implementeren wordt daarom niet verder onderzocht en uitgewerkt. Zie ook notities overleg.