Bibliotekernes udviklernetværksmøde

Dette er noter til præsentation jeg holdt Jeg holder oplægget ud fra min erfaring i at bygge apps oven på platformen, - og ikke i min rolle som i at have været med til at lave platformen.

Outline:

Det, der gør Den Åbne Platform rigtigt interessant i mine øjne, er at den gør det let at bygge apps/applikationer der taler sammen med bibliotekssystemerne.

Jeg bruger foreløbigt Den Åbne Platform til to forskellige projekter: https://rdf.solsort.com og https://mobibl.solsort.com/. Derudover har jeg også andre idéer i støbeskeen (eksempelvis semi-automatisk forsidegenerering).

rdf.solsort.com

rdf.solsort.com er mit eget lille linked-data projekt. Det startede på Hack4DK 2016, og har det formål at eksponere åbne kulturdata, som fornuftigt linked data, - hvorved at de bliver mere tilgængelige for søgemaskiner og andre former for vidensnetværk.

Samtlige materialer har en unik url, i.e. http://rdf.solsort.com/object/ting:870970-basis:27326730, som afhængigt af klienten returnerer enten HTML med semantisk opmarkering(RDFa) eller JSON-LD (på længere sigt er planen også at understøtte Turtle(ttl) og rdf-xml, samt at forbedre præsentationen yderligere).

Den bruger både Den Åbne Platform til at finde de bibliografiske data ved opslag af værk, og også som en backend for den fødererede søgning. Da data fra Den Åbne Platform stortset allerede er JSON-LD - inklusiv jsonld-schema-beskrivelsesfil linket til fra dokumnetationen - har det været nemt til at implementere.

(Som en sidebemærkning indeholder dette projekt også den første web-eksponering af Nationalmuseets data)

MoBibl

MoBibl er en prototype på en mobil/html5 biblioteksapp. Jeg bruger den selv, som min primære indgang til at søge/bestille/forny materialer på biblioteket, - og håbet er, at andre også vil kunne få glæde af den på længere sigt.

Der er også et par andre udviklere der har været inde og kode på projektet, - og alle er velkomne til at deltage.

Den nuværende prototype kan ses online på https://mobibl.solsort.com/ og udviklingen foregår på https://github.com/solsort/mobibl/.

Den Åbne platform

De vigtigste fordele ved den åbne platform i mine øjne:

Den generelle struktur for APIet er at hvert navngivent endpoint modtage et JSON-objekt med parametre, og derefter returnerer et svar. Forespørgsler kan både sendes som HTTP-POST-requests(gode for almindelige applikationer), som HTTP-GET-requests(gode til at eksperimentere med, og som eksempler der kan deles, og bare kan pastes ind i adressefeltet i en browser), og over websockets(gode for webapplikationer, så der ikke kommer performance-problemer på grund af browserens indbyggede maksimum af parallelle requests til et givent domæne).

Den Åbne Platform bygger primært oven på DBCs services, og har derfor kun data der er tilgængelige fra disse. Derfor er der eksempelvis ikke beholdningsinformation på branch-niveau, eller materiale-pid’er for lånerstatus/bestillinger etc.

Overblik over endpoints:

Hvis man bygger noget på platformen, skal man have et client_id / client_secret fra DBC. Disse bruges til at generere et token som man så kan bruge til at tilgå platformen.

Demo

En let måde at eksperimentere med den åbne platform er:

  1. Åbn en browser med en eksisterende webapplikation, der bruger den åbne platform (i.e. https://mobibl.solsort.com/)
  2. Åbn browserens konsol (eksempelvis F12 i Firefox/Chromium og klik på “Console”).
  3. dbcOpenPlatform objektet burde være logget ind på platformen, og der kan skrives kode der kalder denne.

dbcOpenPlatform bruger promises, her et par eksempler.

dbcOpenPlatform.search({q:"Aalborg"}).then(result => console.log(result));
dbcOpenPlatform.libraries({}).then(result => console.log(result));
dbcOpenPlatform.search({q:"flunkerne",limit:5,offset:5,fields: ["title","creator","coverUrlFull"]}).then(result => console.log(result));

Ovenstående eksempler køres direkte i konsollen. Bemærk: kræver webbrowser med moderne JavaScript, da jeg bruger lambda-udtryk =>.

Dokumentationen for hvilke funktioner/parametre der er kan ses på https://openplatform.dbc.dk/

Spørgsmål?