Retningslinjer for modellering i TOR - Brønnøysundregistrene
Retningslinjer for modellering i TOR - Brønnøysundregistrene
Retningslinjer for modellering i TOR - Brønnøysundregistrene
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Retningslinjer</strong> <strong>for</strong> <strong>modellering</strong> i<br />
SERES<br />
<strong>Brønnøysundregistrene</strong><br />
Versjon: 2006-05-23<br />
1
1 Innledning .....................................................................................................................................................5<br />
2 Ulike modeller i SERES ...............................................................................................................................7<br />
2.1 Modeller som begrep ............................................................................................................................7<br />
2.2 In<strong>for</strong>masjonsmodellen...........................................................................................................................8<br />
2.2.1 Domenemodeller ..............................................................................................................................9<br />
2.2.2 Konvertert modell ............................................................................................................................9<br />
2.2.3 Kon<strong>for</strong>me modeller ..........................................................................................................................9<br />
2.2.4 Harmoniserte modeller...................................................................................................................10<br />
2.2.5 Standardmodell ..............................................................................................................................10<br />
2.3 Dokumentmodell .................................................................................................................................11<br />
2.4 Meldingsmodell...................................................................................................................................12<br />
2.4.1 Formatfamilie.................................................................................................................................12<br />
2.4.2 Meldingsspesifikasjon....................................................................................................................12<br />
3 SERES-profil <strong>for</strong> UML-basert <strong>modellering</strong>.............................................................................................13<br />
3.1 Generelt om UML ...............................................................................................................................13<br />
3.2 UML-komponenter i SERES................................................................................................................13<br />
3.2.1 Eksempel på in<strong>for</strong>masjonsmodelldiagram .....................................................................................14<br />
3.2.2 Klasser............................................................................................................................................15<br />
3.2.3 Attributter.......................................................................................................................................15<br />
3.2.4 Semantiske typer ............................................................................................................................15<br />
3.2.5 Assosiasjoner..................................................................................................................................16<br />
3.2.6 Assosiasjonsklasser ........................................................................................................................16<br />
3.2.7 Arv .................................................................................................................................................16<br />
3.2.8 Diagrammer....................................................................................................................................17<br />
3.2.9 Pakker.............................................................................................................................................17<br />
3.2.10 Kobling mellom in<strong>for</strong>masjons- og dokumentklasse ..................................................................17<br />
3.2.11 Tagged values............................................................................................................................17<br />
3.2.12 Oppsummering ..........................................................................................................................18<br />
4 Overordnet om in<strong>for</strong>masjons<strong>modellering</strong> ................................................................................................19<br />
4.1 Tilnærming til <strong>modellering</strong>en..............................................................................................................19<br />
4.2 Fokus og kontekst................................................................................................................................20<br />
5 Teoretisk og språklig <strong>for</strong>ankring <strong>for</strong> SERES...........................................................................................21<br />
5.1 Terminologi, læren om begreper.........................................................................................................21<br />
5.2 Navn og språkregler...........................................................................................................................23<br />
5.2.1 Bruk av norsk språk........................................................................................................................23<br />
5.2.2 Navnestandarder.............................................................................................................................24<br />
5.2.3 Generelle retningslinjer <strong>for</strong> navngiving..........................................................................................24<br />
5.2.3.1 Navngiving av klasser...........................................................................................................24<br />
5.2.3.2 Navngiving av attributter......................................................................................................25<br />
5.2.3.3 Navngiving av semantiske typer...........................................................................................26<br />
5.2.3.4 Navngiving av assosiasjoner og assosiasjonsender ..............................................................26<br />
5.2.3.5 Navngiving av assosiasjonsklasser .......................................................................................26<br />
5.2.3.6 Navngiving av pakker...........................................................................................................26<br />
5.2.3.7 Navngiving av diagrammer ..................................................................................................27<br />
6 Grunnleggende semantiske typer..............................................................................................................28<br />
6.1 alternativ.............................................................................................................................................28<br />
2
6.2 antall ...................................................................................................................................................28<br />
6.3 beløp....................................................................................................................................................28<br />
6.4 binærobjekt .........................................................................................................................................28<br />
6.5 identifikator.........................................................................................................................................28<br />
6.6 kode.....................................................................................................................................................29<br />
6.7 mål ......................................................................................................................................................29<br />
6.8 tall .......................................................................................................................................................29<br />
6.9 tekst .....................................................................................................................................................29<br />
6.10 tidspunkt..............................................................................................................................................30<br />
7 Eksempel - Flyttemelding ..........................................................................................................................31<br />
8 Klasser .........................................................................................................................................................33<br />
8.1 Antall attributter .................................................................................................................................33<br />
8.2 Normalisering .....................................................................................................................................34<br />
9 Attributter...................................................................................................................................................35<br />
9.1 Attributtenes semantikk.......................................................................................................................35<br />
9.2 Avledete verdier ..................................................................................................................................35<br />
10 Arv som presisering av semantikk ............................................................................................................37<br />
10.1 Klasser ................................................................................................................................................37<br />
10.1.1 Identifisering av arve<strong>for</strong>hold .....................................................................................................37<br />
10.1.2 Attributter i subklasser ..............................................................................................................37<br />
10.1.3 Alias <strong>for</strong> attributter ....................................................................................................................38<br />
10.1.4 Flyttemeldingseksempelet .........................................................................................................38<br />
10.1.5 Form på arvehierarki .................................................................................................................39<br />
10.1.6 Konsekvenser av brede/dype arvehierarki.................................................................................39<br />
10.2 Spesialisering av semantiske typer......................................................................................................40<br />
11 Assosiasjoner...............................................................................................................................................41<br />
11.1 Urettet assosiasjon..............................................................................................................................41<br />
11.2 Rettet assosiasjon................................................................................................................................41<br />
11.3 Kardinalitet.........................................................................................................................................41<br />
11.4 Flere assosiasjoner mellom to klasser ................................................................................................43<br />
11.5 Assosiasjonsklasser.............................................................................................................................43<br />
11.5.1 Attributter i assosiasjonsklasser.................................................................................................44<br />
12 Diagrammer ................................................................................................................................................45<br />
13 Oppsummering av eksempel Flyttemelding .............................................................................................46<br />
14 Tabeller........................................................................................................................................................47<br />
15 Grunndata og gjenbruk .............................................................................................................................49<br />
15.1 Grunndatamodell ................................................................................................................................49<br />
15.2 Gjenbruk av elementer i in<strong>for</strong>masjonsmodellen..................................................................................49<br />
15.2.1 Eksempel: Gjenbruk i modell av flyttemelding.........................................................................49<br />
15.2.2 Grunndata ..................................................................................................................................50<br />
3
15.2.3 Gjenbruk av egne in<strong>for</strong>masjonselementer .................................................................................51<br />
15.2.4 Gjenbruk av andres in<strong>for</strong>masjonselementer ..............................................................................51<br />
15.3 Oppsummering av in<strong>for</strong>masjons<strong>modellering</strong> ......................................................................................51<br />
16 Dokument<strong>modellering</strong>................................................................................................................................53<br />
16.1 Assosiasjoner ......................................................................................................................................53<br />
16.1.1 Rettede assosiasjoner.................................................................................................................53<br />
16.1.2 Kardinalitet................................................................................................................................53<br />
16.2 Skjuling av attributter .........................................................................................................................54<br />
16.3 Semantiske typer .................................................................................................................................54<br />
16.4 Rotklasse .............................................................................................................................................55<br />
16.5 Dokumentmodell av flyttemelding.......................................................................................................55<br />
17 Meldings<strong>modellering</strong>..................................................................................................................................56<br />
17.1 Format ................................................................................................................................................56<br />
17.2 Formatstandard ..................................................................................................................................56<br />
17.3 Administrering av <strong>for</strong>mater.................................................................................................................57<br />
17.3.1 Kompleks<strong>for</strong>mater.....................................................................................................................57<br />
17.4 Kodelister............................................................................................................................................59<br />
18 Oppsummering ...........................................................................................................................................60<br />
4
1 Innledning<br />
Dette dokumentet er retningsgivende <strong>for</strong> oppbygging av et nytt register som er etablert av<br />
<strong>Brønnøysundregistrene</strong>, kalt SERES, som står <strong>for</strong> SEmantikkRegisteret <strong>for</strong> Elektronisk<br />
Samhandling. Registeret skal medvirke til at alle data som utveksles elektronisk mellom<br />
hvilket som helst par av offentlige institusjoner har felles beskrivelser slik at avsender og<br />
mottaker er sikre på at de har samme <strong>for</strong>ståelse av hvordan data skal tolkes (semantisk<br />
interoperabilitet).<br />
SERES skal utvikles med direkte bidrag fra alle offentlige etater som ønsker det. Registeret<br />
bygges opp ved hjelp av verktøy som er relativt åpne i måten de kan brukes på. For å oppnå<br />
semantisk interoperabilitet i praksis, trengs regler <strong>for</strong> hvordan in<strong>for</strong>masjon beskrives. Reglene<br />
er enten av type må, bør eller kan.<br />
Det sentrale verktøyet i løsningen er SERESuml som brukes til å etablere og vedlikeholde en<br />
samordnet in<strong>for</strong>masjonsmodell bestående av in<strong>for</strong>masjonselementer med tilhørende<br />
definisjoner og relasjoner til andre elementer, alt hentet fra in<strong>for</strong>masjonsdomener fra en rekke<br />
offentlige aktører. SERESuml er basert på åpen-kilde-verktøyet ArgoUML, som utvikles<br />
innen<strong>for</strong> et internasjonalt prosjekt. <strong>Brønnøysundregistrene</strong> har først og fremst bidratt med<br />
flerbrukerfunksjonalitet med adgang over Internett samt disse retningslinjene <strong>for</strong><br />
in<strong>for</strong>masjons<strong>modellering</strong>. SERES inneholder også verktøy <strong>for</strong> å lage meldingsspesifikasjoner<br />
basert på uttrekk fra in<strong>for</strong>masjonsmodellen med påkopling av <strong>for</strong>mater fra SERES<strong>for</strong>mat samt<br />
publisering av spesifikasjonene på nettet gjennom SERESnett.<br />
Retningslinjedokumentet er beregnet på:<br />
• etater som mottar og avgir in<strong>for</strong>masjon fra/til borgere og næringsliv<br />
• etater som utveksler in<strong>for</strong>masjon med andre etater<br />
• fagsystemleverandører med moduler som utveksler in<strong>for</strong>masjon med offentlige<br />
systemer<br />
Lesegruppen er først og fremst faktiske og fremtidige brukere av SERES. Men også personer<br />
som planlegger nye løsninger på de omtalte områdene vil kunne ha interesse av dette<br />
dokumentet.<br />
Sentrale teknologier som SERES baserer seg på er:<br />
• UML som er den dominerende generelle <strong>modellering</strong>standarden på IT-området. UML<br />
tilbyr et antall diagrammer, blant annet klassediagram som utgjør den sentrale<br />
funksjonaliteten <strong>for</strong> SERESuml.<br />
• XML med underteknologien XML Schema. XML er den klart viktigste teknologien i<br />
verden <strong>for</strong> <strong>for</strong>matering av komplekse elektroniske meldinger og er dessuten på full fart<br />
inn som <strong>for</strong>mat <strong>for</strong> lagrede dokumenter.<br />
• Core Components (kjerne i ebXML) er den sentrale teknologien fra FN-organet<br />
CEFACT som fremmer felles elektroniske handelsløsninger over Internett. SERES<br />
bruker de sentrale Permissible Representation Terms som grunnlag <strong>for</strong> løsningens<br />
semantiske (data)typer.<br />
SERES skal altså bli et register som samler bidrag fra alle etater som har interesse <strong>for</strong> å delta.<br />
<strong>Brønnøysundregistrene</strong> ved Oppgaveregisteret (OR) vil bistå ved opplæring i bruk av<br />
5
verktøyet og ved den faktiske <strong>modellering</strong>en, om ønsket. Spesielt når flere offentlige<br />
institusjoner går sammen om etablering av en felles domenemodell, er det naturlig at OR<br />
hjelper til faglig og praktisk med å harmonisere disse. Det arbeides med opplæringsmateriell<br />
<strong>for</strong> SERES som både tar <strong>for</strong> seg <strong>modellering</strong> i sin alminnelighet og spesifikt mot SERES.<br />
Dette dokumentet er utarbeidet basert på bidrag fra Norske Veritas, KITH, Sintef og<br />
NorStella. Dag Belsnes (rådgivningsfirmaet Pharos og professor II ved Universitetet i Oslo)<br />
har vært sentral i den direkte ut<strong>for</strong>mingen av retningslinjene. Vi har også hentet ideer<br />
gjennom flere runder med særlig interesserte etater, spesielt Skattedirektoratet,<br />
Rikstrygdeverket og Statistisk sentralbyrå. Fornyings- og administrasjonsdepartementet har<br />
bidratt gjennom et antall utredninger og høringsprosesser.<br />
SERES er en videreføring av løsningen som er basis <strong>for</strong> dagens Oppgaveregister hvorfra det<br />
produseres meldingsspesifikasjoner til Altinn. Arbeidet med SERES startet i erkjennelse av at<br />
dagens løsning ikke er et godt nok fundament <strong>for</strong> gjenbruk av innrapporterte data fra<br />
næringslivet. I en <strong>for</strong>studie til neste generasjons Altinn (Altinn II) er det <strong>for</strong>eslått å<br />
standardisere på meldingsspesifikasjoner fra SERES.<br />
SERES-arbeidet har vært presentert internasjonalt (Skandinavia, Europa, Kina) og mange har<br />
uttrykt stor interesse <strong>for</strong> det som gjøres.<br />
Den løsningen som nå er lansert har den nødvendige funksjonaliteten <strong>for</strong> å etablere en<br />
in<strong>for</strong>masjonsmodell og produsere meldingsspesifikasjoner med samordnet semantikk hentet<br />
fra in<strong>for</strong>masjonsmodellen. Det vil bli et videre utviklingsløp i samarbeid med brukerne. Og vi<br />
ønsker allerede nå svært gjerne å få tilbakemeldinger på dette dokumentet. Retningslinjene er<br />
på ingen måter et ferdig dokument.<br />
6
2 Ulike modeller i SERES<br />
SERES brukes til å beskrive in<strong>for</strong>masjon som benyttes i det offentlige i <strong>for</strong>m av<br />
in<strong>for</strong>masjons<strong>modellering</strong>. Verktøyet benyttes også til å generere meldingsspesifikasjoner<br />
brukt til å validere 1 meldinger <strong>for</strong> utveksling av in<strong>for</strong>masjon. Veien fra en mer abstrakt<br />
in<strong>for</strong>masjons<strong>modellering</strong> til generering av konkrete meldingsspesifikasjoner består av flere<br />
trinn, og vi knytter disse ulike trinnene i prosessen til det vi kaller modeller i SERES.<br />
2.1 Modeller som begrep<br />
Ox<strong>for</strong>d English Dictionary definerer ordet modell på følgende måte:<br />
A simplified or idealized description or conception of a particular system, situation, or<br />
process that is put <strong>for</strong>ward as a basis <strong>for</strong> calculations, prediction of a particular<br />
system, situation, or process.<br />
Fornorsket blir det noe slik som:<br />
En <strong>for</strong>enkling eller idealisert beskrivelse eller konsept av et bestemt system, situasjon<br />
eller prosess som er utarbeidet <strong>for</strong> å kunne gjøre kalkulasjoner eller <strong>for</strong>utsi<br />
egenskaper ved et system, situasjon eller prosess.<br />
Modeller er den sentrale abstraksjonen eller begrepet i SERES, og all beskrivelse av<br />
in<strong>for</strong>masjon som vi håndterer ligger i en modell. En modell er en <strong>for</strong>enklet representasjon av<br />
deler av virkeligheten, som fokuserer på de aspektene/detaljene vi er interessert i. Det er tre<br />
hovedtyper modeller i SERES. De har ulike <strong>for</strong>mål og må der<strong>for</strong> tolkes <strong>for</strong>skjellig:<br />
• In<strong>for</strong>masjonsmodellen<br />
SERES består av én in<strong>for</strong>masjonsmodell som er en generell beskrivelse av<br />
in<strong>for</strong>masjonsstrukturer i norsk offentlig virksomhet. Modellen innholder<br />
in<strong>for</strong>masjonselementer med tilhørende definisjoner og relasjoner mellom disse<br />
elementene. In<strong>for</strong>masjon som blir modellert danner en viktig bakgrunn <strong>for</strong> utvikling av<br />
dokumentmodeller som er en spesifikk beskrivelse av en begrenset del av verden.<br />
• Dokumentmodell<br />
SERES består av flere dokumentmodeller. En dokumentmodell definerer strukturen og<br />
semantikken <strong>for</strong> innholdet i en gitt melding <strong>for</strong> in<strong>for</strong>masjonsutveksling mellom aktører.<br />
Den henter all semantikk fra in<strong>for</strong>masjonsmodellen ved å være et utplukk av<br />
in<strong>for</strong>masjonselementer herfra med eventuelle justeringer av disse <strong>for</strong> å tilpasse dem<br />
<strong>for</strong>målet.<br />
• Meldingsmodell<br />
En meldingsmodell er en dokumentmodell med tilknyttet <strong>for</strong>matin<strong>for</strong>masjon. Innholdet<br />
<strong>for</strong> hvert in<strong>for</strong>masjonselement skal ved hjelp av <strong>for</strong>matet kunne sjekkes om det fylles<br />
visse regler. Meldingsmodellen utgjør det samlede grunnlaget <strong>for</strong> å generere en<br />
meldingsspesifikasjon (gjerne kalt en serialisert meldingsmodell).<br />
1 Validering betyr i denne sammenheng test av meldingsstruktur og <strong>for</strong>mat av de enkelte meldingselementer.<br />
7
Figur 1: Hovedmodelltyper i SERES<br />
In<strong>for</strong>masjonsmodellen<br />
2.2 In<strong>for</strong>masjonsmodellen<br />
Dokumentmodell Meldingsmodell<br />
In<strong>for</strong>masjonsmodellen er en beskrivelse av in<strong>for</strong>masjonsstrukturer i norsk offentlig<br />
virksomhet. Virksomheten i offentlig sektor er <strong>for</strong> det meste regulert av lovverk som legger<br />
føringer <strong>for</strong> hvordan visse in<strong>for</strong>masjonselementer kan brukes. Modellen må der<strong>for</strong> være i tråd<br />
med gjeldende lovverk. Også <strong>for</strong>skrifter og andre typer regelverk av påkrevd eller frivillig art,<br />
<strong>for</strong> eksempel ISO-standarder, kan påvirke modellens ut<strong>for</strong>ming. Ved å beskrive relevant<br />
in<strong>for</strong>masjon hos samarbeidende aktører, søker in<strong>for</strong>masjonsmodellen å etablere en<br />
harmonisert <strong>for</strong>ståelse mellom aktørene angående semantikken i settet av<br />
in<strong>for</strong>masjonselementer som brukes til elektronisk samhandling.<br />
I modellen beskrives immaterielle objekter (<strong>for</strong> eksempel Foretak) eller fysiske objekter (<strong>for</strong><br />
eksempel Person), og relasjoner disse måtte ha seg i mellom. Hovedfokus <strong>for</strong><br />
in<strong>for</strong>masjonsmodellen er:<br />
• hvordan in<strong>for</strong>masjon tolkes (semantikk)<br />
• hvordan in<strong>for</strong>masjon integreres (interoperabilitet)<br />
Den skal danne grunnlaget <strong>for</strong> analyse av semantisk interoperabilitet mellom brukere og<br />
applikasjoner i de ulike etatene. For at nytten skal bli størst mulig, må in<strong>for</strong>masjonsmodellen<br />
tilfredsstille visse krav. Det er blant annet ønskelig at modellen er:<br />
• Stabil (over tid)<br />
• Lettlest (fra navnsetting og grafisk fremstilling)<br />
• Presis (i definisjoner og navnsetting)<br />
8
• Tilstrekkelig (i omfang)<br />
• Tilrettelagt <strong>for</strong> analyse av interoperabilitet og gjenbruk av in<strong>for</strong>masjonselementer<br />
• Skalerbar (dvs. må tåle å vokse både i omfang og kompleksitet uten å miste de<br />
<strong>for</strong>egående punktene)<br />
Det finnes kun én in<strong>for</strong>masjonsmodell i SERES, men den består igjen av flere<br />
domenemodeller.<br />
2.2.1 Domenemodeller<br />
In<strong>for</strong>masjonsmodellen består av et antall domenemodeller, som er beskrivelser av<br />
in<strong>for</strong>masjonsstrukturer innen<strong>for</strong> ulike anvendelsesområder. In<strong>for</strong>masjonsmodellen er således<br />
summen av alle domenemodellene. Domenemodellene inneholder klasser, klasseattributter,<br />
relasjoner mellom klasser, semantiske typer og klassediagrammer <strong>for</strong> grafisk modellvisning.<br />
Arbeidet med in<strong>for</strong>masjonsmodellen skjer alltid innen<strong>for</strong> en domenemodell. Det vil være<br />
minst én domenemodell <strong>for</strong> hver enkelt etat. Som ledd i harmoniseringsarbeidet mellom to<br />
eller flere etater <strong>for</strong> å få til en gitt datautveksling eller samordnet datainnhenting, kan det også<br />
være aktuelt å etablere separate domenemodeller <strong>for</strong> å ta høyde <strong>for</strong> nødvendige tilpasninger<br />
og kompromisser. I tillegg til disse arbeidsdomene inneholder in<strong>for</strong>masjonsmodellen domener<br />
som i større grad er standardisert. Dette betyr at domenemodeller vil ha ulik karakter i<br />
henhold til nivå av standardisering. Vi plasserer domenemodellene i SERES i følgende<br />
utviklingskategorier:<br />
• UML-konvertert modell (importert til SERES som XMI)<br />
• SERES-kon<strong>for</strong>m modell (følger SERES-retningslinjene)<br />
• Harmonisert modell (samordnet mellom aktører)<br />
• Standardmodell (godkjent av standardiseringsorgan)<br />
2.2.2 Konvertert modell<br />
Det er ikke alltid vi starter med blanke ark når vi skal etablere nytt innhold i<br />
in<strong>for</strong>masjonsmodellen. Det finnes mange godt funderte datamodeller i diverse etater.<br />
Generelle datamodeller som ikke er bearbeidet <strong>for</strong> bruk i SERES betegnes som eksterne<br />
modeller. Typisk eksempel er en databasemodell som beskriver et antall tabeller og<br />
underliggende tabellfelter med tilhørende datatyper. Det er viktig å kunne bygge videre på<br />
disse. Ved å gjennomføre en konvertering av disse modellene kan vi oppnå modeller med en<br />
struktur og eventuelt av et <strong>for</strong>mat som kan importeres til SERES. De <strong>for</strong>holder seg til SERESsettet<br />
av mekanismer i UML klassediagrammer. Modellene <strong>for</strong>eligger eventuelt i XMI-<strong>for</strong>mat<br />
som SERES kan importere direkte. Alternativt er de uttrykt i et SERES-internt <strong>for</strong>mat kalt<br />
XMDL som kan konverteres til XMI med verktøyet XMIgen, se vedlegg VI. Her kan<br />
<strong>Brønnøysundregistrene</strong> være behjelpelig, blant annet gjennom bruk av XMIgen-verktøyet.<br />
Konverterte modeller som er importert kan ikke uten videre lagres som del av den publiserte<br />
in<strong>for</strong>masjonsmodellen. Dette krever at modellen kan betraktes som kon<strong>for</strong>m.<br />
2.2.3 Kon<strong>for</strong>me modeller<br />
En kon<strong>for</strong>m modell er en domenemodell innen<strong>for</strong> in<strong>for</strong>masjonsmodellen som følger<br />
retningslinjene <strong>for</strong> <strong>modellering</strong> i SERES. Dette innebærer at:<br />
9
• Klassene er normaliserte, dvs. de har innhold som er redusert til et minimum av det<br />
som må være beskrevet samlet. (Normalitetsbegrepet blir mer presist beskrevet<br />
senere.)<br />
• Klassene er relatert til grunndataklasser, dvs. at de bygger videre på det fellesdomenet<br />
vi kaller grunndata som inneholder de in<strong>for</strong>masjonselementer som de aller fleste<br />
brukes i sine meldinger.<br />
• Klasseattributtene er knyttet til semantiske typer, ikke generelle datatyper.<br />
• Navnene på alle modellelementer følger gitte regler.<br />
• Alle assosiasjonene er (normalt) angitt med spesifiserte assosiasjonsender, det samme<br />
som roller.<br />
Hvert in<strong>for</strong>masjonselement vil kunne merkes som kon<strong>for</strong>m av SERES-verktøyet, dvs. de<br />
kriteriene som er mulig å automatisere. Alle elementer i en domenemodell må være kon<strong>for</strong>m<br />
<strong>for</strong> å kunne lagres til den publiserte in<strong>for</strong>masjonsmodellen. En kon<strong>for</strong>m modell er en kandidat<br />
<strong>for</strong> harmonisering.<br />
2.2.4 Harmoniserte modeller<br />
En harmonisert modell er en domenemodell innen<strong>for</strong> in<strong>for</strong>masjonsmodellen som består av<br />
semantisk harmoniserte elementer som er felles <strong>for</strong> to eller flere kon<strong>for</strong>me modeller. De<br />
harmoniserte elementene erstatter de opprinnelige elementene i domenemodellene når de<br />
"flyttes opp" til en høyere utviklingskategori. Grunnlaget <strong>for</strong> å gi en domenemodell kategorien<br />
harmonisert er enighet mellom to eller flere aktører som deler dette domenet.<br />
Grunndata og sentrale semantiske typer skal være en harmonisert domenemodell basert på<br />
enighet mellom <strong>for</strong>valtningsetatene <strong>for</strong> grunndataregistrene. Harmoniserte modellelementer<br />
skal videre være stabile over tid og følge bestemte prosedyrer <strong>for</strong> endring. Oppgaveregisteret<br />
påser at alle interessenter er representert, og bidrar ellers med faglig og administrativ bistand i<br />
prosessen.<br />
2.2.5 Standardmodell<br />
Harmoniserte modeller som har faktisk eller potensielt stor gjenbruk, bør etter hvert gis<br />
utviklingskategorien standardmodell. En standardmodell er en harmonisert modell som har<br />
vært behandlet av et offentlig oppnevnt standardiseringsorgan med <strong>for</strong>ankring i Standard<br />
Norge.<br />
10
Harmonisering<br />
Grunndata<br />
Standardmodell<br />
Harmonisert modell Standardisering<br />
In<strong>for</strong>masjonsmodellen<br />
SERES-kon<strong>for</strong>m<br />
domenemodell<br />
Figur 2: In<strong>for</strong>masjonsmodellen i SERES<br />
UML-konvertert<br />
domenemodell<br />
Kon<strong>for</strong>mering<br />
Import<br />
(XMI)<br />
Ekstern<br />
domenemodell<br />
Konvertering<br />
UML-konvertert<br />
domenemodell<br />
Figuren illustrerer in<strong>for</strong>masjonsmodellen som inneholder ulike typer domenemodeller. Disse<br />
kan plasseres i en utviklingsprosess som leder til en høyere grad av standardisering.<br />
Modelleringsprosessen kan enten starte fra scratch internt i SERES, men det er også mulig å<br />
ta utgangspunkt i eksterne modeller som konverteres og importeres. Grunndata er plassert i<br />
standardmodellen da det er et ønske at den skal være på dette nivået i fremtiden.<br />
2.3 Dokumentmodell<br />
I konkrete anvendelser av in<strong>for</strong>masjon, <strong>for</strong> eksempel i en bestemt blankett eller melding, vil<br />
det være behov <strong>for</strong> utvalgte deler av den samlede in<strong>for</strong>masjonsmodellen. Vi bruker en<br />
dokumentmodell <strong>for</strong> å velge ut relevante in<strong>for</strong>masjonselementer. En dokumentmodell består i<br />
hovedsak av et utvalgt sett av klasser og tilhørende relasjoner fra in<strong>for</strong>masjonsmodellen.<br />
Disse klassene er i utgangspunktet identiske med klassene i in<strong>for</strong>masjonsmodellen. For å<br />
tilpasse dokumentmodellen den spesifikke rapporteringen er det mulig å skjule attributter,<br />
spesialisere semantiske typer samt gjøre ytterligere innskrenkninger på relasjoner.<br />
Før dokumentmodeller etableres er det viktig at elementene som benyttes fra<br />
in<strong>for</strong>masjonsmodellen har en tilstrekkelig bearbeidingsgrad. De må som minimum være fra en<br />
kon<strong>for</strong>m modell.<br />
Hovedfokus <strong>for</strong> dokumentmodellen:<br />
• Hvilken in<strong>for</strong>masjon som skal utveksles<br />
• Hvilke regler som må oppfylles <strong>for</strong> at in<strong>for</strong>masjonen skal være gyldig.<br />
Dokumentmodeller som basis <strong>for</strong> meldingsmodellen, og derav meldingsspesifikasjoner <strong>for</strong><br />
inn-/utrapportering eller datatransport mellom systemer.<br />
11
2.4 Meldingsmodell<br />
En meldingsmodell er en dokumentmodell hvor en i tillegg har knyttet <strong>for</strong>mater (gruppert i en<br />
<strong>for</strong>matfamilie) til de enkelte in<strong>for</strong>masjonselementene. En meldingsmodell er grunnlaget <strong>for</strong> en<br />
meldingsspesifikasjon.<br />
2.4.1 Formatfamilie<br />
Et <strong>for</strong>mat angir hva som er lovlig datainnhold ved utveksling eller lagring. En <strong>for</strong>matfamilie<br />
er et sett av koplinger mellom semantiske typer og <strong>for</strong>mater. En semantisk type kan ha en slik<br />
kopling til et <strong>for</strong>mat, men trenger det ikke. Et <strong>for</strong>mat kan være koplet til en eller flere<br />
semantiske typer.<br />
2.4.2 Meldingsspesifikasjon<br />
En meldingsspesifikasjon genereres på grunnlag av en dokumentmodell og en <strong>for</strong>matfamilie.<br />
En meldingsspesifikasjon er et XML Schema. Denne definerer strukturen av og innholdet i<br />
meldingene som utveksles i <strong>for</strong>m av XML-dokumenter.<br />
Figur 3 viser prosessen fra in<strong>for</strong>masjonsmodell til sluttprodukt i <strong>for</strong>m av XML schema. Det er<br />
verd å merke seg at høyere grad av standardisering av in<strong>for</strong>masjonselementer vil gi et større<br />
potensial <strong>for</strong> gjenbruk av in<strong>for</strong>masjonselementer på tvers av etatsdomener. Gjenbruk av<br />
in<strong>for</strong>masjonselementer vil også kunne gi gir mer enhetlige meldingsspesifikasjoner.<br />
Økende<br />
gjenbruk<br />
Standardmodell<br />
Harmoniserte<br />
modeller<br />
Kon<strong>for</strong>me modeller<br />
Andre kategorier modeller<br />
Figur 3: Prosessen fra in<strong>for</strong>masjonsmodell til XML Schema<br />
Dokumentmodell<br />
+<br />
XML Schema<br />
Formatdetaljer<br />
<br />
<br />
<br />
3 SERES-profil <strong>for</strong> UML-basert <strong>modellering</strong><br />
Dette kapittelet beskriver hvordan UML profileres og benyttes som <strong>modellering</strong>sspråk i<br />
SERES, og gir bakgrunnsin<strong>for</strong>masjon <strong>for</strong> å utføre in<strong>for</strong>masjons<strong>modellering</strong> i SERES. For en<br />
detaljert innføring i standard UML-notasjon og -<strong>modellering</strong> henviser vi til de mange<br />
lærebøkene og referanseverkene som finnes på markedet. Aktuelle bøker er M. Fowler & K.<br />
Scott: UML Destilled (2000), J. Arlow, Ila Neustadt: UML 2 and the Unified Process (2005).<br />
3.1 Generelt om UML<br />
Mye kan <strong>for</strong>klares muntlig eller skriftlig, men det er også i mange tilfeller svært nyttig å ha en<br />
grafisk notasjon 2 å støtte seg til. En grafisk notasjon kan gjøre det enklere å kommunisere<br />
rundt løsninger, og kan bidra til en stringent og enhetlig <strong>for</strong>ståelse av et problemområde.<br />
SERES benytter UML 3 -diagrammer <strong>for</strong> å bidra til å beskrive in<strong>for</strong>masjon som ellers er<br />
vanskelig å kommunisere presist.<br />
Modelleringsspråket Unified Modelling Language (UML) <strong>for</strong>valtes av et konsortium av<br />
interessenter kalt Object Management Group (OMG). UML ble opprinnelig utviklet <strong>for</strong> å<br />
skape en felles enhetlig notasjon <strong>for</strong> utvikling av programvare, og har etter hvert fått stor<br />
utbredelse. Det er standard lærestoff på alle norske høgskoler og universiteter som underviser<br />
i IT.<br />
Språket omfatter i hovedsak et sett med grafiske notasjoner innen<strong>for</strong> et antall diagramtyper<br />
utviklet med tanke på <strong>for</strong>skjellige bruks- og behovsområder. Disse er utviklet med tanke på<br />
<strong>for</strong>skjellige bruks- og behovsområder. Ved in<strong>for</strong>masjons<strong>modellering</strong> i SERES bruker vi UML<br />
klassediagram.<br />
3.2 UML-komponenter i SERES<br />
Følgende UML-komponenter benyttes i <strong>modellering</strong> i SERES:<br />
• Klasser<br />
• Attributter inkl. kardinalitet<br />
• Semantiske typer (datatype med stereotype semantisk type)<br />
• Assosiasjoner inkl. kardinalitet<br />
• Assosiasjonsklasser<br />
• Arv<br />
• Klassediagrammer (statisk struktur)<br />
• Pakker<br />
o In<strong>for</strong>masjonsdiagram (brukt ved in<strong>for</strong>masjons<strong>modellering</strong>)<br />
o Dokumentdiagram (brukt ved dokument<strong>modellering</strong>)<br />
2<br />
Notasjon betyr en måte å beskrive noe. Den er gjerne kompakt og oversiktig i sammenlikning med vanlig tekst.<br />
3<br />
UML betyr Unified Modeling Language og er en internasjonalt anerkjent samling av diagramtyper med<br />
tilhørende symboler <strong>for</strong> <strong>modellering</strong>.<br />
13
o Domenemodeller<br />
o Arbeidspakker<br />
o Dokumentmodeller<br />
• Kobling mellom in<strong>for</strong>masjons- og dokumentklasse (avhengighet) (UML dependency)<br />
• Tagged values (navngitte metadata på alle elementer)<br />
Dette er <strong>modellering</strong>selementer som er felles <strong>for</strong> både in<strong>for</strong>masjons- og dokument<strong>modellering</strong><br />
da dokumentmodeller ekstraheres fra in<strong>for</strong>masjonsmodellen. Likevel er det, slik som tidligere<br />
beskrevet, en <strong>for</strong>skjell på disse <strong>modellering</strong>s<strong>for</strong>mene. Førstnevnte består i å gi en generell<br />
beskrivelse av in<strong>for</strong>masjon og slik bidra til <strong>for</strong>ståelse <strong>for</strong> in<strong>for</strong>masjonsstrukturer.<br />
Dokument<strong>modellering</strong>en vil i høyere grad være kontekstspesifikk og ha større fokus på<br />
sluttproduktet i <strong>for</strong>m av meldingsspesifikasjoner. I prosessen fra in<strong>for</strong>masjonsmodell til<br />
dokumentmodell er det ryddig å tenke to trinn:<br />
1. Generalisering<br />
2. Konkretisering<br />
Dermed skjer det en tilpasning av det utsnittet som er gjort av in<strong>for</strong>masjonsmodellen i<br />
henhold til <strong>for</strong>målet med dokumentmodellen. I følgende gjennomgang blir disse <strong>for</strong>skjellene<br />
beskrevet hvor det er relevant i henhold til bruk av modellelementer, mens det er ytterligere<br />
beskrevet i kapittel 16.<br />
3.2.1 Eksempel på in<strong>for</strong>masjonsmodelldiagram<br />
Arv<br />
(spesialisering/<br />
generalisering)<br />
Assosiasjonsklasse<br />
Klasse<br />
Attributt Semantisk type<br />
Figur 4: Modellelementer i in<strong>for</strong>masjonsmodelldiagram<br />
Uretta assosiasjon<br />
Assosiasjonsnavn<br />
Assosiasjonsendenavn<br />
(rolle)<br />
Kardinalitet<br />
14
3.2.2 Klasser<br />
I vårt <strong>modellering</strong>sperspektiv ser vi på verden som en samling av objekter som vi ønsker å<br />
beskrive. Objektene kan være fysiske, <strong>for</strong> eksempel i <strong>for</strong>m av et bestemt hus eller menneske,<br />
eller de kan være immaterielle, som <strong>for</strong> eksempel en bankkonto. Som regel eksisterer det<br />
mange objekter av samme sort. Når vi lager in<strong>for</strong>masjonsmodeller, ønsker vi ikke å beskrive<br />
hvert enkelt objekt, men basert på fellestrekk klassifiserer vi objektene. I en<br />
in<strong>for</strong>masjonsmodell er der<strong>for</strong> en klasse en beskrivelse av et utvalg felles egenskaper <strong>for</strong> en<br />
gruppe objekter. Klasser representeres grafisk i et klassediagram som firkantete bokser med<br />
tre deler med henholdsvis klassenavn, attributter og operasjoner. Operasjoner benyttes ikke i<br />
vår <strong>modellering</strong>.<br />
3.2.3 Attributter<br />
Vi beskriver objektene ved å tilegne dem egenskaper. De egenskapene som er relevant <strong>for</strong><br />
objektene i vårt <strong>modellering</strong>søyemed representerer vi som attributter i klassene. Egenskaper<br />
<strong>for</strong> en gruppe objekter kan <strong>for</strong> eksempel være navn og fødselsnummer <strong>for</strong> personer.<br />
Attributtene består av et attributtnavn og en tilhørende type. Attributtnavnet står <strong>for</strong>an<br />
kolontegnet, og attributtypen står bak. Typene i SERES kalles semantiske typer.<br />
3.2.4 Semantiske typer<br />
I UML knytter en vanligvis attributtene til datatyper, slik som <strong>for</strong> eksempel string.<br />
Datatypene sier oss ikke noe presist om semantikken til attributtet, men de sier noe om<br />
hvordan attributtet skal representeres fysisk. Likevel er det å implementere <strong>for</strong> eksempel et<br />
navneattributt som en string bare en av flere muligheter. Teknisk sett kan string representere<br />
alt. Vi har løsrevet oss fra <strong>for</strong>matspesifisering i utviklingen av en in<strong>for</strong>masjonsmodell, og<br />
ønsker heller et in<strong>for</strong>masjonssentrert syn hvor semantikken har fokus. Der<strong>for</strong> benytter vi<br />
semantiske typer i stedet <strong>for</strong> datatyper i vår <strong>modellering</strong> 4 . De semantiske typene definerer<br />
attributtets mening. Basert på valget av semantiske typer står vi fritt til å velge en spesifikk<br />
datatypeprofil senere i prosessen.<br />
De semantiske typene i SERES danner et arvehierarki med der vi tar utgangspunkt i rottypene<br />
som vi kaller grunnleggende semantiske typer (Figur 5). Disse er basert på Core Components<br />
Primary Representation Terms 5 fra UN/CEFACT 6 , og er således <strong>for</strong>ankret i internasjonalt<br />
standardiseringsarbeid. De grunnleggende semantiske typene er generelle og uavhengig av<br />
klassekontekst. Figur 5 viser de grunnleggende semantiske typene med den grafiske<br />
notasjonen som blir brukt i <strong>modellering</strong>en. For ytterligere in<strong>for</strong>masjon vedrørende<br />
arvehierarkiet og definisjon av semantiske typer, se Vedlegg I Semantiske typer.<br />
Figur 5: Grunnleggende semantiske typer (rottyper)<br />
4<br />
Det er mulig å modellere med andre sett en SERES semantiske typer, men da vil ikke modellen bli betraktet<br />
som harmonisert.<br />
5<br />
De semantiske typene er spesifisert i dokumentet Core Components Technical Specification, <strong>for</strong>kortet CCTS.<br />
6<br />
UN/CEFACT er et FN-organ som jobber med elektronisk <strong>for</strong>enkling av internasjonal handel.<br />
15
3.2.5 Assosiasjoner<br />
En assosiasjon beskriver et <strong>for</strong>hold mellom to objekter og definerer de rollene de har over<strong>for</strong><br />
hverandre. Noen ganger er rollene symmetriske, men ikke alltid. Forholdet beskriver vi ved å<br />
gi navn på selve assosiasjonen, mens rollene defineres ut fra å gi navn på assosiasjonsendene.<br />
I tillegg kan vi beskrive assosiasjonen ytterligere ved å angi kardinalitet <strong>for</strong> hver av<br />
assosiasjonsendene. Kardinaliteten angir antall objekter (av klassen koblet til<br />
assosiasjonsenden) som kan inngå i den gitte assosiasjonen til ethvert objekt av klassen koblet<br />
til den andre assosiasjonsenden.<br />
Vi bruker følgende notasjon <strong>for</strong> kardinalitet:<br />
Kardinalitet Betyr<br />
1 nøyaktig én<br />
0..* mange (null, én eller flere) (standardverdi)<br />
1..* minst én<br />
0..1 kan finnes en, dvs. null eller én<br />
m..n minimum m og maksimum n <strong>for</strong>ekomster.<br />
Eks: 5..7 betyr 5, 6 eller 7<br />
I en generell in<strong>for</strong>masjonsmodell må det tas høyde <strong>for</strong> ulik organisering av in<strong>for</strong>masjonen.<br />
Der<strong>for</strong> er hovedregelen å bruke urettede assosiasjoner. I dokumentmodellen alltid skal det<br />
benyttes rettede assosiasjoner. Navnet rettet assosiasjon er basert på at knytningen mellom<br />
dem består av en retning indikert med en pil. Pilen er basert på hvilken klasse assosiasjonen<br />
tar utgangpunkt i – leseretningen <strong>for</strong> assosiasjonen.<br />
Retningslinje<br />
• In<strong>for</strong>masjonsmodell: Urettet assosiasjoner<br />
• Dokumentmodell: Rettede assosiasjoner<br />
3.2.6 Assosiasjonsklasser<br />
Noen ganger ønsker vi å <strong>for</strong>telle mer om <strong>for</strong>holdet mellom objekter enn det vi klarer å<br />
<strong>for</strong>midle med kardinalitet og navngiving. En assosiasjonsklasse er en assosiasjon som har ett<br />
eller flere attributter, og den uttrykkes visuelt ved både en assosiasjon og en klasse. Det er<br />
viktig å merke seg at klassen og assosiasjonen er ett og samme modellelement som har<br />
egenskaper både som klasse og assosiasjon. En assosiasjonsklasse benyttes til ytterligere å<br />
presisere en assosiasjon, og eksisterer kun i lys av assosiasjonen. Det er dermed ikke mulig å<br />
bruke klassedelen uavhengig av assosiasjonen.<br />
3.2.7 Arv<br />
Arv mellom to klasser uttrykker at det ene klassen er en spesialisering av den andre klassen.<br />
Begrepene subklasse og superklasse brukes <strong>for</strong> å beskrive <strong>for</strong>holdet mellom klasser i et<br />
arve<strong>for</strong>hold:<br />
• Subklasse – en underordnet klasse, et ”barn”<br />
• Superklasse – en overordnet klasse, en ”<strong>for</strong>elder”<br />
16
Arv reflekterer at noen konsepter eller ideer har fellestrekk, samtidig som de har særegne<br />
egenskaper som gjør dem <strong>for</strong>skjellige. Spesialiseringen (subklassen) arver alle egenskapene til<br />
superklassen (fellestrekkene) samt at ytterligere egenskaper kan tilføyes, slik at<br />
spesialiseringen får en mer omfattende semantikk. På den annen side vil det være færre<br />
objekter av spesialiseringen enn av den generaliserte klassen.<br />
I SERES tillates ikke multippel arv. Det betyr at en klasse kun får ha én direkte overordnet<br />
superklasse. Begrunnelsen er at in<strong>for</strong>masjonselementene representerer begreper hvor arv (eller<br />
spesialisering) kun innebærer en avgrensning av <strong>for</strong>ekomstene av tilhørende objekter.<br />
Multippel arv er aktuelt der en ønsker å etablere objekter som har egenskaper i flere retninger.<br />
3.2.8 Diagrammer<br />
Diagrammer er navngitte, visuelle sammenstillinger av de modellelementene som inngår i<br />
<strong>modellering</strong>en i SERES. I SERES finnes det to ulike typer diagrammer tilknyttet henholdsvis<br />
in<strong>for</strong>masjonsmodellen og dokumentmodeller:<br />
• In<strong>for</strong>masjonsmodelldiagram (kortnavn in<strong>for</strong>masjonsdiagram) som visuell framstilling ved<br />
in<strong>for</strong>masjons<strong>modellering</strong><br />
• Dokumentmodelldiagram (kortnavn dokumentdiagram) som visuell framstilling ved<br />
dokument<strong>modellering</strong><br />
3.2.9 Pakker<br />
Pakker er det sentrale administrative begrepet i SERES og in<strong>for</strong>masjonsmodellen er<br />
sammensatt av et antall pakker. Denne oppdelingen er kun et praktisk grep som brukes til å<br />
gruppere modellelementer, og har ingen prinsipiell føring <strong>for</strong> semantiske <strong>for</strong>hold. Alle<br />
modellelementer hører til en og bare en pakke.<br />
Pakkene har en hierarkisk struktur og ulike stereotyper. Pakker på øverste nivå kalles <strong>for</strong><br />
domener og knyttes sammen til fagområder og/eller avdelingsinndeling i etater eller<br />
institusjoner. Under domene kan det fritt opprettes arbeidspakker i henhold til hva som<br />
oppfattes hensiktsmessig ved <strong>modellering</strong>. Dokumentmodeller representeres også ved pakker,<br />
og avgrenser <strong>modellering</strong>selementene brukt ved dokument<strong>modellering</strong> fra<br />
in<strong>for</strong>masjons<strong>modellering</strong>en. Ved opprettelse av dokumentmodeller genereres det pakker med<br />
stereotype ”dokumentmodell”.<br />
3.2.10 Kobling mellom in<strong>for</strong>masjons- og dokumentklasse<br />
En dokumentklasse har en kopling til den in<strong>for</strong>masjonsklassen den stammer fra, men<br />
egenskapene kan være noe endret på den måten at settet av attributter og assosiasjoner er et<br />
subsett av de opprinnelige og at kardinaliteten av de gjenværende attributter og<br />
assosiasjoner kan være smalere enn utgangspunktet. F.eks. kan en assosiasjonskardinalitet på<br />
0..* (null til mange) i dokumentklassen være satt til 1..3 slik at mulige <strong>for</strong>ekomster fastlegges<br />
mer eksplisitt. Vi kaller en slik kopling mellom klasser en begrensende <strong>for</strong>finingsavhengighet<br />
(eng: restriction refinement dependency)<br />
3.2.11 Tagged values<br />
All in<strong>for</strong>masjonsmodellelementer i SERES får knyttet på seg et sett tagged values av<br />
type Dublin Core. Dublin Core er en internasjonal standard <strong>for</strong> administrativ in<strong>for</strong>masjon slik<br />
som <strong>for</strong>fatter, bidragsyter, utgiverinstitusjon, beskrivelse, versjonsdato, identifikator, språk,<br />
rettighetsinfo etc.<br />
17
3.2.12 Oppsummering<br />
Tabell 1 viser oversikt over modellelementene som blir brukt i SERES og deres bruksområde.<br />
navn : type<br />
Klasse<br />
Attributt<br />
Semantisk type<br />
Modellelementer<br />
Generalisering (Arv)<br />
Uretta assosiasjon<br />
Retta assosiasjon<br />
Assosiasjonsklasse<br />
Tabell 1: Modellelementer i SERES<br />
IM<br />
IM<br />
IM<br />
IM<br />
IM<br />
(IM)<br />
IM<br />
DM<br />
DM<br />
DM<br />
DM<br />
-<br />
DM<br />
DM<br />
18
4 Overordnet om in<strong>for</strong>masjons<strong>modellering</strong><br />
Dette kapittelet gir en overordnet beskrivelse av prosessen med ut<strong>for</strong>ming av<br />
in<strong>for</strong>masjonsmodell.<br />
4.1 Tilnærming til <strong>modellering</strong>en<br />
En første versjon av elementene i en modell kan etableres gjennom:<br />
• en ideell betraktning rundt hvordan "verden er", herunder ut fra kunnskap om lover og<br />
<strong>for</strong>skrifter (top-down approach)<br />
• et sett skjemaer hvor feltene fra disse blir attributter og feltgrupper blir klasser<br />
(bottom-up approach)<br />
• eksisterende modeller f.eks. databasemodeller hvor hver tabell blir en klasse med<br />
samme navn, tabellfeltene blir klasseattributter med samme navn, datafeltypene blir<br />
datatyper med samme navn og fremmednøkler gjøres om til assosiasjoner (UMLkonvertering)<br />
Hvis vi ser bort fra det å benytte eksisterende modeller, er det altså to typiske scenarier <strong>for</strong><br />
den praktiske <strong>modellering</strong>en i SERES:<br />
En top-down tilnærming på <strong>modellering</strong> i SERES innebærer at in<strong>for</strong>masjonsmodellen <strong>for</strong><br />
domenet først utarbeides basert på en omfattende analyse av begrepene i domenet og deres<br />
sammenhenger. Deretter lager en dokumentmodeller og herav meldingsspesifikasjoner.<br />
En bottom-up tilnærming til <strong>modellering</strong> i SERES innebærer at en tar utgangspunkt i<br />
detaljbeskrivelser av skjemaer og databaser og bygger in<strong>for</strong>masjonsmodellen ut fra disse.<br />
Dokumentmodeller og meldingsspesifikasjoner lages underveis.<br />
Disse to tilnærmingene har hver sine <strong>for</strong>deler og ulemper. Ved å begynne nedenfra fanger en<br />
<strong>for</strong>t opp relevante detaljer, og det vil være mulig å fremstille meldingsspesifikasjoner etter<br />
kort tid. Ulempen er at in<strong>for</strong>masjonsmodellen lett blir fragmentarisk og mindre velstrukturert.<br />
Helhetsbildet dempes på grunn av fokus på detaljer – ”en ser ikke skogen <strong>for</strong> bare trær”. Ved<br />
å begynne på toppen vil det være lettere å sikre at helhetsbildet blir konsistent. Ulempen er<br />
først og fremst at viktige detaljer oversees, og at behovet <strong>for</strong> disse først identifiseres når en<br />
senere setter sammen in<strong>for</strong>masjonselementer <strong>for</strong> konkrete dokumentmodeller.<br />
En tredje mulighet er å kombinere disse to perspektivene. Da ser vi på <strong>modellering</strong>sprosessen<br />
som en syklus der vi veksler mellom en bottom-up og en top-down tilnærming.<br />
In<strong>for</strong>masjonsmodellen raffineres gjennom stadige iterasjoner, og meldingsspesifikasjoner kan<br />
produseres underveis.<br />
In<strong>for</strong>masjonsmodell<br />
Skjema 1..N<br />
19
Figur 6: Iterativ veksling mellom perspektiver<br />
Sett fra den enkelte etats side vil <strong>modellering</strong>en i de fleste tilfeller starte fra bunnen med<br />
beskrivelse av skjemaer (et bottom-up perspektiv). Samtidig som skjemaene beskrives,<br />
harmoniseres etatens domenemodell med den øvrige in<strong>for</strong>masjonsmodellen, inkludert<br />
grunndata. Dette krever et top-down perspektiv.<br />
In<strong>for</strong>masjonsmodellen bør ut<strong>for</strong>mes slik at den <strong>for</strong>teller mest mulig på egen hånd uten behov<br />
<strong>for</strong> å supplere modellen med store mengder skriftlig dokumentasjon. Leseren skal få et god<br />
<strong>for</strong>ståelse av den modellerte delen av domenet bare ved å se på diagrammene og definisjonene<br />
til modellelementene.<br />
4.2 Fokus og kontekst<br />
En modell er ikke en kopi, men en <strong>for</strong>enkling av virkeligheten. Den som modellerer må der<strong>for</strong><br />
velge hva som er av interesse / essensielt nok til å bli med i modellen, og la være å ta med<br />
andre deler av virkeligheten. Modellereren må stille seg spørsmålene:<br />
• Hva skal modellen brukes til?<br />
• Hva er målgruppen?<br />
Modellen utvikles i en kontekst, dvs. betingelser og omgivelser <strong>for</strong> modellen. Konteksten<br />
omfatter blant annet applikasjonsområdet, in<strong>for</strong>masjon om hensikten med modellen,<br />
målgruppen, jurisdiksjon, tidsperiode modellen skal være gyldig, hvilken sammenheng<br />
in<strong>for</strong>masjon basert på modellen skal innhentes, tolkes og brukes, hvordan skal modellen<br />
kunne brukes. Når konteksten til en modell er godt beskrevet og <strong>for</strong>stått, blir også meningen<br />
med modellen klarere. Modellerere vil <strong>for</strong>stå hverandres modeller enklere, og muligheten <strong>for</strong><br />
gjenbruk av modellelementer øker.<br />
Modellereren må utvikle sine modeller varsomt med følgende dimensjoner i tankene 7 :<br />
• Formål, hvor og hvordan modeller og in<strong>for</strong>masjon er tenkt bruk.<br />
• Abstraksjonsnivå, hvor overordnet kan en definere modeller og modellelementene <strong>for</strong><br />
data.<br />
• Presisjon, hvor detaljert / presist må en definere modeller og modellelementene <strong>for</strong><br />
data.<br />
• Tilstander, hvilke egenskaper er felles <strong>for</strong> objekter i en bestemt tilstand.<br />
• Kategorier, hvilke klassifiseringer kan modellelementer systematiseres i henhold til.<br />
• Tid, hvordan endres data og tolkning av data over tid. Modeller og definisjoner må<br />
gjenspeile endringsbehovet.<br />
• Rom, hvordan endres data og tolkning av data når objektet de er knyttet til <strong>for</strong>flytter<br />
seg i rom.<br />
Et viktig poeng i denne <strong>for</strong>bindelsen er at når et begrep skal modelleres som en klasse, vil<br />
resultatet være avhengig av konteksten. For eksempel, begrepet ”bil” vil normalt modelleres<br />
med ulike attributter om konteksten er Skatteetaten, Biltilsynet eller et bilverksted. Der<strong>for</strong> vil<br />
ofte flere domenemodeller inneholde <strong>for</strong>skjellige klassedefinisjoner av samme begrep. Dette<br />
er en fundamental problemstilling innen semantisk interoperabilitet.<br />
7 Dimensjonene er basert på ISO 15926 og ebXML<br />
20
Jus og <strong>for</strong>skrifter endres over tid. Dermed må de deler av in<strong>for</strong>masjonsmodellen som er<br />
knyttet til jus endres i takt med dette og versjoneres. Data og tolkningen av data vil være<br />
knyttet til en versjon av in<strong>for</strong>masjonsmodellen. For eksempel vil data som benyttes til<br />
skatteberegning og regnskap har 10 års lagringskrav på seg. I løpende 10 års-intervaller er det<br />
nødvendig å sikre at alle data presist kan relateres tilbake til riktig versjon av<br />
in<strong>for</strong>masjonsmodellen. Liknende livsløp med ulike tilstander vil gjelde både personer og<br />
virksomheter. Virksomheter etableres, de er aktive og de endrer <strong>for</strong>m eller avvikles som<br />
selvstendige virksomheter ved oppkjøp, fusjon, konkurs etc.<br />
5 Teoretisk og språklig <strong>for</strong>ankring <strong>for</strong> SERES<br />
Når vi skal modellere in<strong>for</strong>masjon, må vi klare å filtrere dagligspråkets manglende presisjon i<br />
beskrivelsen av tidvis komplekse sammenhenger.<br />
Dette kapittelet presiserer hva vi mener med begreper, termer og definisjoner, og gir en del<br />
overordnede regler <strong>for</strong> hvordan modellelementer skal navngis og defineres. Navngivingsregler<br />
<strong>for</strong> ulike typer modellelementer beskrives i de spesifikke kapitlene.<br />
5.1 Terminologi, læren om begreper<br />
Kommunikasjon er utveksling av meningsinnhold mellom individer og grupper ved hjelp av<br />
et felles system av symboler 8 . SERES-modeller vil i denne sammenheng være et slikt felles<br />
system av symboler.<br />
Et begrep er en ide, en tanke som vi kan <strong>for</strong>estille oss. Vi bruker ordet ”bedrift” <strong>for</strong> å kunne<br />
kommunisere om begrepet som vi kaller Bedrift. Begrepene vi benytter identifiseres ved et<br />
navn som gjør at vi kan kommunisere om dem. Ut<strong>for</strong>dringene vi møter er at noe kan ha flere<br />
navn og gjerne kommuniseres på flere måter. Et og samme ord kan også henvise til ulike<br />
begreper 9 .<br />
Når vi modellerer må vi skille mellom en faktisk person og begrepet kalt Person. For<br />
tydeligere å <strong>for</strong>stå hverandre i kommunikasjon, er det vesentlig at vi har definisjoner som er<br />
knyttet til begrepet. Figuren under skisserer sammenhengen mellom elementer som til<br />
sammen benyttes <strong>for</strong> kommunikasjon og <strong>modellering</strong>.<br />
8 Aschehough og Gyldendals Store Norske Leksikon.<br />
9 I lingvistikken kalles de ulike betydningene av bar <strong>for</strong> homonymer (herunder homografer med lik skrivemåte<br />
og homofoner med lik uttale).<br />
21
Modellnivå<br />
Forekomstnivå<br />
in<strong>for</strong>masjon<br />
Forekomstnivå<br />
abstrakte eller<br />
konkrete ting<br />
Navn<br />
Begrep<br />
In<strong>for</strong>masjonsobjekt<br />
Referent<br />
Definisjon<br />
Figur 7: Referent, objekt, begrep, navn og definisjon<br />
Når vi modellerer i SERES, representerer hver klasse og semantiske type et begrep. Vi gir<br />
begrepene navn som brukes til kommunikasjon. I tillegg trenger vi en utdypende definisjon<br />
som gjør det mulig å skille mellom begrep som likner på hverandre, spesielt begreper som har<br />
lik skrivemåte (homografer).<br />
Vår samling av begreper med sine navn og definisjoner utgjør en modell av in<strong>for</strong>masjonen.<br />
Elektroniske meldinger, innhold i skjemaer, databaser e.l. (en teknisk representasjon av noe<br />
som eksisterer) med innhold fra modellen vår kaller vi objekter (instanser). Referentene er de<br />
faktiske tingene som omtales i instansen.<br />
For å lette arbeidet med å utarbeide definisjoner trenger modellereren <strong>for</strong>ståelse <strong>for</strong><br />
sammenhengen mellom elementene referent, objekt, begrep, navn og definisjon slik disse er<br />
vist i Figur 7. Elementene i figuren kan defineres på følgende måte:<br />
Referent:<br />
Enkeltstående fysisk eller abstrakt ting, tilstand, handling eller sammenheng man<br />
refererer til gjennom et begrep. Eksempler er "den fysiske personen Sevald Oddsen",<br />
"ditt sykefravær <strong>for</strong>rige uke", "nåværende budsjett til avdelingen", "bilen din", "et<br />
bestemt prosjekt", "momstilstanden til firma x i 2. kvartal 2005".<br />
Objekt:<br />
Enkeltstående sett av in<strong>for</strong>masjon som er representert i en melding eller i en database.<br />
Eksempler kan være, sykemeldingsblanketten min fra <strong>for</strong>rige uke, en fil med<br />
nåværende budsjett til avdelingen, in<strong>for</strong>masjon om bilen din, in<strong>for</strong>masjon om et<br />
bestemt prosjekt, siste momsoppgaven som ble levert fra firma x, in<strong>for</strong>masjon om deg<br />
som person.<br />
Navn:<br />
Språklig benevnelse av et begrep.<br />
For å kunne kommunisere at vi tenker på et begrep, må begrepet ha et navn.<br />
Eksempler på navn <strong>for</strong> begreper kan være: "sykefravær", "budsjett", "bil" eller "alle<br />
Porsche 911", "MVA-oppgave", "enhet".<br />
Definisjon:<br />
Entydig språklig beskrivelse av et begrep. En definisjon bør bygges opp av:<br />
22
• en grunnleggende del som henviser til et overordnet begrep (et hyperonym i et<br />
generisk begrepssystem (dvs. taksonomi))<br />
• en del som presiserer hvilke kjennetegn som skiller dette begrepet fra andre begrep<br />
som har samme hyperonym.<br />
Begrep:<br />
Mental <strong>for</strong>estilling om et konsept / en ting eller en samling av referenter med<br />
tilhørende navn og definisjon (mer eller mindre presist <strong>for</strong>mulert). Vår <strong>for</strong>ståelse av<br />
hva som er felles <strong>for</strong> en rekke referenter. Konseptet som vi tenker på skal kunne gjelde<br />
alle referenter.<br />
Definisjonen skal normalt kunne erstatte termen i løpende tekst. Vi kan <strong>for</strong> eksempel ha<br />
setningen ”Jeg har en sjelden antikvitet du må se”. Hvis vi erstatter i setningen navnet<br />
antikvitet med definisjonen av antikvitet fra tabellen neden<strong>for</strong>, blir den slik: ”Jeg har en<br />
sjelden vare som er mer enn 100 år gammelt og som omfattes av tolltariffens posisjon 97.06<br />
du må se”.<br />
Eksempel på sammenhenger mellom referenter, objekter, navn og definisjoner <strong>for</strong> begreper:<br />
Referent Førsteutgaven i din<br />
bokhylle<br />
Objekt Lagret in<strong>for</strong>masjon<br />
om boka, f eks<br />
<strong>for</strong>fatter, tittel, pris<br />
Eksempel 1 Eksempel 2 Eksempel 3<br />
Du som person Sykemeldingen min<br />
<strong>for</strong> <strong>for</strong>rige uke<br />
Lagret in<strong>for</strong>masjon<br />
om deg<br />
Lagret<br />
in<strong>for</strong>masjonen fra<br />
sykemeldingsblanketten<br />
Navn Antikvitet Person Sykemelding<br />
Definisjon Vare som er mer<br />
enn 100 år gammel<br />
og som omfattes av<br />
tolltariffens<br />
posisjon 97.06<br />
5.2 Navn og språkregler<br />
Menneske som<br />
basert på<br />
kommende,<br />
nåværende eller<br />
tidligere<br />
tilstedeværelse eller<br />
handlinger har en<br />
relasjon til en eller<br />
flere enheter i norsk<br />
offentlig sektor og /<br />
eller norsk lov.<br />
Sett av in<strong>for</strong>masjon<br />
<strong>for</strong> utveksling som<br />
beskriver en<br />
sykdomstilstand og<br />
periode <strong>for</strong> en<br />
person i et<br />
arbeids<strong>for</strong>hold,<br />
hvor hensikten er å<br />
få <strong>for</strong>malisert<br />
grunnlaget <strong>for</strong> en<br />
trygdeytelse<br />
5.2.1 Bruk av norsk språk<br />
Det er krevende å lage en in<strong>for</strong>masjonsmodell, og <strong>for</strong> å lykkes må en ha svært god kontroll<br />
med begreper og deres relasjoner til hverandre. Vi har der<strong>for</strong> valgt å bruke norsk, nærmere<br />
bestemt bokmål, i in<strong>for</strong>masjons-modellen. Vår in<strong>for</strong>masjonsmodell skal i hovedsak være en<br />
23
norsk virkelighetsbeskrivelse, og da vil bruk av et fremmed språk, <strong>for</strong> eksempel engelsk, være<br />
til hinder <strong>for</strong> dette. Vi finner det også hensiktsmessig å benytte norske navn på de semantiske<br />
typene, slik at in<strong>for</strong>masjonsmodellen fremstår språklig rendyrket og derigjennom mest mulig<br />
<strong>for</strong>ståelig.<br />
5.2.2 Navnestandarder<br />
I SERES velger en modellerer navn på modellelementer som pakker, diagrammer, klasser,<br />
attributter, semantiske typer, relasjoner, relasjonsender. I tillegg velger modellereren navn på<br />
<strong>for</strong>mater og <strong>for</strong>matfamilier.<br />
Navnet på et modellelement brukes <strong>for</strong> å kunne skille et begrep fra andre begreper. Samtidig<br />
bør navnet gi en indikasjon om hva betydningen av begrepet er. Navnet til et modellelement<br />
brukes ved generering av XML Schema og blir synlige <strong>for</strong> teknisk personell som skal lage<br />
systemer som tar imot, bearbeider eller avgir data i henhold til modellene som defineres i<br />
SERES-systemet.<br />
Eksport av modeller fra SERES på ulike <strong>for</strong>mater (XMI eller XML Schema) stiller av<br />
tekniske årsaker visse krav til elementnavn. Får å unngå at det oppstår navnevarianter ved<br />
trans<strong>for</strong>mering i produksjonsløypen, er regelverket <strong>for</strong> navngivning påvirket av dette, spesielt<br />
bruken av CamelCase (ref. ordliste).<br />
5.2.3 Generelle retningslinjer <strong>for</strong> navngiving<br />
• Det skal brukes norsk bokmål i in<strong>for</strong>masjonsmodellen, både på navn på<br />
in<strong>for</strong>masjonselementer og dets definisjoner<br />
• æ, ø, å er tillatt<br />
• Bruk det navnet som er mest karakteristisk <strong>for</strong> elementet<br />
• Bruk entalls<strong>for</strong>m <strong>for</strong> begreper der slike finnes<br />
• Navnet bør ha god uttrykkskraft at man langt på vei kan <strong>for</strong>stå meningen ut fra navnet<br />
alene.<br />
• Navnet bør være <strong>for</strong>ståelig <strong>for</strong> allmennheten og akseptert av fagmiljøet.<br />
• Forsøk å bruke vanlige hverdagslige termer og spar faguttrykk til definisjoner eller<br />
andre tekster.<br />
• Navnet skal gjenspeile in<strong>for</strong>masjonselementets eventuelle definisjon.<br />
• Ikke bruk spesialtegn eller tegn som understrekning, skråstrek, punktum, komma etc.<br />
• Dersom flere ord i navnet, sett sammen ordene til et sammenhengende ord uten<br />
mellomrom ved hjelp av CamelCase.<br />
• Unngå engelskinspirert ordoppdeling slik som årsGjennomsnitt. Skriv årsgjennomsnitt<br />
ettersom dette er ett sammenhengende ord.<br />
• Iblant må en relatere norsk begrepsbruk til internasjonale termer. Bruk<br />
modellelementets beskrivelse til å legge inn synonymer, eller henvisning til hvilken<br />
internasjonal term som er <strong>for</strong>norsket.<br />
• Ikke lag egne <strong>for</strong>kortelser, men bruk allment kjente <strong>for</strong>kortelser som ”nr”, ”id” og så<br />
videre. Se vedlegg III <strong>for</strong> liste av slike.<br />
• Forkortelser skrives på den vanligste måten, tillater store bokstaver på hele<br />
<strong>for</strong>kortelser.<br />
5.2.3.1 Navngiving av klasser<br />
Navnet på en klasse skal:<br />
• være unikt i pakken<br />
24
• ha stor <strong>for</strong>bokstav<br />
• helst velges uavhengig av diagram og pakke, slik at andre lettere ønsker å gjenbruke<br />
dem<br />
• helst være basert på ett ord, f.eks. "Person", "Bedrift"<br />
• skrives i UpperCamelCase dersom navnet kommer fra to eller flere ord<br />
• ikke ha sammenbindingsord som "av", "i", "til" etc. med mindre navnet kan mis<strong>for</strong>stås<br />
uten<br />
Eksempler på anbefalte klassenavn:<br />
• Fartøy<br />
• SalgGrunneiendom (alt. GrunneiendomSalg)<br />
• Omsetningstabell (alt. TabellOmsetning)<br />
• Pasientstatus (alt. StatusPasient)<br />
• MidlertidigAnsatt (alt. AnsattMidlertidig)<br />
Eksempler på dårlige klassenavn:<br />
• FirmaBil: Ordet er sammenhengende på norsk: Firmabil.<br />
• Kundeinfo: Klassen inneholder in<strong>for</strong>masjonselementer, der<strong>for</strong> er ” info”-delen av<br />
navnet redundant.<br />
• Personklasse: Navnet betegner en klasse, der<strong>for</strong> er ”klasse”-delen av navnet<br />
overflødig.<br />
5.2.3.2 Navngiving av attributter<br />
Navnet på attributtet bør være enkelt, gjenspeile definisjonen og<br />
• være unikt i klassen<br />
• ha liten <strong>for</strong>bokstav med mindre ordet starter med en <strong>for</strong>kortelse som er vanlig å skrive<br />
med store bokstaver<br />
• helst bestå av ett ord<br />
• skrives i lowerCamelCase dersom navnet kommer fra to eller flere ord<br />
• ikke ha sammenbindingsord som "av", "i", "til" etc. med mindre navnet kan mis<strong>for</strong>stås<br />
uten<br />
Ved <strong>modellering</strong> av blanketter vil det være tilfeller der det er behov <strong>for</strong> å utrykke lengre<br />
feltbeskrivelser ved hjelp av attributter. For å unngå <strong>for</strong> lange attributtnavn er det verdt å<br />
merke seg at attributtnavnet får tilført betydning ut fra sin klassekontekst og tilhørende<br />
semantiske type. En kan der<strong>for</strong> gjerne unngå navneledd som er en kopi av disse.<br />
Eksempler på anbefalte attributtnavn:<br />
• fødselsnummer<br />
• førsteArbeidsdag (alt. arbeidsdagFørste)<br />
• skattemessigBruttoinntekt (alt. bruttoinntektSkattemessig)<br />
• gebyrAksjesalg<br />
Eksempler på dårlige attributtnavn:<br />
• fødselsNummer (Er ett ord på norsk)<br />
• personNavn (Er ett ord på norsk. Dessuten er det sannsynlig at klassenavnet er Person<br />
og typen er navn)<br />
25
• antallEgenmeldinger (Inneholder navn på den semantiske typen antall. Bedre:<br />
egenmeldinger: antall)<br />
5.2.3.3 Navngiving av semantiske typer<br />
Navnsetting <strong>for</strong> semantiske typer bør være som <strong>for</strong> klasser. Navnet bør være enkelt, gjenspeile<br />
definisjonen og:<br />
• ha liten <strong>for</strong>bokstav, med mindre ordet er en <strong>for</strong>kortelse som er vanlig å skrive med<br />
store bokstaver<br />
• bestå av ett ord eller være en <strong>for</strong>kortelse som representerer flere ord<br />
• være unikt i pakken<br />
• helst velges uavhengig av diagram og pakke, slik at andre lettere ønsker å gjenbruke<br />
dem<br />
5.2.3.4 Navngiving av assosiasjoner og assosiasjonsender<br />
For assosiasjoner har vi mulighet til å navngi både selve assosiasjonen og assosiasjonsendene<br />
(rollene). Navnet på assosiasjonen skal være beskrivende <strong>for</strong> det <strong>for</strong>hold det uttrykker. Navnet<br />
på assosiasjonsenden beskriver rollen/relasjonen objektet på motsatt side av relasjonen har til<br />
dette objektet (klassen der rollen står). Navnene vil som regel være <strong>for</strong>skjellige i de to endene<br />
av en assosiasjon. Dersom det er naturlig å gi assosiasjonsendene samme navn, bør en<br />
alternativt gi assosiasjonen dette navnet og la endene være uten navn.<br />
• Assosiasjoner skal ha navn enten i <strong>for</strong>m av assosiasjonsnavn eller<br />
assosiasjonsendenavn<br />
• En klasses assosiasjoner skal ha unike assosiasjonsnavn og assosiasjonsendenavn (de<br />
som står lengst fra selve klassen)<br />
• Navnet skal ikke være likt et av attributtnavnene i klassene assosiasjonen knytter<br />
sammen<br />
• Ved bruk av assosiasjonsendenavn skal:<br />
o rettede assosiasjoner ha beskrivende navn på pilenden.<br />
o urettet assosiasjoner ha navn i begge ender<br />
• Navnet skrives med liten <strong>for</strong>bokstav og i lowerCamelCase dersom navnet kommer fra<br />
to eller flere ord med mindre det er en <strong>for</strong>kortelse som består av store bokstaver<br />
5.2.3.5 Navngiving av assosiasjonsklasser<br />
Her gjelder de samme regler som <strong>for</strong> klasser, se kapittel 5.2.3.1.<br />
5.2.3.6 Navngiving av pakker<br />
Pakker er det sentrale administrative begrepet i SERES. På øverste nivå finner vi de ulike<br />
domenemodellene som kan inneholde pakker både i <strong>for</strong>m av arbeidspakker og<br />
dokumentmodeller.<br />
• Navnet på domenemodeller skal være unikt blant andre domenemodeller, mens navnet<br />
på arbeidspakker og dokumentmodeller er unikt innen<strong>for</strong> sin domenemodell<br />
• Navnet på dokumentmodeller bør beskrive et bruksområde <strong>for</strong> modellelementer<br />
• Navnet skrives med stor <strong>for</strong>bokstav og i UpperCamelCase dersom navnet kommer fra<br />
to eller flere ord<br />
26
5.2.3.7 Navngiving av diagrammer<br />
• Navnet er unikt innen<strong>for</strong> sin domenemodell<br />
• Navnet skrives med stor <strong>for</strong>bokstav og i UpperCamelCase dersom navnet kommer fra<br />
to eller flere ord<br />
27
6 Grunnleggende semantiske typer<br />
I dette kapittelet presenteres de grunnleggende semantiske typene (toppnodene) som tidligere<br />
nevnt tilsvarer Core Components Primary Representation Terms. Disse er røtter i hvert sitt tre.<br />
Vi har valgt ikke å ha et nivå over disse igjen slik at alt ligger i ett tre.<br />
6.1 alternativ<br />
Den semantiske typen alternativ uttrykker to gjensidig utelukkende boolske verdier. Det vil si<br />
utfall i situasjoner der man skal indikere om en påstand er sann/usann. Eksempler på dette er<br />
om en person:<br />
• er myndig eller ikke myndig<br />
• har barn eller ikke har barn<br />
6.2 antall<br />
Den semantiske typen antall brukes til å angi tellbare mengder. Det er valgt å la antall være en<br />
grunnleggende type og ikke en avledning av tall ettersom det er en fundamental <strong>for</strong>skjell<br />
mellom tellbare mengder og beregnete <strong>for</strong>holdstall. Eksempler på hva som bør betegnes som<br />
antall er som følger:<br />
• antall ansatte (antall arbeids<strong>for</strong>hold, ikke antall stillingsandeler)<br />
• antall solgte enheter (når disse telles, ikke veies e.l.)<br />
6.3 beløp<br />
For å angi konseptet "en mengde penger" (eller en verdi som kan byttes i samme) bruker vi<br />
den semantiske typen beløp. Denne typen inneholder in<strong>for</strong>masjon både om det numeriske<br />
beløpet og hvilken valuta beløpet er i. Valuta kan koples til en valutakodeliste gjennom et<br />
kompleks<strong>for</strong>mat. Eksempler på den semantiske typen beløp:<br />
• 25 000 NOK<br />
• 150 USD<br />
• 3 450 GBP<br />
6.4 binærobjekt<br />
binærobjekt er en semantisk type som representerer en navnet og enhetlig bytesekvens. Dette<br />
representerer som oftest filer.<br />
6.5 identifikator<br />
Den semantiske typen identifikator brukes <strong>for</strong> eksplisitt å identifisere et objekt i en mengde av<br />
objekter. Ved hjelp av en slik unik identifikator kan man skille objekter fra hverandre. Det er<br />
viktig å merke seg at en identifikator bare er unik innen<strong>for</strong> et identifikasjonsregime. F.eks. er<br />
et studentnummer bare unikt innen<strong>for</strong> et gitt universitetsdomene. Et husnummer er bare unikt<br />
innen<strong>for</strong> en gate. identifikatorer skal normalt være tilknyttet et <strong>for</strong>valtningsorgan /<br />
<strong>for</strong>valtningsregime. For eksempel er det Folkeregisteret som <strong>for</strong>valter fødselsnummer.<br />
28
Identifikatorer som ikke <strong>for</strong>valtes av noen, skal settes abstrakte, dvs. ikke kunne brukes i en<br />
dokumentmodell.<br />
6.6 kode<br />
Den semantiske typen kode brukes gjennom spesialiseringer <strong>for</strong> kopling til Kodelister En<br />
kodeliste er en samling elementer, kalt kodelisteelementer, som hver har en kode og en<br />
definisjon.<br />
Et attributt knyttet til en slik semantisk type vil lovlig måtte ha en verdi fra kodelisten.<br />
sivilstand er et typisk eksempel på en spesialisering av kode. En tilhørende kodeliste består<br />
f.eks. av kodene "enslig", "samboer", "gift", "partnerskap", "skilt", "enke/-mann", "ukjent". Et<br />
attributt av type sivilstand må ha en verdi blant akkurat disse elementene.<br />
Dersom et attributt koples direkte til kode, må denne koplingen endres i en Dokumentmodell<br />
ettersom kode er Abstrakt (se ordliste).<br />
6.7 mål<br />
Den semantiske typen mål brukes <strong>for</strong> fysiske størrelser som måles med et verktøy eller<br />
instrument. Både faktisk målte størrelser og størrelser som planlegges <strong>for</strong> senere måling<br />
kommer inn under denne typen. Et mål består av en numerisk verdi og en fysisk enhet.<br />
Eksempler på mål er:<br />
• lengde (6,43 m)<br />
• arealet (24 m 2 )<br />
• masse (83 kg)<br />
• hastighet (15 m/s)<br />
• temperatur (37 ˚C)<br />
6.8 tall<br />
Den semantiske typen tall brukes til å angi dimensjonsløse (uten enhet) størrelser. Dette er<br />
enten <strong>for</strong>holdet mellom to tellbare størrelser av samme enhetstype (ref. semantisk type antall)<br />
eller <strong>for</strong>holdet mellom to målbare størrelser av samme måleenhet (ref. semantiske typer mål<br />
og beløp) eller en matematisk funksjon av andre tall. Eksempler på tall:<br />
• 7,9<br />
• 14<br />
• -294,364489<br />
6.9 tekst<br />
Den semantiske typen tekst er en type som samler alle typer tekstlige uttrykk. Vi anbefaler å<br />
bruke spesialiseringene av typen navn og beskrivelse eller egne spesialiseringer.<br />
Et navn er den offisielle betegnelsen <strong>for</strong> en ting, person, firma, sted, produkt, konsept osv. Et<br />
navn brukes primært som en praktisk, dagligdags referanse. Forskjellen på et navn og en<br />
identifikator er at navn ikke må være unikt i et domene. Det er mulig <strong>for</strong> to personer å ha<br />
samme navn selv om de jobber i samme bedrift eller trener på samme treningsstudio.<br />
Eksempler på navn:<br />
• Ola Normann<br />
29
• Oslo<br />
• Aker Kværner<br />
• Nord-Trøndelag<br />
Den semantiske typen beskrivelse gir tilleggsin<strong>for</strong>masjon om et konsept som <strong>for</strong> eksempel en:<br />
• kommentar<br />
• hjelpetekst<br />
• hinttekst<br />
6.10 tidspunkt<br />
tidspunkt er en semantisk type som betegner et punkt i historisk tid, dvs. en gitt dato og<br />
klokkeslett i et bestemt år, f.eks. 17. mai 2006 kl. 10:00 (”avmarsj <strong>for</strong> barnetoget”). Typen<br />
uttrykkes ved å bruke dato og klokkeslett.<br />
30
7 Eksempel - Flyttemelding<br />
I dette kapittelet presenterer vi et eksempel som senere brukes til å illustrere<br />
<strong>modellering</strong>spraksis i SERES. Skjemaet RF-1400 Melding til folkeregisteret om flytting<br />
innenlands (heretter kalt flyttemelding) brukes <strong>for</strong> å melde fra om at en eller flere personer<br />
flytter fra en adresse til en annen. Hvis det <strong>for</strong> eksempel er en familie som flytter, kan alle<br />
familiemedlemmene registreres på det samme skjemaet.<br />
Skjemaet inneholder opplysninger om selve flyttingen (når den skal finne sted, gammel og ny<br />
adresse osv.), og om hver enkelt person som flytter (navn, fødselsnummer osv.). Dette<br />
hentyder at det er minst to ”ting” (to typer objekter) Det sentrale folkeregisteret ønsker å vite<br />
noe om: Selve flyttingen, og hver enkelt person (en eller flere) som flytter.<br />
Figur 8: Blanketten "Melding til folkeregisteret om flytting innenlands"<br />
Blanketten inneholder også minst to ulike adresser: gammel og ny. I noen tilfeller har vi også<br />
en tredje adresse: Postadresse. Den benyttes hvis posten skal sendes til et annet sted enn<br />
boligadressen, <strong>for</strong> eksempel hvis de som flytter har en postboks. Alle disse adressene kan ha<br />
flere ulike elementer, <strong>for</strong> eksempel postnummer og poststed.<br />
I tillegg ser vi at det finnes to ulike typer tilflyttingsadresser: Gateadresse og Stedsadresse<br />
(Stedsadressen brukes der det ikke er gatenavn).<br />
Kontaktin<strong>for</strong>masjon er felles <strong>for</strong> alle som flytter, og består av ulike adresser <strong>for</strong> elektronisk<br />
kommunikasjon (epost, telefon). Denne in<strong>for</strong>masjonen kan enten betraktes som relatert til alle<br />
personene som flytter, eller som relatert til flyttingen.<br />
31
Eksemplene i de neste kapitlene tar utgangspunkt i dette skjemaet. Først illustreres bruken av<br />
de enkelte modellelementene med eksempler fra dette skjemaet. Deretter vises et eksempel på<br />
en samlet modell <strong>for</strong> in<strong>for</strong>masjonsinnholdet i skjemaet i kapittel 13. Felt som er merket som<br />
til internt bruk hos folkeregisteret er ikke tatt med i modellene.<br />
32
8 Klasser<br />
Klasser skal ha definisjoner eller beskrivelser som presiserer deres meningsinnhold. I kapittel<br />
5 er det beskrevet hvordan slike beskrivelser skal se ut.<br />
En klasse skal representere en type fysisk ”ting” eller et abstrakt (immaterielt) begrep. I<br />
flyttemeldinga kan en person være et eksempel på et fysisk objekt, mens flyttingen er et<br />
immaterielt begrep – vi kan ikke ta på en flytting, selv om vi kan beskrive egenskaper ved<br />
den.<br />
Eksempler på mulige klasser i skjemaet <strong>for</strong> flyttemelding:<br />
• Person Egenskaper til personer som flytter<br />
• Flytting Egenskaper ved selve flyttingen<br />
8.1 Antall attributter<br />
Som en hovedregel bør en klasse inneholde 2-10 attributter. Hvis det blir færre eller flere enn<br />
dette bør man vurdere å endre på modellen ved å slå sammen eller dele opp klasser.<br />
Ideelt bør en klasse representere ett og bare ett konsept i den virkelige verden, helst et<br />
vel<strong>for</strong>stått og velavrundet begrep. Glushko og McGrath (2005) kaller dette essensialitet – en<br />
modellelementer skal kun inneholde essensielle komponenter, ellers vil modellen kunne bli<br />
tvetydig og integriteten svekkes.<br />
Hvis en og samme klasse representerer flere ulike konsepter vil det kunne oppstå situasjoner<br />
der egenskaper ved et objekt vil kunne endre seg uten at det var meningen, <strong>for</strong>di objektet i<br />
praksis er ”låst fast” i et annet.<br />
Fra beskrivelsen av flyttemeldinga vet vi at en person må <strong>for</strong>holde seg til minst to ulike<br />
adresser – gammel og ny adresse. Dette tyder på at adresser er et separat begrep fra person,<br />
person- og adressein<strong>for</strong>masjon bør skilles fra hverandre. En person vil (<strong>for</strong>håpentligvis) alltid<br />
være tilknyttet en adresse, men hvilken adresse vil variere over tid. Adressen eksisterer<br />
uavhengig av personene som bebor den. Dette kan vi uttrykke ved å lage separate klasser <strong>for</strong><br />
adresse og person, <strong>for</strong> eksempel som i Figur 9<br />
Figur 9: Essensiell personklasse<br />
33
8.2 Normalisering<br />
Det vi i praksis har gjort i eksempelet over kalles normalisering. Det finnes <strong>for</strong>melle regler <strong>for</strong><br />
hvordan normaliseringen gjennomføres, men i praksis kommer vi langt med sunn <strong>for</strong>nuft og<br />
en bevissthet om at en klasse kun skal representere ett konsept i den virkelige verden. Det<br />
finner noen <strong>for</strong>melle normaliseringsregler beskrevet i diverse litteratur, <strong>for</strong> eksempel Glushko<br />
og McGrath (2005) og Date (2003). Og i noen tilfeller kan det være aktuelt å bruke disse<br />
<strong>for</strong>melle normaliseringsreglene. Med som oftest vil modellene ”normalisere seg selv” i løpet<br />
av prosessen med å utvikle en modell, rett og slett <strong>for</strong>di det viser seg at en normalisert struktur<br />
er hensiktsmessig av andre grunner enn de rent normaliseringstekniske. Om det oppdages<br />
brudd på normal<strong>for</strong>mene er det ikke sikkert at det er hensiktsmessig å splitte opp klassene; de<br />
har tross alt fått sin <strong>for</strong>m i løpet av en bevisst <strong>modellering</strong>sprosess der det har blitt bestemt at<br />
klassene representerer virkeligheten på en hensiktsmessig måte. Dette er en avveining som må<br />
gjøres i hvert enkelt tilfelle.<br />
Retningslinje: Essensialitet<br />
• En klasse bør representere ett og bare ett konsept fra den virkelige verden<br />
<strong>Retningslinjer</strong>: Klasser<br />
• En klasse skal fange essensen til ett enkelt begrep<br />
• En klasse har vanligvis 3-15 attributter<br />
34
9 Attributter<br />
Klasser inneholder som oftest et antall attributter. Attributtene representerer egenskaper ved<br />
objekter (instanser av klassen), og vil som regel ha <strong>for</strong>skjellige verdier <strong>for</strong> ulike objekter.<br />
9.1 Attributtenes semantikk<br />
Et attributt får mye av sin semantiske mening (om ikke alt) i kraft av klassen det befinner seg i<br />
og attributtets semantiske type, i tillegg til dets navn.<br />
Attributter tilordnes alltid en semantisk type, som sier noe om attributtets generelle<br />
meningsinnhold, uavhengig av hvilken klasse det befinner seg i.<br />
Betydningen av attributtet i den konkrete klassen det tilhører presiseres gjennom attributtets<br />
navn. Navngiving er der<strong>for</strong> viktig, se kapittel 5.2. For å presisere betydningen av attributtet<br />
ytterligere kan det gis en definisjon eller en beskrivelse.<br />
I skjemaet <strong>for</strong> flyttemelding ser vi at det skal oppgis <strong>for</strong>navn, etternavn og eventuelt<br />
mellomnavn <strong>for</strong> personene som flytter. Dette kan vi betrakte som tre ulike attributter. Alle<br />
disse er en type navn, og kan der<strong>for</strong> knyttes til den semantiske typen navn. Attributtenes navn<br />
(<strong>for</strong>navn, mellomnavn og etternavn) presiserer betydningen av attributtet i klassen. Vi skal<br />
også oppgi flere opplysninger om hver person, blant annet sivilstand og fødselsnummer. En<br />
person-klasse med disse attributtene vil kunne se slik ut:<br />
Figur 10: Person-klassen<br />
Her ser vi at attributtenes typer <strong>for</strong>teller hva den generelle betydningen av attributtet er, mens<br />
navnet til attributtet <strong>for</strong>teller hva attributtet betyr i den konkrete klassen.<br />
9.2 Avledete verdier<br />
Mange skjemaer innholder felter med avledet in<strong>for</strong>masjon. Det vil si in<strong>for</strong>masjon som kan<br />
beregnes på grunnlag av verdien til andre attributter i samme eller andre objekter, <strong>for</strong><br />
eksempel summeringer.<br />
En bør vurdere nøye om det faktisk er nødvendig å ta med slike attributter i<br />
in<strong>for</strong>masjonsmodellen, da de teknisk sett inneholder overflødig in<strong>for</strong>masjon. Faktorer som<br />
kan begrunne at det er nødvendig å ta med attributter med avledede verdier:<br />
• At en vil bruke den avledete verdien til å avsløre feil i grunnlagsverdiene<br />
35
• At det er knyttet særskilte juridiske kvalitetskrav til den avledete verdien, men ikke til<br />
grunnlagsverdiene<br />
Glushko og McGrath (2005) anbefaler at en unngår avledede attributtverdier i modellen, da<br />
det bryter med essensialitetsprinsippet – en modell skal ikke inneholde dupliserte eller<br />
overflødige elementer.<br />
36
10 Arv som presisering av semantikk<br />
Spesialisering ved hjelp av arv innebærer en presisering (avgrensning) av semantikken til en<br />
klasse eller en semantisk type i <strong>for</strong>hold til en annen.<br />
10.1 Klasser<br />
Skjemaet <strong>for</strong> flyttemelding spesifiserer tre ulike spesialiseringer av adresse – gateadresse,<br />
stedsadresse og postadresse. De tre spesialiseringene innsnevrer betydningen av adressebegrepet,<br />
<strong>for</strong> eksempel er ikke alle adresser gateadresser, men alle gateadresser er adresser. I<br />
tillegg til at betydningen av klassene er ulike, så ser vi også at de har ulike attributter.<br />
10.1.1 Identifisering av arve<strong>for</strong>hold<br />
Noen ganger vil modeller få to eller flere klasser som har beslektede betydninger, men ikke er<br />
knyttet sammen i et arvehierarki. Da bør en vurdere å lage en felles superklasse <strong>for</strong> dem.<br />
Attributter som er felles flyttes opp i superklassen. Det er viktig at en slik prosess ikke bare<br />
skjer på bakgrunn av at klassene har felles attributter, men på bakgrunn av at<br />
meningsinnholdet (semantikken) til klassene faktisk er beslektet. I visse tilfeller kan det være<br />
hensiktsmessig å lage subklasser som ikke har ekstra attributter i <strong>for</strong>hold til sin superklasse,<br />
men som likevel har en annen definisjon eller andre assosiasjoner enn superklassen.<br />
Fra flyttemeldingseksempelet kjenner vi til eksempelet med steds- og gateadresser. Det er en<br />
situasjon der to klasser er semantisk lignende, slik at det vil være aktuelt å gi dem en felles<br />
superklasse, slik som i Figur 12.<br />
Retningslinje: Felles superklasse<br />
• Meningsinnholdet (semantikken) til to eller flere klasser må være beslektet <strong>for</strong> at de skal<br />
kunne ha en felles superklasse. Det er ikke nok at de har felles attributter.<br />
Retningslinje: Felles attributter<br />
• Attributter som er felles mellom subklasser skal plasseres så langt opp i arvehierarkiet<br />
som mulig<br />
Noen ganger vil det finnes klasser der de aller fleste instansene kun benytter noen få av<br />
attributtene. Det er altså mange attributter som aldri blir gitt noen verdi i de faktiske<br />
objektene. Dette kan tyde på at klassen egentlig representerer to ulike nivåer av spesialisering.<br />
Da bør det vurderes om klassen skal deles i to: en super- og en subklasse.<br />
Retningslinje: Klasser med attributter som sjelden benyttes<br />
• Når en har attributter i en klasse som er ubenyttet i mange av instansene, bør en vurdere å<br />
splitte klassen i to eller flere nivåer av spesialisering.<br />
10.1.2 Attributter i subklasser<br />
Spesialiserte klasser arver alle attributtene fra sin superklasse. Ofte vil en ønske å tilføye<br />
ekstra attributter <strong>for</strong> den spesialiserte klassen, slik som i Figur 12.<br />
I eksempelet betyr det i praksis at klassen Gateadresse har attributtene postnr, poststed,<br />
gatenavn, husnummer, husbokstav, bolignr og tilleggsadresse. Attributter i en subklasse bør<br />
37
ha navn som ikke er brukt i dens superklasser. Grunnen til dette er at en i praksis vil få flere<br />
attributter med samme navn i subklassen på grunn av at attributtene arves fra superklassen.<br />
10.1.3 Alias <strong>for</strong> attributter<br />
I subklasser kan en definere et attributt som alias <strong>for</strong> et attributt i superklassen. Det betyr at<br />
attributtet i subklassen erstatter attributtet som arves fra superklassen. Dette gjøres typisk <strong>for</strong><br />
identifikatorer. For eksempel kan en ha den generelle identifikatoren id i superklassen Subjekt,<br />
og i subklassen Person ha fødselsnummer som alias <strong>for</strong> id. Det betyr da at fødselsnummer<br />
overtar plassen til id i Person-klassen. Visuelt ser dette slik ut:<br />
Figur 11: Bruk av alias <strong>for</strong> attributter<br />
Attributter som er alias <strong>for</strong> et annet, må ha en semantisk type som er subtype av typen til<br />
attributtet den erstatter. I eksempelet er både fødselsnummer og organisasjonsnummer<br />
subtyper av identifikator.<br />
10.1.4 Flyttemeldingseksempelet<br />
Ved å benytte reglene som er diskutert over kan vi lage følgende modell <strong>for</strong> adressebegrepene<br />
i flyttemeldinga:<br />
Figur 12: Spesialisering – Postadresse, gateadresse og stedsadresse er en spesialisering av Adresse<br />
38
10.1.5 Form på arvehierarki<br />
Arvehierarki kan både vokse i dybden eller i bredden. Sammenlignet med biologisk slektskap<br />
er dette slik:<br />
• Bredt arvehierarki<br />
o Mange søsken, men få ”generasjoner”, altså få arvenivåer.<br />
• Dypt arvehierarki<br />
o Mange generasjoner, men få søsken på hvert nivå.<br />
Figur 13: Eksempler på henholdsvis brede og dype arvehierarkier<br />
10.1.6 Konsekvenser av brede/dype arvehierarki<br />
Arv er en av mekanismene som UML stiller til rådighet <strong>for</strong> å beskrive virkeligheten. Vi bør<br />
der<strong>for</strong> utnytte denne mekanismen <strong>for</strong> å lage beskrivelsene så gode som mulig. Hvis begreper i<br />
virkeligheten faktisk er spesialiseringer av et annet begrep, bør dette vises i klassediagrammet.<br />
Et bredt og grunt arvehierarki kan der<strong>for</strong> være et symptom på en ufullstendig analyse av<br />
slektskap mellom begreper.<br />
Et arvehierarki med svært mange søsken på ett nivå kan også indikere at en har modellert<br />
<strong>for</strong>skjellige instanser av en klasse, og at nivået der<strong>for</strong> er unødvendig.<br />
For eksempel kan en tenke seg at klassen Kommune har subklassene Bergen og Ringerike. De<br />
to subklassene beskriver kun én konkret <strong>for</strong>ekomst av en kommune. Hvis det kun kan bli én<br />
instans (det vil kun finnes ett objekt) av hver klasse, bør det undersøkes om man egentlig har<br />
modellert en instans i stedet <strong>for</strong> en klasse. I dette eksempelet bør der<strong>for</strong> subklassene Bergen<br />
og Ringerike fjernes.<br />
Retningslinje: Klasser med kun én instans<br />
• Hvis det finnes klasser der det kun kan <strong>for</strong>ekomme én instans, bør en vurdere om<br />
klassehierarkiet har <strong>for</strong> mange spesialiseringer<br />
På den andre siden kan alt<strong>for</strong> dype arvehierarkier føre til uoversiktlige modeller som er<br />
vanskelige å lese. En klarer ikke å danne seg et fullstendig bilde av hva en klasse faktisk<br />
representerer uten å ta med alle dens superklasser i vurderingen. Det blir spesielt vanskelig å<br />
lese modellen hvis det er mange assosiasjoner knyttet til superklasser på ulike nivåer, siden<br />
assosiasjoner også arves. En bør alltid ha i tankene at <strong>for</strong>målet med modellene er å <strong>for</strong>midle<br />
in<strong>for</strong>masjon om in<strong>for</strong>masjonsstrukturer. Lite lesbare modeller gjør <strong>for</strong>midlingen vanskelig.<br />
Dette kan tale <strong>for</strong> å begrense dybden på arvehierarki.<br />
39
10.2 Spesialisering av semantiske typer<br />
Arv mellom semantiske typer betyr at den typen som arver er en semantisk begrensning i<br />
<strong>for</strong>hold til den typen det arves fra. ”fødselsnummer” er aktuell som semantisk type som arver<br />
fra den grunnleggende semantiske type ”identifikator”. Når den semantiske typen B arver fra<br />
den semantiske typen A, betyr det at den semantiske meningen i B er en begrensning i <strong>for</strong>hold<br />
til den semantiske meningen til A. ”A23” vil <strong>for</strong> eksempel være lovlig verdi <strong>for</strong> den<br />
semantiske typen identifikator, men vil ikke være en lovlig verdi <strong>for</strong> den semantiske typen<br />
fødselsnummer.<br />
Alle brukere av SERESuml kan lage nye semantiske typer, men nye typer må være subtyper<br />
av en allerede eksisterende semantiske type. En bør alltid undersøke nøye om det er mulig å<br />
bruke en eksisterende semantisk type, før en oppretter en ny. Lag en ny semantisk type hvis<br />
det er mulig å gi typen en definisjon som er uavhengig av klassen det skal stå i og helt<br />
bestemte attributter den er tenkt brukt <strong>for</strong>.<br />
<strong>Retningslinjer</strong>: Semantiske typer i in<strong>for</strong>masjonsmodellen<br />
• Bruk generelle semantiske typer<br />
• En ny semantisk type må være en subtype av en eksisterende semantisk type<br />
• En <strong>for</strong>utsetning <strong>for</strong> å lage en nye semantisk type er at det er mulig å skrive en klar,<br />
kortfattelig, og presis definisjon.<br />
40
11 Assosiasjoner<br />
Alle klasser i in<strong>for</strong>masjonsmodellen skal være knyttet til minst én annen klasse, enten via<br />
assosiasjon eller med arv. Dette <strong>for</strong> å sikre at modellen ”henger sammen”, og at det finnes<br />
knytninger til grunndata.<br />
Retningslinje: Assosiasjoner mellom klasser<br />
• En klasse i in<strong>for</strong>masjonsmodellen må være knyttet til minst en annen klasse i<br />
in<strong>for</strong>masjonsmodellen med assosiasjon og/eller arv.<br />
11.1 Urettet assosiasjon<br />
En urettet assosiasjon viser at det er en sammenheng mellom to objekter, og at begge kjenner<br />
til eksistensen av det andre objektet.<br />
Figur 14: Urettet assosiasjon<br />
I eksempelet over går det an å finne personer som deltar i en flytting, og det er også mulig å<br />
finne alle flyttingene en person har deltatt i.<br />
Assosiasjonen tolkes slik:<br />
• En person deltar i en eller flere flyttinger<br />
• En flytting gjelder en eller flere personer<br />
11.2 Rettet assosiasjon<br />
I in<strong>for</strong>masjonsmodeller skal det <strong>for</strong>trinnsvis benyttes urettede assosiasjoner. Rettede<br />
assosiasjoner bør kun brukes unntaksvis. Rettede assosiasjoner beskrives nærmere i kapittel<br />
Feil! Fant ikke referansekilden. i <strong>for</strong>bindelse med dokument<strong>modellering</strong>.<br />
11.3 Kardinalitet<br />
I SERES er spesifisering av kardinalitet <strong>for</strong> assosiasjonsender påkrevd, og standard UMLnotasjon<br />
benyttes.<br />
Evnen til å generalisere til riktig nivå er viktig ved fastsettelse av kardinalitet. Hva som er<br />
riktig kardinalitet i en konkret modell vil blant annet avhenge av hvilket tidsperspektiv vi har<br />
når vi modellerer (i øyeblikket eller over tid).<br />
41
For eksempel må vi bestemme om modellen av flyttemelding skal vise et øyeblikksbilde –<br />
”situasjonen når en bestemt flyttemelding leveres”, eller om modellen skal håndtere endringer<br />
over tid – ”summen av alle flyttemeldinger”. Hvis vi velger å modellere et øyeblikksbilde, er<br />
det tilstrekkelig å si at en person er tilknyttet kun én flytting – den som <strong>for</strong>egår i øyeblikket.<br />
Hvis vi derimot skal ha et lengre tidsperspektiv, må vi vise at en person kan ha flyttet flere<br />
ganger, og dermed være tilknyttet flere flyttinger.<br />
Når vi skal lage et klassediagram, må vi passe på at diagrammet kan håndtere alle de mulige<br />
kombinasjonene i den virkeligheten som vi har valgt å modellere.<br />
I de fleste tilfellene er det mest hensiktsmessig å bruke de generelle identifikatorene <strong>for</strong><br />
kardinalitet (0, 1, *) i in<strong>for</strong>masjonsmodellen. To mulige varianter <strong>for</strong> kardinaliteten til<br />
assosiasjonen mellom person og flytting blir slik:<br />
Figur 15: ”Øyeblikksbilde”-modell av flytting<br />
Figur 16: "Over tid"-modell av flytting<br />
Det som er et 1:m <strong>for</strong>hold i et øyeblikksbilde, kan ofte gå over til å bli m:n <strong>for</strong>hold i en modell<br />
som skal representere virkeligheten over tid. 1:1 <strong>for</strong>hold vil kunne bli 1:m <strong>for</strong>hold på samme<br />
måten. Vær der<strong>for</strong> alltid bevisst på om modellen er et øyeblikksbilde eller om den skal kunne<br />
representere at ting <strong>for</strong>andrer seg over tid.<br />
Når en modellerer konkrete blanketter, vil en ofte finne 1-til-mange (1:m) <strong>for</strong>hold. For<br />
eksempel kan en bedrift rapportere inn in<strong>for</strong>masjon om mange tilsatte. Det vil ofte være slik at<br />
når en går fra en spesifikk blankett til en generell, skjemauavhengig beskrivelse av<br />
virkeligheten, så <strong>for</strong>andrer 1:m-<strong>for</strong>holdet seg til et mange-til-mange-<strong>for</strong>hold (m:n).<br />
I SERES ønsker vi vanligvis å lage in<strong>for</strong>masjonsmodeller som er så generelle som mulig.<br />
Der<strong>for</strong> bør kardinaliteten i de fleste tilfellene være slik at den er i stand til å representere<br />
42
endringer som skjer over tid, og den bør håndtere virkeligheten utover det som er beskrevet i<br />
en enkelt blankett.<br />
Retningslinje: Kardinalitet <strong>for</strong> assosiasjoner i in<strong>for</strong>masjonsmodell<br />
• Kardinalitet skal oppgis <strong>for</strong> begge ender av en assosiasjon<br />
• I de fleste tilfellene bør kardinaliteten tillate representasjon av endringer over tid<br />
• I de fleste tilfeller bør kardinaliteten tillate representasjon av objekter fra mer enn en<br />
konkret blankett<br />
11.4 Flere assosiasjoner mellom to klasser<br />
I noen tilfeller eksisterer det to eller flere <strong>for</strong>hold mellom objekter, med ulik betydning. Disse<br />
modelleres da som separate assosiasjoner. Eksempel: To personer kan være i slekt med<br />
hverandre, men en person kan også være arbeidsgiver <strong>for</strong> en annen. Dette er to separate<br />
<strong>for</strong>hold: slektskap og arbeids<strong>for</strong>hold. Andre ganger kan flere beslektete <strong>for</strong>hold mellom<br />
klasser beskrives med assosiasjonsklasser og kodelister.<br />
11.5 Assosiasjonsklasser<br />
Figur 17: Assosiasjonsklasse<br />
I flyttemeldingen har vi sett at hver flytting har et <strong>for</strong>hold til minst to adresser: gammel<br />
adresse og ny adresse, og i noen tilfeller også postadresse. Det går ikke an å se på en adresse i<br />
seg selv om den er en gammel eller en ny adresse <strong>for</strong> en person, og adressen kan spille ulike<br />
roller <strong>for</strong> <strong>for</strong>skjellige flyttinger – noen flytter fra et hus, mens andre flytter til huset.<br />
Spesifisering av gammel og ny adresse kan der<strong>for</strong> betraktes som en egenskap ved<br />
assosiasjonen mellom flytting og adresse, og dermed representeres som en assosiasjonsklasse.<br />
Vanligvis vil assosiasjonsklasser ha relativt få attributter. Hvis de har flere enn ca 2-3<br />
attributter, vil det ofte være et tegn på at vi har innført et nytt konsept i modellen, som kanskje<br />
heller skulle vært modellert som en selvstendig klasse med assosiasjoner til de to opprinnelige<br />
klassene. Av samme grunn vil heller ikke assosiasjonsklassene inngå i arve<strong>for</strong>hold eller ha<br />
assosiasjoner til andre klasser.<br />
Regler: Assosiasjonsklasser<br />
• En assosiasjonsklasse skal vanligvis ikke ha mer enn 3 attributter<br />
• En assosiasjonsklasse kan ikke ha arve<strong>for</strong>hold eller vanlige assosiasjoner til andre klasser<br />
43
11.5.1 Attributter i assosiasjonsklasser<br />
Prinsipielt er det to hovedtyper attributter i assosiasjonsklasser:<br />
A: Attributtet beskriver et antall ulike assosiasjoner som kan <strong>for</strong>ekomme mellom<br />
objektene<br />
I eksempelet med assosiasjonen med flytting og adresse, er spesifisering av adresserolle et<br />
eksempel på dette. Attributtet må være med på grunn av at hver flytting kan ha minst to<br />
adressetilknytninger. Hver <strong>for</strong>ekomst av Flytting kan være knyttet til flere adresser, og hver<br />
assosiasjon må være spesifisert ved sin adresserolle. Hver <strong>for</strong>ekomst av assosiasjonen mellom<br />
to objekter har da en litt ulik semantisk betydning. Eksempel: en gammel adresse har en annen<br />
betydning enn en ny adresse eller en postadresse.<br />
Noen ganger kan en uttrykke det samme ved å benytte flere assosiasjoner mellom to klasser.<br />
Hvis antallet kan variere, og det er mer enn noen få (2-3) assosiasjoner er det <strong>for</strong>etrukket å<br />
benytte en assosiasjonsklasse frem<strong>for</strong> flere assosiasjoner.<br />
B: Tilleggsopplysninger om selve relasjonen.<br />
Datoen assosiasjonen gjelder fra, er et eksempel på en tilleggsopplysning om assosiasjonen.<br />
Denne in<strong>for</strong>masjonen gis <strong>for</strong> hver <strong>for</strong>ekomst av en assosiasjon. Som nevnt over kan en<br />
<strong>for</strong>ekomst av Person være knyttet til flere adresser, og <strong>for</strong> hver slik knytning (assosiasjon)<br />
kunne vi tenke oss at vi ønsker å lagre en fradato. For eksempel kan det spesifiseres at den<br />
nye adressen til en bestemt person begynte å gjelde den 2.4.2005.<br />
Begge typer attributter kan finnes i den samme assosiasjonsklassen. For eksempel kan en<br />
tenke seg at det er ønskelig både å skille mellom type assosiasjon og spesifisere når en<br />
assosiasjon begynte å gjelde.<br />
44
12 Diagrammer<br />
Når en modellerer et domene, er det teknisk mulig å lage ett stort diagram som viser alle<br />
klasser, typer og assosiasjoner <strong>for</strong> domenet. I praksis er det likevel i de fleste tilfellene mest<br />
hensiktsmessig å lage flere diagrammer som til sammen viser domenets in<strong>for</strong>masjonsmodell.<br />
Kriteriene <strong>for</strong> oppdeling av modellen i ulike diagrammer er ikke entydige, behovene vil være<br />
<strong>for</strong>skjellige.<br />
En hovedregel er at diagrammet skal kommunisere sitt meningsinnhold til leseren på en god<br />
måte. Gjør der<strong>for</strong> ikke diagrammet så komplekst at det blir ”uleselig”, <strong>for</strong> eksempel ved svært<br />
mange assosiasjoner og arvepiler som krysser hverandre, og et stort antall klasser.<br />
Menneskehjernen klarer som en tommelfingerregel å håndtere 7 +/- 2 visuelle elementer om<br />
gangen. En kan tenke seg ulike kriterier <strong>for</strong> oppdeling i ulike diagrammer. Noen slike kriterier<br />
er:<br />
• Oppdeling etter blankett<br />
• Oppdeling etter avdeling<br />
• Oppdeling etter saksområde<br />
• Ett diagram som viser arvestrukturer (hva noe er), og andre diagrammer som viser<br />
bruk av klassene, med assosiasjoner.<br />
45
13 Oppsummering av eksempel Flyttemelding<br />
Diagrammet under viser en av mange mulige modeller <strong>for</strong> in<strong>for</strong>masjonsinnholdet i<br />
flyttemeldingen, slik den ble presentert i kapittel 5.<br />
.<br />
Figur 18: In<strong>for</strong>masjonsmodell <strong>for</strong> flyttemelding<br />
Denne modellen er ut<strong>for</strong>met uten tanke på bruk av grunndataelementer. I kapittel 15.2.1<br />
modifiseres modellen slik at den gjenbruker grunndataelementer.<br />
46
14 Tabeller<br />
Tabeller <strong>for</strong>ekommer i mange blanketter. Normalt er disse todimensjonale, men de kan også<br />
ha flere enn to dimensjoner via en spesiell oppstilling. I elektroniske blanketter representeres<br />
den tredje dimensjonen typisk ved arkfaner.<br />
Når vi skal uttrykke tabeller i en modell, kan vi representere hver av tabelldimensjonene med<br />
et attributt og også selve tabellverdien med et attributt. Vi tenker oss en tabell <strong>for</strong><br />
innrapportering av antall innbyggere <strong>for</strong> hvert fylke og ulike år:<br />
Fylke/Årstall 2000 2001 2002 2003 2004 2005 2006<br />
Østfold<br />
Akershus<br />
Oslo/Akershus<br />
Oslo<br />
Hedmark<br />
Oppland<br />
Buskerud<br />
Vestfold<br />
Telemark<br />
Aust-Agder<br />
Vest-Agder<br />
Rogaland<br />
Hordaland<br />
Sogn og Fjordane<br />
Møre og Romsdal<br />
Sør-Trøndelag<br />
Nord-Trøndelag<br />
Nordland<br />
Troms<br />
Finnmark<br />
Figur 19: Tabell <strong>for</strong> angivelse av antall innbyggere i alle fylker <strong>for</strong> ulike år.<br />
Dette kan modelleres med følgende klasse:<br />
Figur 20: Modell <strong>for</strong> innbyggere i ulike fylker <strong>for</strong> ulik år.<br />
Attributtet fylke av semantisk type navn representerer den vertikale tabelldimensjonen, mens<br />
årstall av semantisk type år står <strong>for</strong> den horisontale dimensjonen. Attributtet innbyggere av<br />
semantisk type antall svarer til innholdet i tabellen. Flere dimensjoner i tabellen kan<br />
modelleres med tilsvarende ekstra attributter i klassen.<br />
47
I flyttemeldingseksempelet kan vi betrakte oversikten over personer som en tabellstruktur.<br />
Klassen Person har kolonnene i tabellen som attributter. Radene i tabellen representeres ved at<br />
assosiasjonen mellom Flytting og Person tillater at det eksisterer mange personer <strong>for</strong> hver<br />
flytting.<br />
48
15 Grunndata og gjenbruk<br />
Det er viktig å gjenbruke klasser <strong>for</strong> å få til semantisk interoperabilitet og samordning. Det er<br />
ikke ønskelig at det opprettes en ny klasse som prøver å uttrykke det samme som en<br />
eksisterende klasse.<br />
I <strong>modellering</strong>sprosessen kan en gjenbruke klasser både fra egne og andres modeller, og fra<br />
grunndatamodellen.<br />
15.1 Grunndatamodell<br />
Grunndata er et sett med felles dataelementer som er mye brukt i mange <strong>for</strong>skjellige domener<br />
(etater). Typisk vil dette være felter som en vil kunne <strong>for</strong>vente er <strong>for</strong>håndsutfylte i skjemaer.<br />
Det utarbeides in<strong>for</strong>masjonsmodeller som beskriver sentrale egenskaper ved personer,<br />
enheter, bedrifter, adresser og eiendommer. De mest brukte klassene og attributtene er samlet<br />
i en felles grunndatamodell.<br />
Den felles grunndatamodellen skal fryses i fastlagte perioder, og endringer i modellen skal<br />
gjøres etter fastlagte prosedyrer.<br />
Figur 21: Foreløpig modell over de mest sentrale grunndata (versjon 0.1)<br />
Grunndatamodellen i produksjonsversjonen av systemet vil kunne avvike noe fra modellen<br />
som er gjengitt over.<br />
15.2 Gjenbruk av elementer i in<strong>for</strong>masjonsmodellen<br />
15.2.1 Eksempel: Gjenbruk i modell av flyttemelding<br />
Klassediagrammet under viser et eksempel på en modifisert modell <strong>for</strong> flyttemelding som<br />
benytter grunndataelementer i stor grad.<br />
Person-klassen i grunndata manglet en del in<strong>for</strong>masjonselementer som er nødvendige i<br />
flyttemeldinga, der<strong>for</strong> har vi laget en subklasse PersonSomFlytter 10 .<br />
10 Siden grunndata-klassene og klassene som benyttes i modellen av flyttemeldingsskjemaet ligger i ulike pakker,<br />
kunne vi ha kalt klassen <strong>for</strong> Person, selv om grunndata-klassen også heter Person.<br />
49
Adressestrukturen i grunndatamodellen har likhetstrekk med adressestrukturen i vår tidligere<br />
flyttemeldingsmodell, men en del attributter <strong>for</strong>deler seg litt annerledes. Vi antar i dette<br />
tilfellet at adresse-strukturen i grunndatamodellen stort sett kan erstatte vår adressestruktur. Vi<br />
har likevel laget noen subklasser av adresseklassene i grunndatamodellen <strong>for</strong> å få med<br />
tilleggsadresse og land. Noen attributter i grunndatamodellen har også andre navn enn<br />
attributtene i vår modell, men ved å se på de semantiske typene og på definisjonene til<br />
attributtene og klassene, kan vi se om de likevel representerer det samme.<br />
Figur 22: Flyttemelding modellert med grunndata<br />
Diagrammet i Figur 22 ser ved første øyekast mye mer komplisert ut enn vårt utkast i Figur<br />
18, på grunn av at vi har med en del attributter og superklasser fra grunndatamodellen som i<br />
praksis ikke er relevant <strong>for</strong> flyttemeldinger. Mye av denne kompleksiteten kan vi gjemme i<br />
dokumentmodellen ved å skjule attributter og fjerne overordnede klasser. Dette vises i kapittel<br />
16.5.<br />
I de neste delkapitlene diskuterer vi enkelte aspekter ved gjenbruk av modellelementer<br />
nærmere, og henviser tilbake til eksempelet over.<br />
15.2.2 Grunndata<br />
For å fremme samordning av data bør en gjenbruke modellelementer fra grunndatamodellen<br />
hvis det er mulig. Domenemodeller som skal opp på kon<strong>for</strong>mt eller harmonisert nivå bør ha<br />
en kobling til en eller flere grunndataklasser ved hjelp av arv eller assosiasjoner.<br />
Så tidlig som mulig i <strong>modellering</strong>sprosessen bør en identifisere in<strong>for</strong>masjonselementer som<br />
allerede finnes i grunndatamodellen. Dette kan være både klasser og attributter. Noen ganger<br />
lar det seg gjøre å benytte grunndataklasser i domenemodellen u<strong>for</strong>andret. Andre ganger er<br />
det nødvendig med flere attributter <strong>for</strong> å beskrive en klasse i domenemodellen enn dem som<br />
50
finnes i grunndatamodellen. I slike tilfeller er det mest hensiktsmessig å lage en subklasse av<br />
en grunndataklasse.<br />
<strong>Retningslinjer</strong>: Gjenbruk av grunndata<br />
• Identifiser elementer som kan gjenbrukes fra grunndatamodellen som så tidlig som mulig<br />
• Tilpasning av domenemodellen til grunndatamodellen fremmer gjenbruk<br />
Tilsvarende er det ikke alltid vi trenger alle attributtene fra en grunndataklasse i<br />
domenemodellen. Da kan grunndataklassen brukes slik den <strong>for</strong>eligger. De overflødige<br />
attributtene fra grunndatamodellen kan senere skjules i dokumentmodellene som baserer seg<br />
på domenemodellen, slik at de overflødige attributtene ikke blir med i<br />
meldingsspesifikasjonene. Framgangsmåten <strong>for</strong> å fjerne attributter i dokumentmodeller er<br />
beskrevet i kapittel 16.2.<br />
Noen ganger er det som ser ut til å være et attributt i domenemodellen, representert ved en<br />
klasse i grunndatamodellen, eller omvendt. Som en generell regel er det alltid gunstigst å<br />
tilpasse domenemodellen til grunndatamodellen.<br />
Hvis en domenemodell <strong>for</strong> eksempel har et attributt som representerer kommune, går det an å<br />
lage en assosiasjon til Kommune-klassen i grunndatamodellen i stedet <strong>for</strong> attributtet, slik som<br />
vist i Figur 22.<br />
På denne måten taper en ikke in<strong>for</strong>masjonsrikdom, og sørger samtidig <strong>for</strong> å øke<br />
gjenbrukbarheten i modellen ved å peke til et eksisterende dataelement (klassen Kommune).<br />
Dermed uttrykker modellen at det en faktisk mener med kommune, er det samme som det alle<br />
andre som refererer til standardklassen Kommune mener. Det er viktig å <strong>for</strong>sikre seg om at<br />
begrepet i grunndatamodellen faktisk er de samme som begrepet i domenemodellen ved å<br />
sjekke definisjonen til klassen.<br />
Den motsatte situasjonen vil også oppstå, et begrep i virkeligheten kan være representert ved<br />
en klasse i domenemodellen og et attributt i grunndatamodellen. Koblingen mellom klassen i<br />
domenemodellen og attributtet i grunndatamodellen vil da være ivaretatt ved at et attributt i<br />
domeneklassen har et attributt av samme semantiske type som attributtet i grunndatamodellen.<br />
15.2.3 Gjenbruk av egne in<strong>for</strong>masjonselementer<br />
Foreløpig ikke skrevet<br />
15.2.4 Gjenbruk av andres in<strong>for</strong>masjonselementer<br />
Foreløpig ikke skrevet<br />
15.3 Oppsummering av in<strong>for</strong>masjons<strong>modellering</strong><br />
Modelleringen skal gi minst to ulike resultater; en in<strong>for</strong>masjonsmodell som er en språklig<br />
godt <strong>for</strong>ankret, domene-harmonisert og skjemauavhengig beskrivelse av virkeligheten, og<br />
som kan danne grunnlaget <strong>for</strong> en analyse av semantisk interoperabilitet.<br />
In<strong>for</strong>masjons<strong>modellering</strong>en skal også gjøre det mulig å definere et sett med<br />
dokumentmodeller. Det er trolig lettest å oppnå disse <strong>for</strong>delene ved å gjøre<br />
<strong>modellering</strong>sarbeidet i en bestemt rekkefølge:<br />
1. Begynn med de enkelte beskrivelsene av den virkeligheten som skal modelleres. Dette<br />
vil ofte være ett eller flere skjemaer, men det kan også være eksisterende<br />
in<strong>for</strong>masjonsmodeller, tekstdokumenter eller lignende. Lag beskrivelse (modell) av<br />
51
innholdet i beskrivelsen (skjemaet) som er så generell som mulig. Kontroller at<br />
modellen representerer alle in<strong>for</strong>masjonselementene. Hvis det er flere skjema eller<br />
andre beskrivelser som skal modelleres kan de godt modelleres i ulike diagram, men<br />
det er også mulig lage et felles diagram. Det som er viktig, er å gjenbruke klasser<br />
mellom de ulike diagrammene.<br />
2. Kontroller at den felles modellen inneholder alle in<strong>for</strong>masjonselementer (attributter,<br />
klasser) som er nødvendige <strong>for</strong> å representere in<strong>for</strong>masjonen i skjemaene som er<br />
modellert. Kontroller dette mot ett og ett skjema om gangen.<br />
3. Undersøk hvorvidt in<strong>for</strong>masjonsstrukturen som er modellert legger til rette <strong>for</strong><br />
gjenbrukbarhet, og modifiser eventuelt modellen <strong>for</strong> å gjøre in<strong>for</strong>masjonsstrukturen<br />
mer gjenbrukbar. Dette trinnet vil muligens ikke gjennomføres i alle tilfeller, men det<br />
anbefales sterkt å gjøre det ved senere revisjoner av modellen.<br />
52
16 Dokument<strong>modellering</strong><br />
Ved generering av en dokumentmodell fra in<strong>for</strong>masjonsmodellen, vil modellen i<br />
utgangspunktet være helt lik. Alle behov i dokumentmodellen sett fra et <strong>modellering</strong>sståsted<br />
skal være dekket av in<strong>for</strong>masjonsmodellen. Du har kun lov til å lage et sant subsett av<br />
in<strong>for</strong>masjonsmodellen. For å tilpasse dokumentmodellen til sitt <strong>for</strong>mål må den bearbeides i<br />
<strong>for</strong>m av at:<br />
• urettede assosiasjonene må endres<br />
• kardinalitet på assosiasjoner kan innskrenkes eventuelt nullstilles<br />
• irrelevante attributter bør skjules<br />
• semantiske typer ved behov ytterligere spesialiseres<br />
• eventuelle rotklasser spesifiseres<br />
16.1 Assosiasjoner<br />
I dokumentmodellen er assosiasjoner både representert med grafiske assosiasjonsstreker (som<br />
i in<strong>for</strong>masjonsmodellen) og som attributter i de klassene som assosiasjonen knytter sammen.<br />
En klasses eventuelle assosiasjoner til andre klasser som ikke inngår i dokumentmodellen vil<br />
også vises som attributter, men vil være indikert deaktivert ved at kardinaliteten er satt til null.<br />
16.1.1 Rettede assosiasjoner<br />
I dokumentmodellen må assosiasjonen omgjøres til å være rettet. Retning på assosiasjoner kan<br />
påvirkes av hvilket skjema som modelleres og eget ståsted. Er det arbeidstaker eller<br />
arbeidsgiver som ”eier” arbeids<strong>for</strong>holdet? I dokumentmodellen settes retningen ut fra<br />
modellens spesifikke kontekst og ønsket representasjon i meldingsspesifikasjonen.<br />
I første versjon av SERES er rettede assosiasjoner den eneste typen assosiasjon som er<br />
implementert i den delen av systemet som genererer meldingsspesifikasjoner. SERES støtter<br />
bruk av aggregat og komposisjon i dokumentmodellene, men systemet støtter <strong>for</strong>eløpig ikke<br />
disse konstruksjonene i generering av meldingsspesifikasjoner. Dette innebærer at rettede<br />
assosiasjoner, aggregering og komposisjon blir seende likt ut i meldingsspesifikasjonene.<br />
Derav regelen om å bruke denne assosiasjonstypen. Det er imidlertid ønskelig med mer<br />
fleksibilitet i generering av meldingsspesifikasjoner. Aggregat og komposisjon vil der<strong>for</strong><br />
støttes i senere utgaver av SERES, og da vil regelen <strong>for</strong> bruk av assosiasjoner i<br />
dokumentmodellen utvides.<br />
Retningslinje:<br />
• Urettede assosiasjoner må omgjøres til rettede assosiasjoner (aggregering og<br />
komposisjon kan benyttes)<br />
16.1.2 Kardinalitet<br />
Kardinaliteten til en assosiasjonsende kan gjøres strengere (mer begrenset) i en<br />
dokumentmodell og <strong>for</strong>hold til utgangspunktet fra in<strong>for</strong>masjonsmodellen. Det betyr at<br />
minimum kardinalitet kan økes (typisk fra null) og maksimum kardinalitet kan reduseres<br />
(typisk fra ubegrenset). Kardinaliteten på ”assosiasjonsattributtet” kan også settes til null <strong>for</strong> å<br />
53
deaktivere assosiasjonen. En viktig <strong>for</strong>utsetning <strong>for</strong> dette er at kardinaliteten ikke er satt til<br />
minimum én i in<strong>for</strong>masjonsmodellen.<br />
Retningslinje:<br />
• Kardinaliteten kan gjøres strengere<br />
16.2 Skjuling av attributter<br />
I in<strong>for</strong>masjonsmodellen opp<strong>for</strong>dres det til gjenbruk av in<strong>for</strong>masjonselementer. Dette vil i<br />
mange tilfeller innebære at modellereren gjenbruker klasser fra andre domener som<br />
inneholder flere attributter enn det som er relevant i modellererens domene. Det er heller ikke<br />
alltid at alle attributter som inngår i en in<strong>for</strong>masjonsklasse, selv om den er laget innen<strong>for</strong> eget<br />
domene, er relevant i den videre prosessen i dokument<strong>modellering</strong>en. Slike attributter skjules<br />
i dokumentmodellen ved å sette kardinaliteten til null.<br />
Retningslinje:<br />
• Irrelevante attributter bør skjules<br />
16.3 Semantiske typer<br />
In<strong>for</strong>masjonsmodellen har to hovedmål:<br />
1. Den skal støtte en analyse <strong>for</strong> å finne ut om det er potensial <strong>for</strong> interoperabilitet.<br />
2. Den skal støtte generering av dokumentmodeller og derav meldingsspesifikasjoner.<br />
Punkt én indikerer at de semantiske typene må være tilstrekkelig semantisk spesifisert <strong>for</strong> å<br />
unngå mis<strong>for</strong>ståelser i en slik prosess. Neste punkt endrer perspektivet på semantiske typer.<br />
Nå blir kobling mot <strong>for</strong>mat og muligheter <strong>for</strong> validering mer relevant. En motivasjon <strong>for</strong> å<br />
spesialisere kan være at samme semantiske type brukt <strong>for</strong> <strong>for</strong>skjellige klasseattributter i<br />
modellen ønskes validert ulikt. Ettersom en semantisk type bare kan være koplet til ett <strong>for</strong>mat,<br />
innebærer det at den må spesialiseres <strong>for</strong> å få til dette.<br />
Der<strong>for</strong> er det mulig ytterligere å spesialisere semantiske typer i dokumentmodellen ut fra et<br />
<strong>for</strong>materings- og valideringsbehov. Spesialiseringer ut fra slike hensyn bør unngås i<br />
in<strong>for</strong>masjonsmodellen. Indikasjoner på at en semantisk type er blitt <strong>for</strong> spesialisert i<br />
in<strong>for</strong>masjonsmodellen er at det bare er en eller få <strong>for</strong>ekomster av denne, særlig hvis<br />
<strong>for</strong>ekomstene kun brukes finnes i én klasse.<br />
De semantiske typene kan spesialiseres videre i dokumentmodellen, <strong>for</strong> eksempel hvis det<br />
trengs spesielle valideringsregler eller en bestemt kodeliste <strong>for</strong> et attributt. Attributter vil som<br />
regel dekkes tilfredsstillende av de semantiske typene beløp, dato og navn uten spesialisering,<br />
både i in<strong>for</strong>masjonsmodellen og i dokumentmodeller. Når det gjelder bruk av de semantiske<br />
typene kode, mål og identifikator, må vi bygge ut spesialiseringshierarkier av disse <strong>for</strong> bruk i<br />
dokumentmodeller. Dette <strong>for</strong>di en her må kunne serialisere de semantiske typene til ulike<br />
representasjoner avhengig av semantikken i attributtet. Spesialisering av en semantisk type vil<br />
ofte være nødvendig når klassene i en dokumentmodell inneholder flere ulike attributter som<br />
benytter samme semantiske type (kode, mål eller identifikator).<br />
<strong>Retningslinjer</strong>: Semantiske typer i dokumentmodell<br />
• Semantiske typer kan spesialiseres i en dokumentmodell <strong>for</strong> å gjøre ønsket grad av<br />
validering mulig<br />
• En ny semantisk type må være en subtype av semantisk type fra in<strong>for</strong>masjonsmodellen<br />
54
16.4 Rotklasse<br />
I dokumentmodellen kan en eller flere klasser defineres som rotklasser. Dette kan være<br />
nødvendig <strong>for</strong> å gjøre modellen presis nok til at den kan danne grunnlaget meldingsmodeller.<br />
Klasser som settes som rotklasse i dokumentmodellen danner det ”ytterste” nivået i<br />
meldingsspesifikasjonene som baseres på dokumentmodellen. Dette samsvarer på mange<br />
måter logisk med ”hvem sitt perspektiv” en dokumentmodell har. I praksis sier en at<br />
rotklassen er ”det meldingen handler om”. Som en hovedregel vil assosiasjonene være rettet<br />
fra rotklassen.<br />
Retningslinje:<br />
• Rotklasser kan defineres dersom hensiktsmessig<br />
16.5 Dokumentmodell av flyttemelding<br />
Figur 23 viser en dokumentmodell basert på in<strong>for</strong>masjonsdiagrammet av flyttemeldingen<br />
(Figur 22). Her er superklasser vi ikke trenger blitt skjult, og ikke-relevante attributter er grået<br />
ut. Klassene har også automatisk fått attributter som representerer assosiasjonene. Alle<br />
assosiasjoner er videre gjort rettet. Dette innebærer at et objekt kan kjenne til eksistensen av<br />
objekter av den/de klassene pilene peker på. For eksempel er det kun <strong>for</strong>ekomster av klassen<br />
Adresse som kjenne til et objekt av klassen Matrikkelnummer. Alle assosiasjoner knyttet til<br />
klassen Flytting, peker fra Flytting og til de andre klassene. Grunnen til dette er at klassen<br />
Flytting er antatt å være ”hovedtema” <strong>for</strong> flyttemeldingsskjemaet og dermed også <strong>for</strong> denne<br />
dokumentmodellen. Klassen er i tillegg satt som rotklasse. Klassen danner da det ”ytterste”<br />
nivået i meldingsspesifikasjonen som lages med utgangspunkt i dokumentmodellen.<br />
Denne modellen kan nå danne utgangspunkt <strong>for</strong> generering av en meldingsmodell, og slik kan<br />
vi lage en meldingsspesifikasjon <strong>for</strong> in<strong>for</strong>masjonen i modellen. Ulike aspekter med denne<br />
modellen diskuteres nærmere i de neste kapitlene.<br />
Figur 23: Dokumentmodell <strong>for</strong> flyttemelding<br />
55
17 Meldings<strong>modellering</strong><br />
Meldings<strong>modellering</strong> omfatter utarbeidelse av <strong>for</strong>mater og <strong>for</strong>matfamilier, kobling av<br />
<strong>for</strong>matfamilier til dokumentmodeller og generering av spesifikasjoner.<br />
17.1 Format<br />
Godkjenning og kontroll (validering) av semantiske typer i en meldingsspesifikasjon skjer<br />
gjennom typenes kopling til <strong>for</strong>mater. En semantisk type knyttes til et <strong>for</strong>mat gjennom et<br />
<strong>for</strong>matfamiliemedlem. Et antall slike medlemmer, hver knyttet til sin semantiske type, inngår i<br />
en <strong>for</strong>matfamilie. Denne mekanismen ble etablert <strong>for</strong> å kunne definere <strong>for</strong>mater uavhengig av<br />
en konkret dokumentmodell. Dette gjør det enklere å endre <strong>for</strong>mat uten å måtte endre<br />
dokumentmodellen, samt enkelt å regenerere en meldingsbeskrivelse når en dokumentmodell<br />
er endret.<br />
En semantisk type er knyttet til ett <strong>for</strong>mat innen<strong>for</strong> en valgt <strong>for</strong>matfamilie, men et <strong>for</strong>mat kan<br />
deles av flere semantiske typer innen<strong>for</strong> en eller flere <strong>for</strong>matfamilier. Dersom en semantisk<br />
type ikke er eksplisitt knyttet til et <strong>for</strong>mat, er det under<strong>for</strong>stått at <strong>for</strong>matet <strong>for</strong> den nærmeste<br />
supertypen, som har <strong>for</strong>mat, skal brukes (implisitt gitt <strong>for</strong>mat). De grunnleggende semantiske<br />
typene (toppnodene) skal alltid være representert i en <strong>for</strong>matfamilie.<br />
Et <strong>for</strong>mat er enten et enkel<strong>for</strong>mat eller et kompleks<strong>for</strong>mat. Et enkel<strong>for</strong>mat kan være en<br />
spesialisering av et annet enkel<strong>for</strong>mat, bare med en eller flere nye restriksjoner. Et<br />
enkel<strong>for</strong>mat kan alternativt peke til en kodeliste. Et kompleks<strong>for</strong>mat utgjøres av to sett av<br />
enkel<strong>for</strong>mater, verdielementer og tilleggselementer. Dersom et kompleks<strong>for</strong>mat bare har ett<br />
verdielement, skal navnet på dette ikke brukes i meldingsspesifikasjonene.<br />
<strong>Retningslinjer</strong>: Format<br />
• Alle grunnleggende semantiske typer skal være knyttet til et <strong>for</strong>mat i en <strong>for</strong>matfamilie.<br />
Andre semantiske typer skal enten være knyttet direkte til et <strong>for</strong>mat eller indirekte<br />
gjennom en overliggende type i hierarkiet.<br />
• Et <strong>for</strong>mat kan deles av flere semantiske typer.<br />
• Hvert <strong>for</strong>mat har et unikt navn blant alle <strong>for</strong>mater i systemet.<br />
• Et <strong>for</strong>mat spesifiseres som en kombinasjon av XML Schema-fasetter.<br />
Konseptmodellen er vist i vedlegg II Konseptmodell <strong>for</strong> semantiske typer og <strong>for</strong>mater.Feil!<br />
Fant ikke referansekilden.<br />
17.2 Formatstandard<br />
Selv om en semantisk type kan representeres med flere alternative <strong>for</strong>mater, vil det være en<br />
<strong>for</strong>del å standardisere på ett gitt <strong>for</strong>mat <strong>for</strong> et gitt <strong>for</strong>mål eller et bestemt miljø.<br />
Standardisering av <strong>for</strong>mater bidrar til teknisk interoperabilitet mellom mange involverte<br />
parter. I prinsippet kunne en tenke seg at verktøyet ga brukeren valget mellom et standard<br />
<strong>for</strong>mat eller et gitt annet <strong>for</strong>mat <strong>for</strong> hver semantisk type. Dette vil imidlertid gi heterogene<br />
spesifikasjoner som vi ser som uønskelig. I stedet knytter vi et samordnet standard sett av<br />
<strong>for</strong>mater til alle grunnleggende semantiske typer. Avledete semantiske typer vil bruke det<br />
samme <strong>for</strong>matet, med mindre et annet spesifikt <strong>for</strong>mat knyttes til den avledete typen via<br />
<strong>for</strong>matfamilien.<br />
56
For å illustrere dette vil standard<strong>for</strong>matet <strong>for</strong> den semantiske typen dato være dato<strong>for</strong>matet i<br />
ISO 8601 som også brukes i XML Schema-typen date: År-Måned-Dag, <strong>for</strong> eksempel "2004-<br />
12-16". Formatet representerer en validering som svarer til xsd:date.<br />
17.3 Administrering av <strong>for</strong>mater<br />
Hvert <strong>for</strong>mat har et unikt navn i hele systemet og beskriver hvordan en semantisk type skal<br />
representeres og valideres i meldinger. Formater opprettes og administreres i SERES Format.<br />
Alle XSD-datatyper er tilgjengelig i SERES Format <strong>for</strong> kopling til enkel<strong>for</strong>mater.<br />
Kompleks<strong>for</strong>mater er sammensatt av verdielementer og tilleggselementer som begge refererer<br />
til spesifikke enkel<strong>for</strong>mater.<br />
Et enkel<strong>for</strong>mat kan beskrives nærmere gjennom å definere en eller flere restriksjoner fra et<br />
sett av slike. Alle restriksjonene skal være oppfylt.<br />
Følgende type restriksjoner er tilgjengelig (tilhørende XML Schema-betegnelser i parentes):<br />
• minimumsverdi (xsd:minInclusive): Minimalt tillatt verdi som også kan oppnås.<br />
• maksmumsverdi (xsd:maxInclusive): Maksimalt tillatt verdi som også kan oppnås.<br />
• minimumsskranke (xsd:minExclusive): Nedre skranke dvs. at verdien kan komme så<br />
nær en nedre verdi en vil, men kan ikke være lik skrankeverdien. F.eks. vekta på en<br />
pakke kan ha en skrankeverdi på null som betyr at vekta kan være så liten en bare kan<br />
tenke seg, men verdi null ønsker vi å signalisere som en feil.<br />
• maksimumsskranke (xsd:maxExclusive): Øvre skranke dvs. at verdien kan komme så<br />
nær en øvre verdi en vil, men kan ikke være lik skrankeverdien.<br />
• absoluttlengde (xsd:length): Verdien uttrykkes med en tekststreng som skal ha en gitt<br />
lengde. F.eks. skal et organisasjonsnummer ha nøyaktig lengde 9.<br />
• minimumslengde (xsd:minLength): Verdien uttrykkes med en tekststreng som ikke kan<br />
være kortere enn et gitt antall tegn. F.eks. skal en identifikator være på minst 3 tegn,<br />
man kan ellers være så lang en bare vil.<br />
• maksimumslengde (xsd:maxLength): Verdien uttrykkes med en tekststreng som ikke<br />
kan være lengre enn et gitt antall tegn. F.eks. skal et navn være på maksimal 50 tegn<br />
<strong>for</strong> ikke å bli avkortet ved lagring i en gitt database.<br />
• totalsifre (xsd:totalDigits): En verdi skal uttrykkes med et bestemt antall sifre, f.eks. et<br />
fødselsnummer som skal være akkurat 11 sifre.<br />
• desimalsifre (xsd:fractionDigits): En verdi skal<br />
• regulæruttrykk (xsd:pattern)<br />
Noen av restriksjonene kan gjerne administreres i par i brukergrensesnittet:<br />
• mininumsverdi + maksimumsverdi: lukket intervall<br />
• minimumsskranke + maksimumsskranke: åpent intervall<br />
• mininumsverdi + maksimumsskranke eller minimumsskranke + maksimumsverdi:<br />
halvåpent intervall<br />
• minimumslengde + maksimumlengde: lengdeintervall<br />
17.3.1 Kompleks<strong>for</strong>mater<br />
Et enkel<strong>for</strong>mat uttrykkes i XSD gjennom en simpleType, mens et kompleks<strong>for</strong>mat uttrykkes<br />
gjennom en complexType. Et eksempel på semantisk type som kan uttrykkes gjennom et<br />
kompleks<strong>for</strong>mat er dato. Formatet sammensattDato kan defineres med innholdselementene<br />
57
dag, maaned og aar. maaned og dag kan ha enkel<strong>for</strong>matet positivtHeltall, mens aar kan ha<br />
enkel<strong>for</strong>matet heltall. Formatet uttrykkes slik:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Et annet eksempel på en semantisk type som kan trenge et kompleks<strong>for</strong>mat er mål. Formatet<br />
sammensattMåling kan bestå av verdielementet verdi og tilleggselementet enhet. Enhet er<br />
påkrevet og har de<strong>for</strong> ikke standardverdi. Ettersom <strong>for</strong>matet bare har ett verdielement skal<br />
ikke verdielementets navn brukes. Måling uttrykkes i XSD ved:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
En kan videre tenke seg en semantisk type lengde som en avledning av mål. Denne er såpass<br />
spesifikk at den kan ha et <strong>for</strong>mat lengdemaal knyttet til en kodeliste lengdeenhet. Videre skal<br />
enhet kunne ha en defaultverdi m. Denne kan spesifiseres slik:<br />
58
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
17.4 Kodelister<br />
Ethvert enkel<strong>for</strong>mat kan som nevnt koples til en kodeliste. Denne angir lovlige verdier (koder)<br />
<strong>for</strong> det attributtet som via semantisk type er koplet til dette enkel<strong>for</strong>matet.<br />
En kodeliste er en samling av kodelisteelementer, der et kodelisteelement består av en kode<br />
samt en definisjon eller beskrivelse av hva koden representerer. I <strong>for</strong>eliggende versjon er det<br />
ingen begrep-mekanisme mellom (slik konseptmodellen angir). Kodelister kan være flate eller<br />
hierarkiske. Foreløpig er det bare mulig å operere med flate lister som imidlertid implisitt kan<br />
ha en hierarkisk struktur. Hierarkiet må imidlertid hentes ut ved <strong>for</strong>tolkning av kodeverdiene.<br />
I SERES er kodelister <strong>for</strong> det meste tenkt koplet til spesialiseringer (subtyper) av den<br />
semantiske typen kode, men også subtyper av andre semantiske typer kan være aktuelle. Det<br />
er ingen tekniske begrensninger <strong>for</strong> hvilke semantiske typer som (via et enkel<strong>for</strong>mat) kan<br />
koples til en kodeliste.<br />
Kodelister er en egen konstruksjon som administreres <strong>for</strong> seg uavhengig av <strong>for</strong>mater. Det er<br />
mulig å importere og eksportere kodelister i SERES<strong>for</strong>mat.<br />
59
18 Oppsummering<br />
In<strong>for</strong>masjons<strong>modellering</strong>en skal gi minst to ulike resultater; en in<strong>for</strong>masjonsmodell som er en<br />
språklig godt <strong>for</strong>ankret, domene-harmonisert og skjemauavhengig beskrivelse av<br />
virkeligheten, og som kan danne grunnlaget <strong>for</strong> en analyse av semantisk interoperabilitet.<br />
In<strong>for</strong>masjons<strong>modellering</strong>en skal også gjøre det mulig å definere et sett med<br />
dokumentmodeller. Det er trolig lettest å oppnå dette ved å gjøre <strong>modellering</strong>sarbeidet i en<br />
bestemt rekkefølge:<br />
1. Begynn med de enkelte beskrivelsene av den virkeligheten som skal modelleres. Dette<br />
vil ofte være ett eller flere skjemaer, men det kan også være eksisterende<br />
in<strong>for</strong>masjonsmodeller, tekstdokumenter eller lignende. Lag beskrivelse (modell) av<br />
innholdet i beskrivelsen (skjemaet) som er så generell som mulig. Kontroller at<br />
modellen representerer alle in<strong>for</strong>masjonselementene. Hvis det er flere skjema eller<br />
andre beskrivelser som skal modelleres kan de godt modelleres i ulike diagram, men<br />
det er også mulig lage et felles diagram. Det som er viktig, er å gjenbruke klasser<br />
mellom de ulike diagrammene.<br />
2. Kontroller at den felles modellen inneholder alle in<strong>for</strong>masjonselementer (attributter,<br />
klasser) som er nødvendige <strong>for</strong> å representere in<strong>for</strong>masjonen i skjemaene som er<br />
modellert. Kontroller dette mot ett og ett skjema om gangen.<br />
3. Undersøk hvorvidt in<strong>for</strong>masjonsstrukturen som er modellert legger til rette <strong>for</strong><br />
gjenbrukbarhet, og modifiser eventuelt modellen <strong>for</strong> å gjøre in<strong>for</strong>masjonsstrukturen<br />
mer gjenbrukbar. Dette trinnet vil muligens ikke gjennomføres i alle tilfeller, men det<br />
anbefales sterkt å gjøre det ved senere revisjoner av modellen.<br />
Dokumentmodellen beskriver en in<strong>for</strong>masjonsstruktur som kan danne utgangspunkt <strong>for</strong> en<br />
meldingsmodell, og dermed serialiseres til en meldingsbeskrivelse.<br />
I dokumentmodellen skal det ikke finnes urettede assosiasjoner, og en kan skjule attributter og<br />
klasser som ikke trengs i meldingene basert på modellen. Ved å bestemme hvilke klasser som<br />
skal være rotklasse, bestemmer en hva som blir det ytterste elementet i<br />
meldingspesifikasjonen.<br />
I meldings<strong>modellering</strong>en lager en <strong>for</strong>matfamilier, som er et sett med <strong>for</strong>mater, som beskriver<br />
hvordan semantiske typer fysisk skal representeres i en melding.<br />
Meldingsmodellen består av en dokumentmodell koblet til en <strong>for</strong>matfamilie. Den fysiske<br />
representasjonen av en meldingsmodell er en meldingsspesifikasjon. Meldingsspesifikasjonen<br />
benyttes til å validere (godkjenne) faktiske meldinger som utveksles mellom systemer/etater<br />
60
I Semantiske typer<br />
I.a Figur med arvestruktur<br />
61
I.b Definisjoner på semantiske typer<br />
De semantiske typene som er definert i figuren på <strong>for</strong>rige side og i tabellen under, representerer en skisse til harmoniserte semantiske typer. Vi<br />
har funnet det viktig å etablere en slikt sett tidlig slik at det ikke gror opp et uttall av varianter som er semantisk nært beslektet. Dette kommer i<br />
tillegg til de grunndataklassene som også gjøres tilgjengelig fra starten av.<br />
Semantisk type Arver Svarer til Definisjon<br />
identifikator cc:Identifier Tegnsekvens som unikt identifiserer et objekt i en <strong>for</strong>valtet mengde<br />
av objekter.<br />
kode cc:Code Tegnsekvens som unikt representerer et element av type begrep,<br />
navn, verdi etc. i en liste av beslektete elementer.<br />
tekst cc:Text - Tekstlig, ikke-unik betegnelse eller beskrivelse.<br />
xsd:string<br />
alternativ cc:Indicator -<br />
xsd:boolean<br />
In<strong>for</strong>masjonselement med to mulige verdier. Eksempler: 'Ja' eller<br />
'Nei', 'Sant' eller Usant', 'Har' eller 'Har ikke', 'Er' eller 'Er ikke', 'På'<br />
eller 'Av'<br />
Dimensjonsløs, beregnet størrelse.<br />
tall cc:Numeric -<br />
xsd:decimal<br />
antall cc:Quantity - Tellbar størrelse uten enhetsangivelse. Eksempler: 'Antall barn',<br />
xsd:integer 'Antall arbeidsgivere'. Det tillates negative antall som uttrykk <strong>for</strong><br />
'manglende antall'.<br />
mål cc:Measure Fysisk størrelse som kan måles med et verktøy eller instrument,<br />
eller planlagt størrelse <strong>for</strong> mulig senere realisering og måling.<br />
Størrelsen består av en numerisk måleverdi og en måleenhet.<br />
beløp cc:Amount Pengeverdi med angitt valuta.<br />
tidspunkt cc:Date Time - Punkt i historisk tid, dvs. en gitt dato og et gitt klokkeslett i et<br />
xsd:dateTime bestemt år og tidssone, eller periodisk tidspunkt i <strong>for</strong>hold til<br />
standard nullpunkt <strong>for</strong> standard tidsperiode (år, måned, dag)<br />
binærobjekt cc:Binary<br />
Object<br />
En begrenset sekvens av bytes, typisk en datafil<br />
navn tekst cc:Name Offisielt navn på personer, <strong>for</strong>etak etc.<br />
beskrivelse tekst Tekstlig beskrivelse<br />
<strong>for</strong>holdstall tall cc:Rate Tall som stammer fra <strong>for</strong>holdet mellom to andre tall<br />
62
prosenttall tall cc:Percent Tall som fremkommer som <strong>for</strong>holdet mellom to tall multiplisert<br />
med 100<br />
dato tidspunkt xsd:date Tidspunkt med døgnoppløsning, dvs tidsrommet innen<strong>for</strong> et gitt<br />
historisk døgn<br />
klokkeslett tidspunkt xsd:time Tidspunkt innen<strong>for</strong> et gitt døgn<br />
måned tidspunkt xsd:gMonth Periodisk månedsangivelse, dvs. tidsrommet som utgjøres av en gitt<br />
måned uavhengig av år<br />
år tidspunkt xsd:gYear Tidspunkt med årsoppløsning, dvs. et helt historisk år (f.eks. '2006')<br />
månedOgÅr tidspunkt xsd:gYearMont Tidspunkt med månedsoppløsning, dvs. en hel måned i et gitt år<br />
h<br />
(f.eks. '2006-04')<br />
dagOgMåned tidspunkt xsd:gMonthDay Periodisk datoangivelse, dvs. tidsrommet som utgjøres av et helt<br />
døgn i en gitt måned uansett år (f.eks. 05-17)<br />
dagIMåneden tidspunkt xsd:gDay Periodisk dagangivelse, dvs. en bestemt dag i hver måned (f.eks.<br />
'17')<br />
ukedag kode Ukedagene 'mandag', 'tirsdag' ... 'søndag'<br />
ukenummmer tidspunkt Periodisk ukeangivelse, dvs. tidsrommet som utgjøres av en gitt uke<br />
(mandag-søndag) uavhengig av år<br />
lydfil binærobjekt cc:Sound Binærobjekt med lydinnhold, f.eks. av type mp3, wav, mid.<br />
videofil binærobjekt cc:Video Binærobjekt med videoinnhold, f.eks. av type avi, mov, mpeg.<br />
grafikkfil binærobjekt cc:Graphic Binærobjekt med grafisk innhold, dvs. figurer og symboler, f.eks.<br />
av type svg, png, gif.<br />
bildefil binærobjekt cc:Picture Binærobjekt med fotografisk eller malttegnet materiale, f.eks. av<br />
type jpg.<br />
personidentifikator identifikator Identifikasjon av en fysisk person<br />
organisasjonsidentifikator identifikator Identifikasjon av en organisasjon<br />
eiendomsidentifikator identifikator Identifikasjon av fast eiendom<br />
fødselsnummer personidentifikator Et norsk fødselsnummer<br />
organisasjonsnummer organisasjonsidentifikator Et norsk organisasjonsnummer<br />
bedriftsnummer organisasjonsidentifikator En unik identifikator <strong>for</strong> bedrifter som igjen er organisert under<br />
enheter med sine respektive organisasjonsnummer.<br />
matrikkelnummer eiendomsidentifikator Matrikkelnummer <strong>for</strong> en eiendom sammensatt av<br />
kommunenummer, gårdsnummer, bruksnummer, seksjonsnummer<br />
og eventuelt festenummer<br />
63
gårdsnummer eiendomsidentifikator Gårdsnummer <strong>for</strong> en eiendom<br />
bruksnummer eiendomsidentifikator Bruksnummer <strong>for</strong> en eiendom<br />
seksjonsnummer eiendomsidentifikator Seksjonsnummer <strong>for</strong> en eiendom<br />
festenummer eiendomsidentifikator Festenummer <strong>for</strong> en eiendom<br />
eiendelsidentifikator identifikator Identifikasjon av en eiendel (løsøre)<br />
bilkjennemerke eiendelsidentifikator Norsk bilkjennemerke normalt bestående av to bokstaver med<br />
påfølgende 5 sifre. Også 4 sifre og tidligere nummersystemer som<br />
<strong>for</strong>tsatt er i bruk er inkludert.<br />
åndsverksidentifikator identifikator Identifikasjon av et åndsverk (skrifter, kunstverk, oppfinnelser etc)<br />
ISBN åndsverksidentifikator Det internasjonale identifikasjonssystem <strong>for</strong> bøker (International<br />
Standard Book Number) administrert av 'International ISBN<br />
Agency'<br />
ISSN åndsverksidentifikator Det internasjonale identifikasjonssystem <strong>for</strong> tidsskrifter<br />
(International Standard Serial Number) administrert av 'ISSN<br />
International Centre'<br />
ressursidentifikator identifikator Identifikator <strong>for</strong> fysiske eller elektroniske ressurser<br />
URI ressursidentifikator Identifikasjon av nettressurs (Uni<strong>for</strong>m Resource Identifier)<br />
URL URI Adresse til nettressurs (Uni<strong>for</strong>m Resource Locator<br />
URN URI Navn <strong>for</strong> nettressurs (Uni<strong>for</strong>m Resource Name)<br />
regionkode kode Kode <strong>for</strong> et geografisk område<br />
virksomhetskode kode Kode som beskriver ulike aspekter ved en virksomhet<br />
telefonnummer ressursidentifikator Telefonnummer, både norsk og utenlandsk. Gjelder både <strong>for</strong><br />
fasttelefoni, mobiltelefoni og telefaks<br />
varighet mål xsd:duration Mål av type tid, dvs. målt eller planlagt <strong>for</strong>løpt tid uavhengig av når<br />
det skjer<br />
lengde mål Målt eller angitt lengde<br />
areal mål Målt eller angitt areal<br />
volum mål Målt eller angitt volum<br />
hastighet mål Målt eller angitt hastighet<br />
temperatur mål Målt eller angitt temperatur<br />
energi mål Målt eller angitt energi<br />
masse mål Målt eller angitt masse<br />
64
vinkel mål Målt eller angitt vinkel<br />
omkrets lengde Målt eller angitt omkrets, dvs. en lengden av en lukket kurve langs<br />
et objekts ytterside<br />
epost ressursidentifikator Epost-adresse (f.eks.: 'ola.nordmann@firmaet.no')<br />
kommunenummer regionkode Offisielt kommunenummer <strong>for</strong> norsk kommune, basert på<br />
løpenummer <strong>for</strong> fylke og kommune i fylke<br />
landkode regionkode Internasjonal landkode, normalt ulike ISO 3166-varianter<br />
kjønn kode Biologisk kjønn<br />
husnummer eiendomsidentifikator Identifikator <strong>for</strong> en bygning eller del av bygning som er unik<br />
innen<strong>for</strong> ei gate.<br />
postnummer regionkode Identifikator <strong>for</strong> poststeder i Norge som <strong>for</strong>valtes av 'Posten Norge<br />
AS'<br />
eiendomstype kode Type og status <strong>for</strong> eiendom: 'Grunneiendom', 'Anleggseiendom',<br />
'Festegrunn', 'Eiersseksjon', 'Jordsameie', 'Selveier', 'Selveier i<br />
sameie', 'Utgått'.<br />
etasjetype kode Type etasje, f.eks. kjeller, sokkel, hovedetasje, loft<br />
adressetype kode Type adresse: 'Hjemmeadresse', 'Jobbadresse', 'Fakturaadresse',<br />
'Besøksadresse', 'Fritidsboligadresse' etc.<br />
personstatus kode Status <strong>for</strong> en person, om personen er død, bor i utlandet, er<br />
umyndiggjort eller har en normal status (bor i Norge som myndig<br />
person).<br />
sivilstand kode Sivilstand: 'Enslig', 'Samboer', 'Partnerskap', 'Gift', 'Skilt', 'Enke'<br />
eller 'Enkemann'<br />
registeringstype kode Diplomat, klient, adressesperring ol<br />
organisasjons<strong>for</strong>m virksomhetskode Type organisasjon som et <strong>for</strong>etak er: 'Enkeltperson<strong>for</strong>etak',<br />
'Aksjeselskap', 'Ansvarlig selskap' etc. Synonymer er 'Selskaps<strong>for</strong>m'<br />
og 'Enhetstype'<br />
næringskode virksomhetskode Type næring i <strong>for</strong>m av en NACE-kode<br />
enhetsstatus virksomhetskode Avvikende status <strong>for</strong> enhet: Oppløst, konkursåpnet, under<br />
tvangsavvikling, oversendt tingretten etc.<br />
sektorkode virksomhetskode Navn på institusjonell sektorkode som er en organisatorisk<br />
kategorisering<br />
mål<strong>for</strong>m kode Mål<strong>for</strong>m (bokmål, nynorsk eller samisk) en person eller enhet<br />
65
ønsker <strong>for</strong> skriflig kommunikasjon med det offentlige<br />
styrerolle virksomhetskode Navn på funksjon i et styre<br />
kapitaltype kode Type kapital f.eks.<br />
'Aksjekapital', 'Selskapskapital', 'Grunnkapital', 'Grunnfondsbeviska<br />
pital' etc.<br />
personrelasjon kode Primærrolle en person har oven<strong>for</strong> en gitt annen person: 'Mor', 'Far',<br />
'Barn', 'Ektefelle', 'Samboer', 'Partner', 'Fostermor', 'Fosterfar',<br />
'Fosterbarn', 'Verge'<br />
kontakttype kode Type kontaktmulighet: 'Hustelefon', 'Mobiltelefon', 'IPTelefon',<br />
'Telefaks', 'Epost', 'Henvendelse via nettadresse'<br />
kontaktsammenheng kode Navn på rolle en har ved kontakt med andre<br />
cc: refererer til Core Component Permissible Representation Term.<br />
xsd: refererer til XML Schema datatype.<br />
Noen av spesialiseringene av de semantiske typene dekker standardens "Secondary Represention Terms", men SERES har ikke satt en endelig<br />
grense <strong>for</strong> spesialisering av semantiske typer på samme måte som vi finner et endelig sett av Permissible Representation Terms. SERES bygger<br />
ut strukturen av standardiserte semantiske typer til en taksonomi som skal dekke et nasjonalt behov, men vi vil i utgangspunktet søke å unngå<br />
innføring av grunnleggende semantiske typer (rottyper som ligger på øverste nivå) som ikke er definert i CCTS. Om vi lager nye rottyper, bør<br />
disse sendes som utvidelses<strong>for</strong>slag til internasjonal standardisering. Kun <strong>Brønnøysundregistrene</strong> kan etablere nye rottyper i SERES.<br />
66
II Konseptmodell <strong>for</strong> semantiske typer og <strong>for</strong>mater<br />
Figur 24 Konseptmodell <strong>for</strong> semantiske typer, <strong>for</strong>mater, <strong>for</strong>matfamilier mm.<br />
67
III Forkortelser<br />
Forkortelser brukes typisk som et ledd i et CamelCase-basert navn.<br />
adm Administrasjon,<br />
administrativ/t<br />
apr April<br />
av Av verdien<br />
aug August<br />
des Desember<br />
feb Februar<br />
fk Førstkommende<br />
<strong>for</strong>eg Foregående<br />
grl Grunnlagt<br />
id Identifikator<br />
inkl Inklusive<br />
jan Januar<br />
jr Junior<br />
jun Juni<br />
jul Juli<br />
lø Lørdag<br />
nr Nummer<br />
ma Mandag<br />
mai Mai<br />
mar Mars<br />
min Minimumsverdi<br />
maks Maksimumsverdi<br />
mfl Med flere<br />
mht Med hensyn til<br />
mill Million<br />
min Minutt<br />
mrd Milliard<br />
mva Merverdiavgift<br />
no Norsk<br />
nov November<br />
nto Netto<br />
off Offentlig<br />
ofl Og flere<br />
okt Oktober<br />
ol Og liknende<br />
on Onsdag<br />
osv Og så videre<br />
ovf Oven<strong>for</strong><br />
pa Pro anno<br />
pb Postboks<br />
pga På grunn av<br />
pkt Punkt<br />
pr Per<br />
pst Prosent<br />
resp Respektive<br />
sep September<br />
spm Spørsmål<br />
sr Senior<br />
sst Samme sted<br />
stk Stykk/er<br />
stud Student<br />
sø Søndag<br />
så Samme år<br />
såk Såkalt<br />
temp Temperatur<br />
ti Tirsdag<br />
tils Til sammen<br />
tilsv Tilsvarende<br />
tlf Telefon<br />
to Torsdag<br />
tom Til og med<br />
ult Ultimo (siste)<br />
UT Universaltid<br />
(tidligere GMT)<br />
utg Utgave<br />
v Vei<br />
vedk Vedkommende<br />
vg Videregående<br />
vha Ved hjelp av<br />
vol Volum<br />
vs Versus<br />
(mot eller i <strong>for</strong>hold<br />
til)<br />
vsa Ved siden av<br />
årg Årgang<br />
årh Århundre<br />
68
IV Internasjonale standarder<br />
SERES relaterer seg til en rekke internasjonale standarder enten ved at standarden er basis <strong>for</strong><br />
detaljer i løsningen eller standarden er studert <strong>for</strong> å finne gode mekanismer eller det er vurdert<br />
hvordan standarden kan støttes på sikt om det kommer krav om dette.<br />
UML v1.4 In<strong>for</strong>masjonsmodellene og dokumentmodellene er basert UMLs klassediagram<br />
og følger versjon 1.4 av standarden.<br />
XMI v.1.2 Modelleringsverktøyet kan importere og eksportere modeller som er beskrevet<br />
i denne standarden.<br />
ISO11179 Dette er den gamle metadatastandarden fra ISO. Den er basis <strong>for</strong> en del av<br />
begrepsapparatet vi bruker.<br />
ebXML og Core Components De grunnleggende semantiske typene er norske<br />
oversettelser av Core Component Permissible Representation Terms (CC PRT)<br />
fra UN/CEFACT. De semantiske typene i SERES har referanser til CC PRT og<br />
er ekvivalente med dem. Grunndataklassene og deres attributter skal ha<br />
referanser til Core Components Library (UN/CCL) der paralleller finnes.<br />
Dublin Core Benyttes som standard <strong>for</strong> administrative metadata knyttet til modellelementer<br />
(klasser, attributter, typer med flere).<br />
XBRL XBRL (eXtensible Business Reporting Language) er en XML-standard <strong>for</strong><br />
regnskapin<strong>for</strong>masjon og tilgrensende områder. Den er i ferd med å få godt<br />
fotfeste internasjonalt og er der<strong>for</strong> en svært aktuell type ekstern referanse <strong>for</strong><br />
in<strong>for</strong>masjonselementer i SERES.<br />
HL7 Innen<strong>for</strong> helsedomenet finnes den utbredte HL7-standarden (Health Level 7).<br />
Denne er tatt i bruk av KITH <strong>for</strong> deres hovedoppdragsgiver Rikstrygdeverket<br />
(RTV). HL7 vedlikeholder en standardisert in<strong>for</strong>masjonsmodell (RIM -<br />
Reference In<strong>for</strong>mation Model) uttrykt i UML med bruk av arv og<br />
assosiasjoner. KITH-modeller har vært studert i <strong>for</strong>bindelse med utvikling av<br />
<strong>modellering</strong>sretninglinjene i SERES.<br />
V Meldinger over landegrensene<br />
Det er et økende behov <strong>for</strong> å sende meldinger over landegrensene. I disse tilfelle vil det måtte<br />
benyttes en internasjonal standard <strong>for</strong> meldingsbeskrivelser som i de fleste tilfelle må<br />
oversettes fra nasjonale beskrivelser. Det er da naturlig å oversette <strong>for</strong>skjellen både i<br />
in<strong>for</strong>masjonsstruktur og språk i en felles prosess. Det som da vil være nyttig er at vi kan legge<br />
inn tilleggsin<strong>for</strong>masjon som relaterer våre in<strong>for</strong>masjonselementer til en internasjonal standard,<br />
f.eks. XBRL (se vedlegg Internasjonale standarder).<br />
69
VI Import av eksterne modeller<br />
Som hjelp til import av eksterne modeller er det utviklet et separat verktøy kalt XMIgen som<br />
leser et UML-<strong>for</strong>ankret XML-<strong>for</strong>mat XMDL som er svært mye enklere enn XMI. Verktøyet<br />
genererer som navnet antyder en XMI-basert modell som kan importeres av SERESuml.<br />
Programmet kan også generere XMDL-filer basert på SQL-baserte etableringsskript <strong>for</strong><br />
databaser.<br />
Programmet skal i utgangspunktet bare brukes internt ved <strong>Brønnøysundregistrene</strong>. Det viktige<br />
her er XMDL-<strong>for</strong>matet som alle som vil kan generere <strong>for</strong> å få spesifisert sine metadata <strong>for</strong><br />
enkel import til SERES. <strong>Brønnøysundregistrene</strong> gir bistand dersom noen vil bruke SQLfunksjonaliteten<br />
til programmet.<br />
Her er et eksempel på innholdet i dette <strong>for</strong>matet:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Her er en fullt sett av XML-komponenter en kan bruke:<br />
Tagnavn Attributtnav Beskrivelse Subtagge Eksempel<br />
n<br />
r<br />
model Alle<br />
unntatt<br />
'model'<br />
name Kortnavnet på<br />
modellen<br />
name="SSB"<br />
tekst Fullnavnet på tekst="Domenemodel<br />
70
modellen l <strong>for</strong> SSB"<br />
datatype<br />
name Datatypens navn name="nummer"<br />
def Definisjon av<br />
def="Pengeverdi med<br />
datatypen<br />
enhet"<br />
inherits Navn på supertypen<br />
inherits="identifikator<br />
ved arv<br />
"<br />
abstract Datatypen er abstrakt<br />
hvis verdi er '+'<br />
abstract="+"<br />
root Datatypen har ingen<br />
supertyper hvis verdi<br />
er '+'<br />
root="+"<br />
leaf Dataypen har ingen<br />
leaf="-" (attributtet<br />
subtyper hvis verdi '+'<br />
kan da sløyfes)<br />
cc Tilsvarende Core<br />
Component<br />
Permissible<br />
Representation Term<br />
cc="Date Time"<br />
xsd Tilsvarende XML<br />
Schema Datatype<br />
xsd="dateTime"<br />
iso Tilsvarende ISOstandard-element<br />
class 'attribute'<br />
name Klassenavn name="Pasient"<br />
def Definisjon av klassen def="Fysisk person"<br />
inherits Navn på superklasse inherits="Person"<br />
cc Tilsvarende Aggregate<br />
Core Component<br />
attribute<br />
name Attributtnavn name="gatenavn"<br />
datatype Navn på datatype <strong>for</strong><br />
attributtet<br />
datatype="navn"<br />
multiplicity Kardinalitet <strong>for</strong><br />
attributtet<br />
multiplicity="1..*"<br />
def Definisjon av<br />
attributtet<br />
def="Offisielt navn"<br />
cc Tilsvarende Basic<br />
Core Component<br />
association 'role'<br />
name Assosiasjonsnavn name="personadresse"<br />
role<br />
name Assosiasjonsendenavn<br />
(rollenavn)<br />
name="har"<br />
class Navn på assosiert<br />
klasse<br />
class="Adresse"<br />
multiplicity Kardinalitet <strong>for</strong><br />
assosiasjonsenden<br />
multiplicity="0..*"<br />
71
associationClas<br />
s<br />
def Definisjon av<br />
assosiasjonsenden<br />
name Assosiasjonsklassenav<br />
n<br />
def="Offisielt navn"<br />
'attribute' name="Adressetype"<br />
72
VII Ordliste<br />
1. Abstrakt<br />
Et modellelement kan være abstrakt. Det betyr at det ikke kan instansieres, dvs. det kan ikke<br />
ha <strong>for</strong>ekomster i den utgaven som er abstakt, men bare som spesialiseringer som bygger på<br />
det abstakte elementet. En abstrakt klasse i en in<strong>for</strong>masjonsmodell kan ikke benyttes i en<br />
dokumentmodell, men subklasser som bygger på denne og derigjennom henter attributter og<br />
assosiasjoner fra denne kan brukes. Dersom et attributt er koplet til en abstrakt semantisk type<br />
i in<strong>for</strong>masjonsmodellen, må attributtet i tilhørende dokumentmodell koples til en<br />
spesialisering av den abstakte typen.<br />
2. Antonymer<br />
Ulike ord med motsatt betydning. Disse deles inn i to undertyper: absolutte og relative. De<br />
absolutte har bare to mulige verdier, mens de relative kan ha mellomverdier.<br />
Eksempler på absolutte antonymer: ja og nei, sant og usant, gutt og jente.<br />
Eksempler på relative antonymer: ung og gammel (med mellomverdier litt ung, halvgammel<br />
etc.), høy og lav (med mellomverdi normalhøy).<br />
Ref. Synonymer, Homonymer, Hyponymer og hyperonymer, Polysemer, Meta<strong>for</strong>er.<br />
3. Arv<br />
Arv er en relasjon som brukes mellom klasser. Klasser som inngår i en arverelasjon er en<br />
spesialisering av /generalisering fra en annen klasse. For eksempel kan klassene ”Bedrift” og<br />
”Person” ha ”Subjekt” som en felles generalisering. Da arver ”Bedrift” og ”Person” fra<br />
”Subjekt” og er altså spesialiseringer av ”Subjekt”. En spesialisering av en klasse arver alle<br />
egenskaper fra superklassen.<br />
4. Assosiasjon<br />
En assosiasjon mellom to klasser beskriver at objekter av hver klasse kan eller skal ha en<br />
<strong>for</strong>bindelse seg imellom. For eksempel er det naturlig med en assosiasjon mellom en<br />
Arbeidsgiver- og Arbeidstaker-klasse. En assosiasjon har to Assosiasjonsender som uttrykker<br />
hvilke roller objekter av klassene har til hverandre. Noen ganger er rollene symmetriske, men<br />
ikke alltid.<br />
Assosiasjoner er urettede eller rettede. I en urettet assosiasjon er objekter av begge klassene<br />
synlige <strong>for</strong> hverandre, mens i en rettet assosiasjon er objekter av den klassen synlig som har<br />
en pil rettet mot seg, mens objekter av klassen i andre enden er "ukjent" <strong>for</strong> den andre.<br />
5. Assosiasjonsende<br />
En assosiasjonsende er koplingen mellom en Assosiasjon og en Klasse. En assosiasjonsende<br />
kan ha et navn, ha kardinalitet og være navigerbar (eller ikke). Navnet benyttes <strong>for</strong> å indikere<br />
rollen tilknyttet klasse har i <strong>for</strong>hold til den andre klassen. Kardinaliteten angir antall objekter<br />
(av klassen koblet til assosiasjonsenden) som kan inngå i den gitte assosiasjonen til ethvert<br />
objekt av klassen koblet til den andre assosiasjonsenden. At den er navigerbar betyr at<br />
tilknyttet klasse er synlig <strong>for</strong> (kan hente in<strong>for</strong>masjon fra) klassen tilknyttet andre<br />
assosiasjonsenden.<br />
6. Assosiasjonsklasse<br />
En assosiasjonsklasse er en assosiasjon som er utvidet med en egen klasse <strong>for</strong> ekstra<br />
beskrivelse.Den uttrykkes i en klassediagram ved en assosiasjon på vanlig måte og som har en<br />
stiplet linje til en egen klasse. Klassen og assosiasjonen er ett og samme modellelement som<br />
har egenskaper både som klasse og assosiasjon.<br />
73
7. Attributt<br />
Et attributt <strong>for</strong> en klasse beskriver en karakteristikk eller en egenskap til alle objektene av<br />
denne klassen. For eksempel er fødselsdato en egenskap ved en person, og dermed et aktuelt<br />
attributt <strong>for</strong> klassen ”Person”.<br />
8. Avgiverdimensjon<br />
En dimensjon er en gitt faktor som er definert <strong>for</strong> en avgivermodell. Eksempler på<br />
avgiverdimensjoner er: Organisasjons<strong>for</strong>m, Antall ansatte, Næringstype, Varetype, Eksport /<br />
import osv. En avgivermodell kan ha et visst antall avgiverdimensjoner. Noen<br />
avgivermodeller vil bare ha en avgiverdimensjon, mens andre vil relatere seg til mange eller<br />
alle potensielle avgiverdimensjoner.<br />
9. Avgivermodell<br />
Et viktig spørsmål i <strong>for</strong>hold til overlappssøk er hvem som kan eller må avgi en blankett eller<br />
en melding. Avgivermodellen er en beskrivelse av hvem som skal levere en blankett eller<br />
melding og <strong>for</strong> hvilket tidspunkt eller tidsperiode dataene i blankett/meldingen gjelder. All<br />
in<strong>for</strong>masjon som kan være relevant i <strong>for</strong>hold til hvem som skal levere hvilken in<strong>for</strong>masjon bør<br />
taes med.<br />
10. Blankett<br />
En blankett er et elektronisk eller papirbasert skjema. En blankett inneholder hele eller deler<br />
av in<strong>for</strong>masjonen fra en eller flere dokumentmodeller, og inneholder i tillegg in<strong>for</strong>masjon om<br />
ut<strong>for</strong>ming.<br />
11. CamelCase<br />
CamelCase er en måte å sette sammen flere ord til ett sammenhengende "ord" ved å bruke stor<br />
<strong>for</strong>bokstav på hvert nytt ord som knyttes på, f.eks. LønnForStrevet. Det er to undertyper:<br />
lowerCamelCase som starter med liten <strong>for</strong>bokstav og UpperCamelCase som starter med stor<br />
<strong>for</strong>bokstav.<br />
12. Diagram<br />
Et diagram er det en bruker primært opererer gjennom <strong>for</strong> å bygge opp og endre modeller. Et<br />
diagram er presentert i et egen diagrampanel. Den viser aktuelle klasser med relasjoner som<br />
brukeren selv har valgt ut og er organisert slik brukeren selv ønsker det. For eksempel vil et<br />
diagram ha posisjons- (koordinat-) in<strong>for</strong>masjon koplet til klasse- og relasjonssymboler. En<br />
bruker kan ha flere diagrammer som hver viser ulike utsnitt av in<strong>for</strong>masjonsmodellen, eller de<br />
kan alternativt vise dokumentmodeller.<br />
13. Dimensjonsløs<br />
En størrelse er dimensjonsløs dersom den ikke har en tilknyttet enhet. Dimensjonsløse<br />
størrelser er som regel <strong>for</strong>holdstall, f.eks. andelen kvinner i en bedrift som uttrykkes som en<br />
fraksjon (0,59) eller en prosent 59%.<br />
14. Dokument<br />
En fil der innholdet har et gitt eksternt definert <strong>for</strong>mat.<br />
15. Dokumentmodell<br />
En dokumentmodell definerer strukturen og semantikken <strong>for</strong> innholdet i en gitt melding som<br />
brukes <strong>for</strong> in<strong>for</strong>masjonsutveksling mellom aktører. Den henter all semantikk fra<br />
74
in<strong>for</strong>masjonsmodellen ved å være et utplukk av in<strong>for</strong>masjonselementer herfra med eventuelle<br />
justeringer av disse <strong>for</strong> å passe til meldingen.<br />
16. Format<br />
Et <strong>for</strong>mat angir hvordan en semantisk type skal representeres i ulike sammenhenger. Vi skiller<br />
mellom transport<strong>for</strong>mat som beskriver hvordan den semantiske type representeres i<br />
meldinger, lagrings<strong>for</strong>mat som beskriver hvordan den semantiske typen representeres i ulike<br />
databaser og visnings<strong>for</strong>mat som beskriver hvordan den semantiske typen ser ut i elektroniske<br />
blanketter. Hvert <strong>for</strong>mat har et navn. Ett av <strong>for</strong>matene (eller det ene <strong>for</strong>matet) <strong>for</strong> en<br />
semantisk type vil være et standard<strong>for</strong>mat. Hvert <strong>for</strong>mat er definert gjennom en eller flere<br />
<strong>for</strong>matregler.<br />
17. Generalisering<br />
Se Arv.<br />
18. Gjenbrukssøk<br />
For å få overlappssøk til å fungere på en god måte er vi avhengige av at man benytter seg av<br />
eksisterende klasser der dette er mulig i stedet <strong>for</strong> å lage en ny klasse. Hvis bare deler av<br />
funksjonaliteten allerede finnes i klasse A, arver man A <strong>for</strong> så å lage en ny klasse B basert på<br />
funksjonaliteten i A. Gjenbrukssøket vurderer om det finnes klasser i in<strong>for</strong>masjonsmodellen<br />
som likner på den du prøver å lage. Brukeren får opp en liste over kandidatklasser og velger<br />
den som passer best.<br />
19. Grunndata<br />
Dette er sentrale deler av den totale in<strong>for</strong>masjonsmodellen som arves eller har relasjoner fra<br />
flere etatsspesifikke domenemodeller. Det at alle domenemodellene direkte eller indirekte<br />
skal referere til grunndata gjør at modellene samlet kan betraktes som en stor<br />
in<strong>for</strong>masjonsmodell.<br />
20. Grunnleggende semantiske typer<br />
Dette er de semantiske typer som ikke har supertyper, der<strong>for</strong> kalt rottyper. Dette er et sett på<br />
følgende 10 typer identifikator, kode, tekst, alternativ, tall, antall, mål, beløp, tidspunkt,<br />
binærobjekt. Alle andre semantiske typer skal være subtyper (gjennom ett eller flere ledd) av<br />
disse.<br />
21. Homonymer<br />
Ord som skrives og/eller uttales likt, men har flere betydninger. Disse deles inn i to<br />
undergrupper: Homofoner som uttales likt og Homografer som skrives likt.<br />
Eksempel på homofoner: vinn og vind<br />
Eksempel på homograf: egg (spiselig fra høna eller skjæredel på kniv).<br />
22. Hyponymer og hyperonymer<br />
Ord som er submengde eller supermengde av et annet ord.<br />
Eksempler: hingst er et hyponym av hest, mens hest er hyperonym av hingst.<br />
rose er et hyponym av plante, mens plante er hyperonym av rose.<br />
23. In<strong>for</strong>masjonselement<br />
Dette er et element i en in<strong>for</strong>masjonsmodell som representerer ett enkelt dataelement.<br />
75
24. In<strong>for</strong>masjonsmodell<br />
I SERES finnes det en in<strong>for</strong>masjonsmodell. Denne inneholder in<strong>for</strong>masjonselementer som<br />
behøves i <strong>for</strong>bindelse med avgivelse av in<strong>for</strong>masjon til det offentlige og mellom offentlige<br />
etater. In<strong>for</strong>masjons-modellen består av klasser og relasjoner mellom klassene. Vi arbeider<br />
med in<strong>for</strong>masjonsmodellen i hovedsak gjennom bruk av diagrammer.<br />
25. Klasse<br />
En klasse representerer et begrep i den virkelige verden. Sentrale eksempler på klasser i vårt<br />
system er Person og Enhet. En modellklasse består av et antall beskrivelseselementer som<br />
enten er attributter eller assosiasjoner. Disse elementene beskriver en felles<br />
in<strong>for</strong>masjonsstruktur til alle objektene av klassen. En klasse kan arve attributter og<br />
assosiasjoner fra en annen klasse (som da kalles superklasse). Fra superklassens synspunkt<br />
kalles klassen en subklasse.<br />
26. Kravspesifikasjon<br />
Detter er summen av funksjonelle krav til systemet. Disse kravene ”interesserer seg ikke” <strong>for</strong><br />
hvordan systemet skal realiseres i praksis.<br />
27. Kodeliste<br />
En kodeliste er en samling elementer, kalt kodelisteelementer, som hver har en kode og en<br />
definisjon. Koden er unik <strong>for</strong> hver kodeliste og definisjonen skal entydig beskrive det unike<br />
med elementet.<br />
28. Løvelement<br />
Nederste element i en trestruktur, også kalt løvnode. Elementet har ingen subelementer, bare<br />
eventuelle superelementer. Eksempler på løvelementer er løvklasser og løvtyper. Meta<strong>for</strong>en er<br />
et tre snudd på hodet slik at løvet (bladene) kommer nederst.<br />
29. Melding<br />
En melding er et dokument som inneholder data i et gitt struktur som er definert av en<br />
meldingsbeskrivelse. En melding sies også å være en instans av en meldings-beskrivelse.<br />
30. Meldingsspesifikasjon<br />
En meldingsspesifikasjon er en definert samling av in<strong>for</strong>masjonsbærere eller metadata med en<br />
gitt struktur. I vårt system vil den være et uttrekk fra en in<strong>for</strong>masjonsmodell via en<br />
dokumentmodell med påbygging av <strong>for</strong>mater og realisert som et XML Schema-dokument.<br />
31. Metadata<br />
Metadata er en definisjon eller beskrivelse av data, såkalt ”data om data”. Metadata gir<br />
in<strong>for</strong>masjon om hva et enkelt dataelement eller en gruppe av data egentlig er. Ordet er utledet<br />
fra gammelgresk "meta" som blant annet betyr "sammen med".<br />
32. Meta<strong>for</strong>er<br />
Dette er polysemer som er overført fra et gitt bruksområde til et annet.<br />
Eksempler: stolbein (fra menneske/dyrebein), flerarmet lysestake, trestruktur (fra trærne i<br />
skogen), rotelement, ikon (fra religiøse malerier).<br />
33. Modell<br />
En modell er en <strong>for</strong>enklet beskrivelse av deler av virkeligheten, som fokuserer på de<br />
aspektene/detaljene ved virkeligheten vi er interessert i.<br />
76
34. Modellelement<br />
Dette er et enkeltelement i en modell. Både klasser, klasseattributter, semantiske typer,<br />
assosiasjoner og generaliseringer er modellelementer.<br />
35. Modellering<br />
Modellering er oppbygging og endring av en Modell.<br />
36. Node<br />
En node betegner gjerne et element i en Trestruktur. Toppnoden eller rotnoden er den øverste<br />
i trestrukturen, mens løvnodene er de ytterste/underste i trestrukturen.<br />
37. Ontologi<br />
En ontologi (læren om hvordan ting er) er en in<strong>for</strong>masjonsmodell <strong>for</strong> et domene som<br />
inneholder beskrivelser av in<strong>for</strong>masjonselementer og relasjoner mellom disse. Ofte brukes<br />
ontologibegrepet om relativt avanserte mekanismer <strong>for</strong> relasjonsbeskrivelser, men blir også<br />
brukt som en samlebetegnelse <strong>for</strong> alle typer in<strong>for</strong>masjonsbeskrivelser, også vokabularer,<br />
Taksonomier og Tesauruser.<br />
38. Overlappssøk<br />
Søk etter innrapportering av samme in<strong>for</strong>masjon flere ganger. Eksempel på dette kan være<br />
sjekk av hvorvidt en bedrift må innrapportere antall ansatte ved et gitt årsskifte to eller flere<br />
ganger på like mange ulike blanketter.<br />
39. Pakke<br />
Dette er en administrativ samling av et antall in<strong>for</strong>masjonselementer og diagrammer som<br />
hører til en gitt etat eller fagavdeling i en etat. En klasse kan bare tilhøre en pakke og alle<br />
klasser må tilhøre en pakke.<br />
40. Paradata<br />
Dette er data som beskriver <strong>for</strong>hold rundt instanser av data, <strong>for</strong> eksempel hvor mange<br />
<strong>for</strong>ekomster av enkeltdata som ligger bak en middelverdi. Ordet er utledet fra gammelgresk<br />
"para" som betyr "ved siden av".<br />
41. Polysemer<br />
Polysemer likner på homonymer, men ordene har ikke flere ulike betydninger, men flere<br />
beslektede betydninger. Eksempel: vill i de ulike, men beslektede betydningene "ville<br />
blomster" og "ville mennesker".<br />
42. Rotelement<br />
Øverste element i en Trestruktur, også kalt rotnode. Elementet har ingen superelementer, bare<br />
eventuelle subelementer. Eksempler på rotelementer er rotklasser og rottyper. Meta<strong>for</strong>en er et<br />
tre snudd på hodet slik at roten kommer øverst.<br />
43. Semantikk<br />
Semantikk er beskrivelser av hva begreper betyr. Ofte blir ordene semantikk og Syntaks brukt<br />
i sammenheng. Grunnen til dette er gjerne at man sier at syntaksen er hvordan man skriver<br />
noe. Og at semantikken er meningsinnholdet i det man skriver. I ordene ”blå bil” er de to<br />
ordene med hver sine bokstaver i gitt rekkfølge syntaks, mens en beskrivelse av hva en bil er<br />
og hvordan fargen blå er utgjør semantikken i uttrykket.<br />
77
44. Semantisk type<br />
En semantisk type er et in<strong>for</strong>masjonselement som representerer et sentralt begrep. En<br />
semantisk type er satt sammen av et navn og en definisjon. Alle klasseattributter skal knyttes<br />
til en semantiske type.<br />
45. Serialisering<br />
Serialisering vil si å representere en modell som en lesbar fil. Ideelt sett skal det være et en-tilen-<strong>for</strong>hold<br />
mellom modellen som en f.eks. ser i <strong>for</strong>m av et diagram og den serialiserte filen.<br />
En meldingsspesifikasjon er en serialisering av en meldingsmodell.<br />
46. Spesialisering<br />
Se Arv<br />
47. Spesifikasjon<br />
I SERES er en spesifikasjon et XML-dokument som representerer en modell, som regel en<br />
meldingsmodell. Det er i størst mulig grad et en-til-en <strong>for</strong>hold mellom en modell og en<br />
spesifikasjon. All in<strong>for</strong>masjon som finnes i en modell bør også finnes i den tilhørende<br />
spesifikasjonen.<br />
48. Synonymer<br />
Ulike ord med samme eller lik betydning. Eksempler: gate og vei, klokke og ur.<br />
49. Syntaks<br />
Syntaks er <strong>for</strong>matreglene som gjelder <strong>for</strong> en skriftlig representasjon av in<strong>for</strong>masjon.<br />
50. Taksonomi<br />
En taksonomi er en samling begreper ordnet i en trestruktur. Taksonomier brukes typisk<br />
innen<strong>for</strong> artsbeskrivelser (dyr og planter) og typebetegnelser (utstyr, biler etc). SERES ordner<br />
settet av Semantisk typer i en taksonomi.<br />
51. Tesaurus<br />
En tesaurus en en avansert ordbok hvor alle ord er relatert til hverandre i <strong>for</strong>m av Synonymer,<br />
, Hyponymer og hyperonymer etc.<br />
52. Trestruktur<br />
En trestruktur er en samling elementer (noder) som er knyttet til hverandre i <strong>for</strong>m av <strong>for</strong>eldreeller<br />
barn-relasjoner, i denne sammenheng som regel betegnet som superelementer<br />
(supernoder) eller subelementer (subnoder).<br />
53. Versjoner<br />
Ulike utgaver av filer og beskrivelser som er knyttet til et gitt tidspunkt og eventuelt en gitt<br />
bruker.<br />
54. XMI<br />
XMI (XML Metadata Interchange) er et XML-<strong>for</strong>mat beskrevet i et vokabular hentet fra MOF<br />
(Meta-Object Facility). Åpningstaggen <strong>for</strong> en klasse kan se ut som følger:<br />
55. XMIgen<br />
XMIgen er et verktøy som leser et UML-<strong>for</strong>ankret XML-<strong>for</strong>mat kalt XMDL som er svært<br />
mye enklere enn XMI. Verktøyet genererer en XMI-basert modell som kan importeres av<br />
SERESuml. Programmet kan også generere XMDL-filer basert på SQL-baserte<br />
databaseetableringsskript.<br />
56. Åpen kildekode<br />
Dette er programmer tilgjengelig i <strong>for</strong>m av kildekode som alle kan bruke fullt ut uten å svare<br />
kostnader til den institusjon eller det firma som har intellektuelt eierskap til kildekoden. Det er<br />
god skikk å la egen kode som bygger på den åpne kildekoden også være åpen på samme måte.<br />
Som minimum må en referere til den åpne koden.<br />
57. Åpne standarder<br />
Dette er standarder som alle kan bruke fullt ut uten å svare kostnader til den institusjon eller<br />
det firma som har intellektuelt eierskap til standarden.<br />
58. Åpne system<br />
Dette er systemer som alle kan bruke fullt ut uten å svare kostnader til den institusjon eller det<br />
firma som har intellektuelt eierskap til systemet. Det er normalt et krav at en tydelig <strong>for</strong>teller<br />
til brukere av sitt eget system at en har implementert hele eller deler av det åpne systemet og<br />
at det angis hvem som har intellektuelt eierskap til dette.<br />
79
VIII Referanser<br />
1. Booch, G., Rumbaugh, J., Jacobson, I.: The Unified Modelling Language User Guide,<br />
2nd edition. Addison-Wesley, Boston, USA, 2005<br />
2. Codd, E. F.: A Relational Model of Data <strong>for</strong> Large Shared Data Banks.<br />
Communications of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387<br />
3. Date,C.J.: An Introduction to Database Systems, Addison-Wesley, 8th edition, July<br />
2003, 983 pages, ISBN 0321197844<br />
4. Fowler M. & Scott K., 2001, UML distilled: a brief guide to the standard object<br />
modelling language, 2 nd edition, Addison Wesley Longman<br />
5. Glushko, R.J., og McGrath, T.: Document Engineering: analyzing and designing<br />
documents <strong>for</strong> business in<strong>for</strong>matics and Web services. MIT Press, Cambridge,<br />
Massachusetts, 2005.<br />
6. ISO/IEC 11179, Final committee draft, Parts 1-6<br />
7. ISO 15000-5 ebXML Core Components Technical Specification<br />
8. OASIS: Universal Business Language (UBL) Naming and Design Rules, 15 November<br />
2004<br />
9. Rumbaugh, J., Jacobson, I., Booch, G.: The Unified Modelling Language Reference<br />
Manual, 2nd edition. Addison-Wesley, Boston, USA, 2005<br />
10. W3C: Extensible Markup Language (XML) 1.0 (Second Edition), W3C<br />
Recommendation, 6 October 2000<br />
11. W3C: XML Schema, W3C Recommendations Parts 0, 1, and 2, 2 May 2001<br />
80