|
|
|
|
1 De Unique Resource Identifier
De centrale vraag die we in dit artikel stellen is "Hoe kunnen we een stripboek uniek identificeren?". De eerste gedachte is dat de stripboekenserienaam en de titel van het stripboek dit wel doen, maar dat is niet zo. Er zijn zeker vijf stripboeken met de titel De zwarte Madam in de stripboekenserie Suske en Wiske.
 |
 |
 |
 |
 |
Vlaamse ongekleurde reeks |
Vierkleuren reeks |
Vernieuwde vierkleuren reeks |
Klassieke Reeks Rood |
Krantenuitgave Klassiek |
Als we hierbij de stripboekenreeks ook zouden noemen komen we al een stuk verder. Voor bovengenoemde stripboeken is dit genoeg. Indien de lezer op een van de afbeeldingen klikt zal dan ook naar de informatie omtrent dat stripboek gegaan worden, waarbij gezien kan worden dat de url de stripboekenserienaam, stripboekenreeksnaam en de titel van het stripboek bevat. Hier zit wel een gevaar in want als een van deze namen of de titel verandert (doordat initeel bijvoorbeeld een fout gemaakt is) is de url niet meer geldig. Dit wordt opgelost door de url steeds opnieuw samen te stellen. Voor extern gebruik van deze url is dat echter geen optie.
Bovendien is dat voor deze stripboeken goed genoeg maar dat geldt niet voor alle stripboeken.
Zo zijn er stripboeken die zowel in harde kaft (zogenaamde hardcovers) of in zachte kaft (zogenaamde softcovers) bestaan maar verder exact hetzelfde zijn. Een voorbeeld hiervan het stripboek Generaal geelkop in de stripboekenserie Blueberry
| hardcover & softcover |
Als op bovenstaande afbeelding geklikt wordt, zal de informatie tonen dat er zowel een hardcover als een softcover uitgave van dit stripboek bestaat. Zo zijn er allerlei verschillende uitgaves van een stripboek. Er zijn bijvoorbeeld verschillende uitgevers (zie bijvoorbeeld Luc Orient - Het dal van de drie zonnen) of zelfs alleen verschillende voorkanten van een softcover (zie bijvoorbeeld Le Franc - De giftige sneeuw) bij dezelfde uitgever.
We willen toch een stripboek uniek identificeren. Het isbn nummer is het antwoord roept dan iemand, zich direct realiserend dat helaas niet ieder stripboek een isbn nummer heeft.
Om een stripboek uniek te kunnen identificeren gebruikt comicweb een unieke identifier die 6 karakers lang is en bestaat uit karakters uit de verzameling {0123456789abdefghijklmnopqrstuvwxyz}.
Zo heeft de het stripboek Le Franc - De giftige sneeuw met de donkerblauwe voorkant de identifier 1ivkwb en de uitgave met de lichtblauwe voorkant de identifier 68mf0u.
Niet alleen stripboeken krijgen een identifier maar ook stripverhalen, creators, vervolgverhalen, enz. zullen uniek te identificeren zijn via een identifier. Daarom heet zo'n identifier ook wel een uri, hetgeen staat voor unique resource identifier. Het uiteindelijke doel is dat alle informatie van een resource met een url (unique resource link) via comicweb getoond worden. Deze url heeft dan altijd de volgende vorm:
http://www.comicweb.nl/zzuris/<-uri->.html
waarbij <-uri-> door een echte uri vervangen wordt. Dus bijvoorbeeld
http://www.comicweb.nl/zzuris/1ivkwb.html of http://www.comicweb.nl/zzuris/68mf0u.html
voor bovengenoemde uitgaves van Le Franc - De giftige sneeuw.
Vooralsnog is dit alleen geimplementeerd voor stripboeken, stripverhalen en stripbladen. Onderstaande tabel geeft aan voor welke concepten reeds uri's uitgedeeld worden.
concept | voorbeeld | uri |
Uitgave stripboek | Roodbaard - De schat van Roodbaard | 6dimsx |
stripboekenserie | Guust Flater | gmjxb8 |
stripboekenreeks | Suske en Wiske - Vlaamse ongekleurde reeks | t19ky4 |
creator | Carl Barks | 5n6xnm |
uitgever | Sanoma | hvuohz |
stripverhaalversie (V & O nummers) | Kuifje - En het zwarte goud (hertekende versie) | 7og7uo |
stripverhalenserie | Simon van de Rivier | wlcsp2 |
stripbladserie | Pep | 88474k |
stripblad | Eppo 1977 Nr. 6 | zi04uz |
publicatie | Le Monde | qoxeoh |
land | Hongarije | f2c8k3 |
Bij de stripboeken en stripbladen staat ook de zogenaamde qr-code (qr staat voor quick response). Dit is een twee dimensionale bitmap die een url encode. Deze qr-code kan bijvoorbeeld geprint worden en op een stripboek geplakt worden. Deze qr-code is dan te scannen met een mobiele telefoon die gelijk naar comicweb springt om de informatie van het stripboek op de mobiele telefoon te tonen. Zo hebben de vijf bovengenoemde stripboeken van Suske en Wiske - De Zwarte Madam de volgende qr-codes:
De qr-codes van alle stripboeken uit een stripboekenserie kunnen gezien worden door vanuit de html-pagina van de stripboekenserie op het nummer van de stripboekenserie te klikken (een bijna geheime feature). Hier kunnen bijvoorbeeld de qr-codes van alle stripboeken van Kuifje gezien worden.
Dit kan ook per stripboekenreeks gedaan worden door vanuit de html-pagina van een stripboekenreeks op het nummer van de stripboekenreeks te klikken. Hier kunnen bijvoorbeeld de qr-codes van alle stripboeken van Storm uit de Kronieken van de tussentijd gezien worden.
Voordat we naar de wiskunde achter de uri gaan merken we nog op dat stripverhalen in stripbladen geen uri hebben. Vooralsnog hebben de instanties van de stripverhalen geen aparte uri.
2 De wiskunde achter de uri
Op comicweb bestaat een uri uit 6 karakters uit de verzameling
{0123456789abdefghijklmnopqrstuvwxyz}. Hiermee hebben we 366=2.176.782.336, ongeveer 2 miljard, identifiers tot onze beschikking. Dit moet ruim voldoende zijn het komende milennium alle stripboeken, stripbladen en stripverhalen van een uri te kunnen voorzien. Mocht dit onverhoopt niet waar blijken te zijn gaan we over naar uri's van lengte 7 enzovoorts.
Om te kunnen begrijpen hoe comicweb de uri's genereert zijn een paar ingredienten nodig. Allereerst de base36 representatie van een getal.
2.1 base36 representatie
Bij de base36 representatie van een getal n gebruiken we de 36 verschillende symbolen uit de verzameling {0123456789abdefghijklmnopqrstuvwxyz}. Hierbij gebruiken we voor 0 het symbool "0", voor
1 het symbool "1", voor 9 het symbool "9", voor 10 het symbool "a" t/m voor 35 het symbool "z".
Doormiddel van de Chinese Rest Stelling kunnen we
de base36 van een getal bepalen. Zo is base36(36) = 10, base36(1296) = 100 en base36(123456789) = 21i3v9.
Hieronder kan de lezer de conversies zelf uitvoeren.
Omdat we uri's van lengte 6 willen hebben zullen we base36(36) = 000010, base36(1296) = 000100 schrijven.
2.2 Random representatie
We gaan de uri's gewoon op volgorde uitdelen. Als we bij 1 zouden beginnen zien de uri's er als volgt uit:
000001, 000002, 000003, 000004, 000005, 000006, 000007, 000008, 000009, 00000a, 00000b, 00000c, enz.
We vinden dit echter een beetje saai en het pretendeert een
waarde in de volgorde die niet bedoeld is. Daarom laten we de uri's meer random lijken. Daartoe nemen we een getal x waarvoor geld dat ggd(x, 366) = 1. Het getal x is zogenaamd relatief priem met 366. Voor de n-de uri geldt dan dat de decimale representatie gelijk is aan n*x mod 366 en de echte uri de base36 representatie van dit getal is. Hierbij geldt dat alle uitgedeelde uri's verschillend zijn omdat x en 366 relatief priem zijn.
In wiskundige termen noemt men x een voortbrenger van de cyclische groep Z/366Z.
Als voorbeeld voor een cyclische groep kunnen we G=Z/23Z nemen. Bij deze groep is de optelling de bewerking.
Hieronder zien we de gehele optellings tabel
1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 |
2 | 4 | 6 | 0 | 2 | 4 | 6 | 0 |
3 | 6 | 1 | 4 | 7 | 2 | 5 | 0 |
4 | 0 | 4 | 0 | 4 | 0 | 4 | 0 |
5 | 2 | 7 | 4 | 1 | 6 | 3 | 0 |
6 | 4 | 2 | 0 | 6 | 4 | 2 | 0 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
In rij 1,3 5 en 7 zien we de 0 pas in de laatste kolom verschijnen. Deze getallen brengen dus de groep G voort. De orde van 2 en 6 is 4 (in de vierde kolom verschijnt de 0) en de orde van 4 is 2. Op precies te zijn geldt dat de orde van een getal x in de groep Z/nZ gelijk is aan n/ggd(x,n).
Welk getal nemen wij nu als voortbrenger van onze groep Z/366Z? Welnu, het getal 256=244.140.625 blijkt een prima kandidaat. Omdat ggd(25,36) = 1, geldt ook ggd(256,366) = 1 en dus ggd(244.140.625,2.176.782.336,36) = 1. In formule geldt nu het volgende:
De i-de uri de uitgeldeeld wordt is:
base36(244140625*i)
De eerste URIs staan hier onder. Ook kan de lezer zelf proberen om de n-de uri te bepalen of, gegeven een uri te bepalen welk nummer het eigenlijk is:
1 | 41cs41 |
2 | 82pk82 |
3 | c42cc3 |
4 | g5f4g4 |
5 | k6rwk5 |
6 | o84oo6 |
7 | s9hgs7 |
8 | wau8w8 |
9 | 0c7109 |
|
|
Hoe bepaal je nou uit een uri het nummer van de uri. Allereerst zal de decimale representatie bepaald moeten worden. Zo is de decimale representatie van wau8w8 gelijk aan 1953125000. Daarna vermenigvuldigen we dit getal met 2074496689 modulo 2176782336. Dit levert het nummer van de uri op. In formule is dit
i=base10(uri)*2074496689 mod 2176782336
Het getal y=2074496689 heeft de eigenschap dat 256*2074496689= 1 mod 366.
Dit getal bestaat omdat ggd(256,366)=1 en is eenvoudig met de Chinese Rest Stelling te bepalen.
|
|
|
|
134 |