Uitbreiding van de website-databank interface van het Museum voor Dierkunde Merlijn De Paepe
Promotoren: prof. dr. Guy De Tré, prof. dr. Dominique Adriaens Begeleiders: Antoon Bronselaer, dr. Tim Deprez Masterproef ingediend tot het behalen van de academische graad van Master in de toegepaste informatica
Vakgroep Telecommunicatie en informatieverwerking Voorzitter: prof. dr. ir. Herwig Bruneel Vakgroep Biologie Voorzitter: prof. dr. Ann Huysseune Faculteit Ingenieurswetenschappen Academiejaar 2007-2008
Uitbreiding van de website-databank interface van het Museum voor Dierkunde Merlijn De Paepe
Promotoren: prof. dr. Guy De Tré, prof. dr. Dominique Adriaens Begeleiders: Antoon Bronselaer, dr. Tim Deprez Masterproef ingediend tot het behalen van de academische graad van Master in de toegepaste informatica
Vakgroep Telecommunicatie en informatieverwerking Voorzitter: prof. dr. ir. Herwig Bruneel Vakgroep Biologie Voorzitter: prof. dr. Ann Huysseune Faculteit Ingenieurswetenschappen Academiejaar 2007-2008
Voorwoord Dankwoord In de eerste plaats wens ik zowel mijn promotor prof. dr. Guy De Tré als mijn co-promotor prof. dr. Dominique Adriaens te bedanken om samen deze discipline-overschrijdende masterproef in te richten. Net zoals ik doorheen mijn opleiding wel al eerder het geluk gehad heb om op het juiste moment op de juiste plaats te zijn, leek tevens deze boeiende kans op mij te wachten. Maar zonder de hulp die ik van mijn begeleiders kreeg, kon ik dit werk nooit zo ver gebracht hebben. Mijn diepste dank en waardering gaan dan ook uit naar mijn dagdagelijkse begeleider dr. Tim Deprez, museumconservator Dominick Verschelde en last but certainly not least ir. Antoon Bronselaer, voor hun gecombineerde en ontzagwekkende kennis die zij geduldig met mij wilden deelden. Bij deze wens ik mij nu eens niet te verontschuldigen voor mijn domme vragen of uitgangspunten, want jullie leerden mij op zo’n korte tijd zoveel bij, d.m.v. niets anders dan opbouwende kritiek (zonder de slechte weerklank). Dit is iets wat ik heel sterk apprecieer. Doordat ik quasi dagelijks op de afdeling Mariene Biologie aan de Sterrecampus te gast was, maakte ik er kennis met de diverse groep aan charmante medewerkers. Allen wisten zij bij te dragen aan een unieke sfeer, zeker door de interessante en geanimeerde gesprekken die er tijdens de lunchpauzes gevoerd worden. Zo hoefde ik me er al snel geen vreemde meer te voelen. Grote dank gaat eveneens naar mijn vrienden en medebiologen Hendrik, Gwen en Femke, voor de steun die ze me gaven tijdens de soms lange schrijfavonden. Ook mijn vele nieuwe vrienden onder de MTIstudenten wens ik te bedanken voor het toffe afgelopen jaar. Tenslotte ben ik veel dank verschuldigd aan mijn zorghebbende ouders en al even lieve vriendin Sabina, voor hun onvoorwaardelijke steun en interesse wanneer ik het in hun bijzijn voor de zoveelste maal (misschien té) enthousiast over mijn werk had. Aan iedereen nog eens van harte bedankt om mij gedurende de afgelopen paar maanden op tal van vlakken heel wat bijgeleerd te hebben. Afsluiten wil ik doen met een citaat dat wellicht velen zullen beamen: [email protected] zegt [via MSN Messenger]: “ da's het heerlijke van programmeren ... je suf zitten zoeken op futiliteiten en achteraf zeggen van miljaar, hoe kon ik dat nu over het hoofd zien ... ” Maar wat een voldoening geeft het uiteindelijk!
~ Merlijn
Toelating tot bruikleen De auteur geeft de toelating deze masterproef voor consultatie beschikbaar te stellen en delen van de masterproef te kopiëren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit deze masterproef. 1 juni 2008, Merlijn De Paepe
Overzicht Uitbreiding van de website-databank interface van het Museum voor Dierkunde door Merlijn DE PAEPE Masterproef ingediend tot het behalen van de academische graad van MASTER IN DE TOEGEPASTE INFORMATICA Academiejaar 2007-2008 Promotor: prof. dr. Guy DE TRÉ * Co-promotor: prof. dr. Dominique ADRIAENS † / ! Begeleiders: ir. Antoon BRONSELAER *, dr. Tim DEPREZ † en Dominick VERSCHELDE ! Faculteit Ingenieurswetenschappen Universiteit Gent (UGent) Vakgroep Telecommunicatie en Informatieverwerking (TELIN) Voorzitter: prof. dr. ir. Herwig BRUNEEL Vakgroep Biologie Voorzitter: prof. dr. Ann HUYSSEUNE * Faculteit Ingenieurswetenschappen – Vakgroep Telecommunicatie en Informatieverwerking (TELIN) † Faculteit Wetenschappen – Vakgroep Biologie ! Faculteit Wetenschappen – Museum voor Dierkunde
Samenvatting Deze masterproef staat in het kader van het Museum voor Dierkunde van de Universiteit Gent. De website van dit museum (‘http://www.museumvoordierkunde.ugent.be’) was tot heden niet voorzien van een publiek toegankelijke zoekfunctie waarmee haar unieke collectie geraadpleegd kan worden. Enkel het toevoegen van nieuwe specimens * was voorheen mogelijk, en dit door daarvoor geregistreerde gebruikers. Twee lokaal ontwikkelde Accessdatabanken vormen samen het hart van de museuminventaris, die intussen ca. 30.000 records aan informatie rond de aanwezige specimens telt. Er bleef van het museum uit een grote wens bestaan om studenten, onderzoekers en andere potentiële bezoekers via haar website te kunnen informeren. Dankzij dit discipline-overschrijdende masterproefonderwerp (Biologie – Toegepaste Informatica) kon daar eindelijk werk van worden gemaakt. Een eerste doelstelling van deze masterproef was de bezoekers een krachtige, doch gebruiksvriendelijke zoekfunctie aan te bieden. Uiteindelijk kan dit nu op twee manieren: via een snelle invoer van de soortsnaam van een dier, of via het maken van een gewenste combinatie tussen taxa (‘diergroepen’) en opties i.v.m. het geslacht, het levensstadium en de bewaarmethode van de specimens. Een tweede gerealiseerde doel is het combineren van de output van de geraadpleegde databanken met de meer dan 1000 beschikbare foto’s die her en der reeds in het museum gemaakt waren. Bijkomend kan men ook grasduinen in de waardevolle cultuurhistorische collectie aan epidiascoopplaten. Daarenboven kan de informatie op een eenvoudige manier door de administrator (c.q. de museumconservator) actueel gehouden worden, door de meest recente databankversies en nieuwe foto’s via een oplaadfunctie op de server te plaatsen. Trefwoorden: Museum voor Dierkunde, Zoology Museum, databank, collectie, specimens. *
Zo historisch gegroeid. Één bevat specifiek de Vouchercollectie aan Nematoda-specimens. Zie ook verder.
1. Inleiding Het Museum voor Dierkunde Er bestaat geen betere manier om het Museum voor Dierkunde te omschrijven dan via de verwelkomingstekst op de museumwebsite zelf. Daarom citeer ik hier het liefst conservator Dominick Verschelde: “ Onder de hoede van de Gentse Universiteit en in de nabijheid van de Universitaire Plantentuin vind je een uitgebreide collectie dieren en dierenpreparaten, uniek voor Vlaanderen. Opgericht in 1817 [samen met de Gentse Universiteit] had het Museum voor Dierkunde als doel een wetenschappelijke verzameling aan te leggen ter illustratie van de lessen dierkunde aan de Gentse Universiteit. Nu nog steeds wordt er aan de collectie voor en door de studenten verdergewerkt, maar wordt tevens het museum opengesteld voor een breder publiek. Het museum huisvest een historisch belangrijke collectie met vertegenwoordigers uit alle groepen van het dierenrijk. Deze bestaan zowel uit dieren en organen op alcohol en formol, als uit opgezette dieren en geraamten. Het Museum voor Dierkunde is gelegen in de ‘kelders’ van het H.I.K.W.1 gebouw in de Ledeganckstraat 35 te Gent. Op verdieping -1 bevinden zich de ongewervelde dieren, zoals sponzen, neteldieren, wormen, weekdieren en geleedpotigen. Op verdieping -2 vind je de gewervelde dieren, zijnde de vissen, amfibieën, reptielen, vogels en zoogdieren. Tevens vind je er een unieke verzameling van vergelijkende anatomische preparaten (organen en stelsels). ” Belangrijk om te vermelden is het bezit van enkele cultuurhistorische stukken, waaronder skeletten van dieren uit de vroegere Gentse dierentuin, naast bijzonder zeldzame specimens zoals een intact opgezet exemplaar van de Tasmaanse buidelwolf, een prachtig hondachtig dier met een buidel, waarvan de laatste vertegenwoordiger gestorven is in 1933. Van iedere diergroep, “gaande van amoebe tot walvis”, bezitten zij wel een voorbeeld. Studenten zijn hun eerste publiek; zij kunnen er te allen tijde terecht met vragen, om er onderzoek te doen of te studeren. De huidige directeur van dit duidelijk unieke museum is prof. dr. Dominique Adriaens. Haar website is raadpleegbaar via de URL ‘http://www.museumvoordierkunde.ugent.be’.
1
Hoger Instituut der Kandidaturen Wetenschappen, de oorspronkelijke naam.
1
Zelf heb ik een persoonlijke band met dit museum, door er geregeld aan vrijwilligerswerk gedaan te hebben. Ik prijs me zeer gelukkig met de kennis en praktijkervaring die ik er over de jaren heb opgelopen.
De functie van een museum Een museum is in principe slechts gerechtvaardigd wanneer het aan de volgende drie doelstellingen voldoet 2: 1.
Het verzamelen en bewaren van objecten met de bedoeling deze te vrijwaren voor de toekomst en de komende generaties. Van groot belang bij universitaire musea is het aanleggen van typecollecties en getuigencollecties (= Vouchercollecties – Eng. ‘to vouch’: getuigen, verklaren).
2.
Het uitvoeren van onderzoek op de bestaande collecties, eventueel gekoppeld aan onderzoek in het veld. Voor universitaire musea is degelijk wetenschappelijk onderzoek primordiaal, net als het aanleggen van referentiecollecties, voor determinatie (in dit geval van diersoorten), en van getuigencollecties.
3.
Het organiseren van tentoonstellingen voor – en informatie verschaffen aan – het publiek.
In dit opzicht is het duidelijk dat een functionele website rond het Museum voor Dierkunde niet mocht ontbreken. Deze werd dan ook reeds vroeg gerealiseerd. Een belangrijke tekortkoming tot op vandaag is de mogelijkheid om de collectiestukken op een gebruiksvriendelijke manier te raadplegen. Er was enerzijds wel een HTML-tabel van de museuminventaris zichtbaar, maar dit duurt lang om te laden en is weliswaar doorzoekbaar (via de toetsencombinatie ctrl+F) maar geeft de gewenste resultaten niet gegroupeerd weer. Anderzijds bood het overkoepelende biodiversiteitsplatform GBIF al langer een doorzoekbare boomstructuur aan (volgens de biologische classificatie – zie volgende alinea), maar niet met gedetailleerde uiteenzettingen over de specimens noch met foto’s. Het verschaffen van meer details, en dit op een vlotte manier, sluit naadloos aan bij het doel van informatie te verschaffen aan het publiek (punt 3 hierboven). Daarenboven geeft het studenten en onderzoekers een notie van welke specimens er in het museum aanwezig zijn (punt 2).
Naast een naam in een voertaal als het Nederlands of Engels dienen levende wezens een internationaal geldende benaming te hebben, zodat iedereen over de hele wereld kan weten welke soort ermee bedoeld wordt. Deze wetenschappelijke namen zijn gebaseerd op het Latijn, maar bevatten ook afgeleid pseudolatijn. De huidige manier om dieren te benoemen steunt nog steeds op de binomiale nomenclatuur ingevoerd door Carolus Linnaeus ofwel Carl von Linné (1707-1778). Daarbij was de tiende editie van zijn werk
2
Opsomming naar een tekst geschreven door conservator D. Verschelde, beschikbaar op de museumwebsite (MvD).
2
“Systema Naturae” (in 1758) een cruciale stap. De term binomiaal slaat op de tweeledige naam die elke soort draagt: (1) de genusnaam (genus, meerv. genera) of geslachtsnaam en (2) de speciesnaam s.s., een epitheton ter soortsaanduiding. Linnaeus kende zulke tweeledige namen toe aan dieren, planten en stenen, waar dit systeem niet langer gevolgd wordt. Vorig jaar werd over de hele wereld ‘s mans 300e verjaardag herdacht, met tal van tentoonstellingen als gevolg. Één ervan was de jaarlijkse expositie die in het Museum voor Dierkunde tijdens de Gentse Feestenweek loopt. In de beoogde zoekmodule voor de museumwebsite zullen zowel deze genusen speciesnamen als Nederlandse namen kunnen ingegeven worden. Wel belangrijk om te beseffen is dat voor heel wat dieren niet eens een Nederlandse naam bestaat! Bijgevolg zullen hiermee doorgaans minder resultaten verkregen worden. Nomenclatuur wordt overigens vaak verward met taxonomie. Taxonomie is een wetenschappelijke discipline die als doel heeft organismes in te delen in taxonomische groepen, z.g. taxa (enkelv. taxon) — zie de aanpalende figuur 1. Deze figuur wordt ter informatie meegegeven, daar de getoonde taxa geregeld in dit werk zullen vernoemd worden. Figuur 1: onderverdeling van de levende wezens in hiërarchische taxa, zoals typisch bij het rijk der dieren. Hiervan kunnen desgevallend nog sub- en supertaxa afgeleid zijn. De soort of species is het laagste taxon in rang, behoudens subspecies, variëteiten of vormen (fig: Wikipedia – http://en.wikipedia.org/wiki/phylum).
3
2. Probleemstelling De laatste versie van de website van het Museum voor Dierkunde werd in 2005 ontworpen door twee masters in de Toegepaste Informatica in het kader van een studentenjob, als vervolg op hun licentiaatsscriptie. Zij brachten daarbij ook een interface aan met de bestaande inventarisdatabank van het museum, die intussen ca. 30.000 records aan informatie bevat rond de aanwezige specimens. Naast het tonen van een statische HTML-tabel maakten zij het enkel voor bevoegde gebruikers mogelijk om via deze website nieuwe specimens (stuk per stuk) aan een databank op de webserver toe te voegen, maar een zoekfunctie naar de volledige museuminventaris toe was nog niet geïmplementeerd. Dit bleek nog steeds een grote wens van het museum te zijn, om onderzoekers en museumbezoekers te informeren.
3. Doelstelling Een eerste doelstelling van deze masterproef is de bestaande Access-gebaseerde databanken te koppelen aan de website. De gebruikers van de website moet een krachtige, doch gebruiksvriendelijke zoekfunctie aangeboden worden. Het gebruiksvriendelijk maken zal gebeuren met enerzijds een ingebouwde foutcorrectie op eventuele variaties in schrijfwijzen van Latijnse benamingen en anderzijds door een suggestielijst aan te bieden. Het tweede doel van deze masterproef is het combineren van de output van de geraadpleegde databanken met de reeds meer dan 1000 beschikbare foto’s van de specimens Dit zal gebeuren door in eerste instantie thumbnails (miniatuurweergaven) te tonen, die op zich verder verwijzen naar grotere, gewatermerkte foto’s. Verder moet de informatie op een eenvoudige manier door de administrator (c.q. de museumconservator) actueel kunnen gehouden worden door de meest recente databankversie en nieuwe foto’s op de server te kunnen plaatsen via een oplaadfunctie. Naast de hoofddoelstellingen wordt extra functionaliteit zoals een “bewaar als PDF”-optie, voor vlotte uitwisseling van de bekomen resultaten en een RSS-newsfeed wanneer er wijzigingen zijn aan de databank of een ander nieuwsitem gepubliceerd wordt, op prijs gesteld. Hieronder volgen drie voorbeelden van zoekacties waarvan geacht wordt dat ze moeten beantwoord kunnen worden met behulp van de te creëren module: !
Geef een overzicht van alle in het museum aanwezige zoogdieren.
!
Toon alle informatie over diersoort X (als deze in het museum aanwezig is).
!
Van welke soorten zijn er zowel skeletten als preparaten (enz.) aanwezig? 4
4. Materiaal en methoden Materiaal Databanken Het Museum voor Dierkunde beheert sinds 1997 drie databanken. Alle bevatten zij slechts één tabel, met vele attributen erin. Deze databanken zijn in het Microsoft Accessformaat. Daar is voor gekozen om er jaren (en intussen toch meer dan een decennium) mee te kunnen blijven werken, zodat geen tijd moet gestoken worden in moeilijke bestandsconversies en geheel nieuwe opleidingen. Daarnaast kan het overkoepelende biodiversiteitplatform GBIF de informatie zeer gemakkelijk overnemen uit het Accessformaat, wat zij niet altijd kunnen zeggen van hun andere ingezamelde databanken. Doordat het niet-relationeel ontwerp van de museumdatabanken vanuit het oogpunt van de databanktechnologie discutabel is, zullen zij in de toekomst nog genormaliseerd worden. Dit zal alleen maar voordelen qua gebruiksgemak en data-integriteit met zich meebrengen. De belangrijkste reden waarom dit nog niet gebeurd is, is de volgende: sinds het eerste sjabloon uit 1997 is er, naarmate de noden zich voordeden, nog zo’n 4 à 5 jaar danig aan gesleuteld; dit bleek het eenvoudigste in de vorm van één tabel per grote diergroep. Verder is het zo dat het museum dit compleet op zichzelf opgebouwd heeft en dat er bovendien geen standaardrichtlijnen of voorbeelden qua databankstructuren voor natuurhistorische musea bestaan. Een eerste stap die onderhand wel uitgevoerd is, is de combinatie van de databanken van de vertebraten (gewervelde dieren) en van de invertebraten (ongewervelden), naast het groeperen van vele naar-Yes/No-evaluerende attributen tot een aanzienlijk lager aantal comboboxen. In een volgende stap zouden ook deze attributen verplaatst worden naar nieuwe tabellen. Ter informatie: op dit moment is het gros van de vertebraten geïnventariseerd. Wat nog ontbreekt zijn de specimens uit de anatomische collectie, uitgezonderd de abundante collectie schedels. Bij de invertebraten dienen daarentegen nog vele schelpen en insecten te worden (her-)onderzocht en toegevoegd. Het invoeren gebeurt door de conservator en diverse medewerkers, studenten en vrijwilligers. Kopie van Museuminventaris (‘UGMDinventaris.mdb’) 3 Deze databank is de voornaamste van het museum. De tabel mdinventaris bevat informatie over de meeste aanwezige specimens. Bij het begin van deze masterproef waren er 26.312 specimens ingevoerd, een cijfer dat nog steeds aangroeit. Elk specimen wordt er zeer uitgebreid in beschreven, getuige de maar liefst 57 (!) attributen. Het is ook hier dat het merendeel van de resultaten van de zoekopdrachten zal 3
UGMD staat voor Universiteit Gent, Museum voor Dierkunde
5
gevonden worden. Enkel de Nematoda (draad- of rondwormen) zijn nog gespreid over zowel deze databank als die van de Vouchercollectie. Die laatste wordt bijgehouden in de hierna besproken databank. Voor een overzicht van alle attributen, zie figuur 13 in het hoofdstuk Bijlagen. Kopie van Vouchercollectie (‘VoucherCollection.mdb’) Doordat er momenteel tevens 4.137 Nematoda-specimens in de Vouchercollectie huizen, zal ook steeds deze databank (tabel ugmd) moeten geraadpleegd worden. Zij verschilt echter op talrijke vlakken van gebruikte attributen, waardoor het opvragen van waarden op andere manieren zal moeten gebeuren dan uit de hogerbeschreven Museuminventaris. Ten eerste zijn hier slechts 40 attributen (t.o.v. 57), ten tweede zijn sommige eigenschappen gecombineerd opgeslagen onder één enkel attribuut (bijv. het aantal specimens per slide, hun geslachten én hun levensstadia), wat de extractie van de informatie enigszins bemoeilijkt. Dit vraagt om een andere aanpak bij het programmeren, weliswaar met een deel hergebruik van code. Alle attributen: figuur 14, Bijlagen. Kopie van Epidiascoopplaten (‘Epidiascoopplaten.mdb’) De gelijkgenaamde tabel in deze databank bevat informatie over de historisch belangrijke collectie aan epidiascoopplaten. Het zijn er 1.123 in aantal, rond zestien verschillende biologisch thema’s. Zulke platen zijn beschilderde of bedrukte glasplaten die m.b.v. een epidiascoop vertoond werden, een soort voorloper van de overhead-projector maar dan uit de 19e eeuw. Rond de jaren 1900 zou dit toestel zijn hoogtepunt gekend hebben in het onderwijs. Alle attributen: figuur 15, Bijlagen. Nieuwe databank Indexen (‘Indexen.mdb’) Hoewel zij niet tot het startmateriaal behoort, wordt voor de volledigheid ook de enige nieuwaangemaakte databank vermeld. Zij bevat een enkele tabel FotoKoppelingen, wat in sé een index is van de dierlijke specimens en de beschikbare foto’s ervan. Naast deze attributen kan er o.a. commentaar bij de foto opgeslagen worden, die erbij kan weergegeven worden op de website. In het hoofdstuk Resultaten kunt u lezen op welke diverse plaatsen deze tabel zijn nut bewijst. Overzicht van de negen attributen: figuur 16, Bijlagen.
6
Website van het Museum voor Dierkunde Deze website dient enkel als materiaal vermeld te worden omdat zonder haar de databankmodule geen nut zou hebben. Zij is als het ware het framework waaraan de module dient gekoppeld te worden. Voor de gebruiker presenteert de module zich uiterlijk via een menu-item in het bestaande menu “Collecties”.
Methoden Talen en technologieën 4 HTML HTML of voluit HyperText Markup Language is een markup-taal. Hiermee kan platte tekst gestructureerd worden en van opmaak (layout) voorzien worden. HTML werd ontwikkeld voor het weergeven van webpagina’s in een browserprogramma. Vaak worden ook hulppagina’s of andere documentatie bij software in HTML geschreven. Een HTML-bestand eindigt met de extensie ‘.htm’ of ‘.html’ en bevat tags die de browser vertellen hoe de pagina dient weergegeven te worden (notatie: [platte tekst] ).
Zo’n bestand kan opgesteld worden met een eenvoudige teksteditor of via pakket-
ten die een geformateerde tekst converteren, zogenaamde WYSIWYG-editors – “What You See Is What You Get”. Met behulp van CSS (Cascading Style Sheet) kan de opmaak van een pagina verbeterd en gemakkelijk gecentraliseerd worden, wat het hergebruik ervan stimuleert. HTML is sinds dit jaar aan versie 5 toe, maar versie 4.01 is nog steeds de algemeen gebruikte, naast XHTML 1.0. ASP ASP staat voor Active Server Pages, een Microsoft-technologie die loopt binnen IIS (Internet Information Services), een gratis component vanaf Windows 2000. Men kan er op relatief eenvoudige wijze dynamische webpagina’s mee genereren, d.w.z. dat de pagina’s elke keer opnieuw, doch snel, opgebouwd worden wanneer de gebruiker ze in zijn browser oproept. Zo kan de getoonde informatie actueel blijven. ASP wordt dan ook vaak samen met een databank op de webserver gebruikt. Voor deze onderlinge communicatie zijn er standaard ADOBD-componenten beschikbaar. Een ASP-bestand eindigt op ‘.asp’ en bevat naast gewone tekst en HTML ook scripts, die uitgevoerd worden op de webserver. Deze scripts worden geschreven in VBScript (Microsoft propriëtair) of JavaScript; beide worden toegelicht in wat volgt. Scriptingcode wordt aangeduid door de omhullende tags <%
en %>. Een eenvoudig voorbeeldje in VBScript:
"!"
4
%>.
<% Response.Write "Goeiedag" & uw_naam &
De webserver zet de resultaten van het script om in HTML-code en stuurt het alzo
Los gebaseerd op de websites W3Schools.com en W3.org.
7
gegenereerde bestand terug naar de browser van de gebruiker (de client). Op die manier kan het originele script zelfs niet achterhaald worden, wat alleen maar een voordeel is qua veiligheid. De redenen om tijdens deze masterproef voor ASP te kiezen en niet PHP, Drupal of iets dergelijks, zijn velerlei: de hele museumwebsite maakt gebruik van ASP-pagina’s (wat op zich geen onoverkomelijkheid is), bovendien is mijn naaste begeleider dr. Tim Deprez er het best mee vertrouwd en tenslotte liep ik tijdens de opleiding Master in de Toegepaste Informatica reeds voldoende ervaring op met (de als enige aangeleerde scriptingtechnologie) ASP en diens combinatie met VBScript en ADO. Om meteen aan de slag te kunnen gaan en geen tijd te verliezen met het inwerken in een andere technologie, zijn we daarom bij ASP gebleven. VBScript VBScript is een scriptingtaal afgeleid van Microsofts programmeertaal Visual Basic, maar eenvoudiger. Het wordt hoofdzakelijk gebruikt binnen ASP-pagina’s. Bovenaan deze pagina’s kan men < % @LANGUAGE=”VBSCRIPT” %>
vermelden maar dit is niet noodzakelijk, daar VBScript de standaardtaal is
binnen ASP, in tegenstelling tot JavaScript. Het VBScript-gedeelte wordt in ons geval volledig op de webserver geïnterpreteerd (geen client-side scripting). JavaScript Het populaire JavaScript is gelijkaardig aan VBScript en kan ook geïntegreerd worden binnen ASPpagina’s. Het wordt in miljoenen webpagina’s gebruikt om de opmaak te verbeteren, interactiviteit toe te voegen, browsers te detecteren en nog veel meer. Iedereen kan trouwens JavaScript gebruiken zonder een Windows-licentie, wat wel vereist is bij VBScript. De officiële naam is ECMAScript. ECMA-262 is de standaard uit 1998, ontwikkeld en onderhouden door de ECMA-organisatie en gebaseerd op zowel JavaScript van Netscape als JScript van Microsoft. Het ontwikkelen van deze standaard gaat nu nog door. AJAX AJAX, voluit Asynchronous JavaScript And XML, is geen aparte programmeertaal maar een nieuwe manier om bestaande standaarden te gebruiken en om betere, snellere en meer interactieve webapplicaties te bekomen. AJAX is een manier van programmeren die in 2005 populair gemaakt werd door Google, via de Google Suggest functie 5. Het is een browsertechnologie die gebaseerd is op JavaScript en HTTP requests. Een bepaald stukje JavaScript kan rechtstreeks met de webserver communiceren, d.m.v. het JavaScript XMLHttpRequest-object. Door dit object kan het script stukjes gegevens uitwisselen met de webserver zonder dat de pagina moet herladen worden, wat een aanzienlijke tijdswinst en gebruiksgemak
5
Te raadplegen op ‘http://www.google.com/webhp?complete=1&hl=en’ of zoek rechtstreeks naar Google Suggest.
8
met zich meebrengt. Deze asynchrone gegevensoverdracht met HTTP-requests en de mogelijkheid om ook XML-gegevens op te vragen, hebben geleid tot AJAX’ volledige naam. Het werkt compleet onafhankelijk van de software gebruikt op de webserver. ADO ADO staat voor ActiveX Data Objects. Het biedt een interface om gegevens in een databank mee te bereiken en dient in combinatie met een hoogniveau programmeertaal als VBScript of JavaScript gebruikt te worden. Een nuttige eigenschap is de mogelijkheid om er SQL-instructies in te incorporeren, wanneer de structuur van de databank gekend is (wat hier het geval is). Op die manier kan er snel en eenvoudig een data-bevragings- of manipulatieinstructie geformuleerd en uitgevoerd worden. De manier waarop een databank vanuit een ASP-pagina met ADO kan bereikt worden, bestaat essentieel uit de volgende zeven stappen: 1.
De creatie van een ADO-connectie tot de databank, m.b.v. een connectiestring
2.
Het openen van deze connectie
3.
De creatie van een ADO recordset, in dit werk steeds op basis van een SQL-instructie
4.
Het openen van de bekomen recordset (in de code vaak ‘rs’ of iets afgeleid genoemd)
5.
Het extraheren/wijzigen/toevoegen/verwijderen van de gekozen gegevens in de recordset
6.
De recordset verlaten (sluiten)
7.
De connectie afsluiten
SQL SQL of Structured Query Language is een ANSI-standaardtaal die toelaat databanken te bevragen en te manipuleren. Naast het opvragen van gegevens kan men ze ook updaten, er nieuwe aan toevoegen of zelfs verwijderen, dit alles van record- tot tabelniveau. Gegevens opvragen doet men via een query-instructie. In de meeste databanktoepassingen is de standaard SQL-taal uitgebreid met zaken die specifiek voor die toepassing van tel zijn. Zo heeft de bekende toepassing Microsoft Access zijn eigen lichtafwijkende vorm, Access SQL.
9
Programma’s Microsoft Access Access is een databankbeheersysteem (DBMS) voor relationele databanken. Dankzij een overzichtelijke gebruikersinterface, interactieve ontwerpmogelijkheden en andere functionaliteiten is een diep inzicht in de databanktechnologie niet vereist. Dit, en uiteraard de alomtegenwoordigheid van Microsoftproducten, maakt van Access een van de meestgebruikte databanktoepassingen. Zoals gezegd heeft Access zijn eigen SQL-variant en kan het via de ADO-technologie aangesproken worden. De drie museumdatabanken zijn alle opgesteld in het Accessformaat, waardoor we daar voor deze masterproef bij blijven.
Notepad2 Notepad2 is een gratis teksteditor voor Microsoft Windows, vrijgegeven onder een BSD- open source softwarelicentie. Het werd gecreëerd door Florian Balmer in 2004 en bevindt zich momenteel in versie 2.1.19. Het maakt gebruik van Scintilla, een open source component om broncode mee te bewerken. De redenen om dit programma te gebruiken om in te programmeren zijn velerlei: het is snel, compact, hoeft niet geïnstalleerd te worden en raakt niet aan de systeemregisters. Allemaal voordelen aangezien ik wekenlang gebruik maakte van een publieke PC in de vakgroep Biologie. Bovenal bevat Notepad2 syntaxkleuring voor allerlei programmeertalen (waaronder het gebruikte VBScript), automatische insprong, opsporen van begin- en eindhaakjes, meervoudig ongedaan maken, conversie van regeleindes (tussen DOS, Unix en Mac) en zoeken/vervangen m.b.v. reguliere expressies. Officiële website: http://www.flos-freeware.ch/notepad2.html
10
5. Resultaten Overzicht en structuur van de module De structuur van de gecreëerde module laat zich het beste begrijpen aan de hand van figuur 2 op de volgende pagina. Zij biedt een schema van zowel het publieke als het admin-gedeelte ervan. De volgnummers bij de pagina’s slaan op de logische volgorde waarin zij in dit hoofdstuk zullen besproken worden. In het tekstuele overzicht hieronder worden die nummers tussen ronde haakjes vermeld. Het publieke zoekgedeelte Om van start te kunnen gaan, surft de gebruiker naar de website van het Museum voor Dierkunde. Daar bevat het menu-onderdeel “Collecties” de tab “Collecties raadplegen”. Als men dit selecteert, verschijnt er een pop-up venster waarin de module gepresenteerd wordt. De begin- of portaalpagina is zoek.asp (1), waar men dieren kan vinden op twee manieren: 1a. op basis van hun Nederlandse naam of Latijnse (= wetenschappelijke) genus- en/of speciesnaam 1b. via een combinatie van een taxon (phylum en/of classis) met enkele opties zoals het geslacht, het levensstadium en de bewaarmethode van het specimen. Een derde deel [1c] laat toe om te grasduinen in de collectie epidiascoopplaten die het museum herbergt. Deze eerste pagina maakt reeds gebruik van twee hulppagina’s, list_genus.asp (3) en getclasses.asp (4), waarmee een suggestielijst voor de genusnamen tevoorschijn komt als men een naam begint in te tikken (1a), respectievelijk een keuzelijst van classes corresponderend met het gekozen phylum (1b). Wat de gebruiker ook kiest, de volgende pagina is steeds een resultatenlijst: results_snel.asp (1a " 5), results_detail.asp (1b " 6) of results_epidia.asp (1c " 7). Kiest men ervoor om meer informatie te zien over een diersoort uit zo’n lijst, dan wordt de output van alweer een andere pagina geïncorporeerd: allresults.asp (5 of 6 " 8), ofwel allresults_epidia.asp in het geval van de epidiascoopplaten (7 " 9). Als er van een specimen van die diersoort reeds een foto beschikbaar is, wordt hier een eerste thumbnail-foto getoond. Tenslotte leidt een hyperlink verder naar specimens.asp (11), een lijst met informatie over elk verschillend specimen dat er van die soort in het museum aanwezig is. Op de pagina specimens.asp (11) kan men eventuele thumbnails vergroten door erop te klikken, wat resulteert in de laatste publieke pagina, viewpics.asp (12). Overal waar een foto getoond wordt (9, 11, 12) is gebruik gemaakt van het script in de hulppagina makepict.asp (10). De veelvuldige databankconnecties doorheen deze pagina’s worden verzorgd door de connectiestrings geplaatst in conn_inventaris.asp [2a], conn_voucher [2b], conn_epidia.asp [2c] en conn_indexen.asp [2d]. 11
Figuur 2: schema van de databankenmodule, zowel het publieke als het admin-gedeelte Kaders: ASP-pagina’s — Volle pijlen: effectieve links tussen de pagina’s onderling Grijsgestippelde pijlen: logische links die binnen de aangeduide pagina weergegeven worden Cilinders: databanken — Wolk: set van vier frequent geïncludeerde ASP-pagina’s met connectiestrings erin (om de figuur overzichtelijk te houden zijn hier geen pijlen bij getekend)
12
Het administratorgedeelte De administrator van de museumwebsite, in dit geval de conservator, kan via het menu-onderdeel “Admin” de tab “Uploaden van databanken en foto’s” kiezen. Hiermee komt hij terecht op de pagina update.asp (13), waar zowel nieuwe databankversies [13a] als nieuwe foto’s [13b] kunnen opgeladen worden. Het bewaren van een opgeladen databank gebeurt dankzij upload_database.asp (14). De foto’s worden verwerkt in twee opeenvolgende pagina’s, upload_pics.asp (15) en indexpics.asp (16), aangezien er van elke foto een koppeling met het juiste specimen moet gemaakt worden. Ter informatie: indien gewenst kan de toegang tot deze en de andere administratieprocessen uitgebreid worden naar meerdere administratoren, door het opwaarderen van hun status in de registratiedatabank van de website. Zo ben ook ikzelf tijdelijk een administrator.
In wat volgt worden de pagina’s en hun functionaliteiten in detail besproken.
13
ASP-pagina’s 1. Portaal voor zoekopdrachten – zoek.asp Algemeen Als beginpagina krijgen de bezoekers van deze module de mogelijkheid om een zoekopdracht te formuleren. Enerzijds kan men snel en gericht naar een soort zoeken, via zijn Nederlandse naam of Latijnse genus- en/of speciesnaam (de twee onderdelen van de binomiale naamgeving). Anderzijds is het ook mogelijk om via de classificatie te zoeken, vertrekkend van een phylum (d.i. het hoogste taxon binnen een Rijk, hier het dierenrijk), daarna eventueel een onderliggende classis te kiezen en tenslotte enkele opties te selecteren die de zoekopdracht helpen verfijnen.
Gebruik Het snelle zoeken naar een diersoort gebeurt door tekstuele invoer, waarbij in het geval van (moeilijke, Latijnse) genusnamen de gebruiker geholpen wordt door een lijstje met suggesties van de aanwezige soorten in het museum. Deze via AJAX gegenereerde suggesties worden doeltreffender naargelang er meer letters ingegeven worden. Zij worden automatisch aangemaakt op een pagina list_genus.asp die zich op de achtergrond bevindt. Na een druk op de zoekknop kan de gebruiker de resultaten bekijken op de pagina results_snel.asp.
Zoals gezegd kan men echter ook op een andere manier zoeken en daarbij vertrekken van phyla, gepresenteerd aan de hand van een keuzelijst. Wordt er effectief een phylum gekozen, zal ook hier weer via de AJAX-technologie een tweede keuzelijst verschijnen (aangemaakt in getclasses.asp), waarin de bijhorende classes opgesomd worden. Finaal kan de gebruiker er nog voor kiezen om enkele specifieke waarden mee te geven omtrent het geslacht, het levensstadium, de bewaarmethode en de aard van de specimens. Op deze manier wordt er een selectie gemaakt uit het overzicht van de diersoorten die deel uitmaken van het gekozen taxon. Analoog roept een submit-knop de pagina results_detail.asp op.
14
Figuur 3: screenshot van de portaalpagina zoek.asp, met de drie verschillende zoekmogelijkheden
15
Code
400 lijnen
Een eerste stukje code is een JavaScript-functie die de cursor bij het laden van de pagina meteen focust op het eerste zoekveldje, nl. dat van de genusnaam. Zo kan de gebruiker meteen een naam intikken. Het wordt opgeroepen vanuit lijn 122 (). 12
<script type="text/JavaScript">
13
function setFocus()
14
{
15
document.getElementById("Genusveldje").focus();
16
}
17
Hieronder volgt een stuk open-source code om de AJAX-technologie te kunnen benutten. Parameters die gewijzigd dienden te worden, staan in vetjes gedrukt. Dit is in het kader van het aanmaken van een keuzelijst met classes, in het geval er een phylum gekozen werd. 19
<% 'ajax JavaScript voor generatie van extra keuzelijst %>
20
<script type="text/JavaScript">
21
var myid = null
22
var xmlHttp
23
var phylum
24
function showClasses(phylum)
25
{
26
myid = "divclasses"
27
xmlHttp=GetXmlHttpObject();
28
if (xmlHttp==null)
29
{
30
alert ("Your browser does not support AJAX! Please update it.");
De lijst met suggesties van genusnamen, aangemaakt via AJAX, vereist CSS voor zijn weergave. Ook dit is een open source stukje. Erna staan twee verwijzingen naar de eigenlijke AJAX-JavaScripts. 74
<% 'CSS die het kader met mogelijkheden (qua genusnaam) beschrijft: %>
75
<style type="text/css">
76
#ajax_listOfOptions{
77
position:absolute; /* Never change this one */
78
width:202px;
/* Width of box */
79
height:230px;
/* Height of box */
80
overflow:auto;
/* Scrolling features */
81
border:1px solid #317082; /* Dark green border */
82
background-color:#FFF;
83
text-align:left;
84
font-size:1.2em;
85
z-index:100;
86
}
87
#ajax_listOfOptions div{
/* White background color */
/* General rule for both .optionDiv and
.optionDivSelected */ 88
margin:1px;
89
padding:1px;
90
cursor:pointer;
91
font-size:0.9em;
17
92
}
93
#ajax_listOfOptions .optionDiv{
/* Div for each item in list */
94 95
}
96
#ajax_listOfOptions .optionDivSelected{ /* Selected item in the list */
Qua zichtbaar gedeelte van deze pagina is eerst het zoekformulier waar een Nederlandse naam of genusen/of speciesnaam kan ingegeven worden. Hierbij is er de mogelijkheid om te kiezen of de zoekterm al dan niet exact moet voorkomen in de bedoelde naam. Er is tevens een foutopvang voorzien in geval er niks ingevuld wordt ofwel een tekst waarin een apostrofe voorkomt, wat zou leiden tot het tonen van alle mogelijke diersoorten, resp. tot een fout waarbij de SQL-instructie voor de gebruiker zichtbaar wordt. Helemaal onderaan staat tenslotte de AJAX-functie ajax_showOptions() , die de hogervermelde suggesties tevoorschijn doet komen. 128