Virksomme Ord er en database over norske politiske taler. Talene er presentert på hjemmesiden virksommeord.uib.no, men det går også an å nå talene via et API. Dette API-et returnerer XML-filer som er lettere for datamaskiner å behandle enn html.
URL-struktur og koding
OBS! API-et har fått ny url!
Grunn-URLen for API-et er http://aurora.uib.no/vo/api/1/
Videre må man spesifisere en funksjon og medfølgende parametre på denne formen: <funksjon>?<parametre>. Dersom en funksjon tar flere parametre skilles disse ved hjelp av “&”. For funksjonen TaleInfo blir dermed hele URLen http://aurora.uib.no/vo/api/1/TaleInfo?id=2 der TaleInfo er funksjonen og id=2 er parametreret til funksjonen. Legg merke til at funksjon og parameter skilles med ?.
Alle XML-filene APIet returnerer er kodet med UTF‑8, men alle søkestrenger som sendes til API-et må kodes med ISO-8859–1. Hvis ikke vil API-et returnere en feil.
Ved feil, i dette tilfellet at en id som er angitt som parameter ikke finnes, vil API-et returnere følgende XML-struktur:
<?xml version="1.0" encoding="UTF-8" ?> <Exception> <Message>Ugyldig id</Message> </Exception>
Oversikt over funksjoner
De tilgjengelige funksjonen kan deles opp i tre kategorier: Listefunksjoner, infofunksjoner og søkefunksjoner
Listefunksjoner
Listefunksjonene returnerer sorterte lister av alle de aktuelle elementene i databasen. Funksjonene tar ingen parametre.
ListeTaler
Returnerer en kronologisk liste av alle taler i databasen. Den eldste talen kommer først.
http://aurora.uib.no/vo/api/1/ListeTaler
XML-struktur:
<?xml version="1.0" encoding="UTF-8" ?> <Speech-list length="1"> // rotelement, (1 tale). <Speech id="148"> // representerer en tale i databasen. <Title>Hagens Levende Ord tale</Title> // tittel på tale. <Location>Bergen</Location> // stedet talen ble holdt på. <Event>Sommerfestival</Event> // anledningen til talen. <Date> // dato til talen. <Day /> // dagen i måneden (1-31) talen ble holdt på. Her er dette elementet tom, dvs dagen er ukjent. <Month>7</Month> // måneden talen ble holdt på (1-12). <Year>1990</Year> // året talet ble holdt. </Date> <Person id="103"> // taleholderen. <Name> // navn på taleholder. <First>Carl Ivar</First> // fornavn. <Last>Hagen</Last> // etternavn. </Name> </Person> </Speech> </Speech-list>
ListePersoner
Returnerer en liste over alle personer i databasen, sortert alfabetisk på etternavn, så på fornavn.
http://aurora.uib.no/vo/api/1/ListePersoner
XML-struktur:
<?xml version="1.0" encoding="UTF-8" ?> <Person-list length="1"> // rotelementet, (1 person). <Person id="103"> // representerer en person i databasen. <Name> // navnet til personen. <First>Carl Ivar</First> // fornavn. <Last>Hagen</Last> // etternavn. </Name> <Born>1945</Born> // fødselsår. <Dead /> // dødsår. <Speeches>5</Speeches> // antall taler denne personen har holdt (som er registrert i databasen). </Person> </Person-list>
ListePartier
Returnerer en liste over alle partier i databasen, sortert alfabetisk.
http://aurora.uib.no/vo/api/1/ListePartier
XML-struktur:
<?xml version="1.0" encoding="UTF-8" ?> <Party-list length="1"> // rotelement, (1 parti/organisasjon). <Party id="41"> // representerer et parti/organisasjon. <Name>FRP</Name> // navnet til partiet/organisasjonen. <Members>1</Members> // antall personer i databasen som er tilknyttet til dette partiet/organisasjonen. </Party> </Party-list>
Partier brukers til å representere partier (FRP) eller organisasjoner (LO).
ListeEmner
Returnerer en liste over alle emner i databasen, sortert alfabetisk.
http://aurora.uib.no/vo/api/1/ListeEmner
<?xml version="1.0" encoding="UTF-8" ?> <Keyword-list length="3"> // rotelementet, (3 emner). <Keyword id="82"> // representerer et emne i databasen. <Name>Islam</Name> // navnet på emnet. <Speeches>5</Speeches> // antall taler på dette emnet. </Keyword> <Keyword id="83"> <Name>Israel</Name> <Speeches>1</Speeches> </Keyword> <Keyword id="102"> <Name>Religion</Name> <Speeches>0</Speeches> // hvis ingen taler på gitt emne skrives tallet null (som her). </Keyword> </Keyword-list>
ListeSjangre
Returnerer en liste over sjangre i databasen, sortert alfabetisk.
http://aurora.uib.no/vo/api/1/ListeSjangre
XML-struktur:
<?xml version="1.0" encoding="UTF-8" ?> <Genre-list length="1"> // rotelementet, (1 sjanger). <Genre id="41"> // representerer en sjanger i databasen. <Name>Debatt</Name> // navn på sjanger. <Speeches>5</Speeches> // antall taler på denne sjangeren. </Genre> </Genre-list>
Infofunksjoner
Infofunksjonene returnerer informasjon om en spesifikk oppføring i databasen. Funksjonene krever ett parameter, id, som angir en oppføring.
TaleInfo
Returnerer informasjon om en gitt tale, samt:
- alle emner til talen (alfabetisk).
- alle sjangre til talen (alfabetisk).
- alle bilder til tale.
- alle lydfiler til talen.
- alle videoer til talen.
http://aurora.uib.no/vo/api/1/TaleInfo?id=105
XML-struktur:
<?xml version="1.0" encoding="UTF-8" ?> <Speech id="148"> // rotelement, representerer en tale. <Title>Hagens Levende Ord tale</Title> // tittel på talen. <Location>Bergen</Location> // stedet talen ble holdt. <Event>Sommerfestival</Event> // Anledningen til talen. <Date> // dato talen ble holdt på. <Day /> // dag i måneden (1-31). <Month>7</Month> // måned (1-12). <Year>1990</Year> // år. </Date> <Person id="103"> // taleholder. <Name> // navn på taleholder. <First>Carl Ivar</First> // fornavn. <Last>Hagen</Last> // etternavn. </Name> </Person> <Source>Lydfil</Source> // klidehenvisning for talen. <Reference>Levende Ord</Reference> // videre referanser. <Introduction>Intro til talen.</Introduction> // introduksjon til talen. Her kan det være mye tekst (ren tekst). <Keyword-list length="3"> // alle emner til talen (alfabetisk), (3 emner). <Keyword id="82">Islam</Keyword> // representerer et emne (navn på emnet). <Keyword id="83">Israel</Keyword> <Keyword id="102">Religion</Keyword> </Keyword-list> <Genre-list length="1"> // alle sjangre til talen (alfabetisk), (1 sjanger). <Genre id="41">Debatt</Genre> // representerer en sjanger (navn på sjanger). </Genre-list> <Image-list length="2"> // alle bilder til talen, (2 bilder). <Image id="162"> // representerer et bilde i databasen. <URL>http://lotus.uib.no:8008/retorikk/bilde/bilde162.jpeg</URL> // URL til bildet. <Format /> // formatet til bildet, f. eks. JPEG. NB: dette elementet er ofte tomt (som her). <Annotation>Bilde av Hagen</Annotation> // bildetekst. <Main>true</Main> // om dette bildet er et hovedobjekt, se 'PersonInfo'. </Image> <Image id="163"> <URL>http://lotus.uib.no:8008/retorikk/bilde/bilde163.jpg</URL> <Format /> <Annotation>Bilde av Hagen</Annotation> <Main>false</Main> </Image> </Image-list> <Audio-list length="1"> // antall lyd(fil)er til talen, (1 lyd). <Audio id="42"> // representerer en lyd i databasen. <URL>http://lotus.uib.no:8008/retorikk/lyd/lyd42.mp3</URL> // URL til lyden. <Format>MP3</Format> // format på lyden. NB: dette elementet er ofte tomt. <Annotation>Hagens tale.</Annotation> // forklaring til lyden. <Main>true</Main> // om denne lyden er et hovedobjekt. </Audio> </Audio-list> <Video-list length="1"> // alle videoer til denne talen, (1 video). <Video id="1"> // representerer en video i databasen. <URL>http://lotus.uib.no:8008/retorikk/video/video1.avi</URL> // URL til video. <Format>AVI</Format> // format på videoen. NB: dette elementet er ofte tomt. <Annotation>Hagens tale.</Annotation> // forklaring til videoen. <Main>true</Main> // om denne videoen er et hovedobjekt. </Video> </Video-list> <Language>Norsk</Language> // språket talen er holdt på. <Document id="156"><HTML><BODY> <p>es New Rom</HTML>...</Document> // selve talen i HTML-fomat. </Speech>
PersonInfo
Returnerer informasjon om en gitt person, samt:
- alle taler som denne personen har holdt (kronologisk).
- alle partier denne personen er tilknyttet (alfabetisk).
- alle bilder av personen.
http://aurora.uib.no/vo/api/1/PersonInfo?id=61
XML-struktur
<?xml version="1.0" encoding="UTF-8" ?> <Person id="103"> // rotelement, representerer en person. <Name> // navn på person. <First>Carl Ivar</First> // fornavn. <Last>Hagen</Last> // etternavn. </Name> <Born>1945</Born> // fødselsår. <Dead /> // dødsår. <Info>Info om Hagen.</Info> // informasjon om personen. <Party-list length="1"> // liste med partier (alfabetisk) denne personen er tilknyttet til, (1 parti). <Party id="41"> <Name>FRP</Name> </Party> </Party-list> <Speech-list length="1"> // liste med taler (kronologisk) denne personen har holdt, (1 tale). <Speech id="148"> <Title>Hagens Levende Ord tale</Title> <Location>Bergen</Location> <Event>Sommerfestival</Event> <Date> <Day /> <Month>7</Month> <Year>1990</Year> </Date> </Speech> </Speech-list> <Image-list length="2"> // bilder av denne personen, (2 bilder). <Image id="141"> // representerer et bilde i databasen. <URL>http://bulmeurt.uib.no:8080/retorikk/media/bilde/bilde141.jpg</URL> // URL til bildet. <Format /> // format til bildet f. eks. JPEG. NB: dette elementet er ofte tomt (som her). <Annotation>bilde av Hgen</Annotation> // Bildetekst. <Main>false</Main> // Alltid true eller false, avhengig av om dette bildet er et hovedobjekt. </Image> <Image id="134"> <URL>http://bulmeurt.uib.no:8080/retorikk/media/bilde/bilde134.jpg</URL> <Format /> <Annotation>bilde av Hagen</Annotation> <Main>true</Main> </Image> </Image-list> </Person>
PartiInfo
Returnerer informasjon om et gitt parti/organisasjon (PO), samt alle personer som er tilknyttet dette PO.
http://aurora.uib.no/vo/api/1/PartiInfo?id=41
XML-struktur:
<?xml version="1.0" encoding="UTF-8" ?> <Party id="41"> // rotelementet, representerer et PO i databasen. <Name>FRP</Name> // navn på PO. <Info>Info om FRP.</Info> // info og historikk om PO. <Person-list length="1"> // liste med personer (alfabetisk, etternavn og fornavn) som er tilknyttet dette PO, (1 person). <Person id="103"> <Name> <First>Carl Ivar</First> <Last>Hagen</Last> </Name> <Born>1945</Born> <Dead /> <Speeches>5</Speeches> </Person> </Person-list> </Party>
EmneInfo
Returnerer informasjon om et gitt emne, samt alle taler på dette emnet.
http://aurora.uib.no/vo/api/1/EmneInfo?id=102
XML-struktur:
<?xml version="1.0" encoding="UTF-8" ?> <Keyword id="102"> // rotelement, representerer et emne i databasen. <Name>Religion</Name> // navn på emnet. <Speech-list length="1"> // liste med taler (kronologisk) på dette emnet, (1 tale). <Speech id="148"> <Title>Hagens Levende Ord tale</Title> <Location>Bergen</Location> <Event>Sommerfestival</Event> <Date> <Day /> <Month>7</Month> <Year>1990</Year> </Date> <Person id="103"> <Name> <First>Carl Ivar</First> <Last>Hagen</Last> </Name> </Person> </Speech> </Speech-list> </Keyword>
SjangerInfo
Returnerer informasjon om en gitt sjanger, samt alle taler på denne sjangeren.
http://aurora.uib.no/vo/api/1/SjangerInfo?id=1
XML-struktur
<?xml version="1.0" encoding="UTF-8" ?> <Genre id="1"> // rotelementet, representerer en sjanger i databasen. <Name>Debatt</Name> // navnet på sjangeren. <Speech-list length="1"> // liste med taler (kronologisk) på denne sjangeren, (1 tale). <Speech id="148"> <Title>Hagens Levende Ord tale</Title> <Location>Bergen</Location> <Event>Sommerfestival</Event> <Date> <Day /> <Month>7</Month> <Year>1990</Year> </Date> <Person id="103"> <Name> <First>Carl Ivar</First> <Last>Hagen</Last> </Name> </Person> </Speech> </Speech-list> </Genre>
Søkefunksjoner
Det finnes to søkefunksjoner, en enkel og en avansert. Begge funksjonene søker etter nøkkelord i forskjellige steder av databasen spesifisert ved hjelp av flere parametre.
Esok
Foretar et søk i databasen basert på de gitte parametrene, og returnerer talene som blir funnet i søket. Det blir altså kun søkt på taler. ESok står for enkelt søk.
Denne funksjonen leser to parametere, sok og kategori. Sok inneholder søkestrengen, mens kategori inneholder kategorien det søkes på. Kategorier det kan søkes på er:
- alle (søker på alle kategoriene under.
- tittel (søker i talenes tittel.)
- taler (søker på taleholder til talene.)
- sted (søker på stedet talen er holdt.)
- aar (søker på årstallet til talene.)
- emne (søker i emnene til talene.)
- sjanger (søker i sjangrene til talene.)
- fritekst (søker i selve talen.)
Når en søker på aar, må årstallet være fire siffer. En kan oppgi flere år, adskilt med mellom, og intervall med adskilt strek, eks: ‘1968 1948 1970–1979 1978’. En vil nå søke etter taler i 1968, 1948 og på hele 70-tallet, merk at årstallene i intervallene er inklusiv. Merk også at en kan oppgi 1978 selv om dette året er inkludert i intervallet. Taler holdt 1978 vil nå bli vist først i søkeresultatet. En kunne like gjerne søkt på ‘1979–1970’ som ‘1970–1979’.
Talene blir sortert i denne rekkefølgen:
- vekt
- dato (kronologisk, eldste først)
- talers etternavn
- talers fornavn
- id
Vekten blir regnet ut på bakgrunn av hvor godt en tale passet med søkekriteriene.
Eksempel: http://aurora.uib.no/vo/api/1/Esok?sok=islam&kategori=alle
XML-struktur:
<?xml version="1.0" encoding="UTF-8" ?> <Search-result length="1"> // rotelement, totalt antall taler funnet; 1. <Time>0,192</Time> // søketid i sekunder (med millisekundpresisjon). <Query> // søkinfo. <Category>alle</Category> // kategorien det er søkt på. <Term>islam</Term> // søketermen (søkestrengen). </Query> <Exact-hit length="0" /> // liste over taler som traff eksakt på søkekriteriene, her 0. <Partial-hit length="1"> // liste over taler som traff delvis på søkekriteriene, her 1. <Speech id="148"> // talen. <Weight>10</Weight> // vekten som blir regnet ut basert på <Title>Hagens Levende Ord tale</Title> <Location>Bergen</Location> <Event>Sommerfestival</Event> <Date> <Day /> <Month>7</Month> <Year>1990</Year> </Date> <Keyword-list length="3"> // emner for talen. <Keyword id="82">Islam</Keyword> <Keyword id="83">Israel</Keyword> <Keyword id="102">Religion</Keyword> </Keyword-list> <Genre-list length="1"> // sjangre for talen. <Genre id="41">Debatt</Genre> </Genre-list> <Person id="103"> <Name> <First>Carl Ivar</First> <Last>Hagen</Last> </Name> </Person> </Speech> </Partial-hit> <Full-text-hit length="0" /> // liste over taler som traff i fritekstsøk, her 0. </Search-result>
Taler som traff eksakt på minst ett av søkekriteriene kommer under elementet ‘Exact-hit’.
Taler som traff delvis på minst ett av søkekriteriene kommer under elementet ‘Partial-hit’.
Taler som traff i fritekstsøk kommer under elementet ‘Full-text-hit’.
En tale kan kun opptre under én liste, og ‘Exact-hit’ prioriteres foran ‘Partial-hit’, og ‘Partial-hit’ prioriteres foran ‘Full-text-hit’. Altså taler som kommer under ‘Full-text-hit’
er taler der søkestrengen kun traff i fritekst.
Det spiller en rolle hvilken kategori det søkes på. Hvis det kun søkes på fritekst så vil alle treffene komme under ‘Full-text-hit’. Hvis det ikke søkes på fritekst så vil ingen treff komme under ‘Full-text-hit’. Hvis det søkes på kategorien alle, så gjelder de reglene som er nevnt over.
Når en foretar et søk, blir søkestrengen delt opp i en liste med søkeord, og det er disse søkeordene det blir søkt på. Altså hvis en oppgir søkestrengen ‘carl i hagen’ så vil en søke på ‘carl’, ‘i’ og ‘hagen’. Faktisk vil en søke på ‘%carl%’, ‘%i%’ og ‘%hagen%’ der % = et vilkårlig antall tegn (null eller flere).
Det som menes med eksakt treff er derfor at et av søkeordene treffer eksakt et av attributtene til en tale (avhengig av kategori). F. eks. vil taler av Carl I. Hagen treffe eksakt hvis en har søkt på kategorien taler, mens alle taler av talere med en ‘i’ i navnet, vil treffe delvis.
Det blir bare skrevet ut emneliste og sjangerliste hvis søkestrengen treffer på et emne og det er søkt på kategorien ’emne’, ‘sjanger’ eller ‘alle’. Hvis dette ikke er tilfellet blir det skrevet:
<Keyword-list length=“0”/>
<Genre-list length=“0”/>
selv om talen har emner og sjangre.
Asok
Foretar et søk i databasen basert på de gitt parametrene, og skriver ut talene som blir funnet i søket. Det blir altså kun søkt på taler. ASok står for avansert søk.
Funksjonen har følgende parametre:
- tittel (søkestreng for talenes tittel.)
- taler (søkestreng for taleholder til talene.)
- sted (søkestreng for stedet talen er holdt.)
- aar (søkestreng for årstall til talene.)
- emne (søkestreng for emnene til talene.)
- sjanger (søkestreng for sjangrene til talene.)
- fritekst (søkestreng for selve talen.)
- og (0= ‘AND’, 1= ‘OR’ ved søk.)
- fuzzy (0=non-fuzzy, 1=fuzzy)
- eksaktf (bruker eksakt søk på fritekst i stedet for fuzzy som er standard)
- eksaktm (bruker eksakt søk på metadata i stedet for delvis-søk som er standard)
http://aurora.uib.no/vo/api/1/Asok?tittel=arbeid&sted=stortinget&og=1
XML-struktur:
<?xml version="1.0" encoding="UTF-8" ?> <Search-result length="0"> <Time>0,185</Time> <Query> <tittel>x</tittel> // søkestreng for tittel <taler>x</taler> // søkestreng for taleholder <sted>x</sted> // søkestreng for sted <aar>x</aar> // søkestreng for årstall <emne>x</emne> // søkestreng for emne <sjanger>x</sjanger> // søkestreng for sjanger <fritekst>x</fritekst> // søkestreng for fritekstsøk. <og>on</og> // enten on eller off, avhengig om parameteren 1 ble oppgitt. <fuzzy>off</fuzzy> // enten on eller off <eksaktm>off</eksaktm> // enten on eller off </Query> <Exact-hit length="0" /> <Partial-hit length="0" /> <Full-text-hit length="0" /> </Search-result>
Spesifikasjonene for Asok er de samme som for Esok bortsett fra at man ved Asok kan spesifisere en søkestreng for hver kategori. Ved å bruke parameteren og kan man også spesifisere om man vil bruke boolsk AND eller OR som skille mellom de forskjellige søkestrengene.