Marko Adam
IZGRADNJA SISTEMA ZA POMENSKO PRESLIKAVO
RELACIJSKIH PODATKOVNIH BAZ
Diplomsko delo
Maribor, oktober 2009
II
Diplomsko delo visokošolskega strokovnega študijskega programa
IZGRADNJA SISTEMA ZA POMENSKO PRESLIKAVO RELACIJSKIH
PODATKOVNIH BAZ
Študent: Marko Adam
Študijski program: VS ŠP Računalništvo in informatika
Smer: Programska oprema
Mentor(ica): dr. Milan Ojsteršek, izr. prof.
Somentor(ica):
Lektor(ica):
Maribor, oktober 2009
IV
ZAHVALA
Zahvaljujem se mentorju izr. prof. dr. Milanu
Ojsteršku za pomoč in vodenje pri opravljanju
diplomske naloge. Prav tako se zahvaljujem ge.
Ines Čeh za dajanje napotkov pri izdelavi spletne
aplikacije.
Zahvala gre tudi staršem, ki so mi omogočili študij
na fakulteti.
V
Ključne besede: pomenski splet, ontologije, procesiranje naravnega jezika,
pomenski opis podatkovnih baz UDK: 004.6(043.2) Povzetek
Diplomsko delo smo posvetili pomenski preslikavi relacijske podatkovne baze. Opisali
smo pretvorbo relacijskega podatkovnega modela v pomenski in obratno. Pri preslikavi
pomenskega modela v relacijski smo morali razmisliti, kako povpraševati po pomensko
opisani bazi s pomočjo stavkov SQL. Predstavili smo osnove področij, ki se ukvarjajo s
pomensko preslikavo relacijskih podatkovnih baz. V okviru praktičnega dela diplomske
naloge smo nekatere prijeme vgradili v obstoječ sistem za odgovarjanje na vprašanja.
VI
Key words: semantic web, ontology, natural language processing, semantic
description of databases UDK: 004.6(043.2)
Abstract
This work is dedicated to semantic mapping of a relational database. We described
conversion of relational data model into semantic data model and opposite. At mapping of
semantic model into relational model, we considered querying semantic description of a
database via SQL statements. We presented basic concepts of fields working on semantic
mapping of relational databases. As a practical part, we implemented some approaches
withing existing question-answering system.
VII
VSEBINA
1 UVOD ............................................................................................................................ 1
1.1 Namen in cilji diplomskega dela ........................................................................... 1
1.2 Struktura dela ......................................................................................................... 2
2 OSNOVE POMENSKEGA SPLETA ........................................................................... 3
2.1 Meta-podatki .......................................................................................................... 5
2.2 Struktura pomenskega spleta ................................................................................. 5
3 OSNOVE PROCESIRANJA NARAVNEGA JEZIKA .............................................. 11
3.1 Opravila ............................................................................................................... 11
3.1.1 Razčlenjevanje ................................................................................................. 11
3.1.2 Korenjenje ....................................................................................................... 12
3.1.3 Lematizacija .................................................................................................... 12
3.1.4 Normalizacija sopomenk ................................................................................. 13
3.1.5 Označevanje besednih vrst .............................................................................. 13
3.1.6 Določanje pomena besed ................................................................................. 14
3.1.7 Razreševanje sklicev........................................................................................ 15
4 POMENSKI OPIS PODATKOVNIH BAZ ................................................................ 16
4.1 Preslikava relacijskega podatkovnega modela v pomenski ................................. 17
4.2 Preslikava pomenskega podatkovnega modela v relacijski ................................. 19
5 IZGRADNJA PREDLOG ZA VPRAŠANJA NA ODGOVORE, KATERIH VPRAŠANJA SE NANAŠAJO NA ISTI ODGOVOR ...................................................... 24
6 SISTEM ZA TVORJENJE IN POMENSKI OPIS PODATKOVNIH BAZ .............. 28
6.1 Regularni izrazi.................................................................................................... 29
6.2 Funkcionalnosti spletnega vmesnika ................................................................... 30
6.2.1 Izdelava tabele ................................................................................................. 30
6.2.2 Urejanje strukture tabele .................................................................................. 31
6.2.3 Briši tabelo ....................................................................................................... 32
6.2.4 Urejanje podatkov ........................................................................................... 32
6.2.5 Urejanje vprašanj ............................................................................................. 33
6.2.6 Urejanje dejstev ............................................................................................... 35
6.2.7 Urejanje vnaprej definiranih regularnih izrazov .............................................. 37
6.2.8 Dodajanje preostalih tabel ............................................................................... 38
6.3 Končni videz aplikacije ....................................................................................... 38
7 ZAKLJUČEK .............................................................................................................. 40
8 NADALJNJE DELO ................................................................................................... 42
9 LITERATURA ............................................................................................................ 44
VIII
SEZNAM SLIK
Slika 1: Pretvorba spletnih dokumentov v pomenske spletne dokumente ............................ 4
Slika 2: Nestrukturirani, delno strukturirani in strukturirani podatki .................................... 4
Slika 3: Struktura pomenskega spleta .................................................................................... 5
Slika 4: Pomenska mreža strukturirano predstavlja dejstva .................................................. 6
Slika 5: Ontologija določa, da lahko samo z enim od sinonimov opišemo lastnost osebe ... 8
Slika 6: Zapisa RDF opisujeta različna naziva fakultete študenta ......................................... 9
Slika 7: Ontologija določa, da je lahko študent samo na eni fakulteti ................................... 9
Slika 8: Slovar besed in normaliziranih oblik ..................................................................... 13
Slika 9: Slovar besednih vrst ............................................................................................... 14
Slika 10: Baza zaposlenih s pomensko opisanimi stolpci ................................................... 17
Slika 11: Seznam podjetij s podatki o zaposlenih ............................................................... 18
Slika 12: RDF graf relacijske podatkovne baze .................................................................. 19
Slika 13: Tabele zaposlenih, zapisane s trojčki ................................................................... 20
Slika 14: Zapisane tabele podjetij s trojčki .......................................................................... 21
Slika 15: Tabele relacij med zaposlenimi in podjetji, zapisane s trojčki ............................. 21
Slika 16: Ustrezen SQL stavek za združitev štirih tabel tabele zaposlenih ......................... 22
Slika 17: Ustrezen SQL stavek za združitev treh tabel tabele podjetij ................................ 22
Slika 18: Primeren SQL stavek za združitev treh tabel zaposlenih in podjetij .................... 22
Slika 19: Tabela za opis relacije med podjetjem in zaposlenimi ......................................... 23
Slika 20: Slovar za dodane besede k odgovoru pred sinonimi ............................................ 28
Slika 21: Vmesnik za izdelavo nove tabele ......................................................................... 31
Slika 22: Vmesnik za urejanje strukture tabele ................................................................... 32
Slika 23: Vmesnik za urejanje podatkov ............................................................................. 33
Slika 24: Vmesnik za urejanje vprašanj .............................................................................. 35
Slika 25: Vmesnik za urejanje dejstev ................................................................................. 36
Slika 26: Vmesnik za urejanje vnaprej definiranih regularnih izrazov ............................... 37
Slika 27: Končni videz združenih aplikacij ......................................................................... 39
IX
KRATICE
HTML - HyperText Markup Language - označevalni jezik za ustvarjanje spletnih strani
NLP - Natural Language Processing - procesiranje naravnega jezika
RDF - Resource Description Framework - ogrodje za opisovanje virov
SQL - Structured Query Language – strukturirani poizvedni jezik
OWL - Web Ontology Language - jezik spletnih ontologij
URI - Uniform Resource Identifier - univerzalni identifikator vira
XML - Extensible Markup Language - razširljiv označevalni jezik
Stran 1
1 UVOD
1.1 Namen in cilji diplomskega dela
Svetovni splet se razvija zelo hitro. Posledično nam s tem razvojem ponuja veliko
količino različnih informacij, ki so bolj ali manj dostopne vsakemu uporabniku. Najti te
informacije je kar velik problem za povprečnega uporabnika. Prav za to opravilo so se
razvili t.i. spletni iskalniki. Vendar nam vsi do sedaj razviti iskalniki ponujajo veliko
količino povezav, ki se navezujejo na vnesene ključne besede. Marsikateremu uporabniku
dela vnos ključnih besed nemalo težav. Na primer, če želimo izvedeti naslov Fakultete za
elektrotehniko, računalništvo in informatiko, bi dobili povezave do spletnih strani ali
dokumentov. Veliko teh povezav bi bilo upoštevajoč uporabnikovo informacijsko potrebo
povsem nekoristnih. Ljudje si ob težavnem iskanju želijo, da bi namesto ključnih besed
zapisovali kar vprašanja, zastavljena v slovenskem jeziku. Porodila se je zamisel, da bi
razvili sistem, ki skuša čim natančneje z enim odgovorom odgovoriti na zastavljeno
vprašanje.
V Laboratoriju za heterogene računalniške sisteme so že razvili tak sistem v okviru
diplomskega dela. Pojavljajo pa se vedno nova vprašanja, na katera sistem ne zna
odgovoriti. Informacije, ki so zapisane v odgovoru, so lahko zapisane v tabelah v
podatkovni bazi. Primeri takšni podatkovnih baz so podatki o zaposlenih, cenikih, urniku...
Kompleksnost podatkovne baze v smislu velikega povečanja števila vnosov lahko na ta
račun naraste. V okviru praktičnega dela moje diplomske naloge smo se odločili, da bi
obstoječ sistem nadgradili. Izdelali smo sistem za gradnjo in pomensko preslikavo jedrnega
dela podatkovne baze sistema za odgovarjanje na vprašanja. Gre za tabele, ki vsebujejo
podatke kot stolpce, ki so ključni elementi znotraj vprašanj in odgovorov. Na primer,
vprašanje Kdo je Zdenka Vodopivec? vsebuje del, ki predstavlja ime in priimek osebe.
Vprašanje je v sistemu predstavljeno tako, da to velja za vsako osebo znotraj tabele (ime in
Stran 2
priimek sta dva stolpca v okviru te tabele). Tudi odgovor je vezan na določene druge
stolpce znotraj te tabele. Zamisel je, da bi se zraven urejanja strukture in podatkov k
stolpcem pripisala tudi vprašanja in dejstva; k podatkom pa bi dodali sopomenke. K vsaki
tabeli pa bi lahko pripisali vprašanje in dejstva, ki bi predstavljala relacijski opis med
tabelami v slovenskem jeziku. Vendar s temi pristopi sistem še ne bi znal odgovarjati po
novem načelu; bi pa to bila dobra osnova za nadaljnje delo, ki zahteva več podpore
procesiranju naravnega jezika.
1.2 Struktura dela
Diplomsko delo sestavlja osem poglavij. Po uvodnih besedah sledi pregled področij
pomenskega spleta in procesiranja naravnega jezika. Podana in opisana so opravila, ki se
najpogosteje uporabljajo. Sledi predstavitev področja pomenskega opisovanja podatkovnih
baz, kjer smo opisali tudi postopek preslikave iz relacijskega v pomenski podatkovni
model in obratno. Sledi opis algoritma za izgradnjo predlog vprašanja in odgovora
zapisanih vprašanj, ki se nanašajo na isti odgovor. Naslednje poglavje je v celoti
posvečeno opisu aplikacije. Predstavljene so funkcionalnosti in opisane nekatere rešitve
pomembnejših opravil. V zadnjem podpoglavju tega poglavja sledi vizualna predstavitev
združene aplikacije, ki so jo že razvili v Laboratoriju za heterogene računalniške sisteme s
pomočjo moje rešitve. V predzadnjem poglavju podajamo zaključne misli in nato
ugotovitve in napotke za nadaljnje delo.
Stran 3
2 OSNOVE POMENSKEGA SPLETA
Danes se več ne moremo izogniti veliki količini informacij, ki obstaja na spletu v obliki
spletnih strani ali drugih dokumentov. Ta količina se je in se bo še nadalje povečevala.
Velika pomanjkljivost je v tem, da so ti podatki nestrukturirani. Zato so se začeli razvijati
različni spletni iskalniki. Ti sicer služijo svojemu namenu tj. iskanju informacij po spletu.
Vendar nam iskalniki vrnejo seznam povezav do spletnih strani ali ostalih dokumentov, na
katerega se nanašajo iskane informacije. Iskalna poizvedba je pogosto presplošna, hkrati pa
je iskano informacijo potrebno izluščiti iz dokumenta.
Zgoraj opisane težave rešuje pomenski splet. Nanaša se na označevanje virov s
pomočjo ontologij, ki so opisane v podpoglavju [2.2]. Zamisel pomenskega spleta je v
boljši organizaciji spletnih strani oz. dokumentov. Informacije na spletu naj bi bile
organizirane na način, ki je primerljiv s podatkovnimi bazami. Tam ima tabela zraven
podatkov v stolpcih dodeljene tudi meta-podatke, ki opisujejo pomen zapisanih podatkov.
Tako je cilj ustvariti splet tako, da bo računalnikom razumljiv in ga bodo lahko obdelovali.
Računalniki bi te podatke ne samo prikazovali, ampak jih tudi avtomatizirano obdelovali s
pomočjo različnih aplikacij.
Pomenski splet je razširitev svetovnega spleta, kjer so informacije pomensko
opredeljene, kar posledično omogoča boljše sodelovanje med ljudmi in računalniki.
Stran 4
Pretvorbo v pomenske spletne dokumente iz spletnih dokumentov prikazuje spodnja
slika:
Slika 1: Pretvorba spletnih dokumentov v pomenske spletne dokumente
Jezik XML (angl. »Extensible Markup Language«) se je izkazal za primerno sredstvo
za opis in pošiljanje podatkov. Na naslednji sliki je prikazan primer nestrukturiranih, delno
strukturiranih in strukturiranih podatkov:
Slika 2: Nestrukturirani, delno strukturirani in strukturirani podatki
Rešitve, ki temeljijo na XML, še ne zadostujejo povsem, saj zapisanim podatkom
primanjkujejo pomenski opisi. To težavo rešujejo ontologije, ki definirajo strukturo in
pomen strojno berljivih (meta) podatkov (predstavljene so v [2.2]).
Stran 5
2.1 Meta-podatki
Obogatitev informacij s pomenom na svetovnem spletu bo uspešno, ko bomo
zagotovili enolično pojmovanje vseh vrst virov, kot so spletne strani, slike, video posnetki,
ostali dokumenti (besedila, preglednice itd.) in meta-podatki za opisovanje podatkov.
Meta-podatki lahko opisujejo dokument, del dokumenta ali cele spletne strani. Pomembno
je vedeti, da so meta-podatki pomenski. Torej nam povedo nekaj o vsebini (na primer
seznam večpredstavnih datotek, povezav na ostale dokumente ipd.). Razlika med
zapisanimi meta-podatki v dokumentih HTML današnjega spleta in pomenskih meta-
podatkih je v tem, da pri pomenskem spletu lahko označimo podatek s pomenom v večji
razsežnosti; ne samo npr. naslov spletne strani, avtorja, ampak tudi da gre za prodajo orodij
in se lahko sklicujemo na obstoječo ontologijo (tj. znanje) o orodjih ipd.
2.2 Struktura pomenskega spleta
Opisali bomo elemente strukture pomenskega spleta, ki so predstavljeni na spodnji
sliki:
Slika 3: Struktura pomenskega spleta
Stran 6
URI (angl. »Uniform Resource Identifier«) določa poimenovanje virov; na primer
spletnih dokumentov. Podmnožica URI-ja je tudi URL, ki določa omrežno lokacijo
dokumenta ali spletne strani (na primer http://www.feri.uni-mb.si).
UNICODE je standard za zapis množice mednarodnih znakov ter omogoča, da lahko na
spletu skozi pisavo uporabljamo poljuben svetovni jezik.
XML je označevalni jezik, ki se uporablja za opis dokumentov s strukturirano vsebino.
Dokument XML lahko vsebuje vgnezdene elemente z določenimi lastnostmi in vsebino.
Shema XML se uporablja za izražanje mogoče strukture določene množice dokumentov
XML. To je množica pravil, kako mora biti oblikovan dokument XML.
RDF (angl. »Resource Description Framework«) je osnovna oblika za zapis podatkov
na pomenskem spletu. Opisuje vire na spletu. Vir je lahko spletna stran, del spletne strani,
element XML ali pa viri, ki niso dosegljivi prek spleta (na primer učbenik za srednjo šolo).
Temelji na trojčkih oblike »osebek-povedek-predmet«. Množica takšnih trojčkov se
imenuje graf dejstev RDF, ki ga lahko računalnik preiskuje. Vir je definiran z URI-jem.
Tako imenovane pomenske mreže strukturirano predstavljajo seznam dejstev. Uporabljajo
dedovanje podobno kot je to pri objektno orientiranem programiranju. Gradimo lahko
pomenske mreže, ki so na splet vključene s pomočjo sklicev prek URI-jev. Primer vidimo
na sliki 4:
Slika 4: Pomenska mreža strukturirano predstavlja dejstva
Stran 7
Kot je pomemben pomen v naravnem jeziku, je tudi pomemben pomen v vsebini RDF.
Pomen dokumenta RDF je določen s sklici na sheme RDF. Vsak trojček RDF lahko
opredeli slovar izrazov, v katerih so opredeljeni izrazi, ki se uporabljajo v dokumentih
RDF in njihov pomen. Da bi se izognili različnim definicijam enakih izrazov, se tukaj
uporabljajo tudi naslovni prostori XML.
Na naslednji ravni so postavljene ontologije, ki določajo pomen v pomenskem spletu.
Ontologije so najpomembnejši del vsake aplikacije v pomenskem spletu. Od več definicij
različnih avtorjev je ostala naslednja:
Ontologija je formalna, nedvoumna specifikacija skupnega pojmovanja.
• Pojmovanje se nanaša na abstraktni model nekega pojava v svetu, ki določa pojme.
• Nedvoumno pomeni, da so uporabljeni pojmi in omejitve določeni enoumno.
• Formalna pomeni, da mora biti ontologija strojno berljiva.
• Skupna pomeni, da ontologija zajema znanje, ki ga podpira več ljudi.
Za zapis ontologij potrebujemo posebne jezike. Le-ti omogočajo predstavitev znanja za
določeno področje in lahko vsebujejo pravila za sklepanje, ki podpirajo obdelavo tega
znanja. Trenutno je najbolj razširjen ontološki jezik OWL (angl. »Web Ontology
Language«). Jezik vključuje logiko. S pomočjo tega jezika lahko izrazimo trditve, kjer
pravilnost le-teh zagotavlja človek. Določene trditve pa se lahko tudi samodejno izpeljejo.
OWL
Jezik OWL kot del spletnih tehnologij omogoča smiselne poizvedbe na določeno
tematiko. Temelji na zapisih in pravilih jezikov XML in RDF. Glavni cilj tega jezika je, da
iz v stavku zapisanih poizvedb vrne smiseln povzetek naše informacijske poizvedbe na
podlagi informacijske potrebe.
Stran 8
Je pomenski označevalni jezik za objavljanje in izmenjavo ontologij na spletu. Jezik je
zasnovan za aplikacije, ki naj zraven same predstavitve informacij tudi procesirajo vsebino
dokumentov.
Primer uporabe ontologije:
V slovenskem jeziku imamo zapisana naslednja dejstva: »Oseba ima ime Ime«, »Oseba
se imenuje Ime«, »Osebi je ime Ime«. Vsako dejstvo predstavimo v obliki osebek-
povedek-predmet:
• Oseba - ima ime - Ime
• Oseba - se imenuje - Ime
• Oseba - je ime - Ime
Ontologija pri opisu lastnosti neke osebe določa, da to lastnost lahko opišemo samo z enim
pojmom, ki nadomešča vse sopomenke; kar vidimo na spodnji sliki:
Slika 5: Ontologija določa, da lahko samo z enim od sinonimov opišemo lastnost osebe
Poglejmo še, kako je s sklepanjem. Zapisali smo tri sopomenke za opis lastnosti imena
osebe. Sklepamo lahko, da izrazi ima ime, se imenuje, je ime predstavljajo en pojem.
Osebki imajo lahko vrednost v obliki niza. To je zelo primerno, ko se RDF uporablja za
meta-podatke. Na primer:
http://www.feri.uni-mb.si/images/feri_napis.png je slika
Stran 9
Vzemimo še drug primer. Imamo vprašanje »Študent katere fakultete je Marko
Adam?«. Naletimo lahko na dva zapisa RDF, ki odgovarjata na to vprašanje:
Slika 6: Zapisa RDF opisujeta različna naziva fakultete študenta
Upoštevamo ontologijo, da je študent lahko samo na eni fakulteti, kot je razvidno iz
spodnje slike:
Slika 7: Ontologija določa, da je lahko študent samo na eni fakulteti
Predstavimo izjave o nazivu fakultete za študenta v obliki osebek-povedek-predmet.
• Marko Adam — naziv fakultete — FERI MB
• Marko Adam — naziv fakultete — Fakulteta za elektrotehniko, računalništvo in
informatiko Maribor
Ker ontologija določa, da je študent lahko samo na eni fakulteti, se privzame, da oba
naziva fakultet določata isto fakulteto.
Stran 10
SPARQL (angl. »Simple Protocol and RDF Query Language«) je poizvedovalni jezik
po podatkih RDF. Podoben je SQL-u, vendar uporablja trojčke RDF in vire za vrnjene
rezultate. Ker OWL temelji na RDF, je ta jezik primeren tudi za poizvedovanje po
ontologijah; je tudi protokol za dostop do zapisov RDF.
Vsi pomeni in pravila so v hierarhiji ontologij postavljeni pod ravnijo zaupanja.
Rezultati sklepanja se uporabljajo za dokazovanje sklepov. Dokaz z zaupanjem vrednimi
viri pomeni, da lahko rezultatom zaupamo. Za zagotavljanje zanesljivosti in varnosti
dostopa do virov se uporablja kriptografija, ki vključuje digitalne podpise za preverjanje
izvora virov. Nad vsemi ravnmi lahko gradimo uporabne aplikacije z uporabniškimi
vmesniki.
Stran 11
3 OSNOVE PROCESIRANJA NARAVNEGA JEZIKA
Procesiranje naravnega jezika (»Natural Language Processing« oz. kratica NLP) je
področje, ki se ukvarja z obdelavo besedil, zapisanih v naravnem jeziku. Ideja te vrste
obdelave besedil je, da se obdela nestrukturirano besedilo tako, da bo razumljivo
računalniku.
Hkrati z razvojem spleta se je povečala tudi količina podatkov, ki so po navadi zapisani
v naravnem jeziku. Pridobitev za nas pomembnih informacij iz teh besedil je lahko zelo
dolgotrajno opravilo. Zato so se začeli razvijati sistemi za obdelavo naravnega jezika. V
naslednjih podpoglavjih bomo podali opravila, ki nastopajo pri obdelavi vsebin, zapisanih
v naravnem jeziku.
3.1 Opravila
Področje NLP je razdeljeno na več podproblemov, ki se dajo rešiti z algoritmi, ki jih
podajamo v nadaljevanju. Nekateri algoritmi so tudi priprava podatkov kot vhodne podatke
v druge algoritme.
3.1.1 Razčlenjevanje
Razčlenjevanje besedila je postopek delitve na manjše enote, na primer posamezne
besede. Je prva in osnovna operacija, ki se po navadi izvede na začetku obdelave besedil.
Rezultati tega razčlenjevanja se uporabijo pri nadaljnjih opravilih. Poglejmo si preprost
primer razčlenjevanja. Imamo zapisan stavek »Jože Čuden bo diplomiral na Fakulteti za
elektrotehniko, računalništvo in informatiko«. Dobiti moramo seznam vseh besed, ki so
Stran 12
med seboj ločene z ločilom kot je presledek, vejica ali pika. Večina programskih orodij že
ima vgrajene funkcije za razčlenjevanje na besede. Kot rezultat bi dobili naslednji seznam
besed: Jože, Čuden, bo, diplomiral, na, Fakulteti, za, elektrotehniko, računalništvo, in,
informatiko.
3.1.2 Korenjenje
Korenjenje oz. krnjenje (angl. »stremming«) je postopek, pri katerem odstranjujemo
končnice besedam, ki niso v osnovni obliki. Obstaja več pristopov h korenjenju; vsak s
svojo zmogljivostjo in natančnostjo.
Pri algoritmih z grobim pristopom (angl. »brute force«) se korenjenje izvede s pomočjo
pomožne tabele, v katerih je zapisana oblika besede ter njen pripadajoči koren. Poišče se
zapis z iskano obliko, nato pa to obliko zamenja s korensko obliko.
Pristopi z rezanjem pripon in končnic (angl. »suffix stripping«) uporabljajo pravila, ki
na podlagi pripone besed določajo, kako naj se določi korenska oblika. Za slovenski jezik
je prav gotovo težje določiti ta pravila. Besede se lahko končujejo s pripono »i«, vendar če
bi odrezali samo to pripono, bi dobili za besedo »psi« rezultat »ps«; kar je seveda napačno.
Tukaj je v primerjavi z grobim pristopom potrebno precejšnje znanje o konkretnem jeziku.
Poglejmo si primer. Besedam »kuža«, »kužki«, »kužka«, »kužku« skušamo določiti
koren, ki je sestavljen iz čimveč ujemajočih znakov. Če bi upoštevali zadnje tri besede, bi
lahko določili koren »kužk«, vendar ta koren ni primeren za prvo besedo. Zadovoljiti se
moramo s korenom »kuž«.
3.1.3 Lematizacija
Lematizacija je podoben proces kot krnjenje besed. Razlikuje se v tem, da se besede
nadomeščajo z osnovnimi oblikami besed. Izvaja se s pomočjo posebnega slovarja, v
Stran 13
katerem so zapisani pari izpeljanka - osnovna oblika. V primerjavi s krnjenjem besed se
lematizacija razlikuje tudi v tem, da krnjenje ne zahteva pretvorbe besede v osnovno
obliko. Na primer za besede »letim«, »leteti«, »letiš« je v slovarju zapisana osnovna oblika
»leteti«, ki se tudi imenuje »lema« zgoraj naštetih besed. V stavku »Letim domov« bi po
postopku lematizacije zapisali »Leteti domov«.
3.1.4 Normalizacija sopomenk
Sinonimi ali sopomenke so besede, ki imajo enak pomen. Takšen primer sta zaslon in
prikazovalnik. Na drugih področjih imajo lahko predmeti več imen. Ta imena je potrebno
spraviti v enotno obliko. To opravilo je naloga normalizacije sopomenk. Sinonimi se
razrešujejo s pomočjo leksikonov, ki vključujejo sinonime in normalizirano obliko. Ko se
tak sinonim najde, se ga enostavno zamenja z normalizirano obliko. Primer slovarja
sopomenk in njenih normaliziranih oblik vidimo na spodnji sliki:
Slika 8: Slovar besed in normaliziranih oblik
Sestavek »Prenosnik ima prikazovalnik. Danes imajo že skoraj vsi študenti
računalništva laptop.« bi se pretvoril v »Prenosni računalnik ima zaslon. Danes imajo že
skoraj vsi študenti računalništva prenosni računalnik.«.
3.1.5 Označevanje besednih vrst
Označevanje besednih vrst je postopek odkrivanja besednih vrst konkretnih besed v
stavkih. Besedne vrste so na primer samostalniki, glagoli, vezniki itd. Označevanje se
izvaja s pomočjo označevalnikov besednih vrst (angl. »PoS Taggers« oz. »Part of Speech
Stran 14
Taggers«). Obstaja več algoritmov z različnimi pristopi reševanja tega problema; na primer
s pomočjo nadziranega in nenadziranega strojnega učenja. Nadzirano učenje potrebuje že
rešene primere. Ta pristop je časovno zahteven, ker moramo pridobiti ročno izdelane
rešene primere. Pri nenadzorovanem učenju se primeri določijo samodejno na podlagi
vzorcev uporabe besed, vendar je doseg oz. uspešnost lahko drugačna. V stavku »Milan
stanuje v mestu« bi želeli poiskati besedne vrste. Pomagamo si lahko s slovarjem v
katerega bi morali ročno vpisati besedo ter njeno besedno vrsto kot je prikazano spodaj.
Slika 9: Slovar besednih vrst
Tako hitro ugotovimo katere besede pripadajo kateri besedni vrsti. Besedi pa bi lahko
pripisali tudi sopomenke kot smo na sliki 9 za primer »mesto«, ker lahko uporabniki
različno sklanjajo iste besede.
3.1.6 Določanje pomena besed
Določevanje pomena besed je postopek za enoumno ugotovitev pomena posamezne
besede (ali besednih zvez). Pri tem reševanju obstajata globoki in plitki pristop. Globoki
pristop uporablja zbirko splošnega znanja, ki razrešuje dvoumnosti. Plitki pristop določuje
pomen besede na podlagi besed v okolici. Uporablja se nadzorovano ali nenadzorovano
strojno učenje. Nadzorovano uporablja že ročno označene primere s pomenom besede. Pri
nenadzorovanem učenju pa se uporablja več različnih algoritmov.
Stran 15
Beseda »klop« ima lahko v dveh stavkih drugačen pomen. V stavkih »Sedel sem na
klop« in »V gozdu sem dobil klopa«. V prvem stavku pomeni ta beseda pripravo za
sedenje, v drugem pa za gozdno žival. Uporabili bomo plitki pristop za računalniško
razreševanje pomena besede »klop«. Pomena v obeh stavkih bi ugotovili tako, da bi
pogledali besede v okolici besede »klop«. Če je v bližini te besede zapisana beseda
»sedeti« gre najverjetneje za pripravo za sedenje. Če je v bližini te besede beseda »gozd«
gre za gozdno žival. Lahko pa imamo take stavke pri katerih bi morali upoštevati tudi
dodano končnico besedi, katere iščemo pomen. Takšen primer je lahko »Dobil sem klopa«
in »Dobil sem klop«. Kadar beseda nima končnice predvidevamo, da gre za pripravo za
sedenje, v nasprotnem primeru pa za gozdno žival.
3.1.7 Razreševanje sklicev
Razreševanje sklicev je postopek razreševanja besede, ki se sklicuje na drugo besedo.
Razreševanje je lahko zelo težavno, saj se lahko enak zaimek v različnih stavkih sklicuje
na različne besede. V stavku »Muca je dobila zajtrk in ga pojedla« se zaimek »ga« sklicuje
na muco. Ugotavljamo na katere besede se sklicujejo zaimki. Lahko pa se zgodi, da se isti
zaimek sklicuje na različne besede v različnih stavkih. Npr. v stavkih »Muca je pojedla
zajtrk, ker je bil dober« ter »Muca je pojedla zajtrk, ker je bila lačna« se zaimek je v prvem
stavku sklicuje na zajtrk, v drugem stavku pa se sklicuje na muco. Za ugotavljanje kateri
zaimki pripadajo katerim besedam bi morali imeti definiran slovar v katerega bi zapisovali
besedo ter zaimke, ki se nanašajo na to besedo. Zaimki pa so lahko zapisani tudi pred
zapisano besedo na katero se nanaša ta zaimek.
Stran 16
4 POMENSKI OPIS PODATKOVNIH BAZ
Ko še ni bilo računalnikov, so bili podatki zapisani na listkih, zvezku ali pa v skupaj
spetih dokumentih. Sedaj so podatki zapisani v datoteki, ki je shranjena na trdem disku ali
drugem mediju in vedno pripravljeni za pregledovanje ali urejanje.
V podatkovni bazi hranimo informacije kot so razni dogodki, novice, osebe… V
podjetju, ki se ukvarja s prodajo, lahko na primer hranimo informacije o strankah,
dobaviteljih, izdelkih in računih. Ti pojmi se od drugih razlikujejo po naboru lastnosti, ki
nas bodo zanimale. Stranke imajo lastnosti, kot so: ime, priimek in naslov, izdelki imajo
lastnosti naziv, cena, številka dobavitelja, ki ga dostavlja itd. Lastnosti so to, kar loči stvari
med seboj; stranke, dobavitelje, izdelke in račune lahko med seboj povezujemo z
relacijami. Obstaja več vrst relacij:
• 1 : 1 (ena proti ena), kjer enemu zapisu v tabeli pripada samo en zapis v drugi
tabeli;
• 1 : N (ena proti mnogo), kjer enemu zapisu v tabeli pripada en ali več zapisov v
drugi tabeli;
• M : N (mnogo proti mnogo), kjer enemu zapisu v tabeli pripada en ali več
zapisov v drugi tabeli in hkrati enemu zapisu v drugi tabeli pripada en ali več
zapisov v prvi tabeli.
S pomočjo teh odnosov lahko združujemo podatke iz več tabel. Ne poznamo pa
pomena odnosov. Veliko lažje bi si predstavljali, če bi dodali pomene v slovenskem jeziku
k odnosom in lastnostim. Odnos med računi in strankami lahko opišemo s stavkom
»Računi pripadajo strankam.«; pri čemer moramo vedeti, da beseda pripadajo opisuje
odnos med tabelama račun in stranka. Prav tako lahko dodelimo pomen lastnosti stranke.
Stran 17
Za naslov osebe bi lahko zapisali stavek »[Oseba] stanuje na naslovu [Naslov].«. Ti
opisi bodo nadalje zelo priročni pri praktičnem delu diplomske naloge. Predstavili bomo
obe vrsti preslikav, ki sta vezani na pomen odnosov in lastnosti.
4.1 Preslikava relacijskega podatkovnega modela v pomenski
Za predstavitev baze na pomenskem spletu moramo relacijski model baze pretvoriti v
semantični. To lahko izvedemo s pomočjo RDF-ja. RDF je jezik, ki lahko opiše različne
objekte (vire), njegove lastnosti in odnose med njimi s pomočjo stavkov, ki so razumljivi
ljudem. Omenili smo že, da je RDF sestavljen iz trojčkov, kot so osebek, povedek in
predmet. Ti trojčki so zapisani v stavku RDF, ki ga lahko direktno preslikamo v graf. V
njem predstavlja vozlišče osebek, elipsa vrednost lastnosti osebka ter povezava opis
lastnosti osebka.
Relacijska podatkovna baza vsebuje tabelo, v kateri so zapisi, ki vsebujejo nabor
lastnosti. Vsak zapis je napolnjen z vsebino lastnosti. Na spodnji sliki je predstavljen
enostaven diagram baze zaposlenih v podjetjih.
Slika 10: Baza zaposlenih s pomensko opisanimi stolpci
Stran 18
Sledi prikaz treh tabel, ki vsebujejo nekaj podatkov. Potrebna je še pomožna tabela, ki
predstavlja odnos mnogo proti mnogo med podjetji in zaposlenimi; namreč, en zaposlen se
lahko zaposli v več podjetjih in hkrati v enem podjetju je več zaposlenih. Zraven je še
dodana lastnost datum zaposlitve, ki določa datum zaposlitve zaposlenih v pripadajočih
podjetjih. Tabele so predstavljene na sliki 11.
Slika 11: Seznam podjetij s podatki o zaposlenih
Na sliki 12 je predstavljen graf RDF baze iz slike10. Relacije med osebki in predmeti
so opisane z imenom lastnosti. Dobro bi bilo še pojasniti značilnosti primarnih ključev v
relacijski bazi. V zgornjih treh tabelah so posebni stolpci, ki predstavljajo primarni ključ,
označen z ID_podjetja in ID_zaposlenega. Tako kot tabele, relacije, lastnosti in vrednosti
lastnosti je tudi primarni ključ predstavljen kot vir. To omogoča, da se izdelajo stavki RDF
z namenom opisovanja teh virov.
Stran 19
Slika 12: RDF graf relacijske podatkovne baze
Preslikava relacijske baze v pomensko nadgrajuje predstavitev klasično predstavljene
baze s tem, da doda pomenski opis relacij med tabelami ter stolpci.
4.2 Preslikava pomenskega podatkovnega modela v relacijski
Pri pomensko opisani podatkovni bazi se hitro pojavi potreba po tem, da izluščimo
podatke. To opravilo bi radi opravili na tak način, da bi bilo poizvedovanje čim bolj
podobno kot pri klasičnih relacijskih podatkovnih bazah. Želeli bi pridobiti podatke z
jezikom SQL (angl. »Structured Query Language«). V tem poglavju bomo teoretično
skušali z SQL stavki pridobiti za nas zanimive informacije iz pomensko opisane relacijske
podatkovne baze.
Stran 20
Omenili smo že, da so RDF stavki zapisani s trojčki. Najprej bomo skušali tabele iz
prejšnjega poglavja preurediti tako, da bodo vsebovale tri stolpce (osebek, povedek in
predmet). Vsako tabelo bomo razdelili tako, da bomo tabelo razdelili na toliko tabel,
kolikor ima stolpcev. V te tabele bomo zraven imena stolpca ter njegove vrednosti dodali
tudi pomen. Tako izpolnjene tabele zaposlenih so predstavljene spodaj:
Slika 13: Tabele zaposlenih, zapisane s trojčki
Na podoben način razdelimo tabelo, ki opisuje odnos med zaposlenimi in podjetji ter
tabelo podjetij. Na naslednji sliki je prikazan primer razdelitve tabele podjetij tako, da so
podatki zapisani v obliki trojčkov.
Stran 21
Slika 14: Zapisane tabele podjetij s trojčki
Razdelimo še tabelo, ki opisuje odnos med zaposlenimi in podjetji v obliki trojčkov
tako kot je prikazano na spodnji sliki.
Slika 15: Tabele relacij med zaposlenimi in podjetji, zapisane s trojčki
Stran 22
Vse tri tabele imamo predstavljene s pomenskimi opisi stolpcev. Pripravljeni smo na
združitev tabel. Tako se bomo na koncu lahko dokopali do želenih informacij pomensko
opisane baze iz več tabel. Stavek SQL bo precej kompleksen, če predpostavimo, da imamo
namesto treh tabel sedaj deset. Do končnega stavka SQL bomo nadalje prišli po korakih.
Najprej bomo vse razdeljene tabele združili v tri tabele z dodanimi meta-podatki stolpcev
(pomenski opis stolpcev), nato pa iz teh treh tabel zgradili končni SQL stavek.
Vse tri razdeljene tabele moramo združiti v nove tri, da vemo, kateri podatki s
pomenskimi opisi spadajo skupaj. Predpostavimo, da se razdeljene tabele zaposlenih od
zgoraj navzdol imenujejo Tabela1, Tabela2, Tabela3 in Tabela4. Primeren SQL stavek se
glasi:
Slika 16: Ustrezen SQL stavek za združitev štirih tabel tabele zaposlenih
Razdeljene tabele podjetij se od zgoraj navzdol imenujejo Tabela1, Tabela2, Tabela3.
Primeren SQL stavek bi bil naslednji:
Slika 17: Ustrezen SQL stavek za združitev treh tabel tabele podjetij
Razdeljene tabele, ki opisuje odnos med zaposlenimi in podjetji se od zgoraj navzdol
imenujejo Tabela1, Tabela2, Tabela3, zato je SQL stavek enak zgornjemu, kar je prikazano
na naslednji sliki:
Slika 18: Primeren SQL stavek za združitev treh tabel zaposlenih in podjetij
Stran 23
Predstavljene imamo vse tri tabele z dodanimi pomenskimi opisi vseh stolpcev. To je
primerno za postavljanje vprašanj, katerih odgovor pridobimo iz samo ene tabele; na
primer »Kje je locirano podjetje Intera d.o.o?«. Vendar lahko uporabnik v končnem
sistemu postavi vprašanje »Katere zaposlene zaposluje Intera d.o.o?«. Ljudje takoj vedo,
da beseda »zaposluje« v zadnjem vprašanju pomensko opisuje relacijo med zaposlenimi in
podjetji. In če bi sistem želel odgovoriti na to vprašanje, bi morali združiti vse tri
pridobljene tabele, ki jih dobimo iz SQL stavkov iz slik 14, 15 in 16. Torej nekako bo še
potrebno s pomočjo trojčkov opisati relacijo med zaposlenimi in podjetji. Zgradili bi
spodaj prikazano tabelo.
Slika 19: Tabela za opis relacije med podjetjem in zaposlenimi
Treba je ugotoviti, kateri ključi so primarni in kateri tuji, da bomo lahko povezali vse
tri tabele.
Stran 24
5 IZGRADNJA PREDLOG ZA VPRAŠANJA NA ODGOVORE, KATERIH VPRAŠANJA SE NANAŠAJO NA ISTI ODGOVOR
V tem poglavju bomo podali algoritme, ki bodo na podlagi vprašanj ki se nanašajo na isti odgovor zgradili t.i. predlogo. Iz teh predlog bo sistem še enostavneje odgovarjal na vprašanja. Imamo zapisana npr. vprašanja:
• Kje dela Milan Ojsteršek? • Kje je zaposlen Milan Ojsteršek? • Za koga dela Milan Ojsteršek?
Ta vprašanja se navezujejo na stolpec Oddelek v tabeli Zaposleni. Želeli bi, da se
izločijo vse različne vprašalnice ter sinonimi. Za zgornja tri vprašanja bi morali pridobiti naslednjo predlogo vprašanja: (Kje, Za koga) (dela, je zaposlen) [Oseba_Ime] [Oseba_Priimek]?
Predloga za odgovor bi bila predstavljena tako: [Oseba_Ime] [Oseba_Priimek] (dela, je zaposlen) na [Oseba_Oddelek].
Sinonime (dela, je zaposlen) imamo zapisane v naši aplikaciji kot dejstva stolpcev.
Kako so pravilno zapisana dejstva je opisano v [6.2.6]. Za vse sinonime imamo zapisano tudi ime tabele ter ime stolpca na katere se navezujejo. Algoritem za ugotavljanje entitet (katerim stolpcem pripada kateri podatek) je že znan. Napisati bi morali podobne algoritme za pridobivanje vprašalnic sinonimov pri predlogi vprašanja ter celotno predlogo odgovora.
Najprej si poglejmo algoritem za pridobivanje vprašalnic ter sinonimov za predlogo
vprašanja. Vprašalnice so ločeno zapisane v naši aplikaciji tako kot dejstva. Potrebovali bi še algoritem, ki iz zapisanih dejstev izlušči sinonime. Pravilno zapisano dejstvo za stolpec Oddelek tabele Zaposleni je na primer: »[Oseba] je zaposlen [Oseba_Oddelek]«. Sinonim se nahaja v delu dejstva kjer besede niso obdane med oglatimi oklepaji. Preprost algoritem bi bil naslednji:
Stran 25
Algoritem 1: Iskanje sinonima v dejstvu
VHOD: dejstvo
IZHOD: izluščen sinonim dejstva
Odstrani del dejstva vse do prvega oglatega zaklepaja
Izvzemi besedilo do prvega oglatega oklepaja
Dejstvo po prvem koraku se bi spremenilo v »je zaposlen [Oseba_Oddelek]«, ko bomo
prešli čez drugi korak bomo dobili sinonim »je zaposlen«. Algoritem za pridobivanje vprašalnic in sinonimov je zelo podoben že obstoječemu algoritmu za ugotavljanje entitet. Algoritem 2: Iskanje neenakih vprašalnic in sinonimov v seznamu vprašanj določenega
stolpca
VHOD: seznam vprašanj določenega stolpca
IZHOD: seznam neenakih vprašalnic, seznam neenakih sinonimov
vstavi=neresnično; //kdaj vstavljam vprašalnico ter sinonim v seznama seznam vprašalnic=prazen seznam; //seznam trenutno vstavljenih vprašalnic vprašalnica= »«; //pridobljena vprašalnica iz tabele seznam sinonimov=prazen seznam; //seznam trenutno vstavljenih sinonimov sinonim= »«; //najden sinonim iz zapisanega dejstva v bazi vprašanje= »«; //trenutno vprašanje v obdelavi Pojdi čez vsa vprašanja {
vprašanje=trenutno pridobljeno vprašanje; //pridobivanje seznama vprašalnic
pregleduj tabelo vprašanj
{
vprašalnica=pridobljena vprašalnica iz tabele;
če (vprašalnica obstaja v trenutno obdelanem vprašanju)
{
Stran 26
vstavi=resnično;
//če te vprašalnice še ni v seznamu
Pojdi čez seznam trenutno vstavljenih vprašalnic
{
Če (vprašalnica ujema z vstavljeno)
{
vstavi=neresnično;
zaključi pregledovanje;
}
}
če (vstavi)
{seznam vprašalnic.dodaj(vprašalnica);}
}
}
//pridobivanje seznama sinonimov
pregleduj tabelo dejstev
{
//pridobivanje sinonima iz dejstev
Podniz1=Odstrani del dejstva do prvega oglatega zaklepaja;
sinonim=Podniz1.Izvzemi besedilo do prvega oglatega oklepaja;
če (sinonim obstaja v trenutno obdelanem vprašanju)
{
vstavi=resnično;
// če tega sinonima še ni v seznamu
Pojdi čez seznam trenutno vstavljenih sinonimov
{
Če (sinonim ujema z vstavljenim)
{
vstavi=neresnično;
zaključi pregledovanje;
}
}
če (vstavi)
{seznam sinonimov.dodaj(sinonim);}
}
}
}
Pri tem algoritmu je bistvo le, da se iz nabora vprašanj zgradita seznama
neponavljajočih vprašanj in sinonimov. Poglejmo si, kako bi deloval algoritem na primeru zgoraj zapisanih treh vprašanj.
Stran 27
Oba seznama sta na začetku prazna. Naletimo na prvo vprašanje »Kje dela Milan Ojsteršek?«. Prehajamo čez tabelo vprašanj, da preverimo, če se kakšna vprašalnica ujema z vprašalnico v vprašanju. Če se ujema preverimo, če že obstaja v seznamu. Ker še ne obstaja, jo dodamo v seznam. Podoben postopek naredimo tudi za iskanje sinonimov. Ko pri drugem vprašanju spet naletimo na vprašalnico »Kje« je ne dodamo, saj je že v seznamu.
Pri končanem postopku dobimo vprašalnice »Kje« in »Za koga« ter sinonime »dela« in
»je zaposlen«. Po že rešenem postopku ugotovimo, da je »Milan« ime ter »Ojsteršek« priimek zaposlenega. Prišli smo do želene predloge vprašanja. Vprašalnice in sinonime zapišemo med oklepaja ter tako dobimo predlogo vprašanja:
(Kje, Za koga) (dela, je zaposlen) [Zaposleni_Ime] [Zaposleni_Priimek]
Sledi še algoritem za izgradnjo predloge odgovora. Prvo pravilo je, da so entitete
nazadnje zapisane v vprašanju v odgovoru pa najprej. »[Zaposleni_Ime] [Zaposleni_Priimek]« bomo gotovo postavili na prvo mesto, sinonimi se enostavno prepišejo. Ugotoviti moramo samo še na kateri stolpec v kateri tabeli se bo nanašal odgovor. To pa že tako imamo zapisano v tabeli dejstev v naši aplikaciji.
Sledi enostaven algoritem za pridobivanje imena stolpca ter ime tabele na katera se
nanaša sinonim. Ker vemo, da so vsi sinonimi vezani na isti stolpec tabele saj so vprašanja zapisana za isti stolpec tabele, lahko pridobimo ime tabele in ime stolpca za prvi sinonim v seznamu.
Algoritem 3: Pridobivanje imena stolpca in imena tabele na katere se nanaša sinonim
VHOD: prvi sinonim v seznamu sinonimov, ki jih dobimo iz algoritma 2
IZHOD: ime tabele in ime stolpca prvega sinonima
sinonim=prvi_sinonim iz seznama neenakih sinonimov;
Prehajaj čez tabelo dejstev {
Če (najdemo sinonim v trenutnem dejstvu)
{
//zapomnimo si ime tabele in ime stolpca
ime tabele=pridobljeno ime tabele iz tabele dejstev;
ime stolpca= pridobljen ime stolpca iz tabele dejstev;
zaključimo iskanje;
}
}
Ugotovili bi, da se prvi sinonim »dela« nanaša na tabelo »Zaposleni« in stolpec
»Oddelek«.Iz zgoraj opisanih rešitev bi pridobili naslednjo predlogo za odgovor:
Stran 28
[Zaposleni_Ime] [Zaposleni_Priimek] (dela, je zaposlen) [Zaposleni_Oddelek]
Odgovor še ni čisto slovnično napisan. Manjka beseda »na« za sinonimi. Potrebovali bi še en slovar v katerega bi zraven sinonimov še določili besede ali besedne zveze, ki naj se pripišejo k odgovoru. Tak primer slovarja je prikazan na spodnji sliki:
Slika 20: Slovar za dodane besede k odgovoru pred sinonimi
S pregledovanjem tega slovarja ugotovimo, da moramo dodati besedo »na« za zapisanima sinonimoma v odgovoru. Predloga za odgovor bo sedaj lepše slovnično oblikovana:
[Zaposleni_Ime] [Zaposleni_Priimek] (dela, je zaposlen) na [Zaposleni_Oddelek]
6 SISTEM ZA TVORJENJE IN POMENSKI OPIS PODATKOVNIH BAZ
V Laboratoriju za heterogene računalniške sisteme že kar nekaj časa razvijajo
ESvetovalko, ki odgovarja na vprašanja, zastavljena v slovenskem jeziku. Kot osnovo
uporablja podatkovno bazo vprašanj in odgovorov, preglednice (Excel-ove tabele), podatke
iz podatkovnih baz in spletne storitve.
Če želimo pridobiti odgovore na zastavljena vprašanja, je treba oblikovati predloge v
obliki XML. Glavni problem MS Excel-ovih preglednic in dokumentov XML pri uvozu
podatkov je, da so podatki lahko vneseni nepravilno (na primer, kjer je zahtevana številka,
je ta zapisana s črkami). Naredili smo spletni uporabniški vmesnik z namenom, da sami
naredimo tabelo v bazi. Aplikacija ponuja možnost, da tabeli določimo seznam stolpcev.
Za vsak stolpec določimo vprašanja ter dejstva kot pomoč pri nadaljnjem delu. K vsakemu
stolpcu lahko dodamo regularni izraz, ki omogoča preverjanje pravilnosti oblike podatkov
Stran 29
pred vnosom v bazo. Vsaka dodana tabela ima seznam vprašanj in dejstev, zapisanih v
slovenskem jeziku. Tako je relacijska baza opisana pomensko. Zraven izdelave tabel
ponuja spletni vmesnik dodajanje, urejanje in brisanje podatkov, urejanje strukture tabele
ter brisanje celotne tabele. Prav s pomočjo zapisanih vprašanj in dejstev bi lažje pri
nadaljnjem razvoju ESvetovalke izboljšali sistem odgovarjanja na vprašanja.
Za delo z aplikacijo se je potrebno prijaviti v sistem. Aplikacija je prirejena za navadne
uporabnike in za skrbnika. Navadni uporabniki lahko izvajajo vse aktivnosti razen urejanja
strukture tabele. Slednje opravilo je namenjeno samo skrbnikom. Pri vnašanju dejstev in
vprašanj morata biti oba tipa prijavljenih uporabnikov strokovnjaka. Dejstva in vprašanja
je namreč potrebno pravilno vpisovati ročno; kar je podrobneje opisano v podpoglavjih
[6.2.5] in [6.2.6].
Aplikacija je izdelana v razvojnem okolju Microsoft Visual Studio (programsko
ogrodje ASP.NET 2.0) v programskem jeziku C#.
6.1 Regularni izrazi
Regularni izrazi nam pomagajo pri iskanju ujemajočih vzorcev v nizu. Izraz se napiše v
formalnem jeziku, katerega interpretira interpreter za regularne izraze. S temi izrazi lahko
preverimo, če je nek niz zapisan v pravilni obliki. Regularni izraz je neke vrste vnaprej
napovedana oblika niza. Lahko zahtevamo na primer, da je na začetku niza številka, ki ji
sledi presledek in nato petkratna pojavitev črk od A do C. Za napoved oblike niza se
morajo zapisati ukazi, katerih seznam najdemo v [10].
Uporabniki lahko marsikaj zapišejo v vnosna polja. Ti vnosi so lahko zelo moteči pri
izpisovanju, iskanju iz baze ali pa pri morebitnih poznejših izračunavanjih za prikaz
statistike. S preverjanjem vnosov pri dodajanju ali urejanju se tej težavi izognemo. Podatki
v stolpcih so tako vedno zapisani v pravilni obliki.
V stolpcu je na primer zahtevan vnos številke za oceno izpita predmeta študenta. Če
lahko uporabnik vpiše karkoli kot oceno, sploh ne bi mogli pozneje izračunati povprečne
Stran 30
ocene študentov, ker so v stolpcu napačno zapisani podatki. To bi lahko delno rešili z
določitvijo tipa k stolpcu. Tudi če je določen tip stolpca kot številka, lahko vpišemo
številko 214, kar je seveda napačna številka za oceno. S preverjanjem vnosa z regularnim
izrazom dovolimo opisati uporabniku oceno izpita samo s številko od 6 do 10. Vse druge
vnose zavrnemo in vztrajamo pri tem, da uporabnik vpiše pravilno obliko ocene.
Za to tehniko smo se odločili predvsem zaradi preverjanja vnesenih podatkov v obrazcu
pred vnosom podatkov v podatkovno zbirko. Vsakemu stolpcu tabele se lahko določi
zahtevana oblika vsebine celice s pomočjo regularnega izraza. Pri dodajanju ali urejanju
podatkov se vedno preverja, če se vsebina ujema z dodeljenim regularnim izrazom.
6.2 Funkcionalnosti spletnega vmesnika
6.2.1 Izdelava tabele
Prek vmesnika za izdelavo tabele je uporabniku omogočeno, da po svojih željah izdela
novo tabelo. V prvem vnosnem polju je potrebno navesti ime tabele, ki pa ne sme
vsebovati presledkov ali tabulatorjev. Ob prikazu tega vmesnika se že dodajo vnosna polja
za vnos podatkov o prvem stolpcu. Za vsak stolpec je potrebno podati ime tabele in, po
možnosti, regularni izraz, ki bo služil preverjanju navedenih podatkov za ta stolpec.
Dodajanje vnosnih polj za naslednje stolpce je realizirano s klikom na gumb, ki je
postavljen pod polji za vnos podatkov o stolpcih. Spletni vmesnik za izdelavo nove tabele
je prikazan na sliki 21:
Stran 31
Slika 21: Vmesnik za izdelavo nove tabele
Na voljo je tudi brisanje kateregakoli dodanega stolpca ob predpostavki, da mora biti
vpisan vsaj en stolpec v tabeli. Ob brisanju vnosa za nek stolpec se vsa vsebina naslednjih
polj premakne za eno polje višje.
Pred samo izdelavo tabele se preveri s pomočjo regularnih izrazov ime tabele kot tudi
imena stolpcev, če so zapisani z velikimi ali malimi črkami in če imajo vmes prazen
prostor (presledek, tabulator…).
6.2.2 Urejanje strukture tabele
K urejanju strukture spada dodajanje, spreminjanje imena stolpca, brisanja stolpca in
morebitno spreminjanje regularnega izraza določenega stolpca izbrane tabele. Vse prej
naštete aktivnosti lahko izvaja navadni uporabnik; strukturo pa lahko ureja samo skrbnik.
Med časom, ko skrbnik ureja strukturo, drugi uporabniki (prijavljeni kot „navadni”) ne
morejo urejati vsebine iste tabele.
Pri izpisu vseh stolpcev tabele sta (tako kot pri izpisu vsebine tabele) dodana gumba za
urejanje imena stolpca in brisanje stolpca.
Kadar urejamo ime stolpca, lahko izberemo v spustnem seznamu vnaprej določen
regularni izraz. Ta izraz se zapiše v vnosno polje, ki ga lahko tudi popravimo. Tako lahko
Stran 32
pri urejanju strukture določamo regularne izraze k stolpcem. Vmesnik za urejanje strukture
tabele je prikazan spodaj:
Slika 22: Vmesnik za urejanje strukture tabele
6.2.3 Briši tabelo
Ta dejavnost enostavno izbriše tabelo iz podatkovne baze. Še prej nas opozori, če
želimo res izvesti to dejanje. Pri tem velja omeniti, da vsi prirejeni regularni izrazi,
vprašanja in dejstva stolpcev izbrisane tabele ostanejo zavedeni v bazi. Prav tako ostanejo
vprašanja in dejstva za celotno izbrisano tabelo. To je priročno, če bomo pozneje izdelali
tabelo z enakimi imeni stolpcev, kot so bili pri brisani tabeli. Tako imamo takoj morebiti
prirejena vprašanja, dejstva, regularne izraze za stolpce ter morebitna vprašanja in dejstva
celotne tabele.
6.2.4 Urejanje podatkov
Pod dejavnostjo »Urejanje podatkov« je mogoče urejati podatke izbrane tabele. Pri
izpisu podatkov sta na levi strani dodana gumba, ki sta namenjena za urejanje in brisanje
podatkov. Nekateri podatki se lahko izpišejo z rdečo barvo; kar pomeni, da niso pravilno
zapisani glede na prirejene regularne izraze. Pod izpisano vsebino tabele je dodan gumb, ki
Stran 33
je namenjen za dodajanje podatkov. K vsakemu stolpcu tabele je mogoče zapisovati
sopomenke podatkov (na primer za stolpec Ime lahko zapišemo sopomenke »Marko;
Marč; Markec«). Sinonimi se med seboj ločijo s podpičjem. Če je za nek stolpec določen
regularni izraz, se preverijo vsi sinonimi, če so zapisani v skladu z regularnim izrazom.
Kadar urejamo podatke, se prikažejo vnosna polja vseh stolpcev, ki so že napolnjena s
starimi vrednostmi. Urejanje vrstice zapisa lahko kadarkoli prekličemo. Pri urejanju
podatkov predpostavljamo, da so vsi podatkovni tipi stolpcev tipa »nvarchar«, torej nizi s
spremenljivo dolžino. Vmesnik, ki omogoča urejanje podatkov je prikazan na spodnji sliki:
Slika 23: Vmesnik za urejanje podatkov
Ker lahko tabela hitro pridobi 100 ali več zapisov, smo se odločili, da bomo dodali
dejavnost »Prikazovanje strani podatkov«. To pomeni, da se naenkrat prikaže samo
omejeno število vrstic podatkov. Druge strani lahko prikažemo s klikanjem na povezave do
preostalih strani podatkov. Pri naši aplikaciji se naenkrat prikaže 30 vrstic podatkov in
naenkrat aplikacija prikaže do največ 10 strani. Dodani sta povezavi do premikanja za eno
stran naprej in eno stran nazaj ter povezavi do prve in zadnje strani. Aplikacija tudi
prilagaja povezave do bližnjih strani, pač glede na številko trenutno prikazane strani.
6.2.5 Urejanje vprašanj
Vmesnik za urejanje vprašanj nudi možnost urejanja vprašanj za stolpce kot tudi za
celotno tabelo. Spletni vmesnik je razdeljen na dva dela. Zgoraj se v spustnem seznamu
izbere ime tabele. Spodaj se takoj naložijo vsa vprašanja, ki so vezana na izbrano tabelo.
Stran 34
Po izbiri stolpca v drugem spustnem seznamu se naložijo vsa vprašanja, ki so vezana na
izbran stolpec. Pri tem se loči vprašalnica od preostalega vprašanja. Vprašalnica je lahko
prva beseda ali pa prvi dve besedi. Pri vprašanju »Kako se imenuje Adam?« je vprašalnica
»Kako«. Vprašalnica in preostali del vprašanja se ločeno zavedeta v podatkovno bazo.
Odločili smo se, da bomo vprašanja zapisovali po pravilu in da bo za to potreben
strokovnjak. Obvezno se mora zapisati vprašalnica ter preostali del vprašanja. Na koncu je
lahko postavljen vprašaj ali pa tudi ne. Na koncu vprašanja je namesto dejanskega podatka
zapisan v oglatih oklepajih ime tabele ter ime stolpca, ki sta določena s podčrtajem.
Vmesnik za urejanje vprašanj je prikazan na sliki 24.
Pravilno zapisana vprašanja so naslednja:
• Katero davčno številko ima [Oseba_Ime] [Oseba_Priimek]?
• Kje je zaposlen [Oseba_Ime]?
• Kakšen spletni naslov ima [Fakulteta_Ime]?
Nepravilno zapisana vprašanja so lahko naslednja:
• Kdo je ?; manjka ključni podatek, na katerega se nanaša vprašanje.
• Kje?; zapisana je samo vprašalnica. Takih vprašanj ne dovolimo zapisovati v bazo.
• Kje je zaposlen Milan Ojsteršek?; namesto imen stolpcev so zapisani dejanski
podatki. Pri tem vprašanju ne vemo, da je Milan ime in Ojsteršek priimek osebe.
Zapisovanje imen stolpcev v oglatih oklepajih bo pozneje zelo pripomoglo pri
odgovarjanju na vprašanja. Če bi uporabnik vnesel vprašanje »Kje je zaposlen Milan
Ojsteršek?«, bi našli podobno vprašanje, ki je vezano na oddelek zaposlene osebe »Kje je
zaposlen [Oseba_Ime] [Oseba_Priimek]?«. Tako bi izvedeli, da je Milan ime in Ojsteršek
priimek osebe. Ostane nam še del vprašanja »je zaposlen«. Ta niz se nanaša na sinonime
stolpca, ki so zapisani v dejstvih stolpcev. Izvedeli bi, da moramo poiskati oddelek osebe,
katera ima to lastnost, da se imenuje »Milan« ter da se piše »Ojsteršek«.
Stran 35
Slika 24: Vmesnik za urejanje vprašanj
6.2.6 Urejanje dejstev
Vmesnik za urejanje dejstev nudi možnost urejanja dejstev za stolpce kot za celotno
tabelo. Spletni vmesnik je razdeljen na dva dela. Zgoraj se v spustnem seznamu izbere ime
tabele. Spodaj se takoj naložijo vsa dejstva, ki so vezana na izbrano tabelo. Po izbiri
stolpca v drugem spustnem seznamu se naložijo vsa dejstva, ki so vezana na izbran stolpec.
Tako kot vprašanja bi bilo potrebno zapisovati po nekem pravilu tudi dejstva. Tudi za
zapisovanje dejstev je potreben strokovnjak. Ideja tega je, da bi s slovenskim jezikom
zapisali dejstva stolpcev ter relacije med tabelami. Za stolpec Priimek tabele Oseba bi
lahko zapisali dejstva, kot so: »[Oseba] se piše [Oseba_Priimek]«, »[Oseba] ima priimek
[Oseba_Priimek]«. Spletni vmesnik je prikazan na sliki 25.
Pravilno zapisana dejstva k stolpcem:
• [Oseba] se piše [Oseba_Priimek]
Stran 36
• [Oseba] je zaposlena [Oseba_Oddelek], [Oseba] dela na [Oseba_Oddelek]
• [Vozilo] ima registrsko številko [Vozilo_RegSt], [Vozilo] ima reg. št.
[Vozilo_RegSt]
Nepravilno zapisana dejstva k stolpcem:
• Oseba je ime Oseba_Ime; ne vemo kateri del stavka predstavlja sinonim in ne
vemo kateri del pripada imenu tabele ter imenu stolpca.
• [Oseba]; ni zapisan pomen stolpca.
• [Oseba] se piše; ne vemo na kateri stolpec se nanaša sinonim..
Lahko zapisujemo več dejstev k stolpcem ali k celotni tabeli. Posledično zapisujemo
več sinonimov stolpcev. Uporabnik lahko za ime osebe povpraša tako: »Kako se imenuje
Adam?« ali pa »Kako je ime Adamu?«. Zapisani sta dve različni vprašanji vendar
sprašujeta obe po imenu osebe, ki se piše »Adam«.
Slika 25: Vmesnik za urejanje dejstev
Stran 37
6.2.7 Urejanje vnaprej definiranih regularnih izrazov
Na vmesniku za urejanje vnaprej definiranih regularnih izrazov je mogoče dodajati,
urejati ali brisati vnaprej definirane regularne izraze. Uporabnik, ki te izraze ureja, mora
znati zapisovati izraze, ker poteka vpisovanje ročno. Med seboj se ločijo regularni izrazi z
imenom, ki bodo najverjetneje kar imena stolpcev. Pri izpisu parov ime - prirejen regularni
izraz sta na levi strani dodana gumba za urejanje in brisanje izrazov. Na koncu je dodan
tudi gumb za dodajanje novega regularnega izraza s pripadajočim imenom. Spodnja slika
prikazuje vmesnik za urejanje vnaprej definiranih regularnih izrazov:
Slika 26: Vmesnik za urejanje vnaprej definiranih regularnih izrazov
Za to dejavnost smo se odločili, da bi bilo pozneje (ko imamo enkrat zapisane vnaprej
definirane regularne izraze z imeni) lahko enostavneje določevali izraze za preverjanje
vsebine stolpcev tabele. Regularni izraz za določen stolpec tabele (pri izdelavi tabele in
urejanju strukture) se lahko določi kar tako, da se izbere v spustnem seznamu ime vnaprej
definiranega regularnega izraza. Ko izberemo izraz iz spustnega seznama, lahko ta izraz
tudi spremenimo; v tem primeru se k stolpcu določi spremenjeni regularni izraz, v seznamu
vnaprej definiranih regularnih izrazov pa ta izraz ostane nespremenjen.
Stran 38
6.2.8 Dodajanje preostalih tabel
V podatkovni bazi so tudi tabele, ki jih uporablja že obstoječa aplikacija ESvetovalka.
Porodila se je ideja, da bi zapisali vprašanja in dejstva preostalim tabelam. Zato sem
naredil preprost spletni vmesnik za dodajanje ostalih tabel v seznam tabel, tj. spustni
seznami v naši aplikaciji. Seveda lahko posledično urejamo strukturo in podatke dodane
tabele. Kadar želimo izvajati slednji dejavnosti, moramo zagotoviti, da je prirejen tip
podatka v vseh stolpcih niz s spremenljivo dolžino. Mogoče izboljšave te omejitve bomo
predstavili v nadaljnjem delu.
6.3 Končni videz aplikacije
Končni videz odraža pomembno vlogo pri uporabi aplikacije. Sloge smo prilagodili že
izdelani aplikaciji, ker želimo obstoječo aplikacijo razširiti z našo. Za prikaz značk HTML,
obdanih z barvami in nekaterimi drugimi atributi, sem uporabil jezik CSS. To je posebni
spletni jezik, s katerim lahko vsaki HTML znački določimo razne sloge, kot so barva
besedila, ozadja, odmiki od robov… Lahko pa določimo tudi razredne sloge, katerim
določimo ime ter pripadajoče lastnosti. HTML znački lahko vključimo ta razredni slog.
Posledično se ta značka prikaže v taki obliki, kot je podano v razrednem slogu. Podobne
sloge smo uporabili tudi pri izpisih naslovov ter prikazanih povezavah do drugih
aktivnosti, kot so urejanje podatkov, strukture, vnos vprašanj, dejstev, izdelavo tabele...
Pri izpisih podatkov ter stolpcev izbrane tabele smo se odločili, da bo vsaka liha vrstica
prikazana z belo barvo ozadja, soda pa s svetlo modro barvo ozadja. Tako uporabnik
zagotovo vidi, kateri vrstici pripada nek podatek.
Na sliki 27 sta prikazana vmesnika obeh združenih aplikacij:
Stran 40
7 ZAKLJUČEK
Danes se zavedamo pomembnosti sistema za odgovarjanje na vprašanja, ki so
postavljena v slovenskem jeziku. Mnogo iskalcev informacij po svetovnem spletu bo na ta
način zelo zadovoljnih ob pogoju, da bo sistem odgovoril na njegovo vprašanje čim bolj
točno in pravilno. S tem bi v prihodnje pridobili veliko zainteresiranih uporabnikov.
Zagotovo si želimo, da bi ta sistem postal priljubljen in uporaben.
Diplomsko delo je razdeljeno na dva dela. Prvi je namenjen predstavitvi teoretičnega
ozadja področij, ki se nanašajo na pomenski splet in pomenski opis podatkovnih baz.
Predstavljene so tudi nekatere metode na področju obdelave naravnega jezika, kjer se po
postopkih razčlenjuje besedilo, ki bo razumljivo računalniku. Drugi del je namenjen opisu
gradnje sistema za pomensko preslikavo relacijskih podatkovnih baz. Opisane so
funkcionalnosti in na kratko predstavljene pomanjkljivosti vnašanja vprašanj in dejstev.
Pridobil sem osnove potrebnega teoretičnega znanja, katerega bom morebiti potreboval
pri opravljanju službenih obveznosti ali pa kje drugje. Morda bom dobil priložnost, da bi
sodeloval pri končni gradnji sistema. Takrat bom to znanje še krepko potreboval.
Izdelava sistema za pomensko preslikavo relacijskih podatkovnih baz je bilo zame
dokaj enostavno opravilo. V času razvoja sem vedno imel v mislih učinkovito delovanje in
hitro odzivnost na uporabnikove akcije. Hkrati sta mi dajala napotke za pravilno delovanje
tako mentor kot njegova sodelavka. Sistem je zgrajen tako, da bo nadalje možno
odgovarjati na vprašanja iz različnih področij, kot so na primer avtomobilizem, študenti,
profesorji, zaposleni v podjetjih...
Da bi se prepričali, ali aplikacija res ustreza zahtevam, jo je bilo potrebno preizkusiti. V
praksi so lahko tabele napolnjene s sto ali več vrsticami zapisov. Lahko se zapiše tudi večje
število vprašanj in dejstev k stolpcem kakor tudi k celotni tabeli. Urejanje podatkov deluje
Stran 41
tudi ob večjem število zapisov ob predpostavki, da lastnosti dveh vrstic zapisa nista
zapisani popolnoma enako. To pomeni, da morajo biti vsi zapisi med sabo različni po
vsebini stolpcev. Pri preverjanju vnosov delajo težavo zapisani šumniki v besedilu.
Namreč nisem še uspel najti primernega zapisa regularnega izraza, ki bi omogočil tudi
zapis šumnikov. Zato se je potrebno izogibati zapisovanju šumnikov k vsebini stolpcev,
katerim je pripet regularni izraz. Pri urejanju večje količine podatkov je zelo prav prišla
hitra odzivnost sistema brez ponovnega osveževanja celotne spletne strani. Posledično se
veča tudi velikost podatkovne baze. Omejeni smo na to, koliko prostora imamo na disku.
Stran 42
8 NADALJNJE DELO
Da bo sistem znal odgovarjati na vprašanja, zastavljena z našo aplikacijo, bo potrebno
še kar nekaj postoriti. Že s samo gradnjo sistema za pomensko preslikavo relacijskih
podatkovnih baz smo imeli kar precej dela ob predpostavki, da smo po dogovoru z
mentorjem morali spreminjati implementacijo aplikacije.
Potrebno bi bilo razmisliti o uporabniku prijaznejšem podajanju vprašanj in dejstev k
stolpcem ter k celotni tabeli. Za vpisovanje je potreben strokovnjak, ki mora poznati
pravila zapisovanja; ki so opisana v [6.2.5] in [6.2.6]. Kadar bi uporabnik podal nepopolna
ali čisto napačna vprašanja ali dejstva, bi mu na podlagi že napisanega ponudil predloge
dokončno zapisanega vprašanja ali dejstva. Tako bi poskušali vnašanje čim bolj
avtomatizirati. Zagotovljeno bi bilo tudi, da bi posredovali vse informacije, ki jih potrebuje
vprašanje ali dejstvo.
K temu sistemu bi lahko dodali še kar nekaj funkcionalnosti, da bi bil uporabniku še
prijaznejši:
• Dodali bi lahko več vnaprej definiranih regularnih izrazov za neko lastnost. Za zapis
e-naslova lahko zapišemo samo naslov prejemnika ali pa želimo ta naslov obdati med
značke HTML, da se bo ta naslov prikazal kot povezava. Pri določevanju regularnega
izraza stolpcu tabele bi lahko aplikacija sama ponudila seznam regularnih izrazov, ki
so najprimernejši za ta stolpec.
• V sedaj razviti aplikaciji smo predpostavljali, da so vsi podatkovni tipi stolpcev tabel,
ustvarjeni z našo aplikacijo, tipa spremenljive dolžine niza. Če je pri dodajanju
preostalih tabel kakšen stolpec drugačnega tipa, urejanje podatkov ne bo delovalo.
Sistem bi skoraj mogel biti odporen tudi na to težavo. Že pri izdelavi tabele, kakor
Stran 43
pozneje pri urejanju strukture tabele, bi morali določiti podatkovni tip stolpca. Tako
bi še lažje določevali regularne izraze, ker bi bili lahko ločeni tudi po podatkovnem
tipu podatka. Večja prednost bi bila tudi pri določevanju vprašanj. Ob podatkovnem
tipu, ki predstavlja na primer številko, bi pri določitvi vprašanja lahko sklepali, da
bomo povpraševali po neki količini. Sistem bi lahko pri začetku vpisovanja vprašanja
takoj nudil seznam vprašalnic, ki se navezujejo na številko; na primer »Koliko«.
Vprašalnica, na katere se navezuje datum bi lahko bila »Kdaj«, »Kje«. Dodajali bi
lahko ostale tabele, pri tem nam bi bila odveč skrb glede podatkovnih tipov stolpcev.
Razvoj bi lahko prišel tako daleč, da bi pri vpisovanju vprašanj ali dejstev samo
izbirali predloge, ki bi nam jih posredovala aplikacija.
Kot sem razložil v uvodnem poglavju smo dali poudarek pomenu podatkov, tako da
smo pripravili aplikacijo za zapisovanje dejstev in vprašanj k stolpcem in k celotni tabeli.
Prav to bo v veliko pomoč pri odgovarjanju po potrebnih informacijah, po katerih
uporabnik sprašuje, za katerega bo aplikacija poiskala odgovor in imena stolpcev, na katera
je vezano vprašanje. Celoten odgovor bi se izpisal v slovenskem jeziku. Potrebno bi bilo
razmisliti, kateri najprimernejši in najhitrejši pristop bi pri tem uporabili. Nadaljnje delo bo
zahtevalo tudi znanje na področju procesiranja naravnega jezika.
Zelo priročno bi bilo, da bi še aplikacija ponudila možnost uvoza tabel iz Excel-a in
XML-ja. Ker pa se lahko zgodi, da je marsikateri podatek lahko napačno vpisan, bi bilo
potrebno vse podatke preveriti z regularnimi izrazi. Ob brisanju tabele ali stolpca ostanejo
regularni izrazi prirejeni stolpcem tabele. Sistem bi pri izpisu uvožene tabele preveril
vsebino tistih stolpcev, katerim so prirejeni regularni izrazi. Morali bi prirediti regularne
izraze še vsem ostalim stolpcem, če bi želeli preveriti pravilnost zapisa vsebine celotne
tabele. Na podlagi imen stolpcev uvožene tabele bi lahko vsem stolpcem, ki še nimajo
prirejenega regularnega izraza ta izraz že določili pri uvozu.
Stran 44
9 LITERATURA
[1] P. Hribar, Uvod v HTML, 2. izd., Flamingo, Nova Gorica, 1999
[2] P. Hribar, Spoznajmo JavaScript, Flamingo, Nova Gorica, 1998
[3] Pomenki splet; http://en.wikipedia.org/wiki/Semantic_web , obiskano 10. 9. 2009
[4] Ontologije; http://en.wikipedia.org/wiki/Ontology_(computer_science), obiskano 12.9.2009
[5] Procesiranje naravnega jezika: http://www.cnlp.org/publications/03NLP.LIS.Encyclopedia.pdf, obiskano 4.9.2009
[6] Pomenski opis podatkovnih baz; http://www.riso.ee/en/files/EstonianGov_Semantic_Description-Instructions_v1.1c.pdf, obiskano 25.9.2009
[7] Preslikava relacijskega modela v semantični model; http://hcotuk.etu.edu.tr/semanticweb/Retaining%20Semantics%20in%20Relational%20Databases%20by%20Mapping%20them%20to%20RDF.pdf, obiskano 23.9.2009
[8] Preslikava semantičnega podatkovnega modela v relacijski; http://www.w3.org/2003/11/01-RDF-SQL-tmp/notes, obiskano 26.9.2009
[9] Ajax.NET Professional; http://en.wikipedia.org/wiki/Ajax.NET_Professional, obiskano 3.6.2009
[10] Ukazi regularnih izrazov: http://www.regular-expressions.info/reference.html, obiskano 12.5.2009