Upload
lengoc
View
225
Download
6
Embed Size (px)
Citation preview
OWL (Web Ontology Language) izmantošana Oracle datu bāzes sistēmā. Ainārs Petrovskis,
Jānis Eiduks, 2013.
OWL (Web Ontology Language)
Ontoloģija ir mēģinājums attēlot plašu un daudzveidīgu informāciju, izmantojot
konceptuālās shēmas. Šāda shēma sastāv no datu struktūrām, kas attēlo objektu klases, to
relācijas, ierobežojumus, īpašības. Ontoloģija tiek plaši pielietota semantiskos tīklos.
Vienkāršākā veidā klašu attiecības tiek attēlotas, ka klašu hierarhija, bet īpašības, ka
īpašību hierarhija.
OWL ir valoda, kas domāta ontoloģiju aprakstīšanai semantiskiem tīkliem. OWL ļauj
aprakstīt klases un attiecības starp tām. Kā arī OWL valoda ļauj aprakstīt elementus klase –
īpašība.
Eksistē šādi OWL valodas veidi:
OWL 2 DL – satur visas OWL valodas konstrukcijas, kā arī loģiskos
ierobežojumus.
OWL EL – OWL 2 DL apakškopa, satur daudzus loģiskus likumus. Algoritmi,
kas ir bāzēti uz OWL EL garantēti beidzās kādā laika posmā.
OWL QL - OWL 2 DL apakškopa. Orientējas uz algoritmi, kas bāzēti uz šo OWL
vārdnīcu ātrdarbību.
OWL RL - vēl viena OWL 2 DL apakškopa.
OWL 2 Full – vispilnākā OWL vārdnīca, kas ļauj lietotājam brīvi rīkoties, tā
nesatur nekādus ierobežojumus. Un negarantē algoritma, kas bāzēts uz šis
bibliotēkas, veiksmīgu izpildi.
OWL Lite – vismazākā vārdnīca, var bāzēties ļoti ierobežoti algoritmi, kuriem ir
paaugstināts izpildes ātrums;
1.1 Ontoloģijas piemērs
Par ontoloģijas piemēru varētu kalpot šāds semantiskais tīkls:
Semantiskajā tīklā ir attēlota autotransporta klašu hierarhija. Galvenā superklase ir
transports, kuram ir īpašības ietilpība un degvielas tips. Transportam ir trīs apakšklases. Vieglais
autotransports, smagais un gaisa autotransports. Gaisa autotransportam ir divas īpašības ātrums
un lidošanas augstums.
Tālāk hierarhija turpinās vēl divos līmeņos, kas apraksta viegla, smagā un gaisa
autotransporta apakšklases, kā arī pēdējā līmenī tiek aprakstītas vēl lidmašīnu apakšklases –
pasažieru un kravas.
2. OWL izmantošana Oracle datu bāzē
Semantiskos datus ir izdevīgi apstrādāt datu bāzē, jo to apjoms strauji pieaug un to
apstrāde ir daudz ātrāka datu bāzes serverī (gan aparatūras, gan programmatūras dēļ). Kā arī datu
bāzes vadības sistēma nodrošina transakcijas, drošību, datu atjaunošana utt. Dat bāze ir
optimizēta un ir efektīva vaicājumu apstrādē.
2.1 Versijas un vārdnīca
Oracle datu bāzes vadības sistēma 12C versijā atbalsta šādas OWL vārdnīcas, katra
vārdnīca var saturēt dažādu skaitu ar attieksmēm un likumiem (rulebase):
RDFS++, iekļautas konstrukcijas:
OWLSIF, iekļautas konstrukcijas:
OWLPrime, iekļautas konstrukcijas:
OWL 2 RL, vārdnīca ir aprakstīta te:
http://www.w3.org/TR/owl2-profiles/#OWL_ 2_RL;
OWL 2 EL, vārdnīca ir aprakstīta te:
http://www.w3.org/TR/owl2-profiles/#OWL_ 2_EL;
2.2 RDF iespējas ieslēgšana
Pirms tam, kad var sākt izmantot iespējas, kas attiecās uz RDF semantiskiem tīkliem datu
bāzē, ir jāveic šādas darbības:
1. Ir nepieciešams pieslēgties datu bāzei ar SYSDBA privilēģijām, izmantojot,
piemēram, SQL*Plus programmu.
2. No SQL*Plus programmas ir jāpalaiž komanda:
a. MS Windows gadījumā @%ORACLE_HOME%\md\admin\catsem.sql.
b. Linux gadījumā @$ORACLE_HOME/md/admin/catsem.sql.
Pēc skripta izpildes, ja tas izpildījies bez kļūdām, var pārbaudīt rezultātu, vaicājot
rezultātus no tabulas MDSYS.RDF_PARAMETER. Jābūt ierakstam ar „ATTRIBUTE” vērtību
SEM_VERSION.
Kā arī, lai izmantotu šādas iespējas ir jābūt ieslēgta partīciju (Partitioning) iespējai. Ko
var pārbaudīt šādi:
2.3 Ontoloģiju izveide
Sākumā ar lietotāju ar privilēģijām SYSDBA jāizveido izvietošanas vieta (tablespace).
Izveidošanas piemērs:
Tālāk, ir jāizveido semantiskais tīkls, norādot izvietošanas vietu (tabelespace). Ar
pietiekami lielu vietu. Šī darbība arī jāveic no tā lietotāja, kuram ir SYSDBA privilēģijas.
Izveidošanas piemērs:
Pirms nākamajiem soļiem, obligāti ir jāpārslēdzas no lietotāja, kuram ir SYSDBA
privilēģijas uz kādu citu lietotāju.
Tālāk, jau kā cits lietotājs ir jāveido modelis.
Tiek veidota tabula, kas glabās modeļa datus:
Tabulā ir divas kolonnas, viena ir domāta identifikatoram, bet otra tripletu glabāšanai,
kuri glabās elementus un attieksmes (elementu likumus – rulebase) starp tiem, tips
sdo_rdf_triple_s:
S īsāks apraksts ir pieejams te:
http://docs.oracle.com/cd/B19306_01/appdev.102/b19307/sdo_rdf_concepts.htm
Ar PL/SQL metodes palīdzību ir jāizveido modelis:
Parametri ir modeļa nosaukums, modeļa tabula un modeļa tabulas kolonna, kurā glabājās
modeļa tripleti.
2.4 Loģisko izvedumu izpildīšana
Lai iegūtu loģisko izvedumu ir jāizmanto likumi, kas apraksta attiecības starp
elementiem.
Likumiem jābūt aprakstītiem. Iebūvētām (iebūvētas attiecības ir aprakstītas noteiktajās
vārdnīcās (vārdnīcas tika aprakstītas 2.1 nodaļā)) attiecībām likumi jau ir definēti un tie nav
jāapraksta. Taču Oracle ļauj lietotājiem veidot savus likumus. Tas paver plašas iespējas
semantisko tīklu elastīgumā un dažādībā.
Lai izveidotu savas attieksmes, ir jāseko šādiem soļiem:
Piemēram semantikā ir ievadīta šādas vērtības (vērtības tiek ievietotas cars modelī, lai
nav jāveido cits modelis):
Šie ieraksti parāda to, ka Jānis ir Annas tēvs un vienlaicīgi Jānis un Pēteris ir brāļi. No tā
izriet, kā Pēteris ir onkulis Annai.
Lai izveidotu savu likumu, sākumā ir jāizveido sava likumu kopa, ar pl/sql procedūras
create_rulebase palīdzību:
Tālāk automātiski izveidotajā skatā tiek ievietotas vērtības, kas apraksta jaunizveidotu
likumu:
Šāds apraksts norāda to, ka: ja X un Y ir brāļi, un y ir z tēvs, tādā gadījumā X ir Z
onkulis. X, Y un Z ir mainīgie.
Pēc likumu definēšanas ir jādabū loģiskais izvedums. Šīm nolūkam ir jāizveido likumu
indekss, tas ir jādara ar PL/SQL funkcijas sem_apis.create_entailment palīdzību, kur ir jānorada
veidojama indeksa nosaukums, modelis un OWL vārdnīca, iebūvētas leksikas gadījumā ir
jānorāda leksikas nosaukums. Lietotāja definētas attiecības gadījumā ir jānorāda izveidotu
likumu nosaukums:
Iebūvēto likumu gadījumā viss ir vienkāršāk, jāizveido tikai likumu indekss un jānorāda
izmantojama vārdnīca.
Pēc tam jau var izmantot glabājamu informāciju.
Gadījumā, kad loģiskie izvedumi ir gana sarežģīti (atkarībā no izmantojamas vārdnīcas,
ontoloģijas izmēra un citiem parametriem) un neacīmredzami, var izmantot loģisko izvedumu
pierādīšanu.
Lai izmantotu loģisko izvedumu pierādījumus pie indeksa (entailment) izveides ir
jānorāda parametrs ‘PROOF = T’. Taču ir jāsaprot, ka tas var prasīt vairāk servera resursus –
atmiņa, procesors utt.
Tālāk automātiski tiek izveidots skats MDSYS.semi_cars3_idx, kur ir informācija par to,
kā likumi tiek izvesti un kā visa loģika tiek dabūta no likumiem.
2.5 OWL modeļu pārbaude
Lai pārbaudītu modeļu un indeksu korektumu tiek izmantotas funkcijas
SEM_APIS.VALIDATE_MODEL un SEM_APIS.VALIDATE_ENTAILMENT. Šis funkcijas
spēj atklāt semantikas problēmas.
Sākumā modelī tiek ievietota neatrisināmā klase un tiek izveidots indekss.
Tālāk, jāpielieto validate_entailment funkcija, un jāizvada funkcijas rezultāts. Lai to
izdarītu ir nepieciešams PL/SQL bloks (bloks tika paņemts no Oracle dokumentācijas).
No rezultāta var redzēt, ka ir viena klase, kura nevar būt atrisināta.
2.6 Loģisko izvedumu veiktspējas paaugstināšana
Brīžiem, loģiskais izvedums var aizņemt ļoti daudz laika. Līdz ar to, lai paātrinātu izpildi
ir jāpaaugstina ne tikai iekārtu parametri, bet ir jāveic arī programmatūras darbības:
Salasīt modeļa statistiku ar procedūras SEM_PERF.GATHER_STATS;
Veidot pagaidu izvietošanas vietas (tablespaces);
Realizēt SVFH un AVFH komponentes;
Lai paaugstinātu veiktspēju, ir nepieciešams arī izmantot visas vairāku kodolu procesoru
priekšrocības.
Izmantojot vairāku kodolu procesorus, ir iespējams izmantot paralēlo izveduma izveidi.
Lai izmantotu šadu paralēlu darbību, pie indeksa izveides ir nepieciešams norādīt atslēgas vārdu
DOP (degree of parallelism – paralēlas darbības pakāpe). Taču, lai izmantotu šādu iespēju ir
nepieciešama servera resursu rezerve. Jābūt gan cietā diska rezervei, gan operatīvās atmiņas
rezervei.
2.7 Loģisko izvedumu optimizēšana
Gadījumā, kad modelī tiek izmantotas daudzas owl:sameas attieksmes, ir iespējams
optimizēt loģisko izvedumu. Šīm, pie indeksa izveides, nolūkam ir jānorāda parametrs
OPT_SAMEAS=T.
Piemēram (no Oracle dokumentācijas), ja ir šādi tripleti:
tādā gadījumā pie indeksa izveidošanas, tiks izveidoti šādi ieraksti:
Izmantojot optimizēšanu, tiks ģenerēti tikai šādi tripleti:
3. Semantika relāciju struktūrās
Bieži vien ir nepieciešams izmantot semantiskos datus attiecībā uz relāciju datiem. Šiem
nolūkiem ir jāizmanto SEM_RELATED un SEM_DISTANCE operatori. Relāciju tabulā dati
nav saistīti ne ar kādu semantiku. Taču var atsevišķi izveidot semantisko modeli un jau pēc tam
izmantot šo modeli ar relāciju datiem.
Piemērs.
Ir šāda semantika:
Un šāda tabula:
Šie dati nav saistīti ne ar kādu semantiku. Lai tos saistītu ir jāizmanto semantiskais
modelis. Pēc analoģijas, kas tika aprakstīta iepriekšējās nodaļās tiek izveidots semantiskais
modelis:
Tiek aprakstīts, ka katrs elements ir klase:
Tālāk tiek noteikts arī tas, ka vieglais, smagais un gaisa transporti ir klases transports
apakšklases.
Tālāk, izmantojot select vaicājumu, no tabulas masinas tiek iegūti tie ieraksti, kas ir
apakšklases klasei transports.
Šīm nolūkam tiek izmantots operators SEM_RELATED, kurā ir jānorāda kolonna, kurā
tiek glabāti relāciju dati, kuri ir jāsaista ar semantisko modeli, klase, kura jāsaista, attieksmes tips
(mūsu gadījumā subClassOf), kā arī modeļa nosaukums.
Rezultātā tiek iegūti ieraksti, kas atbilst šādam semantiskam uzstādījumam – transporta
apakšklases.
Sem_related operatora sintakse ir šāda:
sub – analizējamas tabulas kolonnas nosaukums, kurā ir jāmeklē ontoloģijas
klases.
predExpr – attieksmes nosaukums, kurš ir jāanalizē ar iepriekšējā punktā
noradīttās kolonnas vērtībām.
obj – objekts, kurš ir jāattiecina uz meklējāmiem datiem.
ontologyName – šajā punktā ir jānorāda analizējama ontoloģijas modeļa
nosaukums.
ruleBases – jānorāda likumu vārdnīcas nosaukums.
Index_status – neobligāts parametrs. Izvelk datus, pat arī, ja ontoloģijai ir
nepatiess statuss.
Lower_bound un Upper_bound – ļauj noradīt distances ierobežojumus (aprakstīts
tālāk).
SEM_DISTANCE nosaka „attālumu” līdz ierakstiem, kas tika atlasīti ar operatora
SEM_RELATED palīdzību. SEM_DISTANCE operatora parametrā jānorāda identifikators,
kuram jasakrīt ar identifikatoru, kas tika norādīts SEM_RELATED operatorā.
Rezultātā līdz visiem ierakstiem distance ir viens. Jo visi līmeņi atrodās uzreiz pirmajā
līmenī aiz superklases „transports”.