Werken met informatie Tijdens het schrijven van een tekst heeft de schrijver informatie nodig. Deze
informatie kan gevonden worden in een groot aantal bronnen en systemen, bijvoorbeeld tijdschriften, boeken of internet. Tijdens het verwerken van al die informatie zal de auteur samenvattingen maken, commentaren schrijven, kanttekeningen plaatsen (letterlijk en figuurlijk). Dit soort gegevens noemt men annotaties. Er zijn twee informatiesoorten: documenten die informatie aanleveren en documenten die daar annotaties van zijn. Het beheren van deze informatie gebeurt vaak op ad-hoc wijze: er worden kopieën gemaakt van (delen van) documenten, er worden opmerkingen in de kantlijn gemaakt, er worden bookmarks gemaakt of er worden mappen met aantekeningen bijgehouden. Bij grote (schrijf)projecten neemt de complexiteit snel toe en kunnen documenten soms niet meer worden teruggevonden. Dit omdat de informatie niet op een eenduidige, gestructureerde wijze wordt opgeslagen. Bovendien maakt deze werkwijze het niet mogelijk om relaties tussen documenten inzichtelijk te maken. Vaak ontstaat naast de schriftelijke neerslag van een informatieverzameling ook nog een ordening van de informatie in het hoofd van de auteur. Dit cognitief beeld stelt de auteur in staat om een zekere ordening aan te brengen: welke auteur is belangrijk, welk artikel is belangrijk, wat is de samenhang tussen artikelen. Juist de samenhang is moeilijk vast te leggen. Vaak zijn de relaties lastig te benoemen ('Document A heeft te maken met document B'). Het probleem is dat het overzicht over de documenten en de relaties daartussen kan verdwijnen, waardoor belangrijke informatie verloren kan gaan en de kwaliteit van een rapport afneemt. Het probleem is dus tweeledig: het structureren van documenten (zowel de brondocumenten als de annotaties daarop) en het inzichtelijk maken van de relaties tussen die documenten.
1.2
Uitwisseling van informatie Een schrijver zal vòòr de start van het eigenlijke schrijfproces informatie verzame-
len die in meer of mindere mate relevant is voor het onderwerp. Deze informatie wordt vervolgens verwerkt in het in paragraaf 1 beschreven proces.
2
FlexRef: Het annoteren van documenten
Dit kan echter betekenen dat auteurs die met hetzelfde onderwerp bezig zijn dubbel werk verrichten. Beide auteurs verrichten literatuuronderzoek naar hetzelfde onderwerp en zullen voor een deel dezelfde bronnen tegenkomen en voor een deel afwijkende bronnen gebruiken. De auteurs zouden er belang bij kunnen hebben om elkaars literatuurlijsten te kunnen raadplegen. Maar op het moment dat één van beide auteurs annotaties op de gevonden literatuur heeft vastgelegd kan ook die informatie door de andere auteur gebruikt worden. De tweede auteur zou op grond van de annotaties een beter beeld kunnen vormen van de gevonden informatie en sneller kunnen analyseren of een bepaald document wel of niet relevant is. Naast het inzichtelijk maken van relaties tussen documenten (paragraaf 1) vormt het uitwisselen en delen van annotaties de tweede component van deze scriptie. 1.3
Doelstelling Doelstelling van dit onderzoek is een antwoord geven op de volgende vraag: Hoe kunnen schrijvers gegevens over en relaties tussen documenten vastleggen en
delen? Hierbij wordt onder een schrijver verstaan: iedereen die een tekst schrijft en daar andere documenten bij nodig heeft. Gegevens over documenten betekent: Bibliografische en beheersmatige informatie, bijvoorbeeld de auteur van een document, de locatie of het onderwerp. Met relaties tussen documenten wordt bedoeld: het verband tussen documenten onderling. Een document is een informatieobject: een afzonderlijke eenheid van samenhangende informatie. Het is daarbij niet relevant of een document elektronisch beschikbaar is of alleen op papier. Onder ‘delen van relaties’ versta ik: het toestaan dat andere auteurs de gemaakte annotaties kunnen inzien en kunnen integreren in eigen annotatiesystemen.
1.4
Probleemstelling Een van de oorzaken van het geschetste probleem is dat de verschillende documen-
ten niet eenduidig zijn: de aard van een tekst op het internet verschilt in een aantal opzichten sterk van een tekst in een tijdschrift. Een mogelijke oplossing is dan ook het uniform benaderen van alle documenten. Hiermee wordt bedoeld dat documenten los moeten worden gezien van de verschijningsvormen. Er moet alleen gekeken worden naar relevante kenmerken van een document.
3
FlexRef: Het annoteren van documenten
Hieruit volgt de probleemstelling van dit onderzoek: Hoe kunnen gebruikers met behulp van standaardisatie van documenten relaties vastleggen tussen documenten en deze relaties delen? Deze probleemstelling laat zich vertalen in de volgende deelproblemen: Het standaardiseren van documenten: er moet een standaard komen waarmee alle documenten op een eenduidige manier vast te leggen zijn. Uitgaande van de beschikbare eigenschappen van een document moet vastgelegd worden welke eigenschappen worden opgenomen. Een voorbeeld van zo’n universeel kenmerk is de titel van een document: (bijna) alle documenten zullen een titel hebben. Een minder universeel kenmerk is bijvoorbeeld het aantal pagina’s van een document. Dit is afhankelijk van presentatieaspecten van een document en niet direct van de inhoud. Het vastleggen van relaties: er moet een standaard komen die definieert op welke manier relaties tussen documenten worden vastgelegd zodat dit op een uniforme wijze gebeurt. Het delen van relaties: er moet een standaard uitwisselingsprotocol komen dat het mogelijk maakt gemaakte annotaties te delen met andere gebruikers. Gebruikers: uiteindelijk moeten eindgebruikers in staat zijn deze handelingen op een eenvoudige manier uit te voeren. Belangrijk is verder dat ‘gebruikers’ kunnen staan voor verschillende groepen: een enkele gebruiker, een groep onderzoekers die samen (binnen één organisatie) werken aan een project, een groep die verspreid over verschillende lokaties is of een wereldwijde groep. Hier mag geen inperking op bestaan. Deze componenten zullen geïntegreerd worden in een applicatie waarmee de doelstelling gerealiseerd wordt.
1.5
Aanpak De komenende hoofdstukken geven weer hoe de probleemstelling is aangepakt. In
het hoofdstuk ‘Probleemanalyse’ wordt bekeken welke oplossingen er bestaan voor het geschetste probleem. Er worden twee groepen software bekeken en onderzocht wordt wat de tekortkomingen zijn. Op basis van deze gegevens wordt in hoofdstuk 3 een concept uitgewerkt dat de basis vormt voor implementatie van een mogelijke oplossing (hoofdstuk 4).
4
FlexRef: Het annoteren van documenten
2 Probleemanalyse 2.1
Inleiding Dit hoofdstuk is een analyse van bestaande software voor het beheren van informa-
tie. Er wordt gekeken naar bibliografische software (paragraaf 2.2) en naar webannotatiesoftware (paragraaf 2.3). De eerste groep is vooral van belang omdat deze applicaties gebruikt worden voor het bijhouden van literatuurlijsten en dus te maken hebben met het leggen van relaties tussen documenten. Webannotatie-systemen zijn bedoeld voor het becommentariëren van documenten op het web. Deze software moet aantonen wat de verschillende benaderingen zijn voor het werken in een netwerkinfrastructuur. Beide paragrafen worden ingeleid met een beschrijving van de taken van de software en de rol die zij (kunnen) spelen bij het beheren van informatie. De software is niet uitvoerig getest, dit omdat deze scriptie niet bedoeld is om de software te beoordelen. Dit hoofdstuk moet gezien worden als een onderzoek naar de tekortkomingen in de werking en opzet van de applicaties.
2.2
Personal Bibliographic Software
2.2.1 Inleiding Het onderwerp van deze scriptie is het vastleggen van relaties tussen verschillende informatie-objectenen en het vastleggen van kenmerken van documenten. Dit probleem heeft een concreet toepassingsgebied bij de productie van teksten. Deze literatuur bestaat uit een tekst met daarbij verwijzingen naar andere teksten. Deze verwijzingen worden vaak literatuurverwijzingen genoemd. Voor het beheren van deze verwijzingen zijn een aantal applicaties verkrijgbaar. Deze software wordt aangeboden onder de naam 'Personal Bibliographic Software' of 'Reference Management Software'. Een aantal van deze applicaties heb ik bekeken om te onderzoeken op welke manier relaties gelegd kunnen worden en wat de aard van die relaties is. Personal Bibliographic Software is software waarmee het mogelijk wordt om literatuurverwijzingen te bewerken, op te slaan en te exporteren naar bijvoorbeeld een tekstverwerker. Tijdens het schrijven van een tekst vereenvoudigd dit het bijhouden van verwijzingen. Tekstverwerkers bieden eveneens mogelijkheden voor het bijhouden van verwijzingen. Dit gebeurt door middel van het aanmaken van een literatuurlijst en voetnoten en vervolgens vanuit de tekst van het document verwijzingen aan te brengen naar onderdelen
5
FlexRef: Het annoteren van documenten
van de literatuurlijst. Nadeel van tekstverwerkers is dat de verwijzingen worden opgeslagen in het document waarin ze gebruikt worden. Auteurs schrijven vaak teksten waarin bronnen 'hergebruikt' worden. Het gebruik van alleen een tekstverwerker betekent dat deze bronnen telkens opnieuw moeten worden ingevoerd.
Figuur 1: Het maken van verwijzingen binnen MS Word
Natuurlijk is het verder mogelijk om een database te gebruiken, zoals bijvoorbeeld Microsoft Access. Dit heeft een aantal nadelen. Zo moet er een database worden ontworpen en geïmplementeerd, waarbij het opslaan van literatuurverwijzingen een complexe structuur kan vereisen. Bovendien is met het gebruik van een database nog geen koppeling gelegd met een tekstverwerker zodat de bouwer van een dergelijk systeem dit zelf moet programmeren. Voor de doorsnee gebruiker zonder programmeerkennis is dit zeer moeilijk te doen. Deze software vervult dus twee belangrijke functies: het opslaan en hergebruik van literatuurverwijzingen en een koppeling leggen met een tekstverwerker.
2.2.2 Evaluatiepunten Bij het evalueren van de pakketten is op de algemene kenmerken van bibliografische software gelet, bijvoorbeeld opslagmogelijkheden, zoekmogelijkheden of integratie met tekstverwerkers. Daarnaast is specifiek gelet op kenmerken die relevant zijn voor deze scriptie, zoals (inter)netwerkmogelijkheden, het leggen van relaties tussen referenties en de aard van deze relaties.
6
FlexRef: Het annoteren van documenten
2.2.3 Softwareselectie Bij de keuze van te evalueren software heb ik gezocht naar evaluaties op internet. Dit leverde een aantal websites die PBS-applicaties bespreken ([EVANS 1999], [SHAPLAND 1999]) waarbij de meeste applicaties Windows applicaties bleken te zijn. Er zijn ook een aantal pakketten beschikbaar voor het Unix platform maar omdat deze applicaties complexer en lastiger te installeren zijn deze verder niet bekeken. Deze inperking hoeft geen probleem te zijn omdat met name op de functionaliteit van de pakketten gelet is en de bekeken applicaties lijken in grote lijnen sterk op elkaar. Uiteindelijk bleek dat Reference Manager, ProCite, EndNote en Biblioscape de meest populaire software is. Deze vier heb ik bekeken waarbij ik ProCite buiten beschouwing heb gelaten omdat dit pakket hoofdzakelijk slechts in de gebruikersinterface verschilt met EndNote.
2.2.4 Algemene kenmerken Personal Bibliographic Software Personal bibliographic software wordt gekenmerkt door de mogelijkheid om verschillende soorten referenties op te slaan in een enkele database waarbij alleen de velden worden getoond die relevant zijn voor een bepaald type referentie. Bijvoorbeeld het opslaan van een tijschriftartikel vereist deels andere velden dan het opslaan van een boek. Alle programma's zijn opgebouwd rond een lokale database, gekoppeld aan een lokale installatie van de software. Alle bekeken applicaties zijn voorbereid op de grote variatie die opslag van bibliografische gegevens vereist. In de eerste plaats kunnen alle pakketten voor de hand liggende gegevens opslaan. Voorbeelden van dit soort gegevens zijn auteursgegevens (meerdere auteurs per referentie), titels en subtitels, uitgeefgegevens (publicatiedatum, uitgever, edities, ISBN of ISSN) en gegevens die verwijzen naar de vindplaats van het document (bibliotheekcodes, een URL). Verder is het mogelijk om eigen gegevens toe te voegen. Hierbij moet gedacht worden aan eigen trefwoorden, aantekeningen of een samenvatting. Belangrijk is ook dat de software de gebruiker vrij laat in te gebruiken velden. Sommige gebruikers zullen bijvoorbeeld de taal van het originele document willen op slaan, andere niet. Er zitten echter grote verschillen in relevante informatie voor een bepaalde bron. Een boek vraagt om andere gegevens dan een lezing of een tijdschriftartikel. Dat betekent dat een bibliografisch systeem rekening moet houden met die grote verscheidenheid in de aard van de bronnen. De gebruiker maakt bij de invoer van een nieuwe verwijzing eerst een keuze voor de aard van de bron. Vervolgens presenteert het pakket een leeg databaserecord met een veldenlijst die relevant is voor die bron. Alle pakketten werken op deze
7
FlexRef: Het annoteren van documenten
manier en bieden een min of meer gelijkwaardige lijst van mogelijke bronsoorten. Een meerwaarde van het gebruik van PBS boven andere oplossingen zit dan ook in deze functionaliteit.
Figuur 2: Voorbeeld van een referentie in EndNote. Het "Reference Type" bepaalt welke velden getoond worden. In dit geval gaat het om een tijdschriftartikel.
Die verscheidenheid van de aard van de gegevens leidt er toe dat de onderliggende databases op een andere manier georganiseerd zijn dan doorgaans gebruikelijk is bij database-systemen. De databases zijn free-form tekstdatabases1. Dat betekent dat de onderliggende databases geen beperkingen opleggen ten aanzien van de invoer van gegevens. De pakketten stellen geen restricties op bijvoorbeeld de lengte van de invoer van een titel. Hierdoor kan gebruiksgemak prevaleren boven data-integriteit. Dit is geen bezwaar omdat de databases zijn ontworpen voor één gebruiker, één computersysteem en één doel. De softwarepakketten houden hier rekening mee door woordindexen te maken zodat het zoeken op karakterreeksen versneld wordt. Dit is bijvoorbeeld het geval bij het zoeken naar titels of woorden in een samenvatting. Verder wordt truncatie2 van woorden ondersteund zodat de gebruiker kan zoeken op delen van woorden.
1
Dit soort databases indexeren de gegevens op woordbasis en zijn daarom zeer gezicht voor tekstdatabases. Dit in tegenstelling tot relationele databases die op basis van complete velden indexeren. 2 Truncatie is het afkorten van woorden zodat op verschillende vormen gezocht kan worden. Een voorbeeld is “werk*” zodat ook “werken”, “werk”, “werkte” gevonden wordt.
8
FlexRef: Het annoteren van documenten
Verder bieden alle pakketten ondersteuning voor tekstverwerkers. In de regel worden de twee grootste tekstverwerkers voor Windows ondersteund: Microsoft Word en Corel WordPerfect. De integratie met die tekstverwerkers leidt tot het automatisch genereren van literatuurlijsten. Alleen de bronnen die geciteerd worden in het te schrijven artikel of boek worden opgenomen in de literatuurlijst. Het handmatig bijhouden van literatuurlijsten in een tekst is lastig en kan leiden tot het noemen van artikelen die helemaal niet meer gebruikt worden en tot inconsistentie in de opmaak van bibliografiën. Deze functionaliteit vormt een belangrijke meerwaarde van bibliografische software. Tussen de pakketten zit verschil in het gebruiksgemak van de functie. Met name de oudere pakketten, die minder goed geïntegreerd zijn in Windows, werken soms wat moeizaam. Speciale aandacht verdient het Z39.50 protocol. Producenten van bibliografische informatie publiceren bibliografische databases op internet. Voorbeelden van dit soort databases zijn catalogi of referentiedatabases.Het Z39.50 protocol biedt een uniforme standaard voor het communiceren tussen deze databases en Z39.50 clients. Een aantal bekeken applicaties ondersteunen het gebruik van dit protocol en werken als Z39.50 client. Hierdoor wordt het mogelijk om literatuurverwijzingen te zoeken en direct te importeren in de database met referenties.
Figuur 3: Z39.50 zoekscherm van Reference Manager
In de volgende paragrafen wordt specifiek ingegaan op de mogelijkheden die de verschillende pakketten bieden.
9
FlexRef: Het annoteren van documenten
2.2.5 Reference Manager 10 Producent: ISI ResearchSoft, Homepage: http://www.refman.com Reference Manager is een al langer bestaand pakket voor het beheren van bibliografische verwijzingen. Het pakket heeft voorgedefinieerde velden voor een groot aantal soorten bronnen. Gebruikers kunnen de velddefinities niet aanpassen of uitbreiden maar de set van definities is ruim voldoende om verschillende soorten bronnen op te slaan. Bovendien zijn er enkele vrij in te vullen velden beschikbaar.
Figuur 4: Het hoofdvenster van Reference Manager
Na het opstarten van het programma en het openen van een database verschijnt de lijst met ingevoerde referenties. Vanuit deze lijst is het mogelijk om zoekacties uit te voeren binnen de referenties, records te bewerken, te verwijderen en toe te voegen. De lijst is te sorteren op een van de weergegeven kolommen, bijvoorbeeld auteur, titel of RefID3. Het toevoegen van nieuwe literatuurverwijzingen kan op twee manieren: handmatig invoeren of het zoeken van een bibliografisch record op het Internet. Handmatig invoeren betekent: een nieuw record openen, kiezen voor het soort bron (bijvoorbeeld een boek of een tijdschriftartikel) en vervolgens de relevante gegevens invoeren.
3
Het RefID is het recordnummer dat Reference Manager automatisch toekent aan een record.
10
FlexRef: Het annoteren van documenten
Een goed hulpmiddel is ondersteuning van bibliografische databases op het Internet, waardoor het niet meer nodig is om gegevens als uitgever, titel of auteur handmatig in te voeren. Reference Manager ondersteunt zoeken in bibliografische databases via het Z39.50 protocol, zoeken in PubMed (een gratis toegankelijke medische bibliografie) of in ISI Web of Science, een betaalde dienst. Het zoeken gaat redelijk eenvoudig: kies een van de drie opties, voer zoektermen in en de resultaatlijst wordt getoond. Vanuit deze lijst zijn records te kopiëren naar de eigen database waar de gebruiker vervolgens aanvullingen of verbeteringen kan aanbrengen. Labels van velden kunnen aangepast worden, bijvoorbeeld om er Nederlandse teksten van te maken. Dit is vooral handig bij de zogenaamde 'User Defined' fields, waar er vijf van zijn. Het maken van nieuwe velden is niet mogelijk, net als het aanmaken van nieuwe soorten bronnen. De lijst van namen van ondersteunde bronnen is eveneens aan te passen. Records in Reference Manager hebben een aantal velden waar het mogelijk is om koppelingen naar externe bronnen te leggen. Dit gebeurt door middel van een URL of een (lokaal of netwerk) bestandsnaam. Dubbelklikken op zo'n URL of bestandsnaam leidt tot het starten van de standaardbrowser op het systeem of de gekoppelde applicatie. Records kunnen niet aan elkaar worden gerelateerd. Bovendien werken verwijzingen naar externe bronnen altijd maar één richting op. Reference Manager niet terugverwijzen omdat het programma dan in staat zou moeten zijn wijzingen in het doeldocument aan te brengen, wat in alle gevallen niet mogelijk is.
11
FlexRef: Het annoteren van documenten
Figuur 5: Voorbeeld van een record met koppelingen. In dit geval is het een hoofdstuk uit een boek. Het hoofdstuk is te vinden op de URL in het veld "Web/URLs"
Reference Manager biedt een aantal hulpmiddelen die de consistentie van de gegevens bevorderd. In de eerste plaats kan de gebruiker een test op dubbele records uitvoeren. Verder is er een 'Term Manager' aanwezig waarmee het mogelijk wordt om trefwoorden bij te houden (met synoniemen), tijdschrifttitels en auteurs te beheren. Voorbeelden zijn spellingsvarianten in auteursnamen (bijvoorbeeld Müller en Mueller), alternatieve trefwoorden (“Scheikunde” voor “Chemie”) of verkorte namen voor tijdschrifttitels (AmSci voor American Science). Reference Manager heeft geen ondersteuning voor het delen van databases. Wel is het mogelijk om een netwerkeditie te kopen waarmee het mogelijk is een database te delen met meerdere gebruikers. Dit delen van een database beperkt zich tot het lokale netwerk (dus niet via internet). Een andere toevoeging die niet standaard in Reference Manager is de Reference Web Poster. Hiermee kan een database op het web gepubliceerd worden. Eenmaal gepubliceerd zijn de referenties te doorzoeken door middel van een zoekapplicatie. Het is niet mogelijk om referenties online te wijzigen. Wel kunnen op het web gepubliceerde records geïmporteerd worden in Reference Manager (of een ander PBS-systeem van ISI ResearchSoft).
12
FlexRef: Het annoteren van documenten
2.2.6 EndNote Producent: ISI ResearchSoft, Homepage: http://www.endnote.com/ EndNote is van dezelfde softwareproducent als Reference Manager. Het pakket is ooit ontwikkeld als bibliografische software voor het Apple platform. Het pakket is bekeken in de Windows-uitvoering en maakt op het eerste gezicht een kalere indruk dan Reference Manager. Bij nadere bestudering is de basisfunctionaliteit grotendeels gelijk aan die van Reference Manager. In de eerste plaats biedt EndNote dezelfde Internet-zoekmogelijkheden als Reference Manager. Verder werkt het omgaan met de bibliografische ongeveer op dezelfde wijze. Ook hier werkt de gebruiker vanuit een centrale lijst met opgeslagen referenties. Dubbelklikken op een referentie levert de details van die referentie.
Figuur 6: De user interface van Endnote
De user interface van Endnote is aanzienlijk eenvoudiger van opzet dan die van Reference Manage. Er is bijvoorbeeld geen knoppenbalk aanwezig. Dit kan op het eerste gezicht lastig zijn voor de beginnende gebruiker maar doordat de functionaliteit beperkt is voldoet de standaard menubalk in de meeste gevallen goed.
13
FlexRef: Het annoteren van documenten
Net als Reference Manager kan EndNote zoeken in online bibliografische systemen via het Z39.50 protocol. Er worden een groot aantal voorgedefinieerde verbindingen meegeleverd. Vanwege een beperking in de demoversie lukte het niet om een aantal records uit zo'n zoekresultaat op te slaan in de evaluatie-database van EndNote. Wel konden deze records opgeslagen worden in een nieuw aangemaakte test database. Het kan zijn dat de evaluatie-database is beveiligd tegen het opslaan van nieuwe records.
2.2.7 Biblioscape Producent: CG Information, Homepage: http://www.biblioscape.com CG Information is opgericht door een aantal wetenschappers die ontevreden waren over bestaande bibliografische software. Een belangrijke motivatie voor de ontwikkelaars was dat de bestaande software niet voldoende rekening hield met de mogelijkheden die het Internet biedt. Biblioscape kent drie producten: Biblioscape zelf, een lichte uitvoering (BiblioExpress) en een webserver (BiblioWeb). Voor dit onderzoek is Biblioscape bekeken. Biblioscape is georganiseerd rond een aantal modules. Het prijsverschil tussen de verschilllende versies van Biblioscape komt voort uit het aantal modules wat wordt meegeleverd. De volgende modules zijn beschikbaar: -
Reference module. Deze module is nodig voor het opslaan van bibliografische informatie.
-
BiblioWord. Een ingebouwde tekstverwerker die het eenvoudig maakt om rapporten te schrijven. Vanuit een literatuurlijst kunnen items met behulp van drag-and-drop in de tekst worden ingevoegd.
-
Internet Module. Internet Explorer wordt gebruikt als interne webbrowser. Het is dan mogelijk om bijvoorbeeld een webpagina op te slaan en te indexeren.
-
Notes Module. Korte opmerkingen met betrekking tot het onderwerp kunnen worden opgeslagen in Biblioscape. Notes kunnen worden gekopppeld aan andere objecten in het Biblioscape systeem. Daarnaast zijn er nog een drietal modules beschikbaar die in dit kader niet van be-
lang zijn. Het gaat om een Task Module (waarmee taken zijn te beheren), een Chart Module (waarmee kleine grafieken zijn te maken) en een Library Module (waarmee een kleine
14
FlexRef: Het annoteren van documenten
bibliotheek is te beheren). Naast dit alles is er ook nog een beperkte tekstverwerker aanwezig: BiblioWord. Anders dan bij de andere pakketten sluit de gebruikersinterface aan bij tegenwoordige Windows-standaarden. Concepten uit Microsoft Office zijn overgenomen.
Figuur 7: De user interface van Biblioscape
Net als de andere pakketten werkt ook Biblioscape vanuit een lijst met verwijzingen. Vanuit deze lijst is het mogelijk om verwijzingen te groeperen, te bewerken, toe te voegen en te verwijderen. Biblioscape maakt het mogelijk om relaties tussen referenties te leggen. Daarbij worden vier relatie-types onderscheiden: Related, Supportive, Contradictive, Cited. Dit aantal is door de gebruiker uit te breiden. Een dergelijke relatie kan bi-directioneel zijn: in dat geval wordt in het doel-record een relatie terug gelegd. Fout! Verwijzingsbron niet gevonden. Figuur 8: Relaties leggen tussen records
Figuur 8 laat zien dat het onderste item (een tijdschriftartikel) gekoppeld wordt aan het record. Het vinkje bovenaan het scherm zorgt ervoor dat in het record van het onderste item ook een koppeling wordt gelegd met het huidige actieve record waarvan de naam in de titelbalk van het venster vermeld staat.
15
FlexRef: Het annoteren van documenten
Het is niet alleen mogelijk om koppelingen tussen items in de Reference-module te leggen maar ook naar items uit de Notes-module. De Notes-module wordt gebruikt voor het bijhouden van persoonlijke aantekeningen. Door een referentie te koppelen aan een Note kunnen dus aantekeningen over bijvoorbeeld een boek worden bijgehouden. Ook deze relatie is bi-directioneel. Vanuit de Notes-module kunnen koppelingen worden gelegd met andere objecten die binnen en buiten Biblioscape gebruikt worden. Voorbeelden van zulke objecten zijn een URL, een bestand op het lokale systeem, een Task-object of een Chartobject. Het leggen van koppelingen tussen Biblioscape-objecten is niet consistent doorgevoerd. Centraal in dit systeem staan de Notes. Een Note kan verwijzen naar alles. Een Reference-object kan alleen verwijzen naar andere References of naar een Note. Een directe koppeling leggen tussen een Reference en bijvoorbeeld een webpagina kan via het URLveld in de database maar niet via het link-mechanisme van Biblioscape. Figuur 9 laat dit model zien waarbij de centrale plaats van het Note-object duidelijk wordt.
Figuur 9: Referentiemodel van Biblioscape. Notes staan centraal.
Biblioscape kan de relaties visualiseren (Figuur 10). De software toont alleen impliciete relaties. Dit zijn relaties die op grond van overeenkomstige auteurs worden gelegd. Vaak werken auteurs samen aan een artikel. Door zo’n co-auteur te kiezen kan een ander record getoond worden. Deze visualisatie werkt beperkt omdat Biblioscape alleen relaties legt op grond van auteurvelden.
16
FlexRef: Het annoteren van documenten
Figuur 10: Visualisatie van relaties tussen auteurs
De Reference Module bevat de database met bibliografische informatie. De verwijzingen worden georganiseerd in folders. Dit maakt het mogelijk om verwijzingen voor verschillende doeleinden te scheiden. Het is mogelijk om een record in meerdere folders te plaatsen. Het tonen van alle records in een folder wordt intern verwerkt als een query. Biblioscape waarschuwt in het helpbestand dat er niet teveel4 records in een folder geplaatst moeten worden omdat het tonen van recordoverzichten dan langzaam gaat. Ieder woord in de database wordt geïndexeerd. Een record mag ook een onbeperkte tekst bevatten (de complete tekst van een document bijvoorbeeld) en in dat geval wordt ook die tekst geïndexeerd. De standaard zoekfunctionaliteit werkt niet op losse velden maar op alle woorden in de database. Hierbij kunnen Boolean operatoren gebruikt worden, net als bepaalde wildcard symbolen. Naast deze snelzoekfaciliteit kent Biblioscape nog zogenaamde Dynamic Folders. Deze maken het mogelijk om geavanceerde zoekacties uit te voeren (bijvoorbeeld op veld). Deze zoekacties kunnen bewaard worden en worden daarna automatisch bijgewerkt. Daarnaast bestaat er nog een Advanced Search mogelijkheid waarbij complexe queries geformuleerd kunnen worden.
4
“Teveel” is afhankelijk van de snelheid van de gebruikte computer en de hoeveelheid aanwezig geheugen. Er is geen harde grens.
17
FlexRef: Het annoteren van documenten
Bibliografische gegevens kunnen ook op Internet gevonden worden. Biblioscape gebruikt hiervoor Internet Explorer en integreert deze browser in de applicatie. Rechtstreeks zoeken in on-line databases, bijvoorbeeld via het Z39.50 protocol, is niet mogelijk. Dit is een grote beperking van Biblioscape omdat gebruikers zelf moeten definiëren in welk formaat het record is. Biblioscape levert voor een aantal bekende websites importfilters. Deze filters werken met de HTML zoekresultaten van een bibliografische website. Nadeel is dat als de maker van zo’n website besluit het uitvoerformaat (in HTML) te wijzigen het importfilter verouderd is en moet de gebruiker een nieuw filter ophalen op de website van Biblioscape5. Bij het importeren probeert Biblioscape op grond van de HTML-uitvoer uit een bibliografische database een record te vullen. Voordeel van Z39.50 is dat de gegevens altijd in een voorgedefinieerd formaat zijn waardoor een ingebouwde Z39.50 client de import kan doen. Biblioscape beschikt niet over zo'n client en import uit externe databanken vindt dus altijd via de webinterface van een databank plaats. Voor het koppelen van externe informatie aan een referentie beschikt Biblioscape over verschillende mogelijkheden. In de eerste plaats is er een bij alle referentietypes aanwezig 'URL' veld aanwezig. In dit veld kan een relevante URL worden geplaatst. Daarnaast kent Biblioscape het referentietype 'Electronic Source', waarin een attachment kan worden opgeslagen. Dit attachment fungeert als een link naar een op de computer of het lokale netwerk aanwezige document. Tenslotte beschikt ieder record over de mogelijkheid om de volledige tekst van een document op te slaan. Dit heeft als voordeel dat het complete document geïndexeerd wordt en via de zoekfuncties van Biblioscape doorzocht kan worden. Biblioscape is voorbereid op het delen van een enkele database binnen een lokaal netwerk. Meerdere gebruikers kunnen tegelijkertijd werken in één bestand. Wel moeten alle gebruikers beschikken over een licentie van Biblioscape. Een alternatief voor het delen van een database via het lokale netwerk is het gebruik van BiblioWeb. Dit is een webserver die ervoor zorgt dat een Biblioscape database via het web toegankelijk wordt. De meeste basisfunctionaliteit van Biblioscape komt beschikbaar via een webbrowser. Naast de standaardfunctionaliteit biedt Biblioweb een forum waar discussies gevoerd kunnen worden. Deze uitbreiding van Biblioscape is in het bijzonder gericht op een projectgroep die een groter onderzoek verrichten.
5
Zie de website van Biblioscape: http://www.biblioscape.com/imp_filters.htm (Augustus 2002).
18
FlexRef: Het annoteren van documenten
2.2.8 Conclusie De functionaliteit van de bekeken pakketten ligt dicht bijelkaar. De verschillen zitten met name in de presentatie van de grafische user interface. Conceptueel werken alle pakketten echter hetzelfde: een database waarin voorgedefinieerde velden kunnen worden ingevuld. Aan deze velden kunnen andere informatieobjecten gekoppeld worden: zowel intern aanwezige objecten (Biblioscape is hier sterk in) als externe objecten (via een URL of een netwerkpad). Externe koppelingen werken slechts één kant op met als gevolg dat het bouwen van een 'web' van onderlinge informatie-objecten niet mogelijk is. Hiervoor is immers een terugverwijzingsmechanisme noodzakelijk. En voor een dergelijk mechanisme is het nodig het originele doelobject op te kunnen slaan of een kopie te maken zodat het doelobject bewerkt kan worden. Reference Manager ondersteunt externe links doordat het URL’s in het record opslaat. Hierbij werkt de applicatie met een aantal voorgedefinieerde velden. De aard van die relaties wordt daarbij niet benoemd. Dit in tegenstelling tot Biblioscape, die de mogelijkheid biedt om interne koppelingen te benoemen. Tabel 1 geeft dit weer. Reference Manager
Biblioscape
Web/URLs Link To PDF Link to Full-text Related Links Image(s) Related Supportive Contradictive Cited
Tabel 1: Benoemde linktypes in Reference Manager en Biblioscape
De bekeken applicaties werken allemaal vanuit het principe van een enkele gebruiker. De database die de eigenlijke bibliografische gegevens bevat is dan ook gekoppeld aan een enkele gebruiker. De pakketten bieden echter voorzieningen om bibliografische informatie te delen via een lokaal netwerk of via het Internet. Om het eerste te bereiken moeten alle computers voorzien worden van een eigen kopie van het pakket en in het tweede geval moet extra software geïnstalleerd worden om koppeling met een webserver mogelijk te maken. Deze oplossing kost dus hoe dan ook extra geld.
19
FlexRef: Het annoteren van documenten
2.3
Webannotatiesystemen
2.3.1 Inleiding Een webannotatiesysteem is een systeem om informatie op het World Wide Web te annoteren. Gebruikers van het Web kunnen zo commentaar toe voegen aan webpagina’s. Mosaic, één van de eerste grafische browsers voor het Web, ondersteunde al groepsannotaties [MOSAIC 1993]. Hiermee werd het voor een groep Mosaic-gebruikers mogelijk om een annotatieserver te starten en documenten te annoteren. De browser bekijkt of de annotatieserver annotaties bevat die betrekking hebben op het op dat moment actieve document in de browser. Om een indruk te krijgen van de verschillende mogelijkheden ten aanzien van concept en implementatie heb ik een aantal webannotatiesystemen bekeken.
2.3.2 Algemeen model Venu Vasudevan en Mark Palmer [VASU 99] beschrijven beknopt een abstract model voor het beheren van webannotatiesystemen. Dit model gaat uit van een client-server model waarbij de client staat voor de webbrowser van de eindgebruiker en de server voor de webserver waar de webdocumenten opgeslagen zijn. Het annotatiesysteem staat tussen de client en de server in en draagt zorg voor het beheer van de annotaties.
Figuur 11: Algemeen model webannotatiesystemen.
Het abstracte model bestaat uit een aantal componenten:
20
FlexRef: Het annoteren van documenten
-
Interceptors. Deze component staat tussen de webserver (het originele document) en de webclient (de browser). Interceptors vangen documenten af, sturen het door naar composers voor bewerkingen en sturen het resultaat door naar browsers.
-
Composers: Dit zijn de verbindende componenten tussen de verschillende onderdelen. Deze componenten bevatten de eigenlijke functionaliteit van het annotatiesysteem.
-
Annotation Repository Services: Deze component bevat de functionaliteit voor het toevoegen, verwijderen en bewerken van annotaties. De auteurs stellen niet vast welk componenten in de client geïmplementeerd moe-
ten worden en welke in de server. Dat betekent dat bepaalde functionaliteit zich in de webbrowser kan bevinden maar dat die functionaliteit ook op een server kan bevinden. De exacte plaats van het annotatiesysteem is afhankelijk van de implementatie.
2.3.3 Annotea Annotea [ANNOTEA 2002] is begonnen als demonstratieproject van het W3C6. Het maakt gebruik van relatief nieuwe door het W3C ontwikkelde technieken en protocollen zoals HTTP 1.1, XML en RDF.
Figuur 12: Architectuur van Annotea [KAHAN 2001]
6
World Wide Web Consortium, een instantie die zich bezig houdt met het ontwikkelen en vaststellen van standaarden die met het World Wide Web te maken hebben. Homepage: http://www.w3.org
21
FlexRef: Het annoteren van documenten
Het systeem werkt met een browser7 en een annotatieserver. Iedere annotatie is een RDF-record8, dat bestaat uit de eigenlijke annotatie en metadata. De metadata geeft aan op welk deel van het document de annotatie betrekking heeft en wat de eigenschappen van de annotatie zijn (datum van aanmaak, auteur van de annotatie etcetera). Als de gebruiker een document opvraagt van een willekeurige webserver zal Annotea aan de annotatieserver vragen of er annotaties over dat document zijn, in dat geval zal de browser de onderdelen van het document die geannoteerd zijn markeren zodat de gebruiker de bijbehorende annotatie kan bekijken. Annotea gebruikt HTTP 1.1 voor als transportprotocol. Hierbij wordt gebruik gemaakt van commando’s die rechtstreeks op het bestandssysteem van de Annoteaserver werken (DELETE, PUT etcetera). Dat betekent dat bepaalde functionaliteit van Annotea zeer sterk afhankelijk is van de de gebruikte webserver terwijl de overige functionaliteit in Perl-scripts gedefinieerd is. Het is interessant om te zien welke velden door een annotatiesysteem ondersteund worden. Annotea ondersteunt de in Tabel 2 genoemde standaardvelden. Indien daar behoefte aan bestaand kan het schema worden uitgebreid met andere velden ([KAHAN 2001]). Annotates Body Context Author Created Modified Related
De bron die geannoteerd wordt De tekst (HTML etc) van de annotatie Biedt de mogelijkheid om te linken naar een specifiek deel van de bron die in Annotates genoemd wordt De maker van de annotatie Wanneer de annotatie gemaakt is Wanneer de annotatie gewijzigd is Een veld waarin eventuele andere relevante URL's genoemd kunnen worden
Tabel 2: Voorgedefinieerde velden in Annotea
Om Annotea te kunnen gebruiken is een webbrowser nodig die ondersteuning biedt voor dit annotatiesysteem. Gebruikers van Annotea moeten verder toegang hebben tot een annotatieserver, die eventueel ook zelf geïnstalleerd kan worden. Het grootste nadeel is het gebruik van geavanceerde HTTP 1.1 technieken voor het opslaan en opvragen van de annotaties, wat de implementatie van Annotea sterk afhankelijk maakt van de functionali-
7 Op dit moment ondersteunt alleen Amaya, de testbrowser van het W3C, Annotea. Zie: http://www.w3.org/Amaya/ 8 RDF: Resource Description Framework. De ontwikkelaars van Annotea hebben hiervoor gekozen omdat dit een uitbreidbaar dataformaat is dat gebruikers van Annotea in staat stelt eigen uitbreidingen te maken op de Annotea standaardvelden ([KAHUN 2001]. Homepage: http://www.w3.org/RDF/
22
FlexRef: Het annoteren van documenten
teit van een webserver. Er wordt gebruik gemaakt van functionaliteit van de webserver terwijl die eigenlijk in Annotea zelf geïmplementeerd zouden moeten worden.
2.3.4 Critlink Critlink ([YEE 98]) is een annotatiesysteem dat volledig werkt via het Web. Er is geen speciale browser voor nodig. Gebruikers kunnen annotaties toevoegen aan websites door voor de te annoteren URL een speciale URL http://crit.org/ in te voeren. De URL http://crit.org/http://hagen.let.rug.nl leidt dus tot de geannoteerde versie van de webpagina op http://hagen.let.rug.nl. Crit presenteert de gebruiker een scherm waarin commentaar kan worden ingevoerd. De gebruiker identificeert zichzelf met gebruikersnaam en emailadres. Verder kan een titel van een commentaar, het commentaar zelf, het type commentaar (query, comment, support, disagree) worden aangegeven. Een annotatie kan betrekking hebben op het hele document of op een deel van het document. In dit laatste geval moet de gebruiker ook de passage waarop de annotatie betrekking heeft aangeven. Verder is het mogelijk om een commentaar aan alle gebruikers te tonen of juist te verbergen voor andere gebruikers. Na toevoegen van de annotatie is het commentaar zichtbaar voor iedereen die deze pagina bekijkt via de Crit-homepage doordat de software onder aan de pagina een lijstje van annotaties toevoegt. Als een gebruiker een deel van een document heeft geannoteerd verschijnt wordt dit aangegeven met behulp van speciale icoontjes die in de lopende tekst worden geplaatst. Op deze icoontjes kan worden geklikt waarna het volledige commentaar zichtbaar wordt. Critlink is erg laagdrempelig in gebruik omdat er geen speciale software nodig is. Nadeel is dat alleen HTML ondersteund wordt. Bovendien is de afhankelijk van de webserver op http://crit.org erg groot waardoor deze server regelmatig overbelast is of zelfs onbereikbaar. Het is mogelijk om zelf de Critlink-software te installeren zodat er een eigen annotatieserver gebruikt kan worden.
2.3.5 Multivalent Multivalent is een browser die het maken van annotaties ondersteunt. Het systeem werkt niet alleen met in HTML opgemaakte documenten maar ook met DVI, PDF, gescande documenten in TIFF-formaat en UNIX man pages. Bovendien is het aantal ondersteunde documentformaten uitbreidbaar doordat iedereen zelf nieuwe conversiefilters (plugins) kan schrijven [PHELPS 2001].
23
FlexRef: Het annoteren van documenten
Multivalent maakt van ieder brondocument een eigen interne representatie. De eindgebruiker werkt met een grafische voorstelling van die representatie. In het geval van HTML krijgt de gebruiker de pagina dus te zien zoals die ook in een standaard webbrowser getoond kan worden. Het verschil is dat de gebruiker direct in die grafische representatie aantekeningen kan maken, tekst kan markeren of koppelingen leggen tussen woorden in het document. Verder kunnen er ‘Post-it’-achtige 'floating windows' worden toegevoegd. Ook kan de gebruiker annotaties invoegen in de lopende tekst. Figuur 13 geeft een voorbeeld van een aantal annotaties in de Multivalent browser. Te zien zijn onder meer een markering (de tekst in de eerste alinea), een voorstel om de tekst te wijzigen (tweede alinea) en een annotatie die op zichzelf ook weer geannoteerd wordt (het vlak rechtsboven).
Figuur 13: Voorbeeld van een document in de Multivalent-browser
Multivalent gebruikt een eigen representatie van een brondocument en legt geen rechtstreekse koppeling met het oorspronkelijke document. Dit oorspronkelijke document blijft dus ongewijzigd. De interne representatie bestaat uit een zogenaamde Document tree. Dit is in XML gedefinieerd formaat dat een document als een hiërarchische boomstructuur ziet. Afhankelijk van het formaat van het originele document kan deze structuur uitgebreid zijn. Bijvoorbeeld een HTML pagina bevat meer structuurinformatie dan een gescand document. In het laatste geval wordt teruggegrepen op een structuur van pagina's,
24
FlexRef: Het annoteren van documenten
paragrafen, zinnen en woorden. Hierdoor kan het geheugengebruik van Multivalent intensief zijn. In alle gevallen wordt een document opgebouwd uit knopen. Iedere knoop kan subknopen bevatten. De knoop zelf kan een afbeelding bevatten, een woord uit een gescand document (eigenlijk dus ook een afbeelding), of een woord uit een elektronische tekst. Op basis van deze knopen kan gedrag worden gedefinieerd. Een gebruiker kan een tekst markeren, annoteren etc. Dit is mogelijk doordat de Multivalent browser "weet" dat een tekst van het type "tekst" is. Aan dit type worden een aantal gedragsregels gekoppeld, deze worden Behaviors genoemd. Deze gedragsregels zijn gecategoriseerd in een aantal types: -
Media Adaptors. Deze vormen de brug tussen een document formaat (HTML, PDF et cetera) en de interne documenttree. Ze proberen een document om te vormen in een bruikbare structuur die gerepresenteerd wordt in de documenttree. Daarnaast kunnen ze worden gebruikt door andere (externe) programma's om documenten te converteren, bijvoorbeeld een tekst-indexeer programma kan de Media Adaptors uit het Multivalent concept gebruiken om PDF's te doorzoeken.
-
Structural. Dit zijn behaviors die functionaliteit toe kunnen voegen aan (onderdelen van) de documenttree. Gedacht kan worden aan een behavior die de inhoud van een tabel kan sorteren, een behavior die de kleur van een tekst kan wijzigen.
-
Span. Deze behaviors kunnen gebruikt worden om knopen uit de documenttree te groeperen (lineair in plaats van hiërarchisch), bijvoorbeeld voor het selecteren van tekst die meerdere knopen beslaat (zoals bijvoorbeeld een zin).
-
Lenses. Deze definiëren een regio van de grafische representatie van een document om op een regio een functie uit te oefenen (uitvergroten van een deel van een document (handig bij gescande documenten), versleutelde gegevens tonen).
-
Managers. Deze zorgen ervoor dat verschillende behaviors kunnen samenwerken (bijvoorbeeld overlappende functionaliteit afhandelen et cetera). Multivalent plaatst dus alle functionaliteit in behaviors. Behaviors zijn deels stan-
daard aanwezig in Multivalent en deels afhankelijk van het document formaat van het oorspronkelijke document. Er bestaan groepen van behaviors, bijvoorbeeld alle behaviors die nodig zijn voor het werken met een HTML document. Deze groepen worden Hubs genoemd. Dit concept is ver doorgevoerd: ook de functionaliteit van de Multivalent browser zelf staat
25
FlexRef: Het annoteren van documenten
in een Hub. Gedacht moet dan worden aan zaken als de menubalk, de inhoud van de menu's, sneltoetsen et cetera. Eindgebruikers kunnen zo de User Interface wijzigen, bijvoorbeeld het vervangen van de Multivalent toetsen door die van Microsoft Windows. Hubs (dus groepen Behaviors) zijn ingedeeld in de System Hub (van toepassing op alle documenten), Genre Hubs (van toepassing op een bepaald soort document, bepaald door het Mime-Type) en Document Specific Hubs (van toepassing op een enkel document, hierin worden annotaties opgeslagen). Alle hubs zijn aan te passen door de eindgebruiker, dus iedereen kan zelf functionaliteit toevoegen. Hubs worden in XML gedefinieerd waardoor het mogelijk wordt andere hubs in te voegen. De auteurs gaan verder nog in op de manier waarop al die behaviors worden afgehandeld (immers tal van wijzigen op een document vereisen meerdere behaviors die zouden kunnen conflicteren). Belangrijk is wel dat men onderscheid maakt tussen Low level en High Level communicatie. De eerste heeft betrekking op het werken met delen van een document, de tweede op het hele document. Het verschil zit met name in de complexiteit van de actie die de gebruiker initieert. Als de gebruiker een tekst wil markeren, is dit een low level actie, want dit heeft geen gevolgen voor de rest van het document. Als de gebruiker een nieuw document opent in de applicatie, is dit een high level actie, omdat hier het hele document verwerkt moet worden (de oude moet verwijderd worden, de nieuwe documenttree moet aangemaakt worden et cetera). Multivalent is geschreven in Java en gebruikt XML voor de modulaire opbouw. Bijvoorbeeld: hubs zijn gedefinieerd in XML en hubs bepalen de functionaliteit voor de applicatie en de documenten. De hubs verwijzen naar Java classes voor het toevoegen van functionaliteit, die in behaviors is beschreven. Multivalent is door het gebruik van Java-classes en XML een flexibele en uitbreidbare applicatie geworden. Eindgebruikers kunnen zelf nieuwe functionaliteit toevoegen. Nadeel van Multivalent is dat het een stand-alone applicatie is waarbij de database die de annotaties bevat niet gedeeld kan worden met andere gebruikers.
2.3.6 Yawas Yawas (Yet another Web Annotation System) [DENOUE 2002] is een in Java geschreven programma dat zichzelf integreert met de browser van de gebruiker. Het maakt het mogelijk om annotaties toe te voegen aan webpagina’s. Yawas maakt niet gebruik van een annotatieserver: alle annotaties worden op de computer van de gebruiker opgeslagen in tekstbestanden.
26
FlexRef: Het annoteren van documenten
Figuur 14: Architectuur van Yawas [DENOUE 2001]
Figuur 14 toont de architectuur van Yawas. Te zien is de Yawas server die de koppeling met de database (een tekstbestand) onderhoud. Deze server zal doorgaans lokaal draaien. De koppeling tussen server en browser wordt gelegd door middel van JavaScripts die via DOM9 het HTML document in de browser manipuleren. Yawas gebruikt de webbrowser als gebruikersinterface. Bij gebruik van Internet Explorer werkt dit het best: de gebruiker krijgt, na het selecteren van de te annoteren tekst, in het contextmenu (ook wel bekend als het menu onder de rechtermuisknop) een optie “Annotate” waarmee annotaties kunnen worden aangemaakt. Figuur 15 toont een voorbeeld van het aanmaken van een nieuwe annotatie. In Figuur 14 is ook te zien dat Yawas bestaande annotaties markeert. In dit geval zorgt Yawas ervoor dat de tekst waar een annotatie op gemaakt is een gele achtergrond krijgt. De auteur heeft bewust niet gekozen voor het gebruik van iconen of andere elementen die het uiterlijk van de pagina aanpassen omdat gebleken is dat eindgebruikers hier de voorkeur aan geven ([DENOUE 2001], p. 49).
9
DOM staat voor Document Object Model en biedt een taal- en platformonafhankelijke interface op documenten (Bron: http://www.w3.org/DOM/). Yawas gebruikt dit voor het dynamische wijzigen van documenten.
27
FlexRef: Het annoteren van documenten
Figuur 15: Het toevoegen van een nieuwe annotatie in Yawas
Het gebruik van een lokale database staat het delen van annotaties met meerdere gebruikers in de weg. Het is mogelijk om annotaties te distribueren doordat Yawas annotaties representeert in de vorm van een speciale URL. Deze kunnen door andere gebruikers van Yawas geïmporteerd worden. Verder heeft Yawas als nadeel dat het niet werkt met alle browsers, sterker nog, het werkt op dit moment alleen makkelijk met een versie van Internet Explorer die DOM ondersteunt10. Omdat Internet Explorer maar op een beperkt aantal besturingssystemen werkt is Yawas verre van platformonafhankelijk. Een voordeel van Yawas is de integratie met de webbrowser die het gebruik van Yawas zeer eenvoudig maakt.
2.3.7 Conclusie Wat opvalt bij het bekijken van de verschillende architecturen is dat sommige annotatiesystemen werken met een centrale server (CritLink, Annotea) en anderen met een lokale database (Multivalent, Yawas). Het gebruik van een centrale server heeft als voordeel dat annotaties op eenvoudige wijze gedeeld kunnen worden met andere gebruikers waarbij er een gevaar is dat het aantal annotaties zo groot wordt dat het niet meer te overzien is voor de eindgebruiker. Het gebruik van een lokale database geeft gebruikers meer vrijheid in de manier waarop ze annotaties opslaan. Yawas biedt bijvoorbeeld de mogelijkheid zelf types annotaties te definiëren (zie Figuur 15 waarbij gebruik gemaakt wordt van omschrijvingen in de Franse taal). Een ander voorbeeld is Multivalent, dat gebruikers de mogelijkheid biedt om meerdere documentfilters te maken waardoor ook documentformaten die niet ondersteund worden opgenomen kunnen worden. Een ander voordeel van een lokale database is dat de gebruiker een gepersonaliseerde informatieom-
28
FlexRef: Het annoteren van documenten
geving krijgt (de Espace personnel d’Informations van Denoue) omdat alleen de annotaties die de gebruiker zelf maakt zichtbaar zijn. Verder verschillen de systemen in de manier waarop de annotaties bewerkt en bekeken kunnen worden. In het algemene model uit paragraaf 2.3.2 betreft het de interceptors. Er zijn systemen die alleen maar een webbrowser vereisen (CritLink) terwijl andere systemen een speciale browser vereisten (Multivalent en Annotea bijvoorbeeld). Yawas zit tussen deze uitersten in door eisen te stellen aan de versie van de browser. Tenslotte zit er verschil in de mate van ondersteuning voor documentformaten. De meeste webannotatiesystemen ondersteunen uitsluitend HTML. Op het web komen echter meerdere documentformaten voor (Word-documenten, Acrobat PDF-documenten maar ook kale tekst) waardoor HTML kan zijn. Multivalent gaat hier ver in omdat standaard al een aantal formaten ondersteund wordt. Bovendien kunnen gebruikers zelf nieuwe conversiefilters schrijven. Annotea heeft de potentie om meerdere formaten te ondersteunen doordat gebruik gemaakt wordt van het XPointer-mechanisme. Maar dan blijft het noodzakelijk om een XML-representatie van een document te maken en dat is met HTML eenvoudiger. Uit de probleemstelling van deze scriptie volgen twee eisen: het moet mogelijk zijn om documenten te standaardiseren en het moet mogelijk zijn om relaties vast te leggen en te delen. Een aantal bekeken systemen standaardiseren documenten maar bieden geen (eenvoudige) manier om commentaar uit te wisselen. Aan de andere kant zijn er systemen die het mogelijk maken annotaties te delen maar deze standaardiseren documenten niet maar maken gebruik van HTML, daarmee een aantal andere veel gebruikte documentformaten uitsluitend.
2.4
Conclusie Uit deze inventarisatie is naar voren gekomen dat de bekeken systemen niet de ge-
signaleerde problemen oplossen. Op basis van de in paragraaf 2.2.8 en 2.3.7 vermelde tekortkomingen wordt in het volgende hoofdstuk een concept uitgewerkt dat wel een deel van de problemen zal kunnen oplossen.
10 Denoue geeft niet aan welke versie dit is maar aangenomen mag worden dat een versie 5.0 of hoger vereist is. Versie vijf is redelijk conform DOM 2 (zie http://developer.netscape.com/evangelism/tools/testsuites/ voor een test)
29
FlexRef: Het annoteren van documenten
3 Concept 3.1
Inleiding Doelstelling van deze scriptie is het onderzoeken hoe schrijvers gegevens van en re-
laties tussen documenten kunnen vastleggen en delen. Dit heeft geleid tot een probleemstelling: Hoe kunnen gebruikers met behulp van standaardisatie van documenten relaties vastleggen tussen documenten en deze relaties delen? In het vorige hoofdstuk is onderzocht welke bestaande software en systemen er al bestaan. Met de kennis opgedaan bij het onderzoeken van bestaande systemen zal een nieuw concept worden uitgewerkt. Wat betreft de architectuur van het systeem kan gekeken worden naar concepten die in hoofdstuk 0 zijn uitgewerkt. De bibliografische software levert ideeën over dataopslag en over user interfaces. De webannotatiesystemen bieden ingangen voor de architectuur omdat de te ontwikkelen applicatie gebruik maakt van het Internet. De eigenlijke functionaliteit van het te ontwikkelen systeem bestaat uit twee componenten: -
Een deel dat gegevens van documenten kan opslaan (waarbij een annotatie op een document als document wordt beschouwd);
-
Een deel dat zorg draagt voor uitwisseling van de gegevens van documenten met andere gebruikers. Daarnaast is er nog het probleem van de variatie in documentformaten. Om annota-
ties toe te voegen aan documenten is het nodig om de documenten op een eenduidige manier op te slaan, dat wil zeggen dat de documenten dezelfde technische structuur moeten hebben. Bovendien moet het mogelijk zijn om niet-electronische informatie te verwerken zodat de eindgebruiker ook 'traditionele' bronnen kan opslaan die alleen op papier beschikbaar zijn. Tenslotte is er een naam voor de applicatie gekozen: FlexRef. Dit vanwege de flexibele manier waarop het annotatiesysteem omgaat met annotaties (Referenties).
3.2
Concept Uitgangspunt van het systeem is dat documenten en annotaties het kleinst identifi-
ceerbare object in het systeem vormen. Annotaties en documenten worden op dezelfde
30
FlexRef: Het annoteren van documenten
manier behandeld omdat zowel een gewoon document als de annotatie daarop voor een flink deel dezelfde eigenschappen hebben. Een annotatie op een document kan gemaakt worden door een nieuw document toe te voegen aan het systeem en dit nieuwe document te koppelen aan het andere document. Figuur 16 toont vier documenten waarbij er drie als annotatie fungeren. Relaties tussen documenten worden gelegd door het veld ‘Annotates’. Annotaties zijn dus niet per definitie geschreven door de gebruiker van het systeem. Tegenstrijdige papers bijvoorbeeld kunnen apart van elkaar worden ingevoerd en vervolgens aan elkaar worden gekoppeld.
Figuur 16: Voorbeelden van documenten en annoties. Alles is een document
Documenten hebben een bepaalde lijst met eigenschappen (metadata) waaronder de inhoud van het document. Omdat de lengte van de inhoud van een document onvoorspelbaar is wordt deze in een apart bestand opgeslagen. Dit betekent dat de een document bestaat uit een setje metadata en uit een bestand met de volledige tekst. Vanuit de database wordt via een "full-text"-veld verwezen naar de bestandslokatie van het volledige document. Van electronisch beschikbare bronnen wordt bijvoorkeur NIET gelinkt naar de oorspronkelijke locatie (een URL) maar naar een lokale kopie. Dit omdat een URL onbetrouwbaar is: URL's kunnen veranderen of verdwijnen. Bovendien is de inhoud van een document op een URL niet betrouwbaar: de inhoud kan wijzigen waardoor de tekst kan wijzigen. Het is belangrijk dat een schrijver van een annotatie weet op welke versie van een document zijn commentaar betrekking heeft omdat het commentaar in een latere versie van het do-
31
FlexRef: Het annoteren van documenten
cument wellicht niet meer geldig is. Werken met een eigen kopie van een document gaat dit tegen (daarbij eventuele auteursrechtelijke beperkingen negerend). Een kopie van het originele document is overigens optioneel: hierdoor kunnen ook documenten waarvan de tekst alleen maar op papier beschikbaar is ook worden opgeslagen. Documenten worden opgeslagen als kale tekst. Dit betekent dat veel semantische informatie verloren gaat. Voordeel is wel dat verwezen kan worden naar een deel van het document: bijvoorbeeld het 30e tot en met het 39e woord kan geannoteerd worden. Documenten worden op de server opgeslagen. Hierdoor is de server het hart van de applicatie. De server draagt zorg voor het toevoegen, wijzigen en verwijderen van documenten en de bijbehorende metadata. De eindgebruiker communiceert met de server door middel van een zogenaamde client-applicatie. Deze applicatie zorgt voor de eigenlijk communicatie met de server en presenteert gegevens aan de gebruiker. De eindgebruiker maakt zich bekend bij de server door het opgeven van een gebruikersnaam en een wachtwoord. Een gebruiker kan eigen documenten toevoegen, verwijderen en wijzigen. Documenten van anderen mogen alleen bekeken worden. Er zijn drie niveaus van security: niemand mag de records bekijken, alleen de medegebruikers van de server mag de records bekijken of de hele wereld mag de records bekijken. Alleen degene die records heeft aangemaakt mag ze wijzigen. Als iemand anders commentaar heeft op een annotatie kan dit commentaar als annotatie worden toevoegd. De consequentie hiervan is dat als een annotatie verwijst naar een bepaald record en dit doelrecord wordt verwijderd, dat dan de annotatie een wees wordt: een record dat niet meer ergens naar verwijst. Dit kan opgelost worden door een veld 'removed'. In dat geval wordt het record alleen maar gemarkeerd als verwijderd maar niet daadwerkelijk verwijderd. Het wordt alleen niet meer getoond in resultaatlijsten. Als protocol voor het communiceren tussen client en server zal het HTTP-protocol worden gebruikt. Dit protocol is geschikt voor 'vraag-antwoord' communicatie (client doet een verzoek, de server geeft antwoord). Bovendien is dit protocol eenvoudig te beveiligen door gebruik te maken van HTTPS. De S staat voor 'Secure' en houdt in dat de informatie die verstuurd wordt, versleuteld is. Commando's aan de server worden gegeven door het versturen van XML documenten, met behulp van HTTP-POST. De server antwoord hierop met behulp van een XML document met daarin een foutmelding of een melding van succes. Er wordt gebruik gemaakt van een eigen XML formaat voor het doorsturen van de applicatiegerelateerde data. Voor het versturen van de serverresponses wordt gebruik gemaakt van een afwijkend XML formaat. Dit formaat (server response) is de envelop waarin de applicatiedata vermeld staat.
32
FlexRef: Het annoteren van documenten
De term envelop geeft aan dat de gegevens opgenomen worden in een groter geheel. Dit groter geheel (de envelop) bevat applicatiegegevens. Tevens gaat deze envelop authenticatie informatie bevatten (dus username / password). Een response van de server om een bepaald document op te vragen: <server-reponse> <status>OK Een documentRutger WesselsDe volledige tekst komt hier
Dit is slechts een voorbeeld, de exacte implementie en correcte integratie met behulp van XML-namespaces en dergelijke volgt nog. Maar het concept werkt dus met een server repsonse en een inhoudelijke response. Van de client-kant gaat het precies zo. Het W3c heeft al een dergelijk concept voorgesteld: SOAP. Dit staat voor Simple Object Access Protocol en definieert een op XML gebaseerde gegevensuitwisselingstaal. Hierbij fungeert SOAP zelf als een envelop voor de gegevens. De gegevens kunnen in een willekeurige namespace (met DTD) worden gedefinieerd terwijl het SOAP gedeelte informatie bevat over waar de informatie naar toe moet, welke applicatie wat moet afhandelen en meer administratieve gegevens. Wanneer een document wordt opgevraagd van de server betekent dit dat de server in de database (relationele database) de gegevens verzamelt, in een XML vorm plakt, eventueel ook de full-text gegevens erbij geeft (deze worden in dezelfde XML response opgenomen), en vervolgens dit alles in een server response envelop stopt. De client heeft de taak gegevens te splitsen en te presenteren. Omdat de uiteindelijke data de vorm van XML heeft is het niet van belang hoe de server de informatie opslaat. De server kan gebruik maken van achterliggende databases of juist van een eenvoudige manier van opslaan met behulp van bijvoorbeeld tekstbestanden. De server vormt de brug tussen de buitenwereld en de data en hoe die data precies is opgeslagen is onbelangrijk, zolang de server naar de buitenwereld toe maar XML spreekt en verstaat. Het systeem kent twee netwerkmodellen: client-server voor het werken met de annotaties en peer-to-peer voor het verbinden met andere annotatieservers. De meeste annotaties zullen gemaakt worden door de gebruiker zelf, op documenten die op de eigen annotatieserver aanwezig zijn. In dat geval wordt verwezen naar de eigen server (een veld "annotates" om aan te geven wat het record annoteert). Een gebruiker kan ook documen-
33
FlexRef: Het annoteren van documenten
ten (dus zowel teksten als annotaties) becommentariën. In dat geval wordt er verwezen naar een andere server. Ook is het mogelijk om wereldwijd te zoeken in annotaties op andere servers, via het peer-to-peer netwerk. Dit zal echter niet geïmplementeerd worden, de applicatie wordt er slechts op voorbereid. De zoekactie zal dan geïnitieerd worden door de server. Actie
Beschrijving
Toevoegen nieuw document
Gebruiker voert in de client de metadata in (auteur etc). Full-text is optioneel. De client verstuurd de gegevens naar de server. De metadata gaat in de database en de full-text wordt (indien aanwezig) opgeslagen in een apart bestand op de server. Er wordt een uniek ID aangemaakt (hostname + volgnummer). Het bestand voor de full-text informatie krijgt een bestandsnaam op basis van het volgnummer. (bv 4522.dat) Hetzelfde als "toevoegen nieuw document", met die uitzondering dat de gebruiker aangeeft aan welk ander record de annotatie gerelateerd is (kan dus ook een andere server zijn) Gebruiker vraagt aan de gegevens van document met ID=Y. De server haalt de metadata op uit de database en voegt daar (optioneel) de full-text van het document aan toe. Tevens worden de op de eigen server opgeslagen verwijzingen naar en van het document op gevraagd. De gegevens worden teruggestuurd naar de client die zorg draagt voor presentatie van het document + de bijbehorende metadata + de bijbehorende annotaties. Dit kan nadat de client een document heeft op gevraagd. Het document wordt in de client gewijzigd, de gewijzigde gegevens vervangen de op de server aanwezige gegevens. Het documentID veranderd niet. In de client definieert de gebruiker een zoekactie op basis van criteria (bijvoobeeld zoeken op titel, onderwerp, auteur of combinaties). Deze zoekactie wordt doorgeven aan de server die de database doorzoekt en (optioneel) probeert documenten te zoeken op andere servers. Het zoekresultaat wordt teruggestuurd aan de client in de vorm van een lijst van id’s en titel / auteur gegevens. Deze lijst wordt getoond in de client en de gebruiker kan een document selecteren om het te bekijken. De server markeert het record als 'verwijderd'.
Toevoegen annotatie
Bekijken document
Wijzigen document
Zoeken document
Verwijderen document
Tabel 3: Overzicht mogelijke acties
34
FlexRef: Het annoteren van documenten
De server zal een MySQL backend krijgen. MySQL is een Open Source relationeel database management systeem. Voor de opslag van full-text bestanden wordt gebruik gemaakt van het lokale bestandssysteem. De client zal een webclient zijn die in principe op dezelfde machine beschikbaar is als de server. De client is in PHP geschreven.
3.3
Keuze gegevens Voor het vastleggen van de documenten en annotaties is het nodig om te bekijken
welke gegevens per document worden opgeslagen en in hoeverre deze gegevens optioneel zijn. Er zijn twee soorten gegevens: -
Bibliografische gegevens. Dit zijn gegevens zijn bedoeld voor de inhoudelijke identificatie van een document.
-
Annotatie gegevens. Dit zijn gegevens die bedoeld zijn voor het bijhouden van de annotaties. In de eerste groep vallen zaken als een titel, de auteur(s), uitgever en dergelijke.
Bij de tweede groep horen verwijzingen naar andere documenten, aanmaakdata etcetera. De uitwisseling van gegevens vindt plaats door middel van XML. Bij de keuze van gegevens die worden opgeslagen kan alvast rekening gehouden worden met de mogelijkheden die XML biedt.
3.3.1 Eisen De aangeboden opslagstructuur moet breed genoeg zijn om een grote verscheidenheid aan documenten op te kunnen slaan. Gedacht moet worden aan boeken, webpagina's, tijdschriftartikelen etcetera. Dat betekent titelgegevens, auteurgegevens, publicatiedata, de tekst van het document. Bovendien moeten administratieve gegevens kunnen worden opgeslagen: wanneer een bron is ingevoerd in het systeem, door wie, door wie en wanneer het is gewijzigd. Daarnaast moeten ook annotaties op deze bronnen kunnen worden opgeslagen. Het gaat dan om een verwijzing naar het te annoteren document (waarbij ook naar een tekstdeel moet kunnen worden verwezen) en de tekst zelf. Doordat annotaties en de eigenlijke documenten binnen dezelfde gegevensstructuur worden opgeslagen zijn alle velden die voor documenten gelden ook beschikbaar voor annotaties.
35
FlexRef: Het annoteren van documenten
Een belangrijk onderdeel is de unieke identificatie van een document binnen het systeem. Dit is lastig omdat het systeem in principe decentraal van aard is waardoor er niet gewerkt kan worden met het automatisch toekennen van een identificatienummer. Immers deze nummers moeten op een centrale server bijgehouden worden. Mogelijke oplossingen zijn een combinatie van een computernaam met een identificatienummer die op die computer wordt bijgehouden. Een andere optie is een computernaam in combinatie met titel / auteurgegevens. Er geen garantie dat titels en / of auteurs dubbel voorkomen. Computernamen zijn op zich geschikt als onderdeel van een unieke identificatie omdat een computernaam (bestaande uit domeinnaam en hostnaam, bijvoorbeeld flexref.rug.nl) slechts één keer mag voorkomen op internet.
3.3.2 Kenmerken documenten De bekeken bibliografische systemen bieden een redelijk compleet aanbod aan velden. Met name bibliografische gegevens worden ondersteund. Per type bron wordt een bepaalde set velden aangeboden. Deze lijst met velden is doorgaans zeer uitgebreid, omdat de gegevens uit de database opgenomen kunnen worden in een automatisch gegenereerde literatuurlijst. Voor het bereiken van het doel van deze scriptie is dit niet nodig zodat volstaan kan worden met een beknoptere lijst met velden. Een mogelijkheid voor een beknopte lijst met velden biedt de Dublin Core Metadata Initiative11 (DCMI). Deze organisatie heeft als doel het ontwikkelen van online metadata standaarden ten behoeve van het online uitwisselen van informatie. De organisatie is vernoemd naar een workshop die in Dublin, Ohio werd gehouden en waar werd nagedacht over een standaard voor het beschrijven van webdocumenten12. Uit deze sessies is een standaardset van elementen voortgekomen die wordt aangeduidt als de "Dublin Core Metadata Element Set". De ontwerpers hebben geen syntax vastgesteld, alleen de betekenis van de termen uit deze verzameling ligt vast. Hierdoor kunnen de elementen in diverse documentformaten opgenomen worden (voornamelijk HTML en XML). De Dublin Core Metadata Element Set bestaat uit 15 elementen. Elk van deze elementen is optioneel en herhaalbaar. De meeste van deze elementen zijn uitgebreid met zogenaamde qualifiers. Deze qualifers geven de elementen extra betekenis. Er zijn twee soorten qualifiers: element refinements (maken de betekenis van een element meer specifiek) en encoding schemes (stellen vast in welke vorm de waarde van een element moet worden beschreven). Tabel 4 geeft een overzicht van de 15 elementen met bijbehorende
11
Zie: http://dublincore.org
36
FlexRef: Het annoteren van documenten
qualifiers. Alleen de ‘element refinements qualifiers’ zijn weergegeven, de encoding schemes zijn voor dit hoofdstuk nog niet van belang. Formele naam gevolgd door Omschrijving identifier Title (Title) Creator (Creator) Subject and keywords (Subject) Description (Description) Publisher (Publisher) Contributor (Contributor) Date (Date)
Resource Type (Type) Format (Format)
De naam van het document Qualifier: Alternative (kan gebruikt worden voor vertalingen en alternatieve titels). De naam van de enititeit die verantwoordelijk is voor de inhoud van het document. De naam "entiteit" wordt gebruikt omdat dit zowel een persoon als een organisatie kan zijn. Het onderwerp van de inhoud van het document. Dit kan zowel een onderwerpscode zijn als een trefwoord. De auteurs van de Dublin Core raden aan termen te gebruiken die uit een bepaald classificatieschema komen. Zegt iets over de inhoud van het document. Qualifiers: Table of Content, Abstract De entiteit die zorg draagt voor het ter beschikking stellen van het document. Het kan gaan om een uitgever, een organisatie of een persoon. Een entiteit die bij heeft gedragen aan de inhoud van het document. Het "Creator"-element wordt gebruikt om de primair verantwoordelijke te identificeren. Dit veld kan gebruikt worden voor bijvoorbeeld co-auteurs. Een datum die geassocieerd is met een bepaalde fase in de levenscyclus van het document. Over het algemeen wordt hier de creatiedatum of de publicatiedatum genoemd. De auteurs van de standaard raden aan om dit in JJJJ-MM-DD formaat op te slaan. Qualifiers: Created, Valid (Een periode waarbinnen de informatie geldig is), Available (Wanneer het document beschikbaar is gekomen), Issued (Wanneer het document formeel is gepubliceerd), Modified. Het genre of het soort document. De makers raden aan om een term te kiezen uit de Dublin Core Types13 te kiezen. Voorbeelden van termen uit deze lijst zijn: Text, Image, Sound. De fysieke of digitale vorm van het document. Voor digitale documenten wordt aangeraden een MIME-type14 te kiezen. Qualifiers: Extent (de grootte of tijdsduur van het document), Medium (het materiaal of de fysieke drager van het document)
12
Zie: http://dublincore.org/about/history/ Zie: http://dublincore.org/documents/dcmi-type-vocabulary/ 14 MIME staat voor Multi-purpose Internet Mail Extensions. MIME definieert een standaard voor het omschrijven van het soort electronische bestand. Hierdoor kan een computersysteem beoordelen welke software gebruikt moet worden voor het tonen van de inhoud van een bestand. Voorbeelden van MIME-types zijn: text/plain, text/html en image/jpeg. Zie: http://www.isi.edu/innotes/iana/assignments/media-types/media-types 13
37
FlexRef: Het annoteren van documenten
Resource Identifier (Identifier)
Source (Source) Language (Language)
Relation (Relation) Coverage (Coverage)
Rights Management (Rights)
Een unieke verwijzing naar het document binnen een bepaalde omgeving. Een voorbeeld van een "omgeving" kan het Web zijn, zodat een URL als unieke verwijzing kan dienen. Een andere "omgeving" is de boekenwereld, waarbinnen het ISBN een unieke verwijzing is. Een verwijzing naar een document waar het document dat beschreven wordt een afgeleide van is. Een aanduiding van de taal waarin het document geschreven is. De auteurs raden aan twee-letterige taalcodes te gebruiken (met optioneel een landcode): en voor Engels, nl voor Nederlands, de voor Duits, en-us voor Amerikaans15. Een verwijzing naar een gerelateerd document. Qualifiers: isVersionOf, hasVersion, isReplacedBy, replaces, isRequiredBy, requires, isPartOf, hasPart, isReferencedBy, references, isFormatOf, hasFormat Het bereik van de inhoud van het document. Voorbeelden van een bereik zijn geografische lokaties, tijdsperioden (bijvoobeeld '20e eeuw') of juridische reikwijdte ('Gemeente Loppersum'). Qualifiers: spatial (ruimtelijke kenmerken van de inhoud van het document). Informatie over de auteursrechten. Dit element kan gebruikt worden voor het opslaan van een mededeling van auteursrecht ('Copyright Jan Janssen') of een verwijzing naar een document dat de rechten beschrijft.
Tabel 4: Elementen van de Dublin Core Metadata Element Set
Wat opvalt aan deze lijst is dat de auteurs al enkele velden een verwijzend karakter hebben gegeven. De velden Relation en Source bieden de mogelijkheid om een koppeling te leggen met andere documenten. De qualifiers bieden de mogelijkheid om de aard van een relatie te specificeren. De door de Dublin Core voorgestelde qualifiers bij Relation voldoen niet: ze kunnen niet gebruikt worden om de aard van een annotatie aan te duiden. Biblioscape, de in het vorige hoofdstuk bekeken applicatie, gebruikt de volgende vier typen relaties: Related, Supportive, Contradictive, Cited. Yawas ([DENOUE 2000], p. 48) kent er meer: definition, title, point of view, method, state of the art. Ook CritLink onderscheid soorten annotaties: comment, support (agree), issue (disagree), query. Multivalent benoemd geen enkele relatie: de makers vertrouwen volledig op de grafische weergave van het document. Ook Annotea benoemd geen relaties. Wel geldt voor alle bekeken systemen dat ze een scheiding aanbrengen tussen het brondocument en de annotaties daarop. Dat betekent dus dat het bij bestaande systemen niet mogelijk is een annotatie als document te behandelen.
15
Zie: http://www.ietf.org/rfc/rfc1766.txt (Tags for the Identification of Languages)
38
FlexRef: Het annoteren van documenten
In theorie is het mogelijk om in het geheel niet vast te leggen welke velden er zijn. Gebruikers zouden dan zelf kunnen bepalen welke gegevens opgeslagen worden en welke niet. Dit heeft echter een groot nadeel: omdat niet bekend is welke gegevens onder welke naam zijn opgeslagen is het niet mogelijk om de gegevens gericht te doorzoeken. Omdat het te ontwikkelen systeem in principe moet kunnen zoeken in een groot aantal databases is een gemeenschappelijke structuur vereist. De Dublin Core Element Set biedt ingangen voor het opslaan van bibliografische gegevens. Van deze set (zie Tabel 4) worden de volgende gegevens gebruikt: -
Title (in het formaat "Hoofdtitel : subtitel") (niet herhaalbaar)
-
Author (in het formaat "Achternaam, Voornaam / Voorletters") (herhaalbaar)
-
Subject (eigen te kiezen trefwoordsysteem of een voorgedefinieerd systeem waarbij het classificatiesysteem geidentificeerd wordt door coderingen die de Dubin Core groep heeft ontwikkeld16) (herhaalbaar)
-
Description (een samenvatting van een document) (niet herhaalbaar)
-
Publisher
-
Date (Met als mogelijke attributen: Created (default), Modified) (herhaalbaar)
-
Type (waarden uit de Dublin Core Types) (niet herhaalbaar)
-
Format (fysieke vorm of een MIME-type) (niet herhaalbaar)
-
Relation (eventueel relateeerde documenten) (herhaalbaar). Verder is het van belang dat er geen onderscheid gemaakt wordt tussen documen-
ten en annotaties daarop. Dat houdt in dat de gegevensstructuur hier rekening mee moet houden. Dit wordt opgelost door aan ieder document een veld 'Annotates' toe te voegen. In dit veld kan een verwijzing (URI) komen te staan naar het record waar het document een annotatie van is. Het onderscheid tussen het veld 'Relation' en het veld 'Annotates' is dat het eerste veld bedoeld is voor gerelateerde documenten waarvan de relatie niet strak gedefinieerd is. Bijvoorbeeld een 'zie-ook' verwijzing. Het veld 'Annotates' is echter wèl gedefinieerd, waardoor de applicatie hier betekenis aan kan koppelen. Het veld 'Annotates' zal uitsluitend FlexRef verwijzingen mogen bevatten. Het veld 'Annotates' zal een attribuut krijgen wat het soort relatie aanduidt. Deze 'soort' mag door de gebruiker zelf bepaald worden.
Annotates is een niet-herhaalbaar veld: een document kan in principe maar één ander document annoteren. Een annotatie op meerdere documenten is logisch onmogelijk.
3.4
Architectuur Uit de inventarisatie van bestaande systemen bleek dat verschillen in architectuur
vooral zaten in de manier van opslaan (centraal versus decentraal), de manier van werken (speciale client software versus web gebaseerde software) en de mate van ondersteuning van documentformaten (HTML of meerdere).
3.4.1 Opslag van de gegevens Voor de opslag van de gegevens zijn twee oplossingen mogelijk: de gebruiker slaat alle gegevens op het eigen systeem op of gebruikt samen met andere gebruikers een externe opslagfaciliteit. Het Critlink systeem voor het annoteren van webpagina's gebruikt zo'n centrale opslag. Tijdens het schrijven van deze scriptie werd duidelijk wat daarvan het nadeel is: als de centrale server niet bereikbaar is zijn de opgeslagen annotaties ook niet bereikbaar. Grote voordeel is echter dat de opgeslagen gegevens in principe voor meerdere gebruikers beschikbaar zijn. Het is ook mogelijk om een tussenweg te kiezen: er wordt geen gebruik gemaakt van één enkele server maar gebruikers kunnen zelf servers installeren voor de opslag van de annotaties. Dit heeft als nadeel dat de gegevens versnipperd raken omdat het systeem niet bijhoudt welke annotatieservers bestaan. Sinds enige jaren bestaan er op Internet netwerksystemen die het delen van bestanden tussen gebruikers mogelijk maken. De eerste succesvolle applicatie die gebruik maakte van zo'n systeem was Napster, voornamelijk gericht op het delen van MP3bestanden. Gebruikers van Napster stellen een lijst beschikbaar van MP3-bestanden en andere Napster gebruikers kunnen via een centrale server zoeken in deze lijsten en vervolgens MP3-bestanden downloaden. De laatste jaren is Gnutella in opmars, een systeem dat het ook mogelijk maakt bestanden te delen. Dit systeem werkt echter zonder centrale server: iedere client is tegelijkertijd server. Binnen het Gnutella-jargon wordt zo'n client die ook server is een servent genoemd. Een servent maakt zichzelf bekend (tijdens het inloggen) aan een aantal andere servents. Ieder van deze servents geeft op zijn beurt ook door dat er een nieuwe servent is toegevoegd aan het netwerk. Op deze manier kan het Gnutella-netwerk groeien zonder dat er sprake is van één controlerende centrale server.
40
FlexRef: Het annoteren van documenten
Gnutella werkt dus zonder centrale server. Dat betekent dus dat er geen centrale aanmeldingsserver is. Gnutella servents melden zich aan bij één of meer andere servents, welke dus bekend moeten zijn bij de de gebruiker van Gnutella. De gebruiker moet beschikken over een aantal bekende Gnutella servents. Deze servents geven vervolgens aan verdere servents door dat er een nieuwe Gnutella servant is. Op deze manier wordt de servant beschikbaar gesteld aan het Gnutella netwerk. Op het moment dat een servent bekend is bij het netwerk kan informatie worden gezocht. Dit gebeurt door het versturen van een query die voortdurend wordt doorgegeven aan de diverse servants. De resultaten van de query volgen hetzelfde pad weer terug waardoor zoekacties erg lang kunnen duren: verder weg gelegen servants kost het veel tijd om het antwoord op een query terug te sturen. Op zich is dit geen bezwaar omdat de al binnengekomen zoekresultaten alvast getoond kunnen worden aan de gebruiker. Het Gnutella-netwerk behoort tot de zogenaamde peer-to-peer (P2P) netwerken. Dit zijn netwerken waarbij ieder aanwezig computersysteem een gelijkwaardige status heeft. Er zijn geen servers of clients. Zulke netwerken bestaan al langer op netwerken binnen bedrijven (waarbij bijvoorbeeld een verzameling Windows-pc's bestanden binnen het netwerk ter beschikking stelt) maar de techniek is nog niet uitgekristalliseert op het Internet. Gnutella heeft bijvoorbeeld veel tekortkomingen die nog niet ondervangen zijn17. De te bouwen applicatie kan in een volgende versie voorzien worden van eenvoudige en niet-schaalbare peer-to-peer functionaliteit. Dit heeft als consequentie dat er gekozen wordt voor decentrale opslag van gegevens. "Eenvoudig en niet-schaalbaar" houdt in dat er geen uitgebreid peer-to-peer protocol ontwikkeld wordt maar een simpel protocol dat voor demonstratiedoeleinden gebruikt kan worden. De applicatie wordt zodanig opgezet gegevens niet alleen gevonden kunnen worden binnen de eigen database maar ook op andere systemen.
3.4.2 Clientsoftware versus een webapplicatie De databases die de grondslag vormen van de bekeken personal bibliographic software hebben zonder uitzondering een grafische Windows-applicatie als front-end. Ook de Internet-voorzieningen die geboden worden zijn geïntegreerd in de Windows-applicatie. Als uitzondering hierop geldt wellicht alleen Biblioscape omdat deze applicatie gebruik maakt van de integratiemogelijkheden van Microsofts Internet Explorer voor wat betreft het tonen, bladeren door en opvragen van webpagina's.
Bij de webannotatiesystemen is de diversiteit groter. Een systeem als Multivalent werkt met een eigen client als interface op de database die bovendien ook gebruikt wordt voor het tonen van de brondocumenten en de annotaties daarop. Aan de andere kant van het spectrum vinden we CritLink, dat volledig gebruik maakt van het web en geen enkele andere software vereist dan een standaard webbrowser. Ergens hier tussenin moet Yawas gepositioneerd worden: er wordt functionaliteit toegevoegd aan de webbrowser (Internet Explorer) voor het tonen en bewerken van annotaties. Het opvragen van annotaties wordt verzorgd door een aparte module die de communicatie verzorgd tussen de eventueel op een andere systeem aanwezige Yawas server en de Yawas client, welke zich integreert in de webbrowser. Het voordeel van een client-server architectuur is dat een client van alles mag zijn: zowel een tekst (console) applicatie als een grafische applicatie als een webapplicatie. De client applicatie hoeft immers alleen maar om te kunnen gaan met de gegevens die de server verwacht of terugstuurt. User interface en presentatie wordt volledig aan de client over gelaten. De eindgebruiker kan kiezen op welke manier hij / zij om wil gaan met de gegevens die de server beheerd. De server is in alle gevallen hetzelfde maar de clients kunnen verschillen. Nadeel van een client-server architectuur is dat bij grote hoeveelheden data (lange documenten bijvoorbeeld) de tijd die nodig is om een document naar de client te sturen erg groot kan worden. Dit wordt ondervangen doordat individuele gebruikers de mogelijkheid krijgen om zelf een server te beginnen. Hierdoor kunnen server en client zich op één enkele computer bevinden. Gekozen wordt voor een Client-Server structuur waarbij de clients communiceren met de server. Daarnaast kunnen verschillende servers onderling ook met elkaar communiceren. Hiermee wordt in feite een peer-to-peer netwerk gerealiseerd.
3.4.3 Opslag van documenten Een belangrijk onderdeel van het systeem is de opslag van documenten. Het gaat dan op kopieën van de originele documenten. Dit is niet bij ieder record vereist: het systeem moet er op voorbereid zijn dat alleen bibliografische informatie wordt opgeslagen zonder de tekst van het oorspronkelijke document. Webannotatiesystemen hebben hier een voordeel: ze annoteren uitsluitend documenten die op het web beschikbaar zijn. Zolang de URL van de deze documenten niet ver-
42
FlexRef: Het annoteren van documenten
anderd18 blijft de brontekst beschikbaar. Bij Multivalent en sommige bibliografische softwarepakketten is dit probleem niet aan de orde: de brontekst van het document kan bij het bibliografische record worden opgeslagen. Een andere reden voor het opslaan van de oorspronkelijke tekst is dat annotaties kunnen verwijzen naar een onderdeel van de tekst. Dit kan een woord zijn, een zin of elk willekeurig onderdeel van het document dan ook. Om goed te kunnen verwijzen is het belangrijk dat de versie van het document waarop een annotatie betrekking heeft behouden blijft. Bij electronische documenten is het immers mogelijk dat de tekst veranderd en dan zou de annotatie verloren kunnen gaan omdat de tekstpassage veranderd of gewist is. Verder is het van belang dat de documenten op een uniforme manier worden opgeslagen. Dit om te voorkomen dat het koppelen van annotaties aan onderdelen van documenten op verschillende manieren moet worden geïmplementeerd. Er zou dan voor ieder documentformaat (HTML, Word, PDF, XML) een ander koppelingsmechanisme ontworpen moeten worden. Het is beter om alle bronteksten bij invoering in het systeem om te vormen naar een uniforme structuur en het koppelen van annotaties te ontwerpen voor die structuur. Dit is makkelijk bij het ontwerpen van een annotatiesysteem maar betekent wel dat er lay-outstructuur verdwijnt. Het enige voorbeeld uit deze scriptie dat gebruik maakt van een uniforme documentstructuur is Multivalent19. Multivalent maakt gebruik van een in XML gedefinieerde boomstructuur. Afhankelijk van het formaat van het brondocument is deze boomstructuur meer of minder verfijnd. Bij het importeren van een HTML-pagina is er immers meer structuurinformatie aanwezig dan bij het importeren van een plain-text document. Hoewel gekozen is voor XML als representatie-taal zullen de gegevens intern in een relationele database worden opgeslagen. Dit betekent dat de bovenvermelde datastructuur moet worden omgezet naar een structuur die in een relationele database is op te slaan. Van ieder veld moet vast gelegd worden of het veld meerdere malen per record (document) mag voorkomen en of de waarde ook in andere documenten kan voorkomen (1-op-N relaties en N-op-N-relaties).
18
Tim Berners-Lee wijst er overigens op dat een goed ontworpen en doordachte URL-structuur in principe nooit hoeft te veranderen: zie http://www.w3.org/Provider/Style/URI 19 Systemen als Yawas en CritLink ondersteunen slechts één documentformaat en hebben dit probleem dus niet.
43
FlexRef: Het annoteren van documenten
3.5
Conclusie In het volgende hoofdstuk zal de implementatie van het in dit hoofdstuk beschreven
concept worden beschreven. Er is een server en een client gebouwd waarmee de werking van in de praktijk kan worden aangetoond en het concept kan worden getoetst.
44
FlexRef: Het annoteren van documenten
4 Implementatie 4.1
Inleiding In dit hoofdstuk wordt beschreven op welke wijze het concept geïmplementeerd is.
Eerst wordt ingegaan op de technieken die gekozen zijn. Vervolgens wordt beschreven hoe de verschillende componenten gebouwd zijn. Tenslotte wordt beschreven welke onderdelen niet gebouwd zijn en hoe deze onderdelen alsnog geïmplementeerd kunnen worden.
4.2
Gekozen technieken Uitgangspunt van de applicatie is dat meerdere gebruikers één database kunnen ge-
bruiken zodat annotaties gedeeld kunnen worden. Bestaande oplossingen (bibliografische pakketten en bestaande annotatiesystemen) zijn in principe op één gebruiker gericht. Iedere gebruiker heeft een eigen database. Nadeel hiervan is dat uitwisseling van annotaties lastig is. Om met meerdere gebruikers tegelijk in één systeem te werken is het nodig om een client-server architectuur op te zetten. De server zorgt dan voor opslag en beheer van de gegevens terwijl de verschillende decentrale clients zorgen voor de interactie met de eindgebruikers. Daarmee bestaat het Flexref concept uit hoofdzakelijk drie componenten: een database, een server en een client.
Figuur 17: Flexref concept
In bovenstaande figuur staan al deze drie componenten bij elkaar. Over het algemeen zullen het Database Management Systeem en de FlexRef Server bij elkaar op een systeem staan. De Client kan via Internet verbinden met de server. Omdat FlexRef in principe een wereldwijd werkend systeem is moet ieder record een unieke identificatie krijgen. Die unieke identificatie bestaat uit de URL van de server (bijvoorbeeld http://host/flexref/flexref.pl) gevolgd door een volgnummer. Geldige ID’s zijn dus http://host/cgi-bin/flexref.pl?id=44 of http://host/~joedoe/flexref.pl?id=1003.
45
FlexRef: Het annoteren van documenten
Via deze ID's kan iedere FlexRef client van iedere willekeurige FlexRef server een record opvragen.
4.3
Uitvoering
4.3.1 Transport Het transport tussen client en server vindt plaats via het Hypertext Transfer proto20
col , kortweg HTTP. Dit is het protocol dat ook gebruikt wordt voor het versturen en ontvangen van html-pagina's op het web. Het voordeel van dit protocol is dat het bijzonder geschikt is voor vraag-antwoord communicatie: de clientsoftware dient een verzoek in bij de server en wacht op antwoord, de server verstuurd het antwoord, de verbinding wordt gesloten. Hierdoor is het niet nodig een permanente verbinding te hebben tussen client en server. Omdat het HTTP protocol bijzonder weinig overhead geeft is het in staat om zeer snel de verbindingen te openen en weer te sluiten. De informatie zelf wordt overgestuurd door middel van XML documenten. Aanvankelijk leefde het plan om van SOAP (Simple Object Access Protocol21). Dit protocol is bedoeld om zogenaamde Webservices aan te spreken. Een Webservice is een applicatie die toegankelijk is via het web (dus via het HTTP-protocol) en die door andere applicaties aangesproken kan worden. Het kan bijvoorbeeld gaan om een effectenbeurs die koersinformatie geeft via een webservice. Het zou dan mogelijk zijn om bijvoorbeeld een Windows applicatie te bouwen die één keer per kwartier bepaalde koersinformatie opvraagt bij de webservice, via HTTP, en die informatie bijwerkt in bijvoorbeeld een spreadsheet. SOAP werkt met een envelop en een bericht. De envelop bevat informatie over de manier waarop applicaties om moeten gaan met het bericht. Het bericht bevat de eigenlijke gegevens en bevat een andere XML DTD dan SOAP zelf. Dankzij XML namespaces kan de SOAP DTD met een andere DTD gemengd worden. Anders dan de naam SOAP doet vermoeden is het niet object georienteerd. Een SOAP message bestaat uitsluitend uit XML en een XML document is op zich geen object met methoden en eigenschappen. Bovendien bestaat een XML document uit strings en dat betekent dat gegevens altijd omgezet moeten worden naar bijvoorbeeld integers of datumobjecten of wat dan ook. Verder is het parsen van XML behoorlijk tijdrovend. Het concept van SOAP is echter interessant: SOAP staat los van de transportlaag (bijvoorbeeld HTTP) en
werkt met XML. Deze punten maken SOAP (en het concept SOAP) goed en relatief eenvoudig toepasbaar. SOAP is een manier om met webservices te kunnen communiceren. SOAP is echter complex en ten tijde van de start van het bouwen van Flexref bestond er voor PHP (waarin de client is geschreven) nog geen SOAP implementatie. Daarom is gekozen voor een versimpelde variant. Deze variant bestaat, net als SOAP, uit een envelop met daarin een body. De envelop bevat de opdracht aan de server en eventueel een Flexref document. Het voordeel van deze scheiding is dat applicatiegegevens en administratieve gegevens van elkaar gescheiden worden. In theorie is het zelfs mogelijk om de flexref DTD te vervangen door een andere DTD zonder dat de server hier problemen mee heeft.
4.3.2 Opslag De gegevens van Flexref worden opgeslagen in de flexref database. Er is gekozen voor een relationele database die met SQL kan worden aangesproken. Het voordeel van SQL is dat het een betrekkelijk gestandaardiseerde querytaal is waardoor een verandering van het Database Management Systeem niet tot wijziging van de SQL statements hoeft te leiden. Als DBMS is gekozen voor MySQL22. MySQL is een populair Open Source Database Managementsysteem. Het komt voort uit onvrede met mSQL en kan inmiddels vergelijkingen met professionele DBMS'en doorstaan. Er is bovendien veel software geschreven voor MySQL, zowel voor het beheren van een MySQL installatie als software die MySQL gebruikt voor het opslaan van gegevens. MySQL is ontworpen voor snelheid en stabiliteit, wat het geschikt maakt voor database-ontwerpen die niet complex zijn maar wel schaalbaar moeten zijn. Met schaalbaar wordt bedoeld dat een klein project, met weinig records, moet kunnen doorgroeien naar een systeem met veel meer records. MySQL is onder de GNU Public License gratis te verkrijgen. Daarnaast zijn er commerciële licenties beschikbaar voor wie de server zelf wil integreren in eigen applicaties of behoefte heeft aan betere ondersteuning. Flexref heeft niet een licentie nodig omdat de database los staat van de applicatie.
4.3.3 Databaseontwerp Het databaseontwerp moet in staat zijn om documenten en annotaties op te slaan. Een document heeft een titel, één of meer auteurs, één of meer trefwoorden, een be-
47
FlexRef: Het annoteren van documenten
schrijving, een tekst (bedoeld voor full-text opslag). Ook voor een annotatie gelden hoofdzakelijk dezelfde eigenschappen. Een annotatie heeft ook een auteur, een titel, eventueel een samenvatting, een tekst. Omdat een document en een annotatie conceptueel dezelfde entiteiten zijn is er besloten om geen onderscheid te maken hiertussen. Het enige verschil is dat een annotatie te herkennen is aan het feit dat het 'iets' annoteert. Dus als het veld 'annotates' gevuld is geeft dat aan dat het record een annotatie is. Het veld 'annotates' verwijst naar het document dat geannoteerd wordt. De tabel die documenten bevat heet 'tblDocuments'. Als primaire sleutel dient een identificatienummer 'id' die simpelweg bij iedere toevoeging van een nieuw record met 1 wordt opgehoogd. Deze primaire sleutel vormt samen met de hostname en het pad naar het flexref.pl - script de unieke identificatie van ieder flexref-record. Een ander opmerkelijk veld is het veld 'text' dat gereserveerd is voor het opslaan van de volledige tekst van een document. Echter omdat deze tekst nogal lang kan worden is het in een latere versie verstand om deze informatie niet meer in de database op te slaan maar op het bestandssysteem van het operating system, bijvoorbeeld met een documentID als bestandsnaam. Voor de trefwoorden en de auteurs zijn aparte tabellen gemaakt: 'tblSubjects' en 'tblAuthors'. Deze bestaan uit een naam en een automatisch toegewezen uniek ID. Omdat zowel een trefwoord als een auteur aan meerdere documenten toegekend kan worden en bovendien een document zowel meerdere auteurs als meerdere trefwoorden mag hebben is het nodig om twee koppeltabellen te maken: respectievelijk tblLinkDocSub en tblLinkDocAuth voor trefwoorden en auteurs. Beide tabellen bestaan uit een id van een document en een een id van een trefwoord dan wel auteur.
Figuur 18: Databaseontwerp Flexref
22
Zie: http://www.mysql.com
48
FlexRef: Het annoteren van documenten
4.3.4 Server De taak van de server is het ontvangen van opdrachten van de client en die vertalen naar opdrachten aan de database. De server functioneert dus als intermediair tussen de gegevens en de client. De server moet in staat zijn om via HTTP te kunnen communiceren met de client. Hierbij is het niet nodig dat de server contact moet kunnen leggen met de client: het initiatief ligt bij de client. De server is een Perl-script dat geïnstalleerd moet worden als CGIapplicatie van een webserver. In principe is iedere webserver geschikt, het is voor het programma niet relevant welke webserver wordt gekozen. Algemeen verkrijgbare webservers zijn vaak goed voorzien van blokkades tegen aanvallen vanaf het openbare Internet zodat het verstandig is gebruik te maken van een standaard webserver. Bij ontwikkeling van Flexref is gebruikt gemaakt van de Abyss Webserver23. Dit is een eenvoudige en kleine gratis webserver voor het Windows en het Linux platform. Deze server is met name geschikt voor het hosten van eenvoudige websites. Het configureren van deze webserver is betrekkelijk simpel. Een nadeel is de manier waarop de server omgaat met losse interpreters als Perl en PHP. Iedere keer als er een Perl bestand wordt opgevraagd moet de webserver een nieuwe instantie van de Perl-interpreter opstarten. Bij zwaardere belasting van de webserver betekent dit een forse aanslag op het computersysteem. Een webserver als Apache gebruikt voor ieder verzoek om een Perl-bestand slechts één ingebouwde Perl-interpreter. Als Flexref in een productie-omgeving zou worden ingezet moet dus een andere server gekozen worden. Maar voor een ontwikkelomgeving is Abyss geschikt. De server is geprogrammeerd in Perl. Er is gekozen voor Perl omdat bekendheid met deze taal reeds aanwezig was. PHP viel af omdat deze taal bedoeld is voor het genereren van HTML. Voor Perl zijn de afgelopen jaren bijzonder veel modules ontwikkeld die de functionaliteit van de taal fors hebben uitgebreid. Extra functionaliteit kan later eenvoudig worden toegevoegd. De server moet drie taken verrichten. De eerste is het ontvangen van een XML document van de client. Dit XML document bevat de actie die moet worden ondernomen (zoeken, toevoegen, bewerken) en eventueel een Flexref document. Vervolgens moet de server dit XML document verwerken, wat er op neer komt dat de structuur van het XML document wordt omgezet naar een werkbare datastructuur in Perl. Tenslotte voert de server
23
http://www.aprelium.com/abyssws/
49
FlexRef: Het annoteren van documenten
de actie uit door middel van databaseopdrachten en het resultaat wordt teruggestuurd naar de client. Voor het ontvangen van het XML document is de CGI module gebruikt. Deze CGI module is een interface op het HTTP-protocol en zorgt er voor dat de ontwikkelaar zelf zich niet hoeft bezig te houden met het afhandelen van HTTP-verzoeken. Het XML document wordt verstuurd door middel van de zogenaamde POST methode, wat betekent dat het document als tijdelijk bestand door de webserver op een tijdelijke locatie wordt geplaatst. Het volgende codefragment laat zien hoe die CGI-module het document ontvangt: use CGI; # Provides HTTP protocol. my $cgi = new CGI;# Create CGI object my $file = $cgi->param('message');
De variable $file bevat op dat moment een zogenaamde 'file handle' die gebruikt kan worden om het document te bereiken. Fysiek staat het document op dat moment op een tijdelijke locatie op het bestandssysteem van de webserver opgeslagen. Deze locatie hoeft de server echter niet te weten: de filehandle $file zorgt er voor dat het bestand te vinden is. Als het ontvangen van het bestand geslaagd is moet het document gelezen worden. Hiervoor wordt gebruik gemaakt van de module XML::Parser, een interface op de Expat parser. De Expat parser is een stream parser, in tegenstelling tot de tree-based XML::DOM parser. Een tree-based parser wil het hele XML document in het geheugen laden, terwijl een stream-based parser per regel werkt. De ontwikkelaar definieert functies die worden aangeroepen bij het lezen van bijvoorbeeld een XML element, een attribuut of een stuk tekst en die functies zorgen voor de rest van de afhandeling van de gegevens. Flexref heeft dit nodig omdat het toegestaan is complete documenten (full text) op te slaan. Omdat deze documenten lang kunnen zijn is het niet wenselijk om alles in het werkgeheugen op te slaan. Overigens, de huidige versie van Flexref slaat het document nog wel op in het geheugen maar dan in een Perl datastructuur in plaats van een XML boom. my $parser = new XML::Parser(ErrorContext => 2, Namespaces => 1); $parser->setHandlers( Start => \&starttag, End => \&endtag, Char => \&chars);
# XML start tag # XML end tag # plain data
Bovenstaande code laat zien hoe in Perl de XML parser wordt aangemaakt. Het is een object, vandaar de constructie met '->'. Bij het aanmaken van de parser wordt een ErrorContext gezet. De errorcontext staat voor het aantal regels dat getoond wordt in het
50
FlexRef: Het annoteren van documenten
geval dat het XML document fouten bevat. Namespaces is een vlag die gezet moet worden om XML namespaces te ondersteunen. De opdracht 'setHandlers' verteld aan de parser welke functies moeten worden aangeroepen als de parser respectievelijk een starttag, eindtag of losse karakterdata tegen komt. De server slaat het XML document op in een eigen Perl datastructuur. Om dit te tonen volgt hier een voorbeeld XML document dat gebruikt kan worden om een nieuw record toe te voegen. Dit document wordt dus aangemaakt door een FlexRef client en is ontvangen door de server. <env:Envelop xmlns:env="http://hagen.let.rug.nl/~s1036289/envelop"> <env:Header> <env:Action>add <env:Body> Mak, GeertVan Istendael, GeertArm BrusselBrussel
In de datastructuur die ontwikkeld is voor het verwerken van dit document wordt onderscheid gemaakt tussen herhaalbare velden (subject, author) en niet-herhaalbare velden (title). De niet-herhaalbare velden worden opgeslagen in een variabele met de naam $dat. Dit is wat men in Perl een 'hash' noemt, een array die niet geïndexeerd is op getallen maar op strings (in Perl terminologie: scalars). In bovenstaand voorbeeld levert dit dus een variable $dat{"title"} = 'Arm Brussel' op. Voor de beide herhaalbare velden zijn twee gewone arrays beschikbaar: @subjects en @authors. Bij de latere update of insert worden deze arrays weer op nieuw gebruikt. Een ander belangrijk aspect is het bepalen van de vereiste actie. Tijdens het parsen van de XML wordt de waarde van het element 'env:Action' geplaatst in de globale variabele $curAction zodat die verder in het proces gebruikt kan worden. Op het moment dat het XML document is opgeslagen in het werkgeheugen gaat het programma over op het construeren en uitvoeren van één of meerdere SQL opdrachten aan de MySQL database. Hiervoor moet eerst verbinding worden gelegd met de MySQL database. Onderstaande code laat zien hoe dat gaat: # database connection string my $dsn = "DBI:mysql:database=flexref;host=localhost;port=3306"; my $dc = DBI->connect($dsn, "rutger", "!rutger");
51
FlexRef: Het annoteren van documenten
Welke SQL opdrachten precies worden uitgevoerd is uiteraard afhankelijk van de opdracht. In het voorgaande XML document is er sprake van een toevoegactie van een nieuw record. Dat betekent dus dat er een SQL INSERT moet worden uitgevoerd. Het eerste dat de code voor de actie 'add' doet is het construeren van het INSERT statement voor de tabel met de documenten: $sql = " INSERT INTO tblDocuments ( title, type, format, description, date_cr, date_mod, text, annotates ) VALUES ( '".$dat{"title"}."', '".$dat{"type"}."', '".$dat{"format"}."', '".$dat{"description"}."', NOW(), NOW(), '".$dat{"text"}."', '".$dat{"annotates"}."' )"; # $id contains the id of the added document my $id = execINSERT($sql);
De execINSERT - functie zorgt voor een extra abstractielaag: bij verandering van het DBMS hoeft alleen maar deze functie worden bijgewerkt. Op het moment dat een nieuw record wordt aangemaakt heeft dat record nog geen ID, daarna uiteraard wel. Het net toegekende ID wordt onmiddellijk daarna gebruikt voor het toevoegen van de subjects en de auteurs. Dit toevoegen van auteurs en subjects is wat lastiger. Het kan namelijk zijn dat een onderwerp al in de database voorkomt. In dat geval moet zo'n onderwerp niet worden toegevoegd maar moet slechts het onderwerps-id worden opgezocht. Hiervoor is de functie insertSubjects ontworpen. Deze functie werkt op de @subject array. Van ieder subject wordt eerst gekeken of het subject al voorkomt in de tabel 'tblSubjects'. Zo ja, dan wordt de id bewaard, zo nee dan wordt het subject toegevoegd en het nieuwe id wordt bewaard. In beide gevallen levert het een array op van één of meerdere id's die dan gebruikt kunnen worden voor het koppelen van de subjects aan het nieuwe document: # call insertSubjects in order to insert the subjects (if needed) my %subids = insertSubjects(); # ok now we have the subjectID's so we can fill in the link table: foreach my $subject (@subjects) { $sql = "
52
FlexRef: Het annoteren van documenten
INSERT INTO tblLinkDocSub VALUES ($id, ".$subids{$subject}.")"; execINSERT($sql); }
Deze zelfde methode wordt gebruikt voor het toevoegen van auteurs. Een andere mogelijke actie is 'update', hiervoor geldt ongeveer dezelfde procedure. Ook zoeken is geïmplementeerd, zij het voor een enkele server. De server ontvangt een zoekopdracht van de client in de vorm van een XML document waarin de te doorzoeken velden zijn ingevuld (bijvoorbeeld Mulisch, H). De server zet dit XML-document om in een SQL-query die vervolgens aan de database wordt doorgegeven. Het resultaat van deze query (één of meerdere documenten) wordt in een XML-document omgezet en naar de client verstuurd, zodat de client de resultaten kan tonen aan de gebruiker. $sql = "SELECT d.id, d.title FROM tblDocuments as d"; my $where = ""; if ($authors[0] gt "") { $sql .= ", tblAuthors as a, tblLinkDocAuth as l"; $where .= " a.name like '%".$authors[0]."%'AND a.id = l.authid AND d.id = l.docid AND "; } $sql .= " WHERE
$where d.title like '%".$data{"title"}."%'";
my @result = (execSELECT($sql)); foreach my $row (@result) { my %row = %$row; $docXML .= "\n"; $docXML .= "\t".$row{"title"}."\n"; $docXML .= "\n"; }
In bovenstaande code is te zien dat er aan de client een id en een titel wordt teruggestuurd. Nadat de SQL-opdracht is uitgevoerd worden de resultaten doorlopen. Alle resultaten worden teruggestuurd naar de client. Dit gebeurt in de vorm van een XMLdocument
waarin
ieder
zoekresultaat
als
een
Document
wordt
beschouwd
(),
4.3.5 Client De client vormt de verbinding tussen de server en de eindgebruiker. De client vertaalt de opdrachten van de gebruiker in XML en verstuurt deze naar de server. De server geeft resultaat terug en de client informeert de gebruiker.
53
FlexRef: Het annoteren van documenten
De client is een webclient, dat wil zeggen een applicatie die gebruik maakt van een webbrowser voor het tonen van de gebruikersinterface. Op deze manier werkt de client op alle computersystemen die beschikken over een webbrowser. De client is onafhankelijk van gebruikte besturingssystemen. Een ander voordeel is dat vernieuwingen aan de client onmiddellijk beschikbaar zijn voor alle gebruikers: er hoeft geen nieuwe versie gedistribueerd te worden. De Flexref webclient is geschreven in PHP. Als belangrijkste reden gold de aanwezige programmeerkennis en de bewezen kracht van PHP bij dit soort toepassingen. Bovendien biedt PHP ondersteuning voor XML. De webclient is modulair opgebouwd. Er is gekozen om layout functies (die HTML opleveren) te scheiden van logica (die bewerkingen op gegevens uitvoert). De applicatie bestaat uit de volgende bestanden: client.php client.css actiontree.inc config.inc html.inc lib.inc menu.inc xmlparse.inc pickterm.php
Hoofdbestand. Dit bestand voegt de andere bestanden in en in dit bestand is de uiteindelijke hoofdstructuur van de HTML opgenomen. Stylesheet Roept op basis van keuze van de gebruiker de juiste functies aan. Bevat enkele basisinstellingen Bevat functies die de layout regelen Bevat de logica (bewerkingen op gegevens) Zorgt voor het tonen van het navigatiemenu. Bevat de code van de XML parser Een losstaand PHP script dat een popup menu toont voor het selecteren van termen.
De eindgebruiker roept bij iedere actie het bestand 'client.php' aan. Dit bestand bevat een HTML raamwerk en zorgt ervoor dat de overige bestanden (de 'inc') bestanden worden ingevoegd. Bij ieder verzoek aan client.php wordt een actie gedefinieerd. Afhankelijk van de actie die de gebruiker wenst wordt in 'actiontree.inc' bepaald welke functie moet worden aangeroepen. De client bevat geen functies om met de database te communiceren. Het belangrijkste dat de client doet is het omzetten van HTML invoervelden naar een XML document en het verzenden en ontvangen van XML documenten. Het verzenden en ontvangen van XML documenten gebeurt via HTTP-POST opdrachten aan de server. Dit betekent dus dat de client in staat moet zijn om POST opdrachten te versturen. Bij een standaardinstallatie van PHP is deze functionaliteit niet aanwezig. Echter door het installeren van de cURL libraries en het toevoegen van deze libraries aan de PHP installatie werd het mogelijk om met PHP POST opdrachten naar de Flexref server te sturen.
54
FlexRef: Het annoteren van documenten
cURL is een bibliotheek die alle mogelijkheden biedt die een HTTP client nodig heeft. Voorbeelden van deze mogelijkheden zijn het aanroepen van URL's, het inloggen op beveiligde webservers of het versturen van bestanden naar een cgi-script. Deze laatste functie was nodig voor de Flexref client. Het volgende codefragment toont het gebruik van de cURL library: function curlAction($xml) { $server = $GLOBALS["server"]; $ch = curl_init($server); curl_setopt($ch, CURLOPT_POSTFIELDS, "message=$xml"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); $postResult = curl_exec($ch); curl_close($ch); return($postResult); }
Er wordt eerst een curl-object aangemaakt. Vervolgens wordt de het feitelijke XML document (‘message=$xml’) toevoegd aan een collectie van POST variabelen. Het zetten van de CURLOPT_RETURNTRANSFER vlag zorgt er voor dat PHP wacht totdat het resultaat van de opdracht binnen is gekomen. Tenslotte wordt via de CURLOPT_POST vlag verteld dat de curl-actie een POST actie is. De functie 'curl_exec' voert de http actie uit en geeft eventueel resultaat terug aan $postResult. De uitkomst van de cURL actie wordt als resultaat van deze functie teruggegeven. Binnen Flexref is die uitkomst altijd een XML document. Net als bij de server is gebruik gemaakt van de Expat XML parser. Net als bij de server zet deze parser het binnenkomende XML document om in een interne datastructuur. Op basis van deze interne datastructuur wordt een HTML pagina gegenereerd. Het nu volgende XML document is een resultaat van een zoekactie: <env:Envelop xmlns:env="http://hagen.let.rug.nl/~s1036289/envelop"> <env:Header> <env:Host>http://host/cgi-bin/flexref.pl <env:Body> De ontdekking van de hemelDe aanslag
55
FlexRef: Het annoteren van documenten
Dit document levert de volgende PHP datastructuur op : $data["env:Host"] = "http://host/cgi-bin/flexref.pl" $data["fr:Document"][44]["fr:title"] = "De ontdekking van de hemel" $data["fr:Document"][131]["fr:title"] = "De aanslag"
Op basis van deze datastructuur wordt de HTML code gegenereerd voor het tonen van het XML document. Het aanmaken van de PHP datastructuur gebeurd door de parser. Deze parser wordt aangemaakt in 'xmlparse.inc'. Hieronder volgt een codefragment dat aangeeft hoe deze parser werkt: function initParser() { global $Parser; // Initialize the parser. $Parser = xml_parser_create('ISO-8859-1'); // Override default behavior: turn Case sensivity ON xml_parser_set_option($Parser, XML_OPTION_CASE_FOLDING, 0); xml_set_element_handler($Parser, 'StartHandler', 'EndHandler'); xml_set_character_data_handler($Parser, 'CharacterHandler'); }
De functieaanroep xml_set_element_handler verteld de parser dat, als de parser een XML starttag tegen komt (bijvoorbeeld ''), de door de programmeur ontwikkelde functie 'StartHandler' moet aanroepen. Als de parser een XML eindtag tegen komt (bijvoorbeeld '') dan roept de parser de functie 'EndHandler' aan. Als de parser gewone karakters leest (die dus geen XML-tags zijn) dan wordt de functie 'CharacterHandler' gebruikt. De volledige broncode van deze functies zijn te vinden in 'xmlparse.inc'. De functies die de PHP datastructuur omzetten naar HTML zijn te vinden in 'html.inc'. Hoe dit gaat wordt getoond in onderstaand (iets vereenvoudigd) codefragment. Deze functie wordt gebruikt om het al eerder beschreven zoekresultaat te tonen op het scherm. function htmlSearchResults($data) { $html .= "
Zoekresultaat
\n"; if (sizeof($data["fr:Document"]) == 0) { return ($html."
Het eerste wat de functie doet is controleren of er überhaupt wel documenten zijn gevonden. In dat geval geeft de functie een klein stukje HTML terug en stopt de functie. Als er wel documenten zijn dan worden alle documenten in de resultaatset doorlopen. In dit geval wordt er voor ieder document een tabelrij aangemaakt (
) met daarin een enkele tabelcel waarin de titel wordt getoond. De variabele ‘$key’ zorgt ervoor dat de juiste titel wordt getoond, van het huidige document, omdat deze variabele feitelijk het identficatienummer van het document bevat. In de werkelijke code wordt er ook nog een tweede cel aangemaakt met daarin HTML code die ervoor zorgt dat de gebruiker van de Flexref webclient een document kan selecteren zodat het bewerkt en bekeken kan worden.
4.4
Discrepantie tussen concept en realisatie
4.4.1 Inleiding Niet alles uit het concept is gerealiseerd. De belangrijkste reden hiervoor is de tijdsdruk. Het bouwen van de user interface van FlexRef en het bouwen van de server bleken meer tijd te hebben gekost dan waar van te voren op was geanticipeerd. In deze paragraaf worden een drie-tal elementen uit het concept beschreven die niet gerealiseerd zijn.
4.4.2 Peer-2-peer functionaliteit In het concept wordt gesproken over de wenselijkheid om FlexRef servers onderling met elkaar te laten communiceren. Dit heeft als voordeel dat eindgebruikers zoekopdrachten kunnen geven die verder reiken dan hun eigen database. Het wordt mogelijk om te zien wat andere FlexRef gebruikers van bepaalde documenten vinden, welke opmerkingen zij er over hebben. Invoering van deze functionaliteit heeft gevolgen voor zowel de client als de server. De client moet onderscheid maken tussen 'eigen' en 'vreemde' annotaties en documenten. Dit omdat eigen records te wijzigen zijn terwijl vreemde records niet veranderd mogen worden. Bovendien is het wenselijk als de gebruiker bij het opgeven van een zoekactie in staat is om aan te geven dat er alleen in de eigen database gezocht moet worden (wat zeer snel gaat) of dat de zoekactie over meerdere FlexRef-servers moet lopen (wat tijdrovend kan zijn). Het resultaat van een uitgebreide zoekactie kan zo groot zijn dat de client
57
FlexRef: Het annoteren van documenten
de mogelijkheid moet bieden om te kunnen bladeren door de zoekresultaten. Deze zoekresultaten moeten dan wel lokaal worden bewaard omdat anders voor iedere nieuwe resultaatpagina de zoekactie herhaald moet worden. De server moet in staat zijn te verbinden met andere FlexRef servers. Bovendien moet de server in staat zijn de zoekresultaten te bundelen en samen te vatten om dubbele resultaten te vermijden. Dit omdat het in principe mogelijk wordt dat een FlexRef server dezelfde antwoorden van dezelfde server via verschillende wegen ontvangt. Er moet dus veel administratieve informatie worden bijgehouden over welke resultaten van welke server komen. Dit is bijzonder veel extra werk maar conceptueel in te bouwen in de FlexRef Server.
4.4.3 Meerdere gebruikers Op dit moment biedt de server ondersteuning voor een enkele gebruiker. Ondersteuning voor meerdere gebruikers is toe te voegen door een tabel met gebruikers aan te maken en bovendien in de tabel met documenten een veld toe te voegen waarin een gebruikersnummer kan worden opgenomen. Op deze manier krijgt ieder record binnen het systeem een koppeling aan een gebruiker. Naast het toevoegen van een gebruikerstabel moet de server het mogelijk maken om gebruikers zich te laten aanmelden. Dit betekent dat een gebruiker zich in de client bekend maakt en dat de gebruikersnaam en het wachtwoord naar de server worden gestuurd. De server zou hiervoor bij ieder verzoek van een client de gebruiker moeten authenticeren. Dit is mogelijk door binnen de XML envelop extra velden op te nemen voor 'username' en 'password'. Verder moet de server in staat zijn om wijzigingen van gebruikers aan records die niet van hen zijn te blokkeren. De client moet bij ieder verzoek aan de server de aanmeldgegevens doorsturen. Verder moet de client, bij het starten en bij een mislukte aanmelding, een aanmeldscherm presenteren.
4.4.4 Ondersteuning grote tekstbestanden Op dit moment slaat de FlexRef server grote teksten op in het veld 'text' van de database. Dit heeft als nadeel dat die tekst in een SQL statement moet worden opgenomen en dus ook in het werkgeheugen van het computersysteem moet worden opgeslagen. Teksten kunnen in principe lang zijn. Het is daarom beter om de tekst los van de database op te slaan op het bestandssysteem. Op het moment dat de FlexRef-server een tekstbe-
58
FlexRef: Het annoteren van documenten
stand ontvangt zou dit bestand op een vooraf gedefinieerde locatie kunnen worden opgeslagen en voorzien worden van een bestandsnaam die gelijk is aan het recordnummer. Nadeel van deze aanpak is dat zoeken in de full-text van een record veel moeilijker wordt. In plaats van een relatief simpele SQL opdracht
moet dan een reeks documenten
worden doorlopen hetgeen erg tijdrovend kan zijn. Bovendien levert het versturen en ontvangen van grote tekstdocumenten vertraging op in de comunicatie tussen client en server. Wellicht is het beter om tekstfragmenten in plaats van complete teksten te sturen en te ontvangen.
59
FlexRef: Het annoteren van documenten
5 Conclusie 5.1
Inleiding In de vorige hoofstukken is een oplossing aan gedragen voor de probleemstelling uit
de inleiding. Nu wordt bekeken in hoeverre antwoord is gegeven op deze probleemstelling. De stelling luidde: Hoe kunnen gebruikers met behulp van standaardisatie van documenten relaties vastleggen tussen documenten en deze relaties delen? Er is begonnen met een verkenning van bestaande oplossingen. Daarna is vastgesteld wat de beperkingen van deze oplossingen zijn en is een alternatief gepresenteerd en geïmplementeerd.
5.2
Bestaande systemen De bestaande oplossingen vallen uiteen in twee soorten applicaties: -
Bibliografische software;
-
Webannotatiesystemen. De eerste groep houdt zich bezig met het opslaan van informatie over boeken, tijd-
schriftartikelen, filmmateriaal, afbeeldingen en andere bronnen. Met betrekking tot de elementen uit de probleemstelling valt een aantal aspecten op. In de eerste plaats werken deze pakketten allemaal met een database die over het algemeen gegevens bevat voor één enkele gebruikers. Netwerkmogelijkheden zijn toegevoegd maar richten zich op het delen van informatie binnen een enkele groep mensen, bijvoorbeeld een vakgroep. De functionaliteit van de software is niet volledig beschikbaar in de verschillende oplossingen voor het delen van informatie via het Internet. In dat geval wordt voornamelijk de zoekmogelijkheden van de pakketten benut. De meeste pakketten bieden een veld dat het mogelijk maakt ‘related records’ op te geven zodat er relaties tussen de documenten gelegd kunnen worden. Er zijn wel import- en exportmogelijkheden maar die richten zich voornamelijk op gegevensconversie, bijvoorbeeld als een gebruiker van Reference Manager wil overstappen op Biblioscape zonder dat de gegevens in Reference Manager opnieuw moeten worden ingevoerd. De pakketten zijn met name sterk in de zoekmogelijkheden binnen de eigen database en in de integratie met andere (Windows)applicaties. Dit laatste betekent voornamelijk dat gebruikers vanuit een tekstverwerker kunnen verwijzen naar records uit de database zodat automatisch gegenereerde literatuurlijsten mogelijk worden. Groot nadeel in het licht van de probleemstelling is het gebrek aan netwerkmogelijkheden.
60
FlexRef: Het annoteren van documenten
De tweede groep bekeken applicaties zijn de webannotatiesystemen. Deze systemen maken het mogelijk om commentaren toe te voegen aan webpagina’s. De systemen zijn bekeken omdat het ontwerp van deze software rekening houdt met informatie op het Internet. Een belangrijk onderscheid tussen de applicatie ligt in de keuze hoe de database wordt beheerd: op de lokale computer van de eindgebruiker of op een centrale server. Verder zijn er grote verschillen in de mate waarop verschillende documenten worden ondersteund. Dit varieert van uitsluitend HTML tot in theorie alle formaten (door middel van het toevoegen van ‘plug-ins’ voor elk documentformaat). De grote overeenkomst tussen de pakketten is dat ze uitsluitend ondersteuning bieden voor elektronische teksten. Het is niet mogelijk om informatie op te slaan over documenten die niet elektronisch beschikbaar zijn (bijvoorbeeld door een verwijzing te maken naar een bibliotheekcode of iets dergelijks).
5.3
Concept Op basis van de bekeken sofware is een concept ontwikkeld dat de nadelen van de
bestaande pakketten moet ondervangen. Het concept is ontwikkeld met een aantal doelen: 1. Het delen van informatie over bronnen; 2. Ondersteuning voor electronische bronnen en niet-electronische bronnen; 3. Het vastleggen van relaties tussen deze bronnen. Het belangrijkste uitgangspunt is dat er geen scheiding is tussen verschillende soorten documenten (annotaties, documenten, webpagina’s). Alle documenten zijn geabstraheerd tot ‘informatie-objecten’, die in het vervolg als ‘document’ worden aangeduid. Het concept is dan ook opgezet rond de entiteit ‘document’. Dit ondervangt punt 2 uit bovenstaande doelen omdat alle documenten op een eenduidige manier worden opgeslagen. Het concept gaat uit van een client-server architectuur. Hierbij is rekening gehouden met het gebruik van meerdere servers. Hierdoor kan verwezen worden naar documenten op andere servers dan die van de gebruiker. Omdat gebruik is gemaakt van het Web als opslagmedium kan de URI van een document als unieke identifcatie worden gebruikt. Record 1 op server A wordt onderscheiden van record 1 op server B doordat de servers op andere machines werken en dus een andere URL hebben. Dit maakt het mogelijk relaties te leggen tussen documenten op verschillende servers. Het is mogelijk om te verwijzen naar documenten op een andere server dan de eigen server. Een probleem met het huidige concept is dat servers niet op de hoogte kunnen zijn van elkaars bestaan. Er is gedacht aan de concepten uit de wereld van bestandsde-
61
FlexRef: Het annoteren van documenten
lingprotocollen zoals bijvoorbeeld Gnutella. Bij het starten van een Gnutella-client maakt de client zich bekend bij een aantal andere clients. Via die andere clients kan dan het Gnutella netwerk worden doorzocht. Het nadeel van deze methode is dat het netwerk groot en traag kan worden. Als gekeken wordt naar de bibliografische pakketten valt op dat er meer eigenschappen van een document kunnen worden opgeslagen dan in deze scriptie gedaan is. Nu is uitgegaan van de eigenschappen zoals vastgelegd in de Dublin Core. Of dit voldoende is kan uitgangspunt zijn van verder onderzoek.
5.4
Implementatie Het concept is uitgewerkt in een applicatie die de naam ‘FlexRef’ draagt. Er is een
client en een server gebouwd. De server maakt gebruik van een relationele database voor de opslag van gegevens omdat het relationele datamodel sterk is in het snel terug vinden van informatie. Voor de communicatie tussen server en client is gebruik gemaakt van het http-protocol zodat het eenvoudig is om een client te bouwen. De gegevens worden gecodeerd in een XML formaat. Ook dit is gedaan om implementatie van andere clients niet moeilijk te maken. De applicatie maakt het mogelijk om documenten en annotaties toe te voegen en te wijzigen. Documenten kunnen aan elkaar gekoppeld worden waardoor het mogelijk wordt annotaties te maken. Dit gebeurt door een document te relateren aan een ander document. Voor electronisch beschikbare bestanden is er een ‘full-text’ veld beschikbaar maar het is ook mogelijk om een code op te nemen ten behoeve van niet-elektronische documenten. De annotatie-voorziening zorgt ervoor dat relaties kunnen worden gelegd, bijvoorbeeld het schrijven van een kritiek op een document of het opnemen van een document dat een ander document tegenspreekt.
5.5
Conclusie De gebouwde applicatie laat zien dat het geschetste probleem uit de probleemstel-
ling opgelost kan worden met behulp van het beschreven concept. De doelen zoals die geformuleerd zijn voor het ontwikkelen van het concept zijn deels gehaald. De enige reden voor het niet volledig implementeren is van praktische aard terwijl er geen fundamentele reden is waarom het niet zou werken. Het vereist echter extra onderzoek om een volledige implementatie te verkrijgen.
62
FlexRef: Het annoteren van documenten
5.6
Vragen voor verder onderzoek Op basis van de gedeeltelijke implementatie blijven er nog een een aantal punten
die zich lenen voor verder onderzoek: 1. Onderzocht moet worden in hoeverre een peer-to-peer netwerk gerealiseerd kan worden met behulp van de infrastructuur van het Internet. Het doel hiervan is dat verschillende servers van elkaar kunnen ‘weten’ dat ze bestaan. 2. Onderzocht kan nog worden aan welke informatie gebruikers daadwerkelijk behoefte hebben bij het bijhouden van literatuur en het beheren van bronnen. Vraag is dus welke kenmerken van documenten moeten worden opgeslagen? 3. Voldoet de applicatie daadwerkelijk aan behoeften van gebruikers? Indien de applicatie uitgebouwd wordt tot een volledige implementatie is het interessant de applicatie te testen bij gebruikers zodat zaken als het gebruiksgemak en de doeltreffendheid geëvalueerd kunnen worden. 4. In deze scriptie is sprake van twee opslagmethoden: in een database en als ‘losse’ bestanden op het bestandssysteem. Welke is het beste en welke eisen kunnen aan het zoeksysteem gesteld worden? 5. Het doorzoeken van grote tekstbestanden kan lastig zijn. Is het wellicht nodig een aparte Information Retrieval tool te integreren?
http://www.w3.org/2001/Annotea/ Laurent Denoue De la création à la capitalisation des annotations dans une espace personnel d’informations. Proefschrift Université de Savoie, 2000 Peter Evans, Personal research assistants. A review of 3 major Personal Bibliographic Management tools. http://www.biblio-tech.com/html/pbms.html José Kahan, Marja-Riitta Koivunen, Eric Prud’Hommeaux en Ralph Swick Annotea, An Open RDF Infrastructure for Shared Web Annotations. In: Proceedings of the WWW10 International Conference, Hong Kong, Mei 2001 Catherine C. Marshall Toward an ecology of hypertext annotation. In: Proceedings of ACM Hypertext 1998. Pittsburg 1998 Group Annotations in Mosaic http://archive.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/groupannotations.html Thomas A. Phelps en Robert Wilensky The Multivalent Browser: A Platform for New Ideas Proceedings of Document Engineering 2001, November 2001, Atlanta, Georgia. Maggie Shapland Evaluation of Reference Management Software on NT. http://www.cse.bris.ac.uk/~ccmjs/rmeval99.html Venu Vasudevan en Mark Palmer On Web Annotations: Promises and Pitfalls of Current Web Infrastructure. Proceedings of the 32nd Hawaiian International Conference on System Science, 1999 Yee, Ka-Ping. CritLink: Better Hyperlinks for the WWW , 1998. http://crit.org/~ping/ht98.html