Semantisk opmarkering af biblioteksmetadata
Bibliografisk datamodel
Til formattering på web vil det være en fordel med data i schema.org format af hensyn til søgerankering. Ligeledes vil det være godt med en simplere datamodel ved udvikling af recommender der tager hensyn til metadata / værker. Derfor har jeg lavet konvertering af det bibliografiske poster fra den åbne platform til schema.org. De bibliografiske poster bliver simplificeret / mister data, og det er en meget grov og heuristisk konvertering. Men det giver et fundament at arbejde videre med. Metoden til konverteringen er udviklet ved at kigge statistisk på et stort sample af faktiske DKABM-poster. Ved referencer til felter i DKABM, bruger jeg her de kortere navne fra JSON-LD-skemaet.
Bibliografiska poster ligger under bibdata.dk/pid/… har forøjeblikket følgende data:
- @type er en schma.org type, bestemt efter dkabm.workType
- name og evt. alternativeHeadline er fundet ud fra enten dkabm.dcTitleFull, dkabm.titleFull, dkabm.dcTitle eller dkabm.title, – afhængigt af hvad der er tilgængeligt i posten.
- alternateName er dkabm.alternate
- image checker om der er forside i moreinfo, og i så fald er dette et link til en url, der redirecter til billedet i moreinfo, (via coverDataUrlFull fundet via openplatform.dbc.dk).
- creator er kombinationen af dkabm.creator... felterne, – hvor dkabm.creatorSort inverteres, og dubletter fjernes
- contributor er kombinationen af dkabm.contributor... felterne, hvor dubletter og creator’s fjernes.
- url er urlen til materialet på bibdata.dk. Dette kan bruges som unik reference / navn på materialet i linked data sammenhæng. Denne kommer på længere til at returnere HTML etc. afhængigt af accept headers, men hvis man tilføjer .json til slutningen af url’en, vil man altid få posten i json.
- sameAs er andre url’er på materialet, fundet via dkabm.hasOnlineAccess og dkabm.identifierURI.
- datePublished er dkabm.date.
- keywords er dkabm.subjectDBCF, dkabm.subjectDBCS, dkabm.subject, dkabm.shelfMusicshelf, dkabm.subjectDBCM, dkabm.subjectGenre, dkabm.subjectLCSH, dkabm.temporalDBCM, dkabm.temporalDBCP, dkabm.subjectDK5Text samt dkabm.subjectDK5 hvor sidstnævnte får “DK5/ ” som prefiks, og “sk” fjernes
- description er dkabm.abstract og dkabm.description
- identifier starter med postens pid som første værdi, og derefter dkabm.identifier samt dkabm.identifierISBN og dkabm.identifierISSN, hvor sidstnævnte er normalisert til kun at have tal, og er prefikset med henholdsvis “isbn:” og “issn:”.
- inLanguage er dkabm.languageISO6392
- subjectOf er dkabm.hasReview, dkabm.discussedIn og dkabm.hasCreatorDescription (sidstnævnte bør nok flyttes til forfatteren, – problemet er bare at det er knyttet til post og ikke forfatter, så her er en udfordring…)
- isPartOf starter med et link til værkets url på bibspire.dk, og dernæst dkabm.titleSeries og dkabm.isPartOfManifestation. Hvert af disse er selvstændige objekter, med url (kanonisk linked data navngivning) via bibdata.dk.
- publisher er dkabm.publisher
- version er dkabm.version
- additionalType er dkabm.typeBibDKType.
- typicalAgeRange er fundet ud fra dkabm.audienceAge og dkabm.subjectDBCN.
Der genereres også værks-poster på bibdata.dk/work/…, som schema.org.
Disse er genereret ud fra de bibliografiske poster i den pågældende collection i brønden, og har følgende felter:
- hasPart indeholder referencer til de enkelte materialer, samt deres identifier, type, publiceringsdato, og forside.
- url er det unikke linked data id for værket.
- name er det korteste fælles navn fra posterne (nogle poster indholder yderligere information om materialet i navnet). Der tages også højde for at nogle poster i samme værk har navnevariation med små/store bogstaver.
- description er taget fra beskrivelsen af materialerne (den længste beskrivelse udvælges).
- @type, creator, image, contributor og keywords tages/kombineres fra de enkelte materialer og dubletter fjernes.
På længere sigt er det også tanken at tilføje et bibdata.dk/series/… med hasPart og name, – men dette er endnu ikke implementeret.