Za´padoˇceska´ univerzita v Plzni Fakulta aplikovany´ch vˇed Katedra informatiky a vy´poˇcetn´ı techniky
Bakal´ aˇ rsk´ a pr´ ace S´ emantick´ y web v EEG/ERP dom´ enˇ e
Plzeˇ n 2013
Jan Smitka
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem bakal´aˇrskou pr´aci vypracoval samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u. V Plzni dne 3. kvˇetna 2013 Jan Smitka
Podˇ ekov´ an´ı R´ad bych touto cestou podˇekoval Ing. Romanu Mouˇckovi, Ph.D. za odborn´e veden´ı pr´ace a podnˇetn´e pˇripom´ınky. D´ale bych chtˇel podˇekovat Ing. Vladiˇ etinov´e za pomoc pˇri korektuˇre textu. m´ırovi Smitkovi a Mgr. Barboˇre Stˇ
Abstract Semantic web in the EEG/ERP domain This thesis is focused on the Semantic Web technologies and storage of semantic data and metadata from neuroscience research. The thesis provides an overview of current semantic repositories. The main goal is to implement and deploy a solution for semantic annotation and search of neuroscience publications and discussions on social networks. To accomplish the task, two utilities and a vocabulary of neuroscience research terms had to be created. The first utility, KIMBridge, is used to download publications from document repository, and discussion posts from social networks. The second utility, KIM-OWLImport, is a graphical tool that adjusts vocabularies in Web Ontology Language for semantic annotation. The created vocabulary contains common event-related potentials and signal processing methods.
Obsah ´ 1 Uvod
1
2 Technologie s´ emantick´ eho webu 2.1 Resource Description Framework . . . 2.2 RDF Vocabulary Description Language 2.3 Ontologie a Web Ontology Language . 2.4 S´emantick´e reposit´aˇre . . . . . . . . . . 2.5 Jazyk SPARQL . . . . . . . . . . . . . 3 Pˇ rehled s´ emantick´ ych reposit´ aˇ r˚ u 3.1 4store . . . . . . . . . . . . . . . 3.1.1 Pˇr´ıpady pouˇzit´ı . . . . . . 3.2 Jena . . . . . . . . . . . . . . . . 3.3 Sesame . . . . . . . . . . . . . . . 3.4 OWLIM a KIM Platform . . . . . 3.4.1 Edice . . . . . . . . . . . . 3.4.2 KIM Platform . . . . . . . 3.4.3 Pˇr´ıpady pouˇzit´ı . . . . . . 3.5 BigData . . . . . . . . . . . . . . 3.6 Virtuoso . . . . . . . . . . . . . . 3.6.1 Edice . . . . . . . . . . . . 3.6.2 Pˇr´ıpady pouˇzit´ı . . . . . . 3.7 Shrnut´ı . . . . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
3 . 5 . 8 . 10 . 12 . 12
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
15 16 17 17 17 18 19 19 20 21 21 21 22 22
4 KIM Platform 4.1 Znalostn´ı b´aze . . . . . . . . . . . . . . . 4.2 Form´at dokument˚ u . . . . . . . . . . . . 4.3 Ukl´ad´an´ı a indexov´an´ı dokument˚ u. . . . 4.3.1 Apache Lucene . . . . . . . . . . 4.3.2 Semantic Annotation Repository 4.3.3 M´IMIR . . . . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
23 23 23 24 24 24 24
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
4.4
4.5 4.6
Doplnˇen´ı znalostn´ı b´aze a vytvoˇren´ı ontologie 4.4.1 Ontologie . . . . . . . . . . . . . . . . 4.4.2 Zaveden´ı ontologie . . . . . . . . . . . Import dokument˚ u . . . . . . . . . . . . . . . Vyhled´av´an´ı . . . . . . . . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
5 Souˇ casn´ e ontologie EEG/ERP dom´ eny
25 25 28 29 29 30
6 Specifikace poˇ zadavk˚ u a pˇ rehled ˇ reˇ sen´ı 31 6.1 Poˇzadavky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6.2 Pˇrehled ˇreˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 7 Instalace KIM Platform, prototypov´ a ontologie 33 7.1 Instalace a konfigurace KIM Platform . . . . . . . . . . . . . . 33 7.2 Dom´enov´a ontologie . . . . . . . . . . . . . . . . . . . . . . . 34 8 KIMBridge 8.1 Anal´ yza . . . . . . . . . . . . . 8.1.1 Google Drive API . . . . 8.1.2 LinkedIn API . . . . . . 8.2 Popis implementace . . . . . . . 8.2.1 Google Drive . . . . . . 8.2.2 LinkedIn . . . . . . . . . 8.2.3 Sluˇzba KIMBridge . . . 8.3 Form´at konfiguraˇcn´ıho souboru 9 KIM-OWLImport 9.1 Anal´ yza . . . . . . . . 9.1.1 SeRQL dotazy . 9.1.2 Uloˇzen´ı v´ ystupu 9.2 Popis implementace . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
. . . .
. . . . . . . .
35 35 35 36 37 40 40 41 42
. . . .
45 45 46 47 48
10 V´ ysledky 53 10.1 S´emantick´a anotace . . . . . . . . . . . . . . . . . . . . . . . . 53 10.2 Vyhled´av´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 11 Z´ avˇ er
56
A Ontologie EEG/ERP komponent
63
B Ontologie metod zpracov´ an´ı sign´ alu
64
C UML diagram tˇ r´ıd v projektu KIMBridge
65
D UML diagram tˇ r´ıd v projektu KIM-OWLImport
66
E Uˇ zivatelsk´ a dokumentace k KIM-OWLImport
67
F Uˇ zivatelsk´ a pˇ r´ıruˇ cka k vyhled´ av´ an´ı F.1 Structure search . . . . . . . . . . . . . . . . . . . . . . . . . F.1.1 Vyhled´an´ı dokument˚ u t´ ykaj´ıc´ıch se vybran´ ych komponent . . . . . . . . . . . . . . . . . . . . . . . . . . . F.1.2 Vyhled´an´ı metod zpracov´an´ı sign´alu podle zadan´ ych podm´ınek . . . . . . . . . . . . . . . . . . . . . . . . F.2 Faceted search . . . . . . . . . . . . . . . . . . . . . . . . . .
70 . 71 . 71 . 72 . 74
G Instalace sluˇ zby KIMBridge 76 G.1 Spuˇstˇen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 G.1.1 Konzolov´a aplikace . . . . . . . . . . . . . . . . . . . . 76 G.1.2 Linuxov´a sluˇzba . . . . . . . . . . . . . . . . . . . . . . 76
´ 1 Uvod Na katedˇre informatiky a v´ ypoˇcetn´ı techniky Z´apadoˇcesk´e univerzity v Plzni p˚ usob´ı neuroinformatick´a v´ yzkumn´a skupina, kter´a je zapojen´a do organizace International Neuroinformatics Coordinating Facility1 (INCF). Bˇehem neuroinformatick´ ych v´ yzkum˚ u vznik´a mnoˇzstv´ı dat a s nimi souvisej´ıc´ıch metadat. Jedn´a se zejm´ena o popis a v´ ysledky elektrofyziologick´ ych experiment˚ u. Tato data a metadata je nutn´e uchov´avat a sd´ılet mezi jednotliv´ ymi v´ yzkumn´ ymi skupinami. Data a metadata o realizovan´ ych experimentech jsou ukl´ad´ana do EE2 G/ERP port´alu. Z nˇej je moˇzn´e tato data publikovat ve form´atech s´emantick´eho webu. D´ıky pouˇzit´ı otevˇren´eho standardu pro v´ ymˇenu dat a integraci port´alu do Neuroscience Information Framework3 (NIF) jsou pak tato data dostupn´a i pro dalˇs´ı v´ yzkumn´e skupiny. Kromˇe samotn´ ych dat z experiment˚ u existuje cel´a ˇrada dalˇs´ıch zdroj˚ u, ze kter´ ych je moˇzn´e ˇcerpat informace. Jedn´a se pˇredevˇs´ım o odborn´e publikace a ˇcl´anky t´ ykaj´ıc´ı se elektrofyziologick´ ych experiment˚ u. Dalˇs´ım ˇcasto vyuˇz´ıvan´ ym zdrojem jsou odborn´e diskuze v r´amci vybran´ ych skupin na soci´aln´ıch s´ıt´ıch. Vyhled´av´an´ı v tˇechto zdroj´ıch vˇsak nen´ı jednoduch´e, nebot’ jednotliv´ı autoˇri pouˇz´ıvaj´ı r˚ uzn´e terminologie a jednotliv´a fakta oznaˇcuj´ı r˚ uzn´ ymi kl´ıˇ ˇcov´ ymi slovy. Casto se tak st´av´a, ˇze pˇri vyhled´av´an´ı je nutn´e nˇekolikr´at pˇreformulovat vyhled´avac´ı dotaz pro r˚ uzn´a kl´ıˇcov´a slova, neˇz jsou poˇzadovan´e informace nalezeny. C´ılem t´eto pr´ace je nal´ezt vhodn´e ˇreˇsen´ı pro agregaci a uloˇzen´ı tˇechto dat, kter´e usnadn´ı n´asledn´e vyhled´av´an´ı relevantn´ıch informac´ı. Snahou je vyuˇz´ıt jiˇz existuj´ıc´ı popis dat a znalost´ı z dom´eny ve form´atech s´emantick´eho webu. Pr´ace je rozdˇelena do nˇekolika kapitol. N´asleduj´ıc´ı kapitola popisuje principy s´emantick´eho webu, standardizovan´e technologie a jejich vz´ajemn´e souvislosti. 3. kapitola pak srovn´av´a reposit´aˇre vhodn´e pro ukl´ad´an´ı s´emantick´ ych dat, kter´e umoˇzn ˇuj´ı fulltextov´e vyhled´av´an´ı. 4. kapitola popisuje z´akladn´ı vlastnosti vybran´eho reposit´aˇre, moˇznosti definice znalost´ı o kl´ıˇcov´ ych term´ınech a nahr´av´an´ı dokument˚ u. 5. kapitola analyzuje ontologie, kter´e m´a v souˇcasnosti v´ yzkumn´a skupina k dispozici a kter´e by mohly b´ yt potenci´alnˇe pouˇzity pro popis znalost´ı. 6. kapitola specifikuje poˇzadavky v´ yzkumn´e skupiny a poskytuje celkov´ y pˇrehled realizovan´eho ˇreˇsen´ı. 7. kapitola se zab´ yv´a instalac´ı a konfigurac´ı 1
http://www.incf.org/ http://eegdatabase.kiv.zcu.cz/ 3 http://www.neuinfo.org/ 2
1
´ Uvod platformy pro s´emantick´e anotov´an´ı a prototypovou ontologi´ı, kter´a byla vytvoˇrena pro ovˇeˇren´ı funkˇcnosti realizovan´eho ˇreˇsen´ı. Kapitoly 8 a 9 popisuj´ı n´astroje, kter´e byly vytvoˇreny pro usnadnˇen´ı tvorby ontologie a pro import dokument˚ u ze vzd´alen´ ych u ´loˇziˇst’. 10. kapitola prezentuje v´ ysledky s´emantick´eho anotov´an´ı a vybran´eho vyhled´avac´ıho sc´en´aˇre. Posledn´ı kapitola shrnuje celou pr´aci a nastiˇ nuje dalˇs´ı v´ yvoj realizovan´eho ˇreˇsen´ı.
2
2 Technologie s´emantick´eho webu Souˇcasn´ y web obsahuje velk´e mnoˇzstv´ı dat a informac´ı. Cel´a s´ıt’ je decentralizovan´a a jednotliv´e informace jsou uloˇzeny v podobˇe textov´ ych dokument˚ u, kter´e jsou pˇr´ıpadnˇe obohaceny o multimedi´aln´ı podobu informac´ı. Tyto dokumenty jsou dostupn´e prostˇrednictv´ım ˇretˇezce Uniform Resource Identifier (URI), kter´ y je jedineˇcnˇe identifikuje dan´ y dokument. Tyto dokumenty jsou sice strukturovan´e, ale jejich struktura nepˇrid´av´a k jejich textov´e podobˇe ˇza´dnou dodateˇcnou informaci pro strojov´e zpracov´an´ı. V´ yznam jednotliv´ ych slov a n´azv˚ u v dokumentu tak lze odvodit jen pomoc´ı metod pˇrirozen´eho zpracov´an´ı jazyka (NLP). To vˇsak ˇcin´ı velk´e probl´emy pˇri vyhled´av´an´ı ve velk´em mnoˇzstv´ı dokument˚ u. Bez doplˇ nuj´ıc´ıch informac´ı o v´ yznamu slov nen´ı v nˇekter´ ych pˇr´ıpadech moˇzn´e z´ıskat relevantn´ı v´ ysledky pro zadan´ y dotaz, zvl´aˇstˇe pak pokud mohou m´ıt kl´ıˇcov´a slova v´ıce v´ yznam˚ u. [15] uv´ad´ı jako jeden z takov´ ych pˇr´ıpad˚ u slovo Marja“. To m˚ uˇze znamenat jak kˇrestn´ı jm´eno osoby, tak finsk´e slovo ” oznaˇcuj´ıc´ı bobule“. ” Tento probl´em se snaˇz´ı ˇreˇsit s´emantick´ y web. Jeho c´ılem je poskytnout technologie a standardy, kter´e umoˇzn´ı strojov´e zpracov´an´ı a porozumˇen´ı vˇetˇs´ımu mnoˇzstv´ı dat dostupn´ ych na internetu. V´ ysledkem budou nejen pˇresnˇejˇs´ı v´ ysledky vyhled´av´an´ı, ale i usnadnˇen´ı v´ ymˇeny dat, integrace jednotliv´ ych sluˇzeb a automatizace z´ısk´av´an´ı dat. S´emantick´ y web umoˇzn ˇuje k jednotliv´ ym zdroj˚ um na internetu pˇripojit dalˇs´ı doplˇ nuj´ıc´ı informace – metadata. Je zaloˇzen na n´asleduj´ıc´ıch 6 principech [15]: 1. Vˇ se m˚ uˇ ze b´ yt identifikov´ ano pomoc´ı URI. Kromˇe str´anek maj´ı sv˚ uj jedineˇcn´ y identifik´ator i jednotliv´e osoby, m´ısta, ud´alosti, vˇeci a dalˇs´ı objekty. D´ıky tomu se lze na kaˇzd´ y objekt odkudkoliv odkazovat. 2. Jednotliv´ e zdroje i odkazy mezi nimi mohou m´ıt definovan´ y typ. Souˇcasn´ y web je zmˇet´ı jednotliv´ ych str´anek a odkaz˚ u mezi nimi. U odkaz˚ u vˇsak nen´ı pˇripojena ˇz´adn´a informace o tom, jak´ y je vztah mezi odkazovan´ ymi str´ankami. Doplnˇen´ım typu k tˇemto odkaz˚ um je moˇzn´e tyto vztahy pˇresnˇe popsat. 3. Ne´ upln´ e informace jsou tolerovan´ e. U souˇcasn´eho webu m˚ uˇze jak´akoliv str´anka odkazovat na jakoukoliv jinou bez toho, aby se jej´ı autor musel starat o platnost tohoto odkazu. 3
Technologie s´emantick´eho webu
Pokud str´anka bude pˇresunuta nebo pˇrestane existovat, zobraz´ı se uˇzivateli chyba 404. Tato vlastnost mus´ı b´ yt zachov´ana i u s´emantick´eho webu – nedostupnost ˇca´sti informace o objektu nesm´ı znemoˇznit vyuˇzit´ı zbytku informace. 4. Absolutn´ı pravda nen´ı nutn´ a. Ne vˇsechny informace na webu jsou pravdiv´e a s´emantick´ y web toto mus´ı zohledˇ novat. Kaˇzd´a aplikace bude pravdivost a d˚ uvˇeryhodnost tvrzen´ı vyhodnocovat na z´akladˇe jeho kontextu, tedy podle toho, kde a kdy bylo tvrzen´ı uvedeno, kdo je jeho autorem a jak´e mˇel k tvrzen´ı povˇeˇren´ı. 5. Podpora v´ yvoje. Podobn´e koncepty jsou ˇcasto vyv´ıjeny r˚ uzn´ ymi lidmi ˇci skupinami. S´emantick´ y web mus´ı umoˇznit nav´azat na pr´aci nˇekoho jin´eho tak, aby bylo moˇzn´e dan´a data zkombinovat a nevznikaly nejasnosti pˇri jejich interpretaci. 6. Minimalistick´ y n´ avrh. C´ılem je nestandardizovat v´ıce, neˇz je nezbytnˇe nutn´e. Navrˇzen´e technologick´e standardy jsou rozdˇelen´e do nˇekolika vrstev. Tyto vrstvy jsou zn´azornˇeny na obr´azku 2.1.
Obr´azek 2.1: Vrstvy s´emantick´eho webu. Dvˇe nejniˇzˇs´ı vrstvy, tedy Unicode“ a URI“, zajiˇst’uj´ı pouˇzit´ı mezin´arodn´ı ” ” znakov´e sady a odkazov´an´ı na jednotliv´e zdroje pomoc´ı jedineˇcn´ ych identifik´ator˚ u. Vrstva XML, XML Namespaces, XML Schema“ definuje XML ” standardy a zajiˇst’uje, aby bylo moˇzn´e technologie s´emantick´eho webu integrovat s dalˇs´ımi technologiemi, kter´e vych´azej´ı z XML. Pro souˇcasn´ y s´emantick´ y web maj´ı nejvˇetˇs´ı v´ yznam vrstvy RDF1 , RDF ” Schema“ a Ontology Vocabulary“. Vrstva RDF, RDF Schema“ umoˇzn ˇuje ” ” 1
Resource Description Framework
4
Technologie s´emantick´eho webu
Resource Description Framework
definovat datov´ y model a popsat fakta o jednotliv´ ych objektech. Pr´avˇe v t´eto vrstvˇe je moˇzn´e jednotliv´ ym zdroj˚ um a odkaz˚ um pˇriˇradit typ. Vrstva Onto” logy Vocabulary“ pak podporuje spojov´an´ı jednotliv´ ych model˚ u a vytv´aˇren´ı sloˇzitˇejˇs´ıch struktur – ontologi´ı. Vyˇsˇs´ı vrstvy, tedy Logic“, Proof“ a Trust“ nejsou v souˇcasnosti stan” ” ” dardizov´any. Vrstva Digital Signatures“ pak zajiˇst’uje integritu dokumentu a ovˇeˇren´ı ” autenticity a d˚ uvˇeryhodnosti zdroje a jej´ıho autora. Tato vrstva je definov´ana ve standardu [13]. Kromˇe tˇechto vrstev existuje jeˇstˇe nˇekolik dalˇs´ıch standard˚ u, kter´e se zamˇeˇruj´ı na obohacen´ı souˇcasn´ ych HTML str´anek o s´emantick´e informace. Jedn´ım z nich je standard Microdata [11]. Umoˇzn ˇuje do str´anky pˇridat s´emantickou informaci o osob´ach, organizac´ıch, ud´alostech, produktech, multimedi´aln´ıch souborech a nˇekolika dalˇs´ıch typech objekt˚ u. Sch´ema definic tˇechto objekt˚ u je dostupn´e na webu schema.org. 2 Na rozd´ıl od uveden´ ych technologi´ı se vˇsak jedn´a o nadstavbu nad souˇcasn´ ym standardem HTML5. Jeho c´ılem je pouze poskytnout vyhled´avaˇc˚ um doplˇ nuj´ıc´ı informace. Neposkytuje takov´e moˇznosti jako technologie, kter´e jsou obecnˇe oznaˇcovan´e jako s´emantick´ y web“. Data je vˇsak moˇzn´e trans” formovat do nˇekter´eho z form´at˚ u, kter´e podporuje RDF. [12]
2.1
Resource Description Framework
´ Uvod do RDF [21] uv´ad´ı, ˇze RDF je jazyk pro reprezentaci informac´ı o zdro” j´ıch dostupn´ ych v s´ıti World Wide Web. Je urˇcen zejm´ena k popisu metadat zdroj˚ u na webu, jak´ ymi jsou n´azev, autor, datum modifikace webov´e str´anky a informace o copyrightu a licencov´an´ı dan´eho dokumentu. Zobecnˇen´ım konceptu zdroje vˇsak m˚ uˇze b´ yt pouˇzit i pro popis objekt˚ u, kter´e mohou b´ yt na webu identifikov´any i pˇres to, ˇze nejsou pˇr´ımo dostupn´e. Jako pˇr´ıklad je moˇzn´e uv´est produkty dostupn´e z webov´eho obchodu (napˇr. informace o specifikaci, cenˇe a dostupnosti), nebo popis preferenc´ı uˇzivatele pro doruˇcov´an´ı informac´ı.“ Jak jiˇz bylo dˇr´ıve zm´ınˇeno, RDF pouˇz´ıv´a myˇslenku, ˇze na vˇsechny objekty je moˇzn´e se odkazovat pomoc´ı jejich URI. Vznik´a tak graf, kter´ y reprezentuje jednotliv´e objekty, jejich vlastnosti a vztahy s jin´ ymi objekty. Pˇr´ıklad takov´eho grafu uv´ad´ı [21]. Jeho upraven´a varianta je zn´azornˇena na obr´azku 2.2. Graf zn´azorˇ nuje popis osoby jm´enem Eric Miller. M˚ uˇzeme jej popsat 2
http://schema.org/docs/documents.html
5
Technologie s´emantick´eho webu
Resource Description Framework
Obr´azek 2.2: Graf popisuj´ıc´ı osobu jm´enem Eric Miller. vˇetou Zdroj s URI http://www.w3.org/People/EM/contact#me je typu ” Osoba, jej´ıˇz cel´e jm´eno je Eric Miller, m´a e-mailovou adresu
[email protected] a m´a titul Dr.“ Tu samou informaci m˚ uˇzeme vyj´adˇrit tak´e pomoc´ı jednotliv´ ych d´ılˇc´ıch tvrzen´ı: http://www.w3.org/People/EM/contact#me http://www.w3.org/People/EM/contact#me tou je Eric Miller“. ” http://www.w3.org/People/EM/contact#me hodnota je
[email protected]. http://www.w3.org/People/EM/contact#me Dr.“ ”
je typu osoba. m´a cel´e jm´eno, jehoˇz hodnom´a e-mailovou adresu, jej´ıˇz m´a titul, jehoˇz hodnotou je
Tato tvrzen´ı jsou v podstatˇe trojicemi (triplety) subjekt – predik´at – objekt. Pomoc´ı tˇechto triplet˚ u lze reprezentovat informace obsaˇzen´e v libovoln´em grafu. Subjekt vˇzdy reprezentuje zdroj, kter´ y nab´ yv´a urˇcit´e vlastnosti (predik´at) s urˇcenou hodnotou (objekt). Objektem m˚ uˇze b´ yt bud’ pˇr´ımo textov´a hodnota (napˇr. Eric Miller“), nebo jin´ y objekt identifikovan´ y pomoc´ı URI ” (
[email protected]). Triplety jsou z´akladn´ım konceptem RDF. Uveden´ y pˇr´ıklad je zapsan´ y v pˇrirozen´em jazyce. Pˇri strojov´em zpracov´an´ı to vˇsak m˚ uˇze ˇcinit pot´ıˇze. Proto je moˇzn´e pomoc´ı URI identifikovat nejen jednotliv´e zdroje (subjekty), ale i vlastnosti mezi nimi. Vztahy i hodnoty v grafu na obr´azku 2.2 je tedy nutn´e identifikovat pomoc´ı jejich URI. 6
Technologie s´emantick´eho webu
Resource Description Framework
Dost´av´ame graf na obr´azku 2.3.
Obr´azek 2.3: Graf popisuj´ıc´ı osobu Eric Miller s vlastnostmi reprezentovan´ ymi pomoc´ı URI. Kromˇe vlastnost´ı, kter´e je moˇzn´e definovat v konkr´etn´ıch aplikac´ıch, lze vyuˇz´ıt i nˇekter´e vlastnosti, kter´e definuje standard RDF. Ty jsou definov´any ve jmenn´em prostoru http://www.w3.org/1999/02/22-rdf-syntax-ns#, typicky oznaˇcovan´em zkr´acen´ ym prefixem rdf:. Mezi nejd˚ uleˇzitˇejˇs´ı vestavˇen´e vlastnosti patˇr´ı rdf:type, kter´a byla pouˇzita v grafu na obr´azku 3. Tato vlastnost slouˇz´ı k urˇcen´ı typu dan´eho objektu. D´ıky n´ı je tedy moˇzn´e jednotliv´e zdroje typovat. Specifikace RDF tak´e definuje syntaxi RDF/XML [1], pomoc´ı kter´e je moˇzn´e v´ yˇse uveden´ y graf zapsat v jazyce, jenˇz je podmnoˇzinou XML. Pˇr´ıklad v´ yˇse uveden´eho grafu je uveden´ y ve v´ ypise 2.1.
Eric Miller Dr.
V´ ypis 2.1: RDF/XML popis osoby Eric Miller 7
Technologie s´emantick´eho webu
RDF Vocabulary Description Language
Pro uloˇzen´ı RDF triplet˚ u je moˇzn´e pouˇz´ıt jeˇstˇe dalˇs´ı form´aty. Mezi bˇeˇznˇe podporovan´e patˇr´ı: N-Triples [2], Turtle, Terse RDF Triple Language [3] a Notation3 (N3) [5].
Tyto form´aty se zamˇeˇruj´ı na z´apis samotn´ ych triplet˚ u a neumoˇzn ˇuj´ı z´apis ve strukturovan´em XML. Oproti RDF/XML jsou vˇsak struˇcnˇejˇs´ı.
2.2
RDF Vocabulary Description Language
Prostˇrednictv´ım RDF m˚ uˇzeme definovat jednotliv´e zdroje a jejich vlastnosti v podobˇe trojic. RDF Vocabulary Description Language, nebo tak´e RDF Schema, zkr´acenˇe RDFS, pˇrid´av´a typov´ y syst´em. S jeho pomoc´ı je moˇzn´e definovat tˇr´ıdy podobnˇe jako v objektovˇe orientovan´ ych programovac´ıch jazyc´ıch. D´ıky tomu lze spojit vlastnosti, u kter´ ych se oˇcek´av´a, ˇze budou pouˇzity souˇcasnˇe. Pˇr´ıtomnost vlastnosti vˇsak nem˚ uˇze b´ yt vynucena. [21] Kaˇzd´ y definovan´ y zdroj je pak instanc´ı jedn´e nebo v´ıce tˇr´ıd. Jednotliv´e tˇr´ıdy je tak´e moˇzn´e sdruˇzovat do hierarchi´ı podobn´ ym zp˚ usobem jako v objektovˇe orientovan´ ych jazyc´ıch. Podobnˇe jako zdroj m˚ uˇze b´ yt instanc´ı jedn´e nebo v´ıce tˇr´ıd, m˚ uˇze i tˇr´ıda b´ yt potomkem jedn´e nebo v´ıce tˇr´ıd. Definic´ı tˇr´ıd a jejich hierarchie pak vznik´a slovn´ık“, kter´ y lze v aplikaci ” pouˇz´ıvat. V´ yhodou RDFS je, ˇze prostˇredky, kter´e jsou pouˇzity pro popis jednotliv´ ych tˇr´ıd, jsou tak´e slovn´ıkem, jenˇz je pops´an mnoˇzinou trojic. D´ıky tomu je tak moˇzn´e prov´adˇet dotazy nejen nad instancemi, kter´e jsou definovan´e, ale i nad samotn´ ymi definicemi tˇr´ıd. Jednotliv´e triplety popisuj´ıc´ı tento slovn´ık jsou definov´any ve jmenn´em prostoru http://www.w3.org/2000/01/ rdf-schema# (d´ale oznaˇcovan´ y prefixem rdfs:). Pro vyj´adˇren´ı pˇr´ısluˇsnosti instance k tˇr´ıdˇe se vyuˇz´ıv´a vlastnosti rdf:type. Jednotliv´e definice tˇr´ıd jsou pak instanc´ı rdfs:Class. Pro vyj´adˇren´ı dˇediˇcnosti mezi dvˇema tˇr´ıdami se pouˇz´ıv´a vlastnosti rdfs:subClassOf. Jednotliv´e vlastnosti je moˇzn´e definovat ve tˇr´ıdˇe jako instance tˇr´ıdy rdfs:Property. Pro vyj´adˇren´ı pˇr´ısluˇsnosti vlastnosti k dan´e tˇr´ıdˇe lze potom vyuˇz´ıt vlastnost rdfs:domain, obor hodnot pomoc´ı vlastnosti rdfs:range. Jako obor hodnot je moˇzn´e pouˇz´ıt bud’ URI tˇr´ıdy, nebo datov´e typy z XML Schema Definition Language (XSD). Dalˇs´ı tˇr´ıdy a vlastnosti, kter´e definuje RDFS, lze nal´ezt v [9]. V pˇredchoz´ım pˇr´ıkladu by bylo moˇzn´e definovat tˇr´ıdu Osoba, kter´a by definovala vlastnosti cel´e jm´eno, titul a e-mailov´a adresa. D´ıky tomu by byl zajiˇstˇen jednotn´ y popis i dalˇs´ıch osob, kter´e budou definov´any. 8
Technologie s´emantick´eho webu
RDF Vocabulary Description Language
Pˇr´ıklad definice t´eto tˇr´ıdy v RDF/XML je uveden ve v´ ypise 2.2. ]>
V´ ypis 2.2: Definice tˇr´ıdy osoba. Pokud bychom chtˇeli definovat napˇr´ıklad tˇr´ıdy Vˇedec a Filosof jako tˇr´ıdy podˇr´ızen´e tˇr´ıdˇe Osoba, mus´ıme pouˇz´ıt vlastnost rdfs:subClassOf, jak je vidˇet na v´ ypise 2.3.
9
Technologie s´emantick´eho webu
Ontologie a Web Ontology Language
V´ ypis 2.3: Pouˇzit´ı rdfs:subClassOf.
2.3
Ontologie a Web Ontology Language
[30] definuje ontologie3 jako soubor koncept˚ u a vztah˚ u (oznaˇcovan´ ych jako ” termy), kter´e popisuj´ı a reprezentuj´ı urˇcitou oblast z´ajmu (dom´enu). Ontologie se pouˇz´ıvaj´ı pro klasifikaci term˚ u, kter´e mohou b´ yt pouˇzity v dan´e aplikaci, charakteristiku moˇzn´ ych vztah˚ u a definici omezen´ı pro pˇr´ısluˇsn´e termy“. Ontologie je moˇzn´e pouˇz´ıt jako form´at pro v´ ymˇenu dat ˇci pro uchov´an´ı a organizaci znalost´ı. Pro popis ontologi´ı slouˇz´ı Web Ontology Language, zkr´acenˇe OWL. Jedn´a se o v´ ypoˇcetnˇe-logick´ y jazyk, kter´ y umoˇzn ˇuje strojov´e ovˇeˇren´ı jiˇz definovan´ ych znalost´ı, nebo odvozen´ı poznatk˚ u, kter´e ze znalost´ı implicitnˇe vypl´ yvaj´ı. [16] Vych´az´ı ze standard˚ u RDF a RDFS a pˇrid´av´a vlastnosti, d´ıky kter´ ym je moˇzn´e popsat sloˇzitˇejˇs´ı definice a vztahy. Ontologie v jazyce OWL je tedy grafem v RDF. V souˇcasn´e dobˇe jsou k dispozici dvˇe verze: OWL 1 a OWL 2. Druh´a verze je plnˇe zpˇetnˇe kompatibiln´ı – vˇsechny OWL 1 ontologie jsou platn´ ymi OWL 2 ontologiemi. [32] Obˇe verze tak´e pouˇz´ıvaj´ı stejn´e form´aty pro uchov´an´ı dat. OWL 2 pˇrid´av´a nov´e funkce, rozˇsiˇruje napˇr´ıklad datov´e typy, pˇrid´av´a podporu pro asymetrick´e, tranzitivn´ı a vz´ajemnˇe vyluˇcuj´ıc´ı se vlastnosti a definuje nov´e profily pro odvozov´an´ı znalost´ı. Dalˇs´ı text se bude zab´ yvat novˇejˇs´ı verz´ı OWL 2. Dokumenty v OWL je moˇzn´e uloˇzit v nˇekolika moˇzn´ ych syntax´ıch. Tabulka 2.1 poskytuje pˇrehled z´akladn´ıch syntax´ı, kter´e jsou pops´any v [16]. Ontologie se v jazyce OWL skl´ad´a z n´asleduj´ıc´ıch ˇca´st´ı: [16] Axiomy: z´akladn´ı tvrzen´ı, kter´a jsou v ontologii vyj´adˇrena. Takov´ ym tvrzen´ım m˚ uˇze b´ yt napˇr´ıklad vˇeta vˇsichni lid´e jsou smrteln´ı“. ” Entity: prvky, kter´e reprezentuj´ı objekty a vztahy z re´aln´eho svˇeta. Entity jsou pak souˇca´st´ı jednotliv´ ych tvrzen´ı v ontologii. Pokud budeme uvaˇzovat 3
W3C pouˇz´ıv´ a anglick´e v´ yrazy vocabulary“ (slovn´ık) a ontology“ (ontologie). Uv´ad´ı, ” ” ˇze hranice mezi tˇemito dvˇema v´ yrazy je nejasn´a a vˇetˇsinou se pouˇz´ıv´a v´ yraz ontology“ ” pro komplexnˇejˇs´ı a form´ alnˇejˇs´ı soubory term˚ u, kdeˇzto vocabulary“ pro m´enˇe form´aln´ı ” soubory. V ˇcesk´em prostˇred´ı se pouˇz´ıv´a oznaˇcen´ı ontologie.
10
Technologie s´emantick´eho webu
Ontologie a Web Ontology Language
RDF/XML
Syntaxe urˇcen´a pro v´ ymˇenu dat, kter´a mus´ı b´ yt podporov´ana vˇsemi n´astroji splˇ nuj´ıc´ı specifikaci OWL 2.
OWL/XML
XML serializace ontologie, usnadˇ nuje zpracov´an´ı v n´astroj´ıch pracuj´ıc´ıch s OWL.
Functional Syntax
Umoˇzn ˇuje pˇrehlednˇejˇs´ı z´apis form´aln´ı struktury ontologie.
Manchester Syntax
Jednoduˇsˇs´ı z´apis ontologi´ı vyuˇz´ıvaj´ıc´ıch deskripˇcn´ı logiky.
Turtle
Jednoduˇsˇs´ı z´apis triplet˚ u. Tabulka 2.1: Seznam syntax´ı OWL 2.
dvojici tvrzen´ı Jana je ˇzena“ a Jana a Petr jsou manˇzel´e“, tak jednotliv´ ymi ” ” entitami jsou konkr´etn´ı objekty (Jana, Petr), kategorie, do kter´e je osoba ˇrazena (ˇzena), a vztah, kter´ y mezi tˇemito osobami je (jsou manˇzel´e). V jazyce OWL je konkr´etn´ı objekt (v naˇsem pˇr´ıpadˇe osoby) naz´ yv´an individual (instance), kategorie je tˇr´ıda (class) a jednotliv´e vztahy jsou jejich vlastnostmi (property). V´ yrazy: Skl´ad´an´ı jednotliv´ ych entit do sloˇzitˇejˇs´ıch konstrukc´ı. Pokud napˇr´ıklad sloˇz´ıme tˇr´ıdy ˇzena“ a rodiˇc“, dost´av´ame tˇr´ıdu matka“. Pomoc´ı ” ” ” v´ yraz˚ u tak vznikaj´ı nov´e entity. Z definovan´ ych axiom˚ u, entit a v´ yraz˚ u je moˇzn´e odvozovat dalˇs´ı znalosti, kter´e nejsou v ontologii explicitnˇe vyj´adˇren´e. Jazyk OWL d´ale rozdˇeluje vlastnosti objekt˚ u do n´asleduj´ıc´ıch kategori´ı: Object property popisuje vztah mezi dvˇema objekty. Jej´ı hodnotou je tedy URI jin´eho objektu. Datatype property je vlastnost objektu, jej´ıˇz hodnotou je liter´al, napˇr´ıklad ˇretˇezec nebo celoˇc´ıseln´a hodnota. Annotation property nepopisuje pˇr´ımo vlastnost objektu, ale vlastnost ontologie (nebo jej´ı ˇca´sti) samotn´e. Jedn´a se napˇr´ıklad o autora a ˇcas posledn´ı u ´pravy urˇcit´eho axiomu. OWL umoˇzn ˇuje mezi jednotliv´ ymi tˇr´ıdami a vlastnostmi definovat dalˇs´ı vztahy, napˇr´ıklad ekvivalenci, kardinalitu, vz´ajemnou v´ yluˇcnost, pˇr´ıpadnˇe dalˇs´ı omezen´ı. Podrobnˇejˇs´ı pˇrehled vlastnost´ı poskytuje [16]. 11
Technologie s´emantick´eho webu
2.4
S´emantick´e reposit´aˇre
S´ emantick´ e reposit´ aˇ re
S´emantick´e reposit´aˇre slouˇz´ı k uchov´av´an´ı dat s´emantick´eho webu. Jsou poˇ dobn´e relaˇcn´ım SRBD – umoˇzn ˇuj´ı data ukl´adat, modifikovat a prov´adˇet nad ˇ nimi dotazy. Oproti relaˇcn´ım SRBD vˇsak data nejsou uloˇzena v tabulk´ach, ale v RDF grafu. Do s´emantick´eho reposit´aˇre je tedy moˇzn´e uloˇzit ontologii definovanou v jazyce OWL a d´ale s n´ı pracovat. [24] S´emantick´e reposit´aˇre ukl´adaj´ı jednotliv´e RDF triplety. Ty jsou typicky vkl´ad´any v nˇekter´em z form´at˚ u, kter´e definuj´ı standardy RDF a OWL. V´ ystupem je opˇet nˇekter´ y z tˇechto form´at˚ u. ˇ Alternativou k s´emantick´ ym reposit´aˇr˚ um je pouˇzit´ı relaˇcn´ıho SRBD a mapov´an´ı z´aznam˚ u v nˇem uloˇzen´ ych do RDF grafu. T´ımto postupem se zab´ yv´a napˇr´ıklad [20]. Nad daty uloˇzen´ ymi v s´emantick´em reposit´aˇri je moˇzn´e se dotazovat dotazovac´ımi jazyky, kter´e jsou podobn´e jazyku Structured Query Language (SQL). W3C standardizuje jazyk SPARQL Protocol and RDF Query Language (zkr´acenˇe SPARQL).
2.5
Jazyk SPARQL
Vˇsechny typy SPARQL dotaz˚ u obsahuj´ı tzv. vzor grafu. Jedn´a se o sadu RDF triplet˚ u, jejichˇz kaˇzd´a ˇc´ast m˚ uˇze b´ yt nahrazena za promˇennou. V datech je pak vyhled´av´an takov´ y podgraf, ze kter´eho je moˇzn´e do vzoru dosadit za promˇenn´e hodnoty tak, aby v´ ysledn´e grafy byly ekvivalentn´ı. Kromˇe sady triplet˚ u je moˇzn´e definovat omezuj´ıc´ı podm´ınky pro jednotliv´e triplety podobnˇe jako je tomu u klauzule WHERE u SQL dotaz˚ u. [10] Tyto triplety jsou zad´av´any v syntaxi Turtle [3]. Promˇenn´e jsou uvozeny znakem ?, kter´ y je n´asledov´an textov´ ym identifik´atorem dan´e promˇenn´e. Jazyk SPARQL definuje tˇri z´akladn´ı typy dotaz˚ u: SELECT, CONSTRUCT a ASK. Jednotliv´e typy dotaz˚ u budou demonstrov´any na mnoˇzinˇe triplet˚ u, kter´a je uvedena ve v´ ypise 2.4. Prefix foaf: je pouˇzit pro jmenn´ y prostor http://xmlns.com/foaf/0.1/. _:osobaA _:osobaA _:osobaB _:osobaB _:osobaC
foaf:name foaf:nick foaf:name foaf:nick foaf:name
"Petr" . "P´ et’a" . "Lucie" . "Lucka" . "Jakub" .
V´ ypis 2.4: Uk´azkov´a sada triplet˚ u ve form´atu Turtle. Dotazy typu SELECT jsou funkˇcnˇe i syntakticky podobn´e stejnojmenn´emu 12
Technologie s´emantick´eho webu
Jazyk SPARQL
typu dotazu v jazyce SQL. V´ ysledkem dotazu je mnoˇzina n-tic, kter´e odpov´ıdaj´ı zadan´ ym podm´ınk´am. Z´akladn´ı struktura dotazu vypad´a n´asledovnˇe: SELECT expr-list WHERE { search-graph-pattern }
expr-list je seznam v´ yraz˚ u, kter´e budou tvoˇrit v´ ysledn´e n-tice. V´ yrazem m˚ uˇze b´ yt konstantn´ı hodnota, promˇenn´a ˇci nˇekter´a z vestavˇen´ ych funkc´ı. search-graph-pattern je seznam triplet˚ u, kter´e tvoˇr´ı vzor grafu. Pro vˇsechny nalezen´e podgrafy, jeˇz odpov´ıdaj´ı vzoru, je pak vr´acena jedna n-tice, do n´ıˇz jsou dosazeny promˇenn´e ze vzoru. Pˇr´ıklad jednoduch´eho dotazu SELECT: SELECT ?name, ?nick WHERE { ?x foaf:name ?name ; foaf:nick ?nick . }
V´ ysledek uveden´eho dotazu nad triplety z v´ ypisu 2.4 je v tabulce 2.2. Ve v´ ysledku nen´ı zahrnuta osobaC, nebot’ nem´a v datech triplet s predik´atem foaf:nick. name
nick
Petr
P´et’a
Lucie
Lucka
Tabulka 2.2: V´ ysledek dotazu SELECT. Pokud bychom chtˇeli do v´ ysledk˚ u zahrnout i ty osoby, kter´e nemaj´ı ˇz´adn´ y foaf:nick, museli bychom pˇr´ısluˇsn´ y triplet ve vzoru uv´est v sekci OPTIONAL. ˇ adek ve v´ R´ ysledku, pro nˇeˇz by nebyl foaf:nick nalezen, by obsahoval pouze jm´eno a sloupeˇcek nick by nemˇel ˇza´dnou hodnotu. Dotaz by vypadal takto: SELECT ?name, ?nick WHERE { ?x foaf:name ?name . OPTIONAL { ?x foaf:nick ?nick . } }
Dotazy typu CONSTRUCT jsou funkˇcnˇe velmi podobn´e dotaz˚ um SELECT. V´ ysledkem vˇsak nen´ı mnoˇzina n-tic, ale mnoˇzina trojic, kter´e tvoˇr´ı graf. Z´akladn´ı struktura je podobn´a: 13
Technologie s´emantick´eho webu
Jazyk SPARQL
CONSTRUCT { result-graph } WHERE { search-graph-pattern }
result-graph je vzor v´ ysledn´eho grafu, do nˇehoˇz jsou dosazov´any promˇenn´e z podgraf˚ u, kter´e odpov´ıdaj´ı vyhled´avan´emu vzoru. Pokud je v´ ysledn´ y graf stejn´ y jako graf vyhled´avan´ y, je moˇzn´e ˇca´st s v´ ysledn´ ym grafem vynechat a pouˇz´ıt zkr´acenou formu CONSTRUCT WHERE { search-graph-pattern }
Pˇr´ıklad jednoduch´eho dotazu CONSTRUCT (prefix vcard: oznaˇcuje http:// www.w3.org/2001/vcard-rdf/3.0#): CONSTRUCT { ?x vcard:name ?name . } WHERE { ?x foaf:name ?name . }
V´ ysledkem tohoto dotazu nad daty z v´ ypisu 2.4 bude mnoˇzina triplet˚ u ve v´ ypise 2.5. _:osobaA _:osobaA _:osobaB _:osobaB _:osobaC
foaf:name foaf:nick foaf:name foaf:nick foaf:name
"Petr" . "P´ et’a" . "Lucie" . "Lucka" . "Jakub" .
V´ ypis 2.5: V´ ysledek jednoduch´eho dotazu CONSTRUCT. V´ ysledkem dotaz˚ u typu ASK je pouze logick´a hodnota, kter´a ˇr´ık´a, zda je moˇzn´e zadan´ y vzor grafu v datech nal´ezt. Syntaxe dotazu je velmi jednoduch´a: ASK { search-graph-pattern }
Uvaˇzujme n´asleduj´ıc´ı dotaz nad mnoˇzinou triplet˚ u z v´ ypisu 2.4: ASK { ?x foaf:name "Jakub" }
V´ ysledkem bude logick´a hodnota true, protoˇze existuje osoba, kter´a se jmenuje Jakub“. V´ ysledkem n´asleduj´ıc´ıho dotazu by byla hodnota false, pro” toˇze osoba se jm´enem Jakub“ nem´a uvedenou ˇz´adnou pˇrezd´ıvku: ” ASK { ?x foaf:name "Jakub"; foaf:nick ?y }
Dalˇs´ı podrobnosti t´ ykaj´ıc´ı se jednotliv´ ych typ˚ u dotaz˚ u, jejich vyhodnocov´an´ı a obecnˇe jazyka SPARQL je moˇzn´e nal´ezt ve specifikaci [10].
14
3 Pˇrehled s´emantick´ych reposit´aˇr˚ u Srovn´an´ım v´ ykonu jednotliv´ ych reposit´aˇr˚ u se zab´ yv´a nˇekolik benchmark˚ u, 1 napˇr´ıklad Lehigh University Benchmark (LUBM), Ontology Benchmark2 (OUBM) ˇci Berlin SPARQL Benchmark3 (BSBM). Nejaktu´alnˇejˇs´ı ze jmenovan´ ych je BSBM, proto bude vyuˇzit pro srovn´an´ı v´ ykonu jednotliv´ ych reposit´aˇr˚ u. Pˇri testov´an´ı reposit´aˇr˚ u v BSBM jsou pouˇzity dvˇe sady dat: 100M s 100 000 748 triplety a 200M s 200 031 975 triplety.
U kaˇzd´eho reposit´aˇre je mˇeˇren ˇcas importu cel´eho datasetu a n´aslednˇe poˇcet vykonan´ ych dotaz˚ u za jednotku ˇcasu s r˚ uzn´ ym poˇctem souˇcasnˇe pˇripojen´ ych klient˚ u. V´ ysledky z posledn´ı iterace benchmarku pro vybran´e reposit´aˇre jsou uvedeny v tabulk´ach 3.1 a 3.2. Pro reposit´aˇr OWLIM v edici SE je pouˇzit starˇs´ı n´azev BigOwlim. Reposit´ aˇ r
Sada 100M
Sada 200M
26min 42s
1h 12min 04s
1h 03min 47s
3h 24min 25s
17min 22s
38min 36s
TDB
1h 14min 48s
2h 45min 13s
Virtuoso
1h 49min 26s
3h 59min 38s
4store BigData BigOwlim
Tabulka 3.1: Doba naˇc´ıt´an´ı jednotliv´ ych datov´ ych sad. Kompletn´ı souhrn v´ ysledk˚ u posledn´ı iterace BSBM poskytuje [6]. N´asleduj´ıc´ı pˇrehled popisuje v souˇcasnosti nejv´ıce rozˇs´ıˇren´e a obecnˇe podporovan´e s´emantick´e reposit´aˇre. Vhodn´ y produkt pak bude vybr´an na z´akladˇe n´asleduj´ıc´ıch krit´eri´ı: 1. moˇznosti fulltextov´eho vyhled´av´an´ı, 1
http://swat.cse.lehigh.edu/projects/lubm/index.htm http://link.springer.com/chapter/10.1007%2F11762256_12 3 http://wifo5-03.informatik.uni-mannheim.de/bizer/ berlinsparqlbenchmark/ 2
15
Pˇrehled s´emantick´ych reposit´aˇr˚ u
Reposit´ aˇ r
4store
Sada 100M
Sada 200M
4store
5589
4593
BigData
2428
1795
BigOwlim
3534
1795
TDB
2274
1443
Virtuoso
7352
4669
Tabulka 3.2: Poˇcet vykonan´ ych dotaz˚ u za hodinu. 2. v´ ykon a 3. poskytovan´e funkce v oblasti RDF a OWL. Krit´eria jsou seˇrazena od nejd˚ uleˇzitˇejˇs´ıho po nejm´enˇe d˚ uleˇzit´e.
3.1
4store
4store4 je datab´azov´ y server, kter´ y je urˇcen pro ukl´ad´an´ı a dotazov´an´ı RDF dat. Dotazovat se je moˇzn´e jazykem SPARQL. 4store je urˇcen hlavnˇe pro nasazen´ı do clusteru, avˇsak pro nasazen´ı s menˇs´ım mnoˇzstv´ım dat lze pouˇz´ıt jedin´ y server. 4store byl p˚ uvodnˇe vyvinut a pouˇz´ıv´an internˇe ve spoleˇcnosti 5 garlik, jako open-source projekt byl uvolnˇen v roce 2009. Je distribuov´an pod licenc´ı GNU GPLv3. Kromˇe SPARQL dotazov´an´ı podporuje od verze 1.0.4 i z´akladn´ı fulltextov´e vyhled´av´an´ı. V Berlin SPARQL Benchmark V3 se um´ıstil na 2. m´ıstˇe pˇri naˇc´ıt´an´ı i dotazov´an´ı dat. Pˇri naˇc´ıt´an´ı dat byl 1,5× aˇz 2× pomalejˇs´ı neˇz OWLIM-SE, avˇsak pˇri dotazov´an´ı byl v z´avislosti na mnoˇzstv´ı dat t´emˇeˇr 1,5× aˇz 2,5× rychlejˇs´ı. Pro velk´ y objem dat nebylo zpomalen´ı dotaz˚ u natolik v´ yrazn´e jako u jin´ ych produkt˚ u. [6] 4 5
http://4store.org/ http://www.garlik.com/
16
Pˇrehled s´emantick´ych reposit´aˇr˚ u
3.1.1
Jena
Pˇ r´ıpady pouˇ zit´ı
Data Patrol Data Patrol6 je hlavn´ı produkt spoleˇcnosti garlik. Jeho c´ılem je zabr´anit zneuˇzit´ı osobn´ıch a firemn´ıch dat. Aktivnˇe monitoruje velk´e mnoˇzstv´ı webov´ ych str´anek a soci´aln´ı s´ıtˇe a zjiˇst’uje, zda se na nich neobjevily osobn´ı, kontaktn´ı ˇci finanˇcn´ı informace (v´ ypisy z u ´ˇct˚ u, ˇc´ısla platebn´ıch karet a jin´e). Pokud nalezne nˇekter´e z tˇechto dat na veˇrejnˇe pˇr´ıstupn´em m´ıstˇe (webu), kde existuje riziko jejich zneuˇzit´ı, upozorn´ı uˇzivatele, aby mohl podniknout pˇr´ıpadn´e kroky.
3.2
Jena
Jena7 je Java framework pro vytv´aˇren´ı aplikac´ı s´emantick´eho webu. Poskytuje n´astroje pro pr´aci s RDF ve form´atech XML, N-triples a Turtle, s ontologiemi OWL a RDFS, odvozovac´ı engine pro RDFS a OWL, dotazovac´ı engine odpov´ıdaj´ıc´ı SPARQL specifikaci a u ´loˇziˇstˇe dat. Komponenta LARQ8 nav´ıc pˇrid´av´a fulltextov´e vyhled´av´an´ı. V souˇcasnosti je jiˇz pro u ´ˇcely EEG/ERP port´alu Jena pouˇz´ıv´ana – z relaˇcn´ı datab´aze Oracle jsou vytv´aˇreny OWL ontologie. To je uskuteˇcnˇeno pomoc´ı frameworku Hibernate, kter´ y data z relaˇcn´ı datab´aze mapuje do POJO objekt˚ u, a rozˇs´ıˇren´ı JenaBeanExtension, kter´e n´aslednˇe mapuje POJO objekty do RDF modelu Jeny. V´ıce informac´ı o n´astroji JenaBeanExtension a jeho pouˇzit´ı v EEG/ERP port´alu popisuje [20]. Pro Jenu existuje i nativn´ı u ´loˇziˇstˇe TDB9 . To ukl´ad´a na disku pˇr´ımo RDF triplety, se kter´ ymi m˚ uˇze Jena pracovat. Poskytuje tak vyˇsˇs´ı v´ ykon neˇz ukl´ad´an´ı objekt˚ u v relaˇcn´ı datab´azi. Podle Berlin SPARQL Benchmark V3 z u ´nora 2011 vˇsak Jena s TDB poskytuje niˇzˇs´ı v´ ykon neˇz jin´e s´emantick´e reposit´aˇre. [6]
3.3
Sesame
Sesame10 je, podobnˇe jako Jena, Java framework pro zpracov´an´ı s´emantick´ ych dat a vytv´aˇren´ı aplikac´ı s´emantick´eho webu. Tak´e poskytuje n´astroje pro pr´aci s RDF a ontologiemi, engine pro SPARQL dotazov´an´ı a u ´loˇziˇstˇe 6
http://www.garlik.com/datapatrol http://jena.apache.org/ 8 Ofici´ aln´ı web neuv´ ad´ı, zda se jedn´a o zkratku. 9 Ofici´ aln´ı web opˇet neuv´ ad´ı, jestli jde o zkratku. 10 http://www.openrdf.org/ 7
17
Pˇrehled s´emantick´ych reposit´aˇr˚ u
OWLIM a KIM Platform
dat. Na rozd´ıl od Jeny vˇsak poskytuje odvozovac´ı engine pouze pro RDFS. [28] Sesame je tzv. quad-store. K triplet˚ um je moˇzn´e nav´ıc definovat i kontext, ve kter´em byl dan´ y triplet uloˇzen´ y. Pˇri v´ ybˇeru dat je pak moˇzn´e dotaz omezit pouze na triplety s dan´ ym kontextem. Architektura se skl´ad´a z nˇekolika vrstev: RDF model tvoˇr´ı z´aklad cel´eho Sesame. Definuje a implementuje vˇsechny z´akladn´ı RDF entity a pracuj´ı s n´ım vˇsechny ostatn´ı vrstvy. Rio (RDF I/O) je sada parser˚ u a zapisovatel˚ u r˚ uzn´ ych form´at˚ u RDF. Sail (Storage And Inference Layer) je n´ızko´ urovˇ nov´a sada rozhran´ı pro ukl´ad´an´ı RDF a pˇr´ıpadn´e odvozov´an´ı. Z´akladn´ı bal´ıˇcek Sesame obsahuje dvˇe implementace: MemoryStore pro ukl´ad´an´ı dat v pamˇeti a NativeStore pro ukl´ad´an´ı RDF triplet˚ u na disku. Repository API poskytuje vysoko´ urovˇ nov´e API pro pr´aci s RDF modelem nez´avisle na pouˇzit´em Sail rozhran´ı. Pr´avˇe tuto vrstvu vyuˇz´ıvaj´ı aplikace. Zjednoduˇsen´a architektura je zn´azornˇena na obr´azku 3.1.
Obr´azek 3.1: Architektura Sesame. Kromˇe tˇechto vrstev obsahuje Sesame nav´ıc implementaci HTTP serveru a klienta, kter´a umoˇzn ˇuje komunikaci Sesame s jin´ ymi aplikacemi, pˇr´ıpadnˇe komunikaci mezi jednotliv´ ymi instancemi Sesame. Pod HTTP serverem mohou bˇeˇzet i webov´e aplikace pro spr´avu dat, kter´e jsou souˇca´st´ı distribuce. V´ ykon je velmi z´avisl´ y na pouˇzit´em Sail rozhran´ı. Existuje i cel´a ˇrada implementac´ı tˇret´ıch stran, z nichˇz nejv´ yznamnˇejˇs´ı a nejrozˇs´ıˇrenˇejˇs´ı je komerˇcn´ı implementace OWLIM od spoleˇcnosti Ontotext.
3.4
OWLIM a KIM Platform
OWLIM11 je komerˇcn´ı s´emantick´ y reposit´aˇr vyv´ıjen´ y spoleˇcnost´ı Ontotext AD. Jedn´a se o implementaci Sesame Sail rozhran´ı a pˇrid´av´a podporu pro 11
http://www.ontotext.com/owlim/
18
Pˇrehled s´emantick´ych reposit´aˇr˚ u
OWLIM a KIM Platform
OWL 2. K dat˚ um je moˇzn´e pˇristupovat pomoc´ı repository API ze Sesame, vyˇsˇs´ı edice poskytuj´ı i adapt´er pro Jenu. Podle Berlin SPARQL Benchmark V3 m´a tento s´emantick´ y reposit´aˇr nejrychlejˇs´ı naˇc´ıt´an´ı dat – 200 milion˚ u z´aznam˚ u naˇcetl za 39 minut, dalˇs´ı produkt v poˇrad´ı t´emˇeˇr za dvojn´asobek (72 minut). Ve zpracov´an´ı dat se um´ıstil na druh´em m´ıstˇe za s´emantick´ ym reposit´aˇrem Virtuoso. Podle stejn´eho benchmarku tak´e poskytuje v z´avislosti na poˇctu soubˇeˇzn´ ych u ´loh 1,5× - 5× vyˇsˇs´ı v´ ykon neˇz Jena s TDB. [6]
3.4.1
Edice
OWLIM je dod´av´an v n´asleduj´ıc´ıch edic´ıch: Edice OWLIM-Lite je dostupn´a zdarma. Jedn´a se o implementaci Sesame Sail API a neposkytuje ˇza´dn´e dalˇs´ı metody pˇr´ıstupu k dat˚ um. Podle oficia´ln´ıch propagaˇcn´ıch materi´al˚ u dok´aˇze pracovat aˇz s des´ıtkami milion˚ u z´aznam˚ u, a to i na bˇeˇznˇe dostupn´em hardwaru. Odvozov´an´ı a dotazov´an´ı prob´ıh´a v pamˇeti, odkud jsou pak data ukl´ad´ana na disk. OWMLIM-SE je v ukl´ad´an´ı a pr´aci s RDF grafy funkˇcnˇe shodn´ y s OWLIMLite. Oproti volnˇe dostupn´e verzi vˇsak pouˇz´ıv´a algoritmy optimalizovan´e pro pr´aci s vˇetˇs´ı sadou dat a pˇrid´av´a podporu pro clusterov´an´ı a hybridn´ı dotazov´an´ı, kter´e kombinuje SPARQL, fulltextov´e vyhled´av´an´ı, prostorov´e funkce a podporu pro ˇrazen´ı podle relevance. OWLIM-Enterprise poskytuje vysoce dostupn´ y cluster s replikac´ı, distribuc´ı z´atˇeˇze, automatick´ ym pˇrekon´an´ım selh´an´ı (failover), monitoringem a dalˇs´ımi vlastnostmi typick´ ymi pro ˇreˇsen´ı s vysokou dostupnost´ı.
3.4.2
KIM Platform
KIM Platform12 je produkt vyv´ıjen´ y spoleˇcnost´ı Ontotext AD. Jedn´a se o platformu pro automatick´e anotov´an´ı dokument˚ u a n´asledn´e vyhled´av´an´ı. Umoˇzn ˇuje nahr´av´an´ı dokument˚ u, jejich automatickou anotaci proti pˇripraven´e ontologii a n´asledn´e vyhled´av´an´ı v anotovan´ ych dokumentech. Princip s´emantick´eho anotov´an´ı a jeho realizaci v KIM uv´ad´ı jeho autoˇri v [14]. KIM Platform je postaven´ y na s´emantick´em reposit´aˇri OWLIM. Zpracov´an´ı textu a jeho anotace je realizov´ano pomoc´ı n´astroj˚ u projektu GATE. Cel´ y produkt je pro nekomerˇcn´ı pouˇzit´ı poskytov´an zdarma (vˇcetnˇe u ´loˇziˇstˇe OWLIM) a je moˇzn´e jej nainstalovat na vlastn´ı server. Licenci pro komerˇcn´ı 12
http://www.ontotext.com/kim/
19
Pˇrehled s´emantick´ych reposit´aˇr˚ u
OWLIM a KIM Platform
vyuˇzit´ı je moˇzn´e poˇr´ıdit od e3800, jej´ı cena se ale zvyˇsuje podle poˇctu server˚ u a procesorov´ ych jader, na kter´ ych je produkt nasazen.13 Nahran´e dokumenty jsou anotov´any proti znalostn´ı b´azi uloˇzen´e v s´emantick´em reposit´aˇri. Nad tˇemito dokumenty pak poskytuje komplexn´ı vyhled´av´an´ı. KIM Platform sv´e funkce poskytuje pomoc´ı webov´e SOAP sluˇzby a rozhran´ı pro Java RMI. K dispozici je tak´e jiˇz hotov´e webov´e rozhran´ı, kter´e tyto funkce vyuˇz´ıv´a.
3.4.3
Pˇ r´ıpady pouˇ zit´ı
Tento odd´ıl popisuje nˇekter´e v´ yznamn´e aplikace OWLIM v praxi. Konkr´etn´ı implementaˇcn´ı detaily nejsou zveˇrejˇ nov´any. Web BBC Sports [27] BBC na sv´em sportovn´ım webu pouˇz´ıv´a RDF ke zlepˇsen´ı navigace a vytv´aˇren´ı automaticky aktualizovan´ ych str´anek o sportovc´ıch, t´ ymech, sportovn´ıch ud´alostech a dalˇs´ıch. Jednotliv´e ˇcl´anky jsou pˇri psan´ı anotov´any pomoc´ı RDF. Tato metadata jsou pak uloˇzena v s´emantick´em reposit´aˇri (zde OWLIM-Enterprise). Pˇri vyhled´av´an´ı jsou nad tˇemito metadaty pokl´ad´any SPARQL dotazy. D´ıky definovan´e ontologii a odvozovac´ım pravidl˚ um jsou pak nab´ıdnuty vˇzdy relevantn´ı informace. Pˇri sestavov´an´ı str´anky o t´ ymu ˇci sportovci je moˇzn´e pouze na z´akladˇe ˇcl´ank˚ u a jejich metadat generovat tabulky soupisek, z´apas˚ u, poskytovat aktu´aln´ı informace o zranˇen´ıch a mnoho dalˇs´ıch informac´ı. The National Archives [22] The National Archives archivuj´ı dokumenty z webov´ ych str´anek vl´adn´ıch organizac´ı Spojen´eho kr´alovstv´ı Velk´e Brit´anie a Severn´ıho Irska. Tento archiv obsahoval 700 milion˚ u dokument˚ u, z nichˇz velk´a ˇca´st byla duplicitn´ıch. Vyhled´av´an´ı v tˇechto dokumentech vˇsak bylo velmi obt´ıˇzn´e, protoˇze jednotliv´e vl´adn´ı organizace maj´ı rozd´ılnou organizaˇcn´ı strukturu (oddˇelen´ı na podobn´e u ´rovni mohou m´ıt r˚ uzn´e zodpovˇednosti) a t´ım i rozd´ılnou organizaci dokument˚ u. Oznaˇcen´ım dokument˚ u s´emantick´ ymi metadaty a n´aslednou deduplikac´ı se podaˇrilo poˇcet dokument˚ u sn´ıˇzit na 160 milion˚ u unik´atn´ıch dokument˚ u. Oznaˇcen´ı dokument˚ u bylo moˇzn´e d´ıky klasifikaci dokument˚ u a n´asledn´emu rozpozn´av´an´ı jednotliv´ ych n´azv˚ u v textu. 13
http://www.ontotext.com/kim/getting-started/download
20
Pˇrehled s´emantick´ych reposit´aˇr˚ u
BigData
Byla tak´e vytvoˇrena ontologie, kter´a zachycuje organizaˇcn´ı strukturu vl´adn´ıch organizac´ı a t´ım pom´ah´a pˇri vyhled´av´an´ı dokument˚ u. Kromˇe OWLIM-Enterprise zde byl pouˇzit KIM Platform.
3.5
BigData
BigData14 je, podobnˇe jako OWLIM, implementac´ı Sesame Sail rozhran´ı. Poskytuje odvozov´an´ı nad RDFS a pˇrid´av´a omezenou podporu OWL. Je zamˇeˇren´ y pˇrev´aˇznˇe na nasazen´ı v distribuovan´ ych clusterech, m´a tedy dobrou podporu pro shardov´an´ı dat a distribuci z´atˇeˇze. Produkt BigData je ˇs´ıˇren pod licenc´ı GPLv2. Kromˇe SPARQL dotazov´an´ı poskytuje tak´e jednoduch´e fulltextov´e vyhled´av´an´ı. V Berlin SPARQL Benchmark dosahuje horˇs´ıch v´ ysledk˚ u neˇz reposit´aˇr OWLIM, a to jak pˇri dotazov´an´ı, tak pˇri naˇc´ıt´an´ı dat. [6] Ofici´aln´ı web neuv´ad´ı ˇz´adn´e projekty, kter´e BigData pouˇz´ıvaj´ı.
3.6
Virtuoso
Virtuoso15 je datab´azov´ y a aplikaˇcn´ı server vyv´ıjen´ y spoleˇcnost´ı OpenLink Software. Um´ı ukl´adat klasick´a relaˇcn´ı data i RDF data. Jako dotazovac´ı jazyk pouˇz´ıv´a SQL, je vˇsak schopn´ y interpretovat tak´e SPARQL dotazy, kter´e jsou zabalen´e v SQL dotazu. Aplikaˇcn´ı server podporuje skriptov´an´ı v PHP, ASP.NET a propriet´arn´ı jazyk Virtuoso Server Pages16 (VSP). Virtuoso je moˇzn´e pomoc´ı ofici´aln´ıch adapt´er˚ u pouˇz´ıt i jako u ´loˇziˇstˇe pro Jenu a Sesame. V Berlin SPARQL Benchmark V3 zv´ıtˇezil ve v´ ykonu pˇri zpracov´an´ı dat. V mnoha pˇr´ıpadech byl v´ıce neˇz 2Ö rychlejˇs´ı neˇz OWLIM. [6]
3.6.1
Edice
Virtuoso je distribuov´ano v open-source a komerˇcn´ıch variant´ach. Cena komerˇcn´ıch variant je odstupˇ nov´ana podle poˇctu pouˇzit´ ych jader a dˇel´ı se na pouˇzit´ı na pracovn´ıch stanic´ıch a serverech. Nejlevnˇejˇs´ı varianta stoj´ı $999 14
http://www.systap.com/bigdata.htm http://virtuoso.openlinksw.com/ 16 http://docs.openlinksw.com/virtuoso/vsp1.html 15
21
Pˇrehled s´emantick´ych reposit´aˇr˚ u
Shrnut´ı
a je urˇcena pro pouˇzit´ı na pracovn´ıch stanic´ıch s maxim´alnˇe 8 j´adry a 10 vl´akny. Serverov´a varianta se stejn´ ymi limity stoj´ı $1999.17 Open-source varianta nem´a oproti komerˇcn´ı variantˇe podporu pro prostorov´e indexy a dotazy, clusterov´an´ı, replikaci a podporu pro naˇc´ıt´an´ı dat i z jin´ ych datov´ ych zdroj˚ u. [26] Kv˚ uli chybˇej´ıc´ı podpoˇre jin´ ych datov´ ych zdroj˚ u je nutn´e m´ıt vˇsechna data uloˇzena pˇr´ımo v intern´ı datab´azi Virtuosa a nen´ı moˇzn´e pracovat s daty uloˇzen´ ymi v jin´em u ´loˇziˇsti.
3.6.2
Pˇ r´ıpady pouˇ zit´ı
Na ofici´aln´ı webu nen´ı k dispozici pˇrehled konkr´etn´ıch aplikac´ı, kter´e Virtuoso pouˇz´ıvaj´ı. [31] vˇsak uv´ad´ı, ˇze Virtuoso pouˇz´ıvaj´ı projekty DBPedia, Bio2RDF a LOD Cloud Cache. Web projektu DBPedia18 uv´ad´ı, ˇze Virtuoso pouˇz´ıv´a jako backend ke sv´emu veˇrejn´emu SPARQL pˇr´ıstupu. Projekt se zamˇeˇruje na extrakci strukturovan´ ych informac´ı ze svobodn´e encyklopedie Wikipedia a propojen´ı tˇechto informac´ı s dalˇs´ımi datov´ ymi zdroji na webu. [7] 19 Projekt Bio2RDF agreguje v souˇcasnosti 19 r˚ uzn´ ych heterogenn´ıch zdroj˚ u dat z oblasti biologie a medic´ıny, ze kter´ ych vytv´aˇr´ı jednotn´ y RDF v´ ystup. Uv´ad´ı, ˇze takto agreguje asi 1 miliardu triplet˚ u. V´ıce informac´ı o projektu je dostupn´ ych v [4]. LOD Cloud Cache20 je projekt spoleˇcnosti OpenLink Software. Jedn´a se opˇet o agreg´ator nˇekolika zdroj˚ u dat, ve kter´ ych umoˇzn ˇuje vyhled´av´an´ı.
3.7
Shrnut´ı
Po prozkoum´an´ı dostupn´ ych ˇreˇsen´ı a jejich pouˇzit´ı se jako nejvhodnˇejˇs´ı ukazuje s´emantick´ y reposit´aˇr OWLIM s KIM Platform. OWLIM patˇr´ı podle aktu´aln´ıch benchmark˚ u k nejv´ ykonnˇejˇs´ım s´emantick´ ym reposit´aˇr˚ um. KIM Platform pak poskytuje funkce rozˇs´ıˇren´eho vyhled´av´an´ı a automatick´e anotov´an´ı dokument˚ u. Oba tyto produkty jsou u ´spˇeˇsnˇe vyuˇz´ıv´any v projektech, kter´e zpracov´avaj´ı velk´e mnoˇzstv´ı dat. D´ıky otevˇren´e architektuˇre (vyuˇzit´ı Sesame) a standardizovan´emu vnˇejˇs´ımu rozhran´ı (webov´e sluˇzby, Java RMI) je nav´ıc toto ˇreˇsen´ı vhodn´e pro ˇ pˇrizp˚ usoben´ı poˇzadavk˚ um neuroinformatick´e skupiny ZCU.
17
http://virtuoso.openlinksw.com/pricing/ http://dbpedia.org/ 19 http://bio2rdf.org/ 20 http://lod.openlinksw.com/ 18
22
4 KIM Platform N´asleduj´ıc´ı pˇrehled popisuje kl´ıˇcov´e vlastnosti KIM Platform.
4.1
Znalostn´ı b´ aze
Z´akladem ontologie v s´emantick´em reposit´aˇri, kter´a tvoˇr´ı znalostn´ı b´azi, je ontologie PROTON.1 Ta tvoˇr´ı ontologii nejvyˇsˇs´ı u ´rovnˇe a popisuje z´akladn´ı koncepty. Je rozdˇelena do 3 modul˚ u: System module je jedin´ y vyˇzadovan´ y modul. Definuje koncept term´ınu, kter´ y se vyskytuje v textu a kter´ y je vyhled´av´an bˇehem anotace. Tento term´ın je v ontologii oznaˇcov´an jako entita. Top module definuje abstraktn´ı koncepty, napˇr´ıklad agenta (ˇcinitele dˇeje), roli, t´ema, datum, m´ısto, skupinu, ud´alost a dalˇs´ı. Upper module rozˇsiˇruje pˇredchoz´ı modul o entity, kter´e jsou specifick´e jiˇz pro konkr´etn´ı dom´eny. Jedn´a se napˇr´ıklad o r˚ uzn´e typy organizac´ı (univerzita, vl´ada, pojiˇst’ovac´ı spoleˇcnost, banka...), dopravn´ı prostˇredky (vozidlo, auto, letadlo...), pracovn´ı pozice (zamˇestnanec, manaˇzer, u ´ˇredn´ık, pojiˇst’ovac´ı agent...) a dalˇs´ı. Tyto moduly tvoˇr´ı vhodn´ y z´aklad pro vlastn´ı ontologie, kter´e budou specifick´e pro poˇzadovanou dom´enu. Na t´eto ontologii je tak´e postavena KIM World Knowledge Base, jeˇz je dod´av´ana s platformou KIM. Jedn´a se o znalostn´ı b´azi fakt z re´aln´eho svˇeta: geografick´a m´ısta, v´ yznamn´e organizace, lid´e na v´ yznamn´ ych pozic´ıch a dalˇs´ı. Celkem obsahuje v´ıce neˇz 44 000 entit s 77 000 aliasy. [25] Kromˇe tˇechto pˇripraven´ ych entit je GATE schopen pˇri anotov´an´ı vytv´aˇret instance nˇekter´ ych z´akladn´ıch entit – konkr´etn´ı data, ˇc´ısla, ˇc´astky. Zpracov´an´ı tˇechto entit v anglick´em jazyce zajiˇst’uje modul ANNIE,2 kter´ y je v KIM integrov´an.
4.2
Form´ at dokument˚ u
Nahr´avan´e dokumenty mohou b´ yt v n´asleduj´ıc´ıch form´atech: prost´ y text, 1 2
http://proton.semanticweb.org/ A Nearly-New Information Extraction system
23
KIM Platform
Ukl´ad´an´ı a indexov´an´ı dokument˚ u
HTML str´anka, XML dokumenty, jiˇz anotovan´e GATE XML dokumenty, form´aty Microsoft Office 2003 - 2010: dokumenty Microsoft Word a Microsoft Powerpoint, Adobe PDF, dokumenty RTF a Open Document Format. Nˇekter´e form´aty mohou vyˇzadovat pro spr´avn´e zpracov´an´ı jeˇstˇe XML metadata o jazyce, n´azvu dokumentu, autorovi a datu publikace. Nahr´avan´e dokumenty musej´ı b´ yt v anglick´em jazyce. Pro podporu dalˇs´ıch jazyk˚ u je nutn´e vyvinout jazykov´ y modul pro GATE.
4.3
Ukl´ ad´ an´ı a indexov´ an´ı dokument˚ u
V KIM je ukl´ad´an pouze text nahr´avan´ ych dokument˚ u s anotacemi. Pokud je tedy zdrojem dokumentu soubor typu PDF, nelze p˚ uvodn´ı PDF z reposit´aˇre st´ahnout. Dokumenty je moˇzn´e ukl´adat ve 3 podporovan´ ych u ´loˇziˇst´ıch. Podle typu u ´loˇziˇstˇe se mohou liˇsit moˇznosti a rychlost vyhled´av´an´ı.
4.3.1
Apache Lucene
Lucene je bˇeˇznˇe pouˇz´ıvan´a knihovna pro indexov´an´ı dokument˚ u a vyhled´av´an´ı. Ukl´ad´a cel´ y text dokument˚ u (vˇcetnˇe anotac´ı) v indexu a poskytuje fulltextov´e vyhled´av´an´ı. Toto u ´loˇziˇstˇe je doporuˇcovan´e spoleˇcnost´ı Ontotext AD a jedn´a se o v´ ychoz´ı nastaven´ı.
4.3.2
Semantic Annotation Repository
Ukl´ad´a dokumenty do vestavˇen´eho s´emantick´eho reposit´aˇre ve form´atu RDF. Poskytuje tak´e bˇeˇzn´e fulltextov´e vyhled´av´an´ı, avˇsak vyˇzaduje dalˇs´ı konfiguraci u ´loˇziˇstˇe OWLIM.
4.3.3
M´IMIR
M´IMIR3 je indexovac´ı a vyhled´avac´ı engine, kter´ y kombinuje vlastnosti fulltextov´eho indexov´an´ı a s´emantick´eho reposit´aˇre. Je schopen vykon´avat full3
Multiparadigm Indexing and Retrieval, http://www.ontotext.com/kim/mimir
24
KIM Platform
Doplnˇen´ı znalostn´ı b´aze a vytvoˇren´ı ontologie
textov´e dotazy, SPARQL dotazy a kombinovan´e dotazy obsahuj´ıc´ı anotaˇcn´ı vzory. Pˇr´ıkladem kombinovan´eho dotazu z posledn´ı kategorie je napˇr´ıklad dotaz {Organization} category:VBG {Organization} for {Money}
Tento dotaz vyhled´a dokumenty, kter´e obsahuj´ı n´asleduj´ıc´ı sekvenci: Organization: jm´eno organizace, category:VBG: sloveso, Organization: dalˇs´ı jm´eno organizace, for: slovo for“, ” Money: ˇc´astka v jak´ekoliv rozpoznan´e mˇenˇe. Pˇr´ıkladem odpov´ıdaj´ıc´ı vˇety m˚ uˇze b´ yt Oracle buying Sun Microsystems for ” $5.6 billion.“ Integrace tohoto n´astroje v KIM je experiment´aln´ı.
4.4
Doplnˇ en´ı znalostn´ı b´ aze a vytvoˇ ren´ı ontologie
V s´emantick´em reposit´aˇri je uloˇzena znalostn´ı b´aze, kterou bude KIM Platform vyuˇz´ıvat pˇri anotov´an´ı dokument˚ u. Tato znalostn´ı b´aze je definov´ana formou ontologie. KIM Platform jiˇz m´a nˇekter´e znalosti nadefinov´any, pro pouˇzit´ı ve vlastn´ı aplikaci je vˇsak nutn´e dodefinovat dom´enovou ontologii. V t´eto ontologii by mˇely b´ yt definov´any jak tˇr´ıdy, kter´e danou dom´enu popisuj´ı, tak jejich instance, jeˇz budou slouˇzit jako entity pˇri anotaci a vyhled´av´an´ı.
4.4.1
Ontologie
Aby mohly b´ yt tyto entity spr´avnˇe rozpozn´any, musej´ı b´ yt jejich tˇr´ıdy odvozeny od tˇr´ıdy Entity z ontologie PROTON. V n´asleduj´ıc´ım textu budu pouˇz´ıvat prefix protons: pro odkaz na jmenn´ y prostor http://proton. semanticweb.org/2006/05/protons. Pokud m´ame jiˇz existuj´ıc´ı ontologii, kter´a toto krit´erium nesplˇ nuje, je nutn´e pˇridat vlastnost rdfs:subClassOf ke koˇrenov´e tˇr´ıdˇe ontologie. Pˇr´ıklad ve form´atu RDF/XML je uveden ve v´ ypise 4.1
25
KIM Platform
Doplnˇen´ı znalostn´ı b´aze a vytvoˇren´ı ontologie
V´ ypis 4.1: Pˇr´ıklad odvozen´ı koˇrenov´e tˇr´ıdy od ontologie PROTON v RDF/XML. M˚ uˇzeme vˇsak tuto definici vloˇzit tak´e do samostatn´eho souboru a vyhnout se tak modifikaci p˚ uvodn´ı ontologie. K definici tˇechto tˇr´ıd se hod´ı notace Turtle. Uk´azkov´ y triplet je uveden ve v´ ypise 4.2.
.
V´ ypis 4.2: Pˇr´ıklad odvozen´ı koˇrenov´e tˇr´ıdy od ontologie PROTON v notaci Turtle. Tˇr´ıda Entity pˇrid´a pouze nˇekter´e z´akladn´ı vlastnosti, kter´e jsou nutn´e pro anotaci dokument˚ u, avˇsak dom´enovou ontologii nijak nenaruˇs´ı. Nejd˚ uleˇzitˇejˇs´ı vlastnost, jiˇz je nutn´e zohlednit, je textov´ y ˇretˇezec, kter´ y bude analyzov´an a vyhled´av´an v textu. Direktiva com.ontotext.kim.KIMConstants.ENTITY_DESCR v konfiguraˇcn´ım souboru config/install.properties urˇcuje, jak´a vlastnost entity tento textov´ y ˇretˇezec vyuˇz´ıv´a. Jsou 3 moˇzn´a nastaven´ı t´eto direktivy: Aliases vyˇzaduje pro kaˇzd´ y alias kaˇzd´e instance vytvoˇrit novou instanci tˇr´ıdy protons:Alias. Tyto instance jsou pak s instanc´ı entity sv´az´any pomoc´ı relace protons:hasAlias, popˇr. protons:hasMainAlias, pokud se jedn´a o preferovan´ y n´azev. Labels nevyˇzaduje definici nov´e instance pro kaˇzd´ y alias. Textov´e ˇretˇezce jsou vyhled´av´any ve vlastnostech rdfs:Label a protons:mainLabel. Custom umoˇzn ˇuje definovat seznam URI vlastnost´ı, ve kter´ ych budou textov´e ˇretˇezce vyhled´av´any. Tento seznam je dan´ y konfiguraˇcn´ı direktivou com.ontotext.kim.KIMConstants.MAIN_LABEL_PREDICATES. Rozd´ıl ve sloˇzitosti mezi prvn´ımi dvˇema volbami bude nejl´epe patrn´ y na uk´azce k´odu. Volba Aliases vyˇzaduje definici n´asleduj´ıc´ım zp˚ usobem: Unused Entity Label <protons:hasMainAlias rdf:resource="http://example.com/ ontology#Entity_1"/> <protons:hasAlias rdf:resource="http://example.com/ontology# Entity_2"/>
26
KIM Platform
Doplnˇen´ı znalostn´ı b´aze a vytvoˇren´ı ontologie
Entity Label Entity Alias
Entita Entity m´a definovan´e vlastnosti protons:hasMainAlias a protons: hasAlias. Ty referencuj´ı instance Entity_1 a Entity_2, ve kter´ ych jsou popisky uloˇzeny ve vlastnosti rdfs:label. Textov´ y popisek samotn´e instance Entity nebude pˇri anotov´an´ı pouˇzit. Oproti tomu u volby Labels staˇc´ı jen kratˇs´ı definice: <protons:mainLabel>Entity Label Entity Alias
Textov´e popisky entity Entity jsou uloˇzeny pˇr´ımo ve vlastnostech protons: mainLabel a rdfs:label. Ontologie v tomto form´atu je jiˇz pˇripravena pro pˇripojen´ı do KIM Platform, ale zat´ım st´ale nebude rozpozn´av´ana v textu. KIM sice nalezne v textu pˇridan´e entity, ale nem´a ˇza´dn´a pravidla pro jejich zpracov´an´ı. Ta jsou v KIM definov´ana aˇz pro konkr´etnˇejˇs´ı tˇr´ıdy: protont:Object, protont:Person, protont:Organization, nebo protont:Location. Prefix protont: je zde pouˇzit pro jmenn´ y prostor http://proton.semanticweb. org/2006/05/protont. Entita samotn´a tak´e mus´ı b´ yt oznaˇcena, ˇze poch´az´ı z d˚ uvˇeryhodn´eho zdroje. D˚ uvˇeryhodn´ y zdroj je zaveden´ y jako instance tˇr´ıdy protons:Trusted. Tˇr´ıda protons:Entity pro oznaˇcen´ı pˇr´ısluˇsnosti entity k dan´emu zdroji definuje vlastnost protons:generatedBy. Nˇekolik pˇreddefinovan´ ych d˚ uvˇeryhodn´ ych zdroj˚ u je uvedeno na zaˇca´tku souboru context/default/kb/wkb.nt. Popisky takto oznaˇcen´ ych entit jiˇz budou v textu rozpozn´av´any, KIM ale ve v´ ychoz´ım nastaven´ı rozliˇsuje velk´a a mal´a p´ısmena. Toto nastaven´ı lze zmˇenit v souboru context/default/resources/IE.gapp. Soubory *.gapp obsahuj´ı nastaven´ı jednotliv´ ych komponent, jenˇz se pod´ılej´ı na s´emantick´e anotaci. Vyhled´av´an´ı entit v ontologii zajiˇst’uje kom27
KIM Platform
Doplnˇen´ı znalostn´ı b´aze a vytvoˇren´ı ontologie
ponenta LKB Gazetteer, kter´a m´a vlastnost caseSensitive. Pro vypnut´ı rozliˇsov´an´ı velikosti p´ısmen ji staˇc´ı nastavit na false. V tomto v´ ychoz´ım nastaven´ı KIM tak´e hled´a v dokumentu kl´ıˇcov´a slova s vysokou frekvenc´ı v´ yskytu. Takto vˇsak m˚ uˇze b´ yt oznaˇcena i ˇca´st term´ınu, jenˇz je definov´an v ontologii. V takov´em pˇr´ıpadˇe nen´ı term´ın z ontologie rozpozn´an. Nastaven´ı IE-no-keywords.gapp ve sloˇzce context/default/ resources tato kl´ıˇcov´a slova neextrahuje. Pouˇzit´ y soubor s nastaven´ım s´emantick´eho anotov´an´ı je moˇzn´e zmˇenit v konfiguraˇcn´ım souboru config/nerc.properties direktivou com.ontotext.kim.KIMConstants.IE_APP.
4.4.2
Zaveden´ı ontologie
Ontologii m˚ uˇze KIM naˇc´ıtat pˇri sv´em prvn´ım spuˇstˇen´ı a prvotn´ım vytv´aˇren´ı datab´aze. Soubory s ontologiemi se umist’uj´ı do sloˇzky context/default/kb, pˇr´ıpadnˇe do kter´ekoliv z podsloˇzek. V souboru config/owlim.ttl je pak nutn´e ontologie pˇridat do seznamu owlim:imports a jejich v´ ychoz´ı jmenn´ y prostor do seznamu owlim:defaultNS: owlim:imports "kb/owl/owl.rdfs; kb/owl/protons.owl; ... kb/ranks.nt; kb/example.com.owl;" ; owlim:defaultNS "http://www.w3.org/2002/07/owl#; http://proton.semanticweb.org/2006/05/protons#; ... http://www.ontotext.com/kim/2006/05/wkb#; http://example.com/ontology#;"
Po pˇrid´an´ı ontologie je nutn´e zastavit KIM, smazat vˇsechny pˇridan´e dokumenty (sloˇzka context/default/populated) a importovat je znovu. Nov´e entity jiˇz budou v textech automaticky rozpozn´any. Jestliˇze nen´ı ˇza´douc´ı mazat veˇsker´a data, je moˇzn´e ontologii importovat pomoc´ı n´astroje rdf import: bin/tools/rdf import [dir]
Sloˇzka [dir] mus´ı obsahovat vˇsechny soubory s ontologiemi, kter´e chceme importovat. Po dokonˇcen´ı importu je jeˇstˇe nutn´e smazat cache, jeˇz se nach´az´ı ve sloˇzce context/default/populated/cache. Novˇe pˇridan´e entity budou
28
KIM Platform
Import dokument˚ u
rozpozn´any aˇz v novˇe pˇridan´ ych dokumentech. Existuj´ıc´ı dokumenty je nutn´e pˇreindexovat. Pokud nav´ıc chceme, aby KIM zobrazoval tˇr´ıdy a vlastnosti z n´ami pˇridan´e ontologie ve sv´ ych pˇrehledech a nab´ıdk´ach, je nutn´e pˇridat jejich URI do souboru context/default/kb/visibility.nt: "" .
4.5
Import dokument˚ u
K importu dokument˚ u slouˇz´ı n´astroj bin/tools/populater. Pˇri spuˇstˇen´ı bez parametr˚ u se otevˇre jeho grafick´e rozhran´ı. Pokud jej chceme spustit z konzole, mus´ıme pˇridat parametr console: bin/tools/populater console
Sloˇzku, odkud m´a n´astroj importovat dokumenty, urˇcuje konfiguraˇcn´ı soubor config/populater.xml. Jedn´a se o element INPUT_STORAGE_URL. Ve v´ ychoz´ım nastaven´ı se nov´e soubory hledaj´ı ve sloˇzce corpus, kde jsou i pˇripraven´e testovac´ı dokumenty. KIM obsahuje tak´e sluˇzbu populater-service, kter´a bude novˇe nahran´e dokumenty automaticky importovat. Tyto moˇznosti vˇsak vyˇzaduj´ı, aby soubory s dokumenty byly um´ıstˇeny do souborov´eho syst´emu serveru. Pro automatizovan´e nahr´av´an´ı dokument˚ u je moˇzn´e pouˇz´ıt i API poskytovan´e prostˇrednictv´ım webov´e sluˇzby (SOAP) a Java RMI.
4.6
Vyhled´ av´ an´ı
Vyhled´av´an´ı je dostupn´e pomoc´ı webov´eho rozhran´ı. To je souˇc´ast´ı distribuce KIM Platform jako WAR archiv. Aktu´aln´ı verze tak´e poskytuje integrovan´ y Java Servlet Container Jetty, jenˇz umoˇzn ˇuje snadn´e spuˇstˇen´ı webov´eho rozhran´ı spolu s KIM Platform. Moˇznosti vyhled´av´an´ı, kter´e poskytuje webov´e rozhran´ı, jsou uvedeny v pˇr´ıloze F.
29
5 Souˇcasn´e ontologie EEG/ERP dom´ eny Ontologie pouˇz´ıvan´a v EEG/ERP port´alu v souˇcasnosti slouˇz´ı hlavnˇe jako form´at pro uchov´an´ı a sd´ılen´ı dat. Pro s´emantick´e anotov´an´ı v KIM Platform je vˇsak potˇreba ontologie, kter´a bude popisovat znalosti z dan´e dom´eny a bude definovat a klasifikovat pouˇz´ıvan´e term´ıny a kl´ıˇcov´a slova. Ontologie EEG/ERP port´alu sice nˇekter´a kl´ıˇcov´a slova, jeˇz by mohla b´ yt z ontologie extrahov´ana, obsahuje v n´azvech tˇr´ıd a vlastnost´ı, avˇsak pˇri anal´ yze ontologie byly zjiˇstˇeny nˇekter´e nedostatky. Vlastnost title m´a jako rdfs:domain, tedy tˇr´ıdu, kter´e tato vlastnost n´aleˇz´ı, uvedenu tˇr´ıdu ResearchGroup, ale vlastnost samotn´a je chybnˇe pouˇzita i u instanc´ı nˇekolika dalˇs´ıch tˇr´ıd, napˇr´ıklad u popisu hardwaru ˇci sc´en´aˇr˚ u. T´ım se tyto instance pˇri odvozov´an´ı automaticky st´avaj´ı i instancemi ResearchGroup, coˇz zav´ad´ı nejednoznaˇcnost a kl´ıˇcov´a slova by tedy nebylo moˇzn´e spolehlivˇe automaticky extrahovat a klasifikovat. V r´amci Electrophysiology Task Force1 organizace INCF vznik´a nov´a ontologie, kter´a bude slouˇzit k popisu elektrofyziologick´ ych dat a metadat. Ontologie je rozdˇelen´a do dvou ˇca´st´ı: ˇc´ast popisuj´ıc´ı zaˇr´ızen´ı a metody pouˇzit´e pˇri elektrofyziologick´ ych experimentech a ˇc´ast popisuj´ıc´ı neurofyziologick´e koncepty.
Obˇe ˇca´sti jsou ve v´ yvoji paralelnˇe, prvn´ı verze ontologie by vˇsak mˇela obsahovat pˇrev´aˇznˇe data z prvn´ı ˇc´asti. Tato prvn´ı verze vˇsak bude dostupn´a nejdˇr´ıve v l´etˇe 2013 a prozat´ım jsou k dispozici pouze n´avrhy nˇekter´ ych term´ın˚ u, proto zat´ım nem˚ uˇze b´ yt pouˇzita pro s´emantick´e anotov´an´ı. Protoˇze existuj´ıc´ı ontologie neobsahuje potˇrebn´e informace a nov´a ontologie je st´ale ve v´ yvoji, je nutn´e pro zajiˇstˇen´ı z´akladn´ı funkˇcnosti vytvoˇrit prototypovou ontologii, kter´a bude popisovat alespoˇ n ˇca´st znalost´ı z EEG/ERP dom´eny.
1
http://www.incf.org/programs/datasharing/electrophysiology-task-force
30
6 Specifikace poˇzadavk˚ u a pˇ rehled ˇ reˇ sen´ı Jak jiˇz bylo uvedeno, c´ılem pr´ace je navrhnout ˇreˇsen´ı pro agregaci vybran´ ych dat z EEG/ERP dom´eny a n´asledn´e vyhled´av´an´ı.
6.1
Poˇ zadavky
Indexov´any budou n´asleduj´ıc´ı typy dokument˚ u: Odborn´e ˇcl´ anky a dalˇs´ı publikace, kter´e budou dostupn´e typicky ve form´atu PDF a diskuze v odborn´ ych neuroinformatick´ ych skupin´ach na soci´aln´ı s´ıti LinkedIn.
S ˇcleny v´ yzkumn´e skupiny byly sestaveny n´asleduj´ıc´ı pˇr´ıklady sc´en´aˇr˚ u vyhled´av´an´ı: 1. Chci naj´ıt informace o vˇsech experimentech, kter´e se zamˇeˇruj´ı na po” zornost ˇridiˇce, P3 komponentu, poskytuj´ı seznam pouˇzit´eho hardwaru a byly provedeny na skupinˇe nejm´enˇe 10 lid´ı.“ 2. Chci naj´ıt studii zamˇeˇrenou na pohybov´e poruchy dˇet´ı ve ˇskoln´ım ” vˇeku, ve kter´e byla ˇc´ast v´ yzkumu provedena s vyuˇzit´ım EEP/ERG metod a vizu´aln´ı stimulace.“ 3. Chci naj´ıt diskuzi o metodˇe matching pursuit vyˇsetˇruj´ıc´ı existenci P3 ” komponenty.“ C´ılem navrˇzen´eho ˇreˇsen´ı je nalezen´ı relevantn´ıch informac´ı pro tyto typy vyhled´avac´ıch dotaz˚ u. Z v´ ysledk˚ u vyhled´av´an´ı d´ale mus´ı b´ yt moˇzn´e snadno pˇrej´ıt k p˚ uvodn´ımu dokumentu.
6.2
Pˇ rehled ˇ reˇ sen´ı
ˇ sen´ı lze rozdˇelit do tˇr´ı ˇca´st´ı: Reˇ 1. instalace a konfigurace platformy umoˇzn ˇuj´ıc´ı s´emantick´e anotov´an´ı a vyhled´av´an´ı,
31
Specifikace poˇzadavk˚ u a pˇrehled ˇreˇsen´ı
Pˇrehled ˇreˇsen´ı
2. sestaven´ı znalostn´ı b´aze (ontologie) EEG/ERP dom´eny, kter´a umoˇzn´ı rozˇs´ıˇren´e vyhled´av´an´ı, a 3. stahov´an´ı, ukl´ad´an´ı a indexov´an´ı dokument˚ u z vybran´ ych zdroj˚ u. Produkt KIM Platform byl nainstalov´an na virtu´aln´ı server s operaˇcn´ım syst´emem GNU/Linux, konkr´etnˇe jeho distribuc´ı Debian. Webov´e rozhran´ı KIM Platform bylo nasazeno do Java Servlet containeru Tomcat a nebylo d´ale upravov´ano. Protoˇze ontologie, kter´e jsou v souˇcasnosti v´ yzkumn´e skupinˇe dostupn´e, jsou v ran´em st´adiu v´ yvoje, nebo neobsahuj´ı poˇzadovan´a data, bylo nutn´e pro ovˇeˇren´ı funkˇcnosti ˇreˇsen´ı vytvoˇrit prototypovou ontologii, jeˇz bude popisovat ˇc´ast znalost´ı EEG/ERP dom´eny. Ontologie je navrˇzena tak, aby umoˇznila realizaci 3. vyhled´avac´ıho sc´en´aˇre. Ostatn´ı sc´en´aˇre vyˇzaduj´ı ontologii s obs´ahlejˇs´ım souborem term´ın˚ u. KIM Platform klade na vytvoˇren´e term´ıny poˇzadavek, ˇze musej´ı b´ yt oznaˇcen´e jako vytvoˇren´e d˚ uvˇeryhodn´ ym zdrojem. Pˇri tvorbˇe ontologie je vˇsak v´ yhodnˇejˇs´ı se zamˇeˇrit na popis samotn´ ych znalost´ı a tyto doplˇ nuj´ıc´ı definice vygenerovat aˇz pozdˇeji. K tomuto u ´ˇcelu byl vytvoˇren program KIM-OWLImport. Ten umoˇzn ˇuje pro vybran´e ontologie vygenerovat pˇr´ısluˇsn´e definice, kter´e budou importov´any spolu s ontologi´ı do KIM Platform. Po dalˇs´ım rozˇs´ıˇren´ı tak´e m˚ uˇze slouˇzit jako transformaˇcn´ı n´astroj, jenˇz bude z vybran´e ontologie extrahovat kl´ıˇcov´e term´ıny a vytv´aˇret novou ontologii ve struktuˇre, kter´a bude odpov´ıdat ontologii PROTON. Pro automatick´e stahov´an´ı a anotov´an´ı dokument˚ u byl vytvoˇren program KIMBridge. Ten pˇristupuje k vzd´alen´emu u ´loˇziˇsti dokument˚ u a sluˇzbˇe LinkedIn, stahuje nov´e dokumenty a diskuze a s vyuˇzit´ım Java RMI je importuje do KIM Platform. KIMBridge je implementovan´ y jako sluˇzba, kter´a pobˇeˇz´ı na stejn´em serveru jako KIM. Nov´e dokumenty a pˇr´ıspˇevky v diskuz´ıch jsou stahov´any periodicky.
32
7 Instalace KIM Platform, prototypov´ a ontologie 7.1
Instalace a konfigurace KIM Platform
KIM platform je moˇzn´e provozovat na vˇsech operaˇcn´ıch syst´emech, na kteˇ jsme zvolili virtu´aln´ı stroj r´ ych je dostupn´a Java SE. V prostˇred´ı KIV ZCU s operaˇcn´ım syst´emem GNU/Linux, distribuc´ı Debian. Produkt je distribuov´an jako ZIP archiv. V nˇem je obsaˇzen samotn´ y server daemon s nakonfigurovan´ ym s´emantick´ ym reposit´aˇrem a webov´a aplikace v podobˇe WAR archivu. Server je po rozbalen´ı moˇzno ihned spustit. Je moˇzn´e jej zastavovat a spouˇstˇet pomoc´ı pˇr´ıkazu bin/kim start|stop
Webov´a aplikace mus´ı b´ yt nasazena do Java servlet containeru, jak´ ym je napˇr´ıklad Tomcat. Od verze 3.6 obsahuje KIM Platform tak´e integrovan´ y servlet container Jetty, s jehoˇz zprovoznˇen´ım jsem vˇsak mˇel pˇri instalaci pot´ıˇze. Proto bylo webov´e rozhran´ı nasazeno do containeru Tomcat 7. Bal´ıˇcek bohuˇzel neobsahuje ˇza´dn´e inicializaˇcn´ı scripty, musel b´ yt tedy naps´an z´akladn´ı initscript pro Debian. Script je k dispozici na pˇriloˇzen´em CD. Uloˇzen´e dokumenty a pouˇz´ıvan´a ontologie je standardnˇe uloˇzen´a ve sloˇzce context/default. V n´ı se nach´az´ı i konfigurace s´emantick´eho reposit´aˇre OWLIM-SE. Ve vytvoˇren´e ontologii byly textov´e popisky jednotliv´ ych entit um´ıstˇeny pˇr´ımo ve vlastnostech protons:mailLabel a rdfs:label. Direktiva com. ontotext.kim.KIMConstants.MAIN_LABEL_PREDICATES tedy byla nastavena na hodnotu Labels. Ontolgie KIM World Knowledgebase, kter´a poˇc´ıt´a s nastaven´ım na Aliases, nebyla do reposit´aˇre importov´ana. Pro s´emantick´e anotov´an´ı byla pouˇzita konfigurace IE-no-keywords. gapp, kter´a neextrahuje kl´ıˇcov´a slova s vysokou frekvenc´ı v´ yskytu v textu. Pro tuto konfiguraci bylo tak´e vypnuto rozliˇsov´an´ı velk´ ych a mal´ ych p´ısmen v n´azvech entit. V´ıce informac´ı o instalaci a konfiguraci je k dispozici v ofici´aln´ı dokumentaci. [23] Bˇehem poˇca´teˇcn´ıch test˚ u byly zaznamen´any probl´emy se zpracov´an´ım textu nˇekter´ ych PDF dokument˚ u. Ty jsou podle v´ yjimek, kter´e jsou vyvol´any bˇehem jejich zpracov´an´ı, zp˚ usobeny starˇs´ı verz´ı knihovny PDFBox (1.4.0), jeˇz je souˇca´st´ı KIM. Tato knihovna byla v instalaci aktualizov´ana na verzi 33
Instalace KIM Platform, prototypov´a ontologie
Dom´enov´a ontologie
1.8.1, avˇsak nˇekter´e dokumenty st´ale nelze kv˚ uli nevyˇreˇsen´e chybˇe v knihovnˇe zpracovat.1
7.2
Dom´ enov´ a ontologie
Pro zajiˇstˇen´ı z´akladn´ı funkˇcnosti bylo proto nutn´e vytvoˇrit novou ontologii, kter´a bude popisovat ˇc´ast znalost´ı z EEG/ERP dom´eny. Pro u ´ˇcely testov´an´ı byly vybr´any znalosti potˇrebn´e pro realizaci 3. vyhled´avac´ıho sc´en´aˇre: Chci naj´ıt diskuzi o metodˇe matching pursuit vyˇsetˇruj´ıc´ı existenci P3 kom” ponenty.“ Jako z´aklad t´eto ontologie byl vytvoˇren souhrn komponent evokovan´ ych potenci´al˚ u a jednotliv´ ych metod, kter´e jsou pouˇz´ıv´any pˇri zpracov´an´ı namˇeˇren´ ych sign´al˚ u. Z popisu jednotliv´ ych komponent v [19] byl sestaven graf, jenˇz uv´ad´ı jednotliv´e komponenty, jejich polaritu a zaˇrazen´ı do skupin. K jednotliv´ ym komponent´am tak´e byly pˇriˇrazeny aliasy, pod kter´ ymi m˚ uˇze b´ yt dan´a komponenta nalezena v odborn´e literatuˇre. Pˇri volbˇe tˇechto alias˚ u bylo pˇrihl´ıˇzeno ke zvyklostem, jeˇz autoˇri v literatuˇre pouˇz´ıvaj´ı. [19] napˇr´ıklad uv´ad´ı, ˇze komponentou P3 autoˇri t´emˇeˇr v´ yhradnˇe mysl´ı komponentu P3b, proto je P3 pˇriˇrazeno jako alias k P3b, aˇckoliv z hlediska form´aln´ıho popisu jde o nadˇrazen´ y pojem oznaˇcuj´ıc´ı danou rodinu komponent. V´ ysledn´ y graf je k nahl´ednut´ı v pˇr´ıloze A. Z tohoto grafu byla pot´e sestavena ˇca´st ontologie v jazyce OWL, kter´a strukturou odpov´ıd´a podm´ınk´am, jeˇz klade KIM Platform. Graf druh´e ˇc´asti ontologie, tedy jednotliv´e metody pouˇz´ıvan´e pˇri zpracoˇ v´an´ı sign´al˚ u, zpracoval Ing. Tom´aˇs Rond´ ık. Jednotliv´e metody jsou rozdˇeleny do kategori´ı podle jejich principu a podle typick´eho pouˇzit´ı. V grafu jsou tak´e zn´azornˇeny z´akladn´ı vztahy mezi jednotliv´ ymi metodami. Graf je k nahl´ednut´ı v pˇr´ıloze B. Z grafu byla opˇet sestavena ontologie v jazyce OWL. Pˇred importem do KIM byla ontologie doplnˇena n´astrojem KIM-OWLImport o triplety, kter´e jednotliv´e entity definuj´ı jako vytvoˇren´e d˚ uvˇeryhodn´ ym zdrojem. Obˇe sestaven´e ontologie vˇcetnˇe ilustraˇcn´ıch graf˚ u jsou k dispozici na pˇriloˇzen´em CD.
1
https://issues.apache.org/jira/browse/PDFBOX-1512
34
8 KIMBridge KIMBridge je sluˇzba, kter´a bˇeˇz´ı na stejn´em serveru jako KIM platform a periodicky stahuje nov´e dokumenty z vybran´ ych zdroj˚ u (reposit´aˇr˚ u) dat. Periodu stahov´an´ı nov´ ych dokument˚ u lze nastavit v konfiguraˇcn´ım souboru. Tyto dokumenty jsou importov´any do KIM, kde prob´ıh´a jejich anotace. Do KIM jsou ukl´ad´any PDF dokumenty z Google Drive a texty diskuz´ı ve vybran´ ych skupin´ach na soci´aln´ı s´ıti LinkedIn. Implementace reposit´aˇr˚ u s dokumenty je vˇsak obecn´a, takˇze je moˇzn´e KIMBridge v budoucnu snadno rozˇs´ıˇrit i o dalˇs´ı zdroje dat. Struˇcn´ y popis instalace a spuˇstˇen´ı sluˇzby je k dispozici v pˇr´ıloze G.
8.1
Anal´ yza
Pˇri importu dokument˚ u do KIM Platform je moˇzn´e je uloˇzit jako soubory na serveru. Tam je lze periodicky importovat pomoc´ı n´astroje populater, pˇr´ıpadnˇe prostˇrednictv´ım sluˇzby populater-service. To vˇsak vede k duplicitˇe dat na serveru – text dokument˚ u je uloˇzen jednou ve sloˇzce s dokumenty a jednou anotovan´ y ve fulltextov´em indexu. Dokumenty je tak´e moˇzn´e do KIM Platform nahr´avat pomoc´ı webov´ ych sluˇzeb, nebo prostˇrednictv´ım Java RMI. Podle dokumentace nelze pomoc´ı webov´e sluˇzby manipulovat s jiˇz existuj´ıc´ımi dokumenty v reposit´aˇri, proto bylo pro KIMBridge zvoleno rozhran´ı Java RMI. Anotov´any budou dva typy dokument˚ u: odborn´e ˇcl´anky a publikace, kter´e budou uloˇzeny typicky ve form´ atu PDF, a odborn´e diskuze z profesnˇe zamˇeˇren´ ych skupin v soci´aln´ı s´ıti LinkedIn.
Jako u ´loˇziˇstˇe dokument˚ u byla vybr´ana sluˇzba Google Drive, do n´ıˇz je moˇzn´e nahr´avat libovoln´e dokumenty. Nahran´e dokumenty jsou pot´e pˇr´ıstupn´e pomoc´ı Google Drive API. Odborn´e diskuze ze soci´aln´ı s´ıtˇe LinkedIn lze stahovat pomoc´ı API, kter´e sluˇzba poskytuje.
8.1.1
Google Drive API
Pro pˇr´ıstup k Drive API je nutn´e nejdˇr´ıve vytvoˇrit klientsk´e kl´ıˇce v Google APIs Console. Na v´ ybˇer jsou tˇri typy klientsk´ ych kl´ıˇc˚ u:
35
KIMBridge
Anal´yza
Web Application urˇcen´ y pro webov´e aplikace, do nichˇz se pˇrihlaˇsuj´ı uˇzivatel´e, kteˇr´ı musej´ı aplikaci povolit pˇr´ıstup k jejich uˇzivatelsk´ ym dat˚ um, Service Account, pomoc´ı kter´eho aplikace do API nepˇristupuje jako pˇrihl´aˇsen´ y uˇzivatel, ale pod vlastn´ım u ´ˇctem, a Installed Application, jenˇz slouˇz´ı pro pˇr´ıstup z aplikac´ı, kter´e m´a uˇzivatel nainstalovan´e v PC nebo mobiln´ıch zaˇr´ızen´ıch. Pro stahov´an´ı dokument˚ u je nejvhodnˇejˇs´ı vytvoˇrit Service Account. Pro aplikaci bude vytvoˇren u ´ˇcet Google s e-mailovou adresou v dom´enˇe developer. gserviceaccount.com. S t´ımto u ´ˇctem je moˇzn´e sd´ılet dokumenty ˇci sloˇzky, do kter´ ych m´a aplikace m´ıt pˇr´ıstup. API sluˇzby je zdokumentov´ano v ofici´aln´ı dokumentaci [8]. Pomoc´ı tohoto API je moˇzn´e z´ısk´avat bud’ seznamy soubor˚ u a sloˇzek, kter´e jsou se sluˇzbou sd´ıleny, nebo seznam upraven´ ych a pˇridan´ ych dokument˚ u (obecnˇe seznam zmˇen v dokumentech). Kaˇzd´a zmˇena je oznaˇcena sv´ ym poˇradov´ ym ˇc´ıslem. Pˇri stahov´an´ı seznamu zmˇen lze uv´est nejniˇzˇs´ı ˇc´ıslo zmˇeny, jeˇz m´a b´ yt v seznamu zahrnuto. Uchov´av´an´ım ˇc´ısla posledn´ı zmˇeny je tak moˇzn´e stahovat seznam pˇridan´ ych a upraven´ ych dokument˚ u od posledn´ı kontroly. Souˇca´st´ı kaˇzd´e zmˇeny je i URL souboru, ze kter´eho lze dan´ y soubor dalˇs´ım vol´an´ım API st´ahnout. Dokumenty ve form´atech Google Docs (jejich MIME-Type je ve form´atu application/vnd.google-apps.*) nen´ı moˇzn´e pˇr´ımo stahovat, jsou urˇceny k zobrazen´ı a editaci ve webov´e aplikaci Google Docs a je nutn´e je ze seznamu zmˇen filtrovat. Protoˇze je vˇsak naprost´a vˇetˇsina odborn´ ych publikac´ı ve form´atu PDF, lze stahovat pouze dokumenty s MIME-Type application/pdf. Soubory PDF nejsou urˇceny k u ´prav´am, proto staˇc´ı stahovat jen nov´e dokumenty a nen´ı nutn´e aktualizovat jiˇz importovan´e dokumenty. Google omezuje poˇcet moˇzn´ ych vol´an´ı na jejich API, avˇsak pro sluˇzbu Drive jsou tyto limity tak vysok´e (10 000 000 poˇzadavk˚ u za den), ˇze pro aplikaci nepˇredstavuj´ı ˇza´dn´ y probl´em. Pˇr´ıstup do API je moˇzn´ y pomoc´ı ofici´aln´ıch klientsk´ ych knihoven, kter´e jsou k dispozici pro vˇsechny jazyky pouˇz´ıvan´e pˇri v´ yvoji modern´ıch aplikac´ı, vˇcetnˇe jazyka Java.
8.1.2
LinkedIn API
Pro pˇr´ıstup k API sluˇzby LinkedIn je t´eˇz potˇreba vytvoˇrit klientsk´e kl´ıˇce. Na port´alu pro v´ yvoj´aˇre je nutn´e vytvoˇrit novou aplikaci. Aplikace pak ke sluˇzbˇe pˇristupuje pomoc´ı 4 kl´ıˇc˚ u: 2 jsou specifick´e pro uˇzivatele, k jehoˇz dat˚ um aplikace pˇristupuje, a zbyl´e dva jsou spoleˇcn´e pro celou aplikaci.
36
KIMBridge
Popis implementace
Po vytvoˇren´ı aplikace jsou vygenerov´any pˇr´ıstupov´e kl´ıˇce pro aktu´aln´ıho uˇzivatele. Je moˇzn´e pˇridat dalˇs´ı osoby jako v´ yvoj´aˇre aplikace, kter´ ym budou tak´e vygenerov´any pˇr´ıstupov´e u ´daje, pˇr´ıpadnˇe si aplikaci m˚ uˇze uˇzivatel pˇridat v nastaven´ı sv´eho u ´ˇctu. K API lze pˇristupovat bud’ z JavaScriptov´e knihovny, jeˇz je urˇcena pro pouˇzit´ı v prohl´ıˇzeˇci, nebo pomoc´ı REST API. Toto API [17] poskytuje vol´an´ı, pomoc´ı nˇehoˇz je moˇzn´e st´ahnout seznam posledn´ıch pˇr´ıspˇevk˚ u ve skupinˇe s dan´ ym ID. M˚ uˇzeme tak´e specifikovat datum, od kter´eho maj´ı b´ yt pˇr´ıspˇevky staˇzeny. Toto datum vˇsak ud´av´a pouze datum vytvoˇren´ı pˇr´ıspˇevku. Pokud byl pˇr´ıspˇevek vytvoˇren pˇred zadan´ ym datem a po dan´em datu byl pouze modifikov´an, nebo k nˇemu byl pˇrid´an koment´aˇr, nebude v seznamu uveden. U diskuz´ı je vˇsak nutn´e stahovat nejen nov´e pˇr´ıspˇevky, ale i nov´e koment´aˇre, kter´e byly k pˇr´ıspˇevku pˇridan´e. API neposkytuje ˇza´dn´e vol´an´ı, pomoc´ı nˇehoˇz by bylo moˇzn´e st´ahnout nov´e koment´aˇre, pˇr´ıpadnˇe pˇr´ıspˇevky s nov´ ymi koment´aˇri. Je tak nezbytn´e pro kaˇzd´ y pˇr´ıspˇevek prov´est vol´an´ı na z´ısk´an´ı seznam koment´aˇr˚ u. Protoˇze sluˇzba LinkedIn omezuje poˇcet vol´an´ı, kter´e je za den moˇzn´e prov´est, nelze toto vol´an´ı na seznam koment´aˇr˚ u opakovat pro kaˇzd´ y pˇr´ıspˇevek v datab´azi. Podle [18] je moˇzn´e prov´est za den 1000 poˇzadavk˚ u na nov´e pˇr´ıspˇevky ve skupinˇe a 1000 poˇzadavk˚ u na koment´aˇre ke konkr´etn´ımu pˇr´ıspˇevku. Vol´an´ı je tedy nutn´e omezit pouze na ty diskuze, u nichˇz je pˇredpokl´ad´ana aktivita diskutuj´ıc´ıch. V aplikaci tedy bude pro kaˇzdou skupinu udrˇzov´ana fronta diskuz´ı s omezenou d´elkou, ve kter´e budou jednotliv´e diskuze seˇrazeny podle aktivity. Nov´e a aktualizovan´e diskuze budou zaˇrazeny vˇzdy na zaˇca´tek fronty. Pokud nˇekter´a z diskuz´ı nebude dlouho aktivn´ı, propadne se na konec fronty, odkud bude posl´eze odstranˇena. T´ımto pˇr´ıstupem bude zajiˇstˇeno, ˇze poˇcet vol´an´ı API nepˇres´ahne stanoven´e limity.
8.2
Popis implementace
Zjednoduˇsen´ y diagram nejd˚ uleˇzitˇejˇs´ıch tˇr´ıd a rozhran´ı v KIMBridge je zn´azornˇen na obr´azku 8.1. Podrobnˇejˇs´ı UML diagram tˇr´ıd a vztah˚ u mezi nimi, vˇcetnˇe signatur d˚ uleˇzit´ ych metod, je v pˇr´ıloze C. Z´akladn´ı tˇr´ıdou programu je tˇr´ıda KIMBridge. Ta obsahuje reference na jednotliv´e reposit´aˇre dokument˚ u (Google Drive, jednotliv´e skupiny na LinkedIn) a po zavol´an´ı metody annotateNewDocuments() st´ahne nov´e dokumenty a nahraje je do KIM Platform. Spojen´ı s KIM Platform zajiˇst’uje tˇr´ıda KIMConnector. Ta vyuˇz´ıv´a nˇekolika 37
KIMBridge
Popis implementace
1 KIMBridge
fetches new documents from
1..*
«interface»
IDocumentRepository
1 fetches text
creates
«interface»
IDocument uploads documents to 1 KIMConnector
«interface»
ITextDocument «interface»
IBinaryDocument
DriveRepository
LinkedInRepository
Obr´azek 8.1: Diagram z´akladn´ıch tˇr´ıd a rozhran´ı KIMBridge. rozhran´ı z KIM a zajiˇst’uje vytv´aˇren´ı, ukl´ad´an´ı a anotaci dokument˚ u. Je tak´e schopn´a zajistit reanotaci urˇcit´eho dokumentu, nebo aktualizaci jeho obsahu podle novˇe vytvoˇren´eho dokumentu. Pro pˇripojen´ı ke KIM vyuˇz´ıv´a Java RMI. Reposit´aˇr dokument˚ u je tˇr´ıda implementuj´ıc´ı rozhran´ı IDocumentRepository. Vol´an´ım metody getNewDocuments() reposit´aˇre dojde ke staˇzen´ı nov´ ych dokument˚ u. Dokument je instance tˇr´ıdy, kter´a implementuje rozhran´ı ITextDocument, nebo rozhran´ı IBinaryDocument. KIMBridge tyto dokumenty pomoc´ı KIMConnector importuje do KIM Platform. Po u ´spˇeˇsn´e anotaci a uloˇzen´ı dokumentu je nad reposit´aˇrem zavol´ana metoda documentIndexed(). Ta m˚ uˇze b´ yt vyuˇzita napˇr´ıklad pro vytvoˇren´ı vazby mezi dokumentem v KIM Platform a dokumentem v reposit´aˇri dokument˚ u, aby dokument v KIM mohl b´ yt pozdˇeji aktualizov´an. Vytv´aˇren´ı jednotliv´ ych reposit´aˇr˚ u pˇri startu sluˇzby zajiˇst’uj´ı tˇr´ıdy implementuj´ıc´ı rozhran´ı IRepositoryFactory. Konfigurace tov´aren a reposit´aˇr˚ u dokument˚ u je uloˇzena v konfiguraˇcn´ım XML souboru. Z nˇej jsou naˇc´ıt´any tˇr´ıdou Configurator. Ta je schopn´a naˇc´ıtat v´ıce konfiguraˇcn´ıch soubor˚ u a jejich direktivy sluˇcovat. Konfigurace m´a 3 ˇc´asti: obecnou konfiguraci KIMBridge, konfiguraci tov´aren reposit´aˇr˚ u a konfiguraci jednotliv´ ych reposit´aˇr˚ u. Vytvoˇren´ı a registraci tov´aren a reposit´aˇr˚ u z konfigurace zajiˇst’uje tˇr´ıda RepositoryConfigurator. Jej´ı metoda intitializeRepositories m´a jeden parametr: instanci KIMBridge, do kter´e maj´ı b´ yt reposit´aˇre zaregistrov´any. Tˇr´ıda pˇri vol´an´ı t´eto metody nejprve vytvoˇr´ı vˇsechny definovan´e tov´arny. Tov´arna po vytvoˇren´ı dostane svou konfiguraci ve tˇr´ıdˇe FactoryConfiguration. V n´ı jsou uvedeny napˇr´ıklad pˇr´ıstupov´e kl´ıˇce k API a dalˇs´ı parametry, jeˇz jsou potˇrebn´e k nav´az´an´ı spojen´ı s danou sluˇzbou. Vytvoˇren´e tov´arny jsou pouˇzity k vytvoˇren´ı jednotliv´ ych reposit´aˇr˚ u. Metodˇe createRepository je pˇred´an ˇretˇezec s intern´ım n´azvem reposit´aˇre a kon38
KIMBridge
Popis implementace
KIMBridge
1
registers repositories to fetches new documents from Configurator
1 gets configuration from
1 RepositoryConfigurator
1
1 creates 1..*
1..* 1..*
1
1
FactoryConfiguration
1..*
«interface»
creates
IRepositoryFactory
«interface»
IDocumentRepository
uses to configure repositories
RepositoryConfiguration
Obr´azek 8.2: Diagram tˇr´ıd zajiˇst’uj´ıc´ıch vytvoˇren´ı reposit´aˇr˚ u dokument˚ u. figurace reposit´aˇre ve tˇr´ıdˇe RepositoryConfiguration. V´ ysledkem vol´an´ı je nov´ y reposit´aˇr s danou konfigurac´ı, kter´ y je n´aslednˇe zaregistrov´an do KIMBridge. Diagram tˇr´ıd, jeˇz zajiˇst’uj´ı naˇc´ıt´an´ı konfigurace a vytv´aˇren´ı reposit´aˇr˚ u, je na obr´azku 8.2. Po u ´spˇeˇsn´e synchronizaci a pˇri ukonˇcov´an´ı KIMBridge je uchov´an stav vˇsech reposit´aˇr˚ u. Reposit´aˇr pˇri ukl´ad´an´ı vytvoˇr´ı instanci tˇr´ıdy, kter´a implementuje rozhran´ı IRepositoryState. V t´eto tˇr´ıdˇe m˚ uˇze b´ yt uloˇzeno napˇr´ıklad datum a ˇcas posledn´ı synchronizace, seznam aktivn´ıch diskuz´ı, pˇr´ıpadnˇe libovoln´a jin´a data, jeˇz je nutn´e uchovat pˇri restartu sluˇzby. Po opˇetovn´em startu je stav reposit´aˇre opˇet obnoven. Uloˇzen´ı a naˇc´ıt´an´ı stavu zajiˇst’uje tˇr´ıda SyncStatePersister. Ta stav reposit´aˇr˚ u serializuje do bin´arn´ıho souboru. Vˇsechny ˇcleny tˇr´ıdy implementuj´ıc´ı IRepositoryState proto musej´ı implementovat rozhran´ı Serializable. Diagram tˇr´ıd, kter´e zajiˇst’uj´ı ukl´ad´an´ı a obnovu stavu reposit´aˇr˚ u, je zn´azornˇen na obr´azku 8.3. passes repository state to and from
1 SyncStatePersister
loads from and saves to binary file
1 1 KIMBridge
1..*
stores state in and restores state from
«interface»
IDocumentRepository
«interface»
IRepositoryState
Obr´azek 8.3: Tˇr´ıdy zajiˇst’uj´ıc´ı ukl´ad´an´ı a naˇc´ıt´an´ı stavu reposit´aˇr˚ u.
39
KIMBridge
8.2.1
Popis implementace
Google Drive
Reposit´aˇr pro Google Drive vyuˇz´ıv´a Google Drive API Client s vygenerovan´ ym modelem pro sluˇzbu Google Drive. Tato knihovna je dostupn´a z adresy https://code.google.com/p/google-api-java-client/wiki/APIs# Drive_API. Pro tuto knihovnu byl vytvoˇren adapt´er DriveConnector, jenˇz poskytuje metody potˇrebn´e pro stahov´an´ı seznamu zmˇen a soubor˚ u. Adapt´er je vytv´aˇren tov´arnou DriveRepositoryFactory a pro pˇripojen´ı potˇrebuje n´asleduj´ıc´ı konfiguraˇcn´ı direktivy: appName – n´azev aplikace, kter´ y bude hl´aˇsen sluˇzb´am Google, accountId – ID vytvoˇren´eho service account a privateKey – cesta k souboru service account. ID u ´ˇctu a soubor s priv´atn´ım kl´ıˇcem lze nal´ezt v Google APIs Console. Dokument reprezentovan´ y tˇr´ıdou DriveDocument stahuje data aˇz v okamˇziku ukl´ad´an´ı do KIM Platform, mus´ı mu tedy pˇri vytv´aˇren´ı b´ yt pˇred´ana instance DriveConnector. Pˇri ukonˇcov´an´ı KIMBridge si Google Drive reposit´aˇr ukl´ad´a ve tˇr´ıdˇe DriveRepositoryState poˇradov´e ˇc´ıslo posledn´ı zmˇeny. Jednotliv´e tˇr´ıdy Google Drive reposit´aˇre a vztahy mezi nimi jsou zn´azornˇeny na obr´azku 8.4. «interface»
«interface»
«interface»
IRepositoryFactory
IDocumentRepository
IBinaryDocument
1
DriveRepositoryFactory 1 creates
creates
1
fetches changes from
1 creates 0..*
DriveRepository
DriveDocument
0..*
0..* stores state to and restores state from
1 DriveConnector 1
DriveRepositoryState
«interface»
IRepositoryState
fetches raw binary data from
Obr´azek 8.4: UML diagram tˇr´ıd Google Drive reposit´aˇre.
8.2.2
LinkedIn
Reposit´aˇr pro stahov´an´ı diskuz´ı ze skupin na LinkedIn vyuˇz´ıv´a knihovnu linkedin-j, kter´a je dostupn´a z adresy https://code.google.com/p/linkedin-j/. 40
KIMBridge
Popis implementace
Pro knihovnu byl opˇet vytvoˇren adapt´er LinkedInConnector, jenˇz poskytuje metody pro stahov´an´ı nov´ ych pˇr´ıspˇevk˚ u ve skupinˇe a stahov´an´ı konkr´etn´ıch pˇr´ıspˇevk˚ u vˇcetnˇe jejich koment´aˇr˚ u. Adapt´er je vytv´aˇren tov´arnou LinkedInRepositoryFactory a vyˇzaduje v konfiguraci n´asleduj´ıc´ı autorizaˇcn´ı kl´ıˇce: consumerKey – kl´ıˇc rozhran´ı API, consumerSecret – tajn´ y kl´ıˇc, token – autorizaˇcn´ı uˇzivatelsk´ y kl´ıˇc a tokenSecret – autorizaˇcn´ı tajn´a vˇeta. Vˇsechny tyto kl´ıˇce je moˇzn´e naj´ıt v nastaven´ı aplikace na port´alu pro v´ yvoj´aˇre LinkedIn. Pro kaˇzd´ y staˇzen´ y pˇr´ıspˇevek je vytvoˇrena instance tˇr´ıdy LinkedInDocument. Pˇri ukl´ad´an´ı dokumentu je z pˇr´ıspˇevku vytvoˇren ˇretˇezec obsahuj´ıc´ı autora pˇr´ıspˇevku, ˇcas vytvoˇren´ı, text pˇr´ıspˇevku a vˇsechny koment´aˇre vˇcetnˇe jejich autora a textu. Jednotliv´e pˇr´ıspˇevky jsou vkl´ad´any do fronty, kter´a je reprezentovan´a tˇr´ıdou PostQueue. Do n´ı se ukl´ad´a jen ID pˇr´ıspˇevku ve sluˇzbˇe LinkedIn, ID v reposit´aˇri KIM Platform a poˇcet koment´aˇr˚ u. Pokud pˇri kontrole pˇr´ıspˇevk˚ u poˇcet koment´aˇr˚ u vzroste, je pˇr´ıspˇevek pˇresunut na zaˇc´atek fronty a jeho obsah v KIM je aktualizov´an. Pˇri ukonˇcen´ı kontroly nov´ ych pˇr´ıspˇevk˚ u jsou z fronty vyjmuty prvky, jeˇz pˇresahuj´ı jej´ı kapacitu. Kontrola nov´ ych koment´aˇr˚ u u sledovan´ ych pˇr´ıspˇevk˚ u prob´ıh´a nejdˇr´ıve po 12 hodin´ach, aby nedoˇslo k vyˇcerp´an´ı limitu poˇctu vol´an´ı, kter´e je moˇzn´e za den prov´est. Pˇri ukonˇcov´an´ı KIMBridge si LinkedIn reposit´aˇre ukl´adaj´ı datum a ˇcas posledn´ı kontroly nov´ ych pˇr´ıspˇevk˚ u, datum a ˇcas posledn´ı kontroly nov´ ych koment´aˇr˚ u a aktu´aln´ı frontu pˇr´ıspˇevk˚ u. Jednotliv´e tˇr´ıdy LinkedIn reposit´aˇre a vztahy mezi nimi jsou zn´azornˇeny na obr´azku 8.5.
8.2.3
Sluˇ zba KIMBridge
KIMBridge je moˇzn´e s vyuˇzit´ım knihovny Apache Commons Daemon a n´astroje jsvc spustit jako sluˇzbu, kter´a bude bˇeˇzet na pozad´ı a periodicky stahovat dokumenty z reposit´aˇr˚ u. Pˇri tomto pouˇzit´ı je nutn´e v konfiguraˇcn´ım souboru specifikovat vˇsechny cesty absolutnˇe. Hlavn´ı tˇr´ıda sluˇzby, KIMBridgeDaemon, implementuje rozhran´ı Daemon. Pˇri inicializaci naˇcte konfiguraˇcn´ı soubor, vytvoˇr´ı KIMConnector, KIMBridge a jednotliv´e reposit´aˇre. Stav reposit´aˇr˚ u je obnoven z bin´arn´ıho souboru. 41
KIMBridge
Form´at konfiguraˇcn´ıho souboru
«interface»
IRepositoryState
«interface»
«interface»
IRepositoryFactory
IDocumentRepository
LinkedInRepositoryState
stores state to and restores state from
LinkedInRepositoryFactory
1
creates 1..*
0..*
1 fetches new posts
creates 1
LinkedInRepository
1
LinkedInConnector
1 maintains 1
PostQueue
addNewPost(post: Post) : PostInfo postUpdated(post: PostInfo) : void cropQueue() : void
1 creates 0..*
LinkedInDocument
«interface»
ITextDocument
1 contains 0..* PostInfo
getId() : String getKimDocumentId() : long setKimDocumentId(docId: long) : void hasNewComments(newPost: Post) : boolean setCommentCountFromPost(newPost: Post) : void
Obr´azek 8.5: UML diagram tˇr´ıd LinkedIn reposit´aˇre. Pˇri spuˇstˇen´ı sluˇzby je spuˇstˇen pl´anovaˇc, jenˇz periodicky spouˇst´ı u ´lohu definovanou ve tˇr´ıdˇe KIMIndexTask. Ta pˇri sv´em spuˇstˇen´ı nech´a KIMBridge st´ahnout a anotovat nov´e dokumenty. Pˇri ukonˇcen´ı sluˇzby je pl´anovaˇc zastaven a sluˇzba ukonˇcena. Diagram tˇr´ıd pro sluˇzbu KIMBridge je zn´azornˇen na obr´azku 8.6.
8.3
Form´ at konfiguraˇ cn´ıho souboru
Konfiguraˇcn´ı soubor m´a nˇekolik sekc´ı. Obsahuje konfiguraci cel´eho KIMBridge, jednotliv´ ych tov´aren reposit´aˇr˚ u a pot´e jednotliv´ ych reposit´aˇr˚ u, ze kter´ ych jsou stahov´any nov´e dokumenty. Z´akladn´ı struktura konfiguraˇcn´ıho souboru je uvedena ve v´ ypise 8.1.
42
KIMBridge
Form´at konfiguraˇcn´ıho souboru
Configurator
SyncStatePersister
1
KIMConnector
1
1
1
1 1
KIMBridgeDaemon
1
1
1
KIMIndexTask
«interface»
«interface»
Daemon
TimerTask
KIMBridge
Obr´azek 8.6: Diagram tˇr´ıd sluˇzby KIMBridge. 300 <syncFile>./state.bin
V´ ypis 8.1: Pr´azdn´ y konfiguraˇcn´ı soubor s v´ ychoz´ım nastaven´ım. Struktura XML dokumentu je rozdˇelena do 3 sekc´ı: configuration – glob´aln´ı konfigurace KIMBridge, factories – konfigurace jednotliv´ ych tov´aren pro reposit´aˇre a repositories – konfigurace jednotliv´ ych reposit´aˇr˚ u. Jednotliv´e elementy v sekci configuration pˇredstavuj´ı konfiguraˇcn´ı direktivy. N´azev elementu odpov´ıd´a konfiguraˇcn´ı direktivˇe, text uvnitˇr elementu jej´ı hodnotˇe. Kaˇzd´a tov´arna reposit´aˇr˚ u m´a v sekci factories vlastn´ı element. N´azev elementu je identifik´ator tov´arny a povinn´ y atribut class urˇcuje tˇr´ıdu tov´arny. Tov´arna je vytv´aˇrena pomoc´ı reflexe vol´an´ım v´ ychoz´ıho konstruktoru bez parametr˚ u. Tˇr´ıda implementuj´ıc´ı tov´arnu tedy mus´ı m´ıt veˇrejn´ y bezparametrick´ y konstruktor. Jednotliv´e elementy uvnitˇr konfigurace tov´arny pˇredstavuj´ı jej´ı parametry. Pˇr´ıklad konfigurace tov´aren je ve v´ ypise 8.2. V tomto v´ ypise m´a to43
KIMBridge
Form´at konfiguraˇcn´ıho souboru
v´arna googleDrive parametr appName s hodnotou KIMBridge. Druh´a tov´arna, linkedIn, nem´a ˇza´dn´e parametry. KIMBridge
V´ ypis 8.2: Pˇr´ıklad konfigurace tov´aren. V sekci repositories jsou pak definov´any jednotliv´e reposit´aˇre, kter´e maj´ı b´ yt vytvoˇreny pomoc´ı tov´aren. N´azev elementu je opˇet identifik´ator reposit´aˇre, atribut type urˇcuje n´azev tov´arny, pomoc´ı n´ıˇz m´a b´ yt dan´ y reposit´aˇr vytvoˇren. Vnitˇrn´ı elementy jsou opˇet parametry reposit´aˇre. Pˇr´ıklad je uveden ve v´ ypise 8.3. 123456 654321
V´ ypis 8.3: Pˇr´ıklad konfigurace reposit´aˇr˚ u. Ve v´ ypise jsou definov´any celkem 3 reposit´aˇre. Reposit´aˇr drive bude vytvoˇren tov´arnou, kter´a byla ve v´ ypise 8.2 definov´ana v elementu googleDrive. Reposit´aˇre group1 a group2 budou vytvoˇreny tov´arnou linkedIn a kaˇzd´ y m´a jako sv˚ uj jedin´ y parametr ID skupiny, z n´ıˇz budou stahov´any diskuzn´ı pˇr´ıspˇevky. Pˇri spuˇstˇen´ı z pˇr´ıkazov´e ˇr´adky program vyhled´av´a konfiguraˇcn´ı soubor config.xml ve sv´em pracovn´ım adres´aˇri. Pˇri spuˇstˇen´ı jako sluˇzby je nutn´e specifikovat celou cestu ke konfiguraˇcn´ımu souboru jako prvn´ı parametr sluˇzby.
44
9 KIM-OWLImport KIM-OWLImport je n´astroj, jenˇz dovoluje doplnit jiˇz existuj´ıc´ı ontologii tak, aby bylo moˇzn´e ji pouˇz´ıt v KIM Platform. Typicky se jedn´a o doplnˇen´ı triplet˚ u, kter´e jednotliv´e entity oznaˇcuj´ı jako vytvoˇren´e d˚ uvˇeryhodn´ ym zdrojem. N´astroj je ale navrˇzen´ y tak, aby jej ˇslo pozdˇeji rozˇs´ıˇrit o dalˇs´ı pravidla, jeˇz umoˇzn´ı extrakci informac´ı z jiˇz existuj´ıc´ı ontologie a vytvoˇren´ı ontologie nov´e, kter´a bude odpov´ıdat struktuˇre, jiˇz pouˇz´ıv´a KIM Platform. N´astroj m´a grafick´e uˇzivatelsk´e rozhran´ı, v nˇemˇz je moˇzn´e pˇrid´avat ontologie z r˚ uzn´ ych zdroj˚ u. Pro jednotliv´e ontologie pak lze definovat sadu pravidel, kter´a budou na ontologii aplikov´ana. Struˇcn´a uˇzivatelsk´a dokumentace je k dispozici v pˇr´ıloze E. Grafick´e rozhran´ı i uˇzivatelsk´a dokumentace pouˇz´ıvaj´ı Farm-Fresh Web Icons1 od spoleˇcnosti FatCow Web Hosting, kter´e jsou dostupn´e zdarma pod licenc´ı Creative Commons Attribution 3.0.
9.1
Anal´ yza
Aby ontologie mohla b´ yt pouˇzita v KIM Platform, je nutn´e s n´ı prov´est n´asleduj´ıc´ı kroky: 1. Doplnit pro jednotliv´e entity vlastnost protons:generatedBy, jej´ıˇz hodnotou bude d˚ uvˇeryhodn´ y zdroj (instance tˇr´ıdy protons:Trusted). Je moˇzn´e pouˇz´ıt nˇekter´ y z jiˇz pˇreddefinovan´ ych zdroj˚ u v KIM Platform, nebo tento zdroj vytvoˇrit. 2. Vˇsechny tˇr´ıdy musej´ı b´ yt potomky protons:Entity, pˇr´ıpadnˇe nˇekter´e konkr´etnˇejˇs´ı tˇr´ıdy (protont:Object, protont:Person, protont:Organization, nebo protont:Location). Pro tˇr´ıdy, kter´e tvoˇr´ı koˇreny hierarchie a nemaj´ı tedy v r´amci ontologie definovanou rodiˇcovskou tˇr´ıdu, je nutn´e tuto vazbu doplnit. Pˇri automatick´em doplnˇen´ı je moˇzn´e pouˇz´ıt obecn´ y protont:Object. 3. Aby se jednotliv´e tˇr´ıdy a jejich vlastnosti zobrazovaly v nab´ıdk´ach webov´eho rozhran´ı, musej´ı m´ıt v souboru visibility.nt uvedenou vlastnost kimso:visibilityLevel1.2 Pro vˇsechny definovan´e tˇr´ıdy a vlastnosti je proto nutn´e z´aznamy do tohoto souboru vygenerovat. 1 2
http://www.fatcow.com/free-icons http://www.ontotext.com/kim/2006/05/kimso#visibilityLevel1
45
KIM-OWLImport
Anal´yza
Z´akladn´ım form´atem, jenˇz mus´ı n´astroje pracuj´ıc´ı s ontologiemi v jazyce OWL3 podporovat, je RDF/XML. Do tohoto form´atu lze tak´e ontologie pˇrev´est z libovoln´eho jin´eho form´atu, kter´ y uv´ad´ı specifikace [32]. S ontologiemi by tedy bylo moˇzn´e pracovat jako s libovoln´ ym XML dokumentem. Tento pˇr´ıstup by vˇsak byl pomˇernˇe obt´ıˇzn´ y a implementaˇcnˇe n´aroˇcn´ y. Pro jazyk Java existuje cel´a ˇrada knihoven, kter´e pr´aci s ontologiemi (a obecnˇe RDF) usnadˇ nuj´ı. Umoˇzn ˇuj´ı jednotliv´e ontologie naˇc´ıst do pamˇeti a pracovat s nimi jako s grafem: iterovat nad jednotliv´ ymi triplety, vyhled´avat triplety odpov´ıdaj´ıc´ı dan´emu vzoru a prov´adˇet SPARQL dotazy. Jedn´a se napˇr´ıklad o knihovny Jena a Sesame, jeˇz uˇz byly zm´ınˇeny v souvislosti se s´emantick´ ymi reposit´aˇri. S vyuˇzit´ım tˇechto knihoven bude moˇzn´e celou ontologii naˇc´ıst do pamˇeti a pomoc´ı SPARQL dotaz˚ u CONSTRUCT pak jednotliv´e triplety, kter´e musej´ı b´ yt do ontologie doplnˇeny, vygenerovat. Tˇr´ıdy a jejich vlastnosti jsou tak´e definov´any jako triplety, proto se lze dotazovat i nad hierarchi´ı tˇr´ıd. Pomoc´ı SPARQL dotaz˚ u pak tak´e bude moˇzn´e transformovat ontologie s r˚ uzn´ ymi strukturami tˇr´ıd a instanc´ı tak, aby je ˇslo pouˇz´ıt i v KIM Platform. V tuto chv´ıli vˇsak nen´ı k dispozici ˇza´dn´a ontologie, kter´a by poskytovala potˇrebn´a kl´ıˇcov´a slova, proto jsou definov´ana jen pravidla pro vytv´aˇren´ı doplˇ nuj´ıc´ıch triplet˚ u. Pro pouˇzit´ı v n´astroji KIM-OWLImport byl vybr´an s´emantick´ y reposit´aˇr OWLIM-Lite, jenˇz je dostupn´ y zdarma. Uchov´av´a data prim´arnˇe v pamˇeti a na disk jsou ukl´ad´ana aˇz dodateˇcnˇe. Ukl´ad´an´ı je vˇsak moˇzn´e vypnout v konfiguraci reposit´aˇre. K reposit´aˇri je zajiˇstˇen pˇr´ıstup pomoc´ı API, kter´e poskytuje Sesame. Kromˇe SPARQL podporuje tak´e vlastn´ı dotazovac´ı jazyk SeRQL. Ten poskytuje podobn´e moˇznosti jako jazyk SPARQL, avˇsak jeho syntaxe se v´ıce podob´a jazyku SQL a je tedy pro vˇetˇsinu v´ yvoj´aˇr˚ u srozumitelnˇejˇs´ı. Kompletn´ı popis jazyka je k dispozici v dokumentaci Sesame [29].
9.1.1
SeRQL dotazy
V´ yˇse zm´ınˇen´e operace s ontologi´ı je moˇzn´e doc´ılit pomoc´ı n´asleduj´ıc´ıch dotaz˚ u: Doplnˇ en´ı protons:generatedBy CONSTRUCT DISTINCT {Entity} protons:generatedBy {_sourceUri} FROM {Entity} rdf:type {Type}, {Type} sesame:directType {ClassType} 3
Plat´ı pro obˇe verze – OWL 1 i OWL 2.
46
KIM-OWLImport
Anal´yza
WHERE ClassType = owl:Class USING NAMESPACE protons =
Dotaz najde vˇsechny entity, jejichˇz typ je pˇr´ımou instanc´ı (sesame:directType) typu owl:Class. Pokud by nebyla pouˇzita podm´ınka pˇr´ım´e instance, zahrnoval by v´ ystup i definice vlastnost´ı, kter´e maj´ı omezen´ı kardinality nebo hodnoty, protoˇze tˇr´ıda owl:Restriction je podtˇr´ıdou owl:Class. Pro nalezen´e entity vygeneruje triplet ve tvaru uveden´em v klauzuli CONSTRUCT. Za parametr _sourceUri je nutn´e doplnit URI instance d˚ uvˇeryhodn´eho zdroje. Doplnˇ en´ı rodiˇ covsk´ e tˇ r´ıdy protont:Object ke koˇ ren˚ um hierarchie tˇ r´ıd CONSTRUCT {Class} rdf:type {_protontObj} FROM CONTEXT _context {Class} rdf:type {ClassType}; [sesame:directSubClassOf { Super}] WHERE ClassType = owl:Class AND NOT BOUND(Super)
Dotaz vybere vˇsechny tˇr´ıdy, jeˇz v kontextu _context nemaj´ı definovanou ˇz´adnou rodiˇcovskou tˇr´ıdu – nepovinn´a vazba sesame:directSubClassOf na tˇr´ıdu Super nebude naplnˇena. Vˇsechny definovan´e tˇr´ıdy jsou implicitnˇe podtˇr´ıdami owl:Thing, proto je nutn´e omezit kontext. Vygenerov´ an´ı visiblity.nt CONSTRUCT {Class} kimso:visibilityLevel1 "" FROM CONTEXT _context {Class} sesame:directType {ClassType} WHERE ClassType = owl:Class OR ClassType = owl:ObjectProperty OR ClassType = owl:DatatypeProperty USING NAMESPACE kimso =
Dotaz vygeneruje pro vˇsechny tˇr´ıdy a vlastnosti definovan´e v kontextu _context triplet s predik´atem kimso:visibilityLevel1.
9.1.2
Uloˇ zen´ı v´ ystupu
V´ ystup z v´ yˇse uveden´ ych dotaz˚ u je moˇzn´e uloˇzit opˇet pomoc´ı Sesame API. To poskytuje tˇr´ıdy pro z´apis jednotliv´ ych triplet˚ u v r˚ uzn´ ych form´atech. 47
KIM-OWLImport
Popis implementace
Probl´emem pˇri uloˇzen´ı v´ ystupu z nˇekolika dotaz˚ u mohou b´ yt jmenn´e prostory. Form´aty zaloˇzen´e na XML (napˇr´ıklad RDF/XML) vyuˇz´ıvaj´ı pro simulaci jmenn´ ych prostor˚ u XML entit, kter´e mohou b´ yt definov´any pouze na zaˇc´atku dokumentu v deklaraci DOCTYPE. To m˚ uˇze b´ yt probl´em, pokud by jednotliv´e dotazy pouˇz´ıvaly r˚ uzn´e jmenn´e prostory. Bylo by nutn´e nejprve vykonat vˇsechny dotazy, zapsat vˇsechny jmenn´e prostory najednou a teprve pot´e zapsat v´ ysledky dotaz˚ u. Pro proudov´ y z´apis jednotliv´ ych v´ ysledk˚ u je vhodnˇejˇs´ı form´at, jenˇz nem´a ˇz´adn´e omezen´ı na um´ıstˇen´ı deklarace jmenn´eho prostoru. Takov´ ymi form´aty jsou N3 a Turtle. Pro KIM-OWLImport byl zvolen form´at Turtle, jehoˇz specifikace je ve vyspˇelejˇs´ım st´adiu.4
9.2
Popis implementace
Diagram nejd˚ uleˇzitˇejˇs´ıch tˇr´ıd a rozhran´ı programu KIM-OWLImport jsou zn´azornˇeny na obr´azku 9.1. GUI 1
1
1
1
SourceManager
RepositoryManager
1
RuleManager
1 creates and shutdowns 1..*
creates
«interface»
RepositoryWrapper
imported to
IRuleFactory queries
1..* «interface»
ISourceFactory
creates
creates AbstractSource 1
AbstractRule
exported by
1..*
Obr´azek 9.1: UML diagram z´akladn´ıch tˇr´ıd a rozhran´ı programu KIMOWLImport. Podrobnˇejˇs´ı UML diagram d˚ uleˇzit´ ych tˇr´ıd a vztah˚ u mezi nimi je v pˇr´ıloze D. Jednotliv´e soubory s ontologiemi jsou naˇc´ıt´any do s´emantick´ ych reposit´aˇr˚ u. Vytv´aˇren´ı tˇechto reposit´aˇr˚ u zajiˇst’uje tˇr´ıda RepositoryManager. Kaˇzd´ y 4
Specifikace form´ atu Turtle [3] je ve st´adiu Candidate Recommendation, oproti tomu specifikace N3 [2] je pouze ve st´adiu Team Submission a zat´ım nebyla zaˇrazena mezi ofici´ aln´ı specifikace W3C.
48
KIM-OWLImport
Popis implementace
vytv´aˇren´ y reposit´aˇr mus´ı m´ıt vlastn´ı konfiguraci. Sesame (t.j. i OWLIM-Lite) jsou konfigurov´any pomoc´ı RDF grafu. ˇ Sablona tohoto grafu je uloˇzena mezi zdrojov´ ymi soubory v souboru repository/config/owlim.ttl. Pˇri vytv´aˇren´ı reposit´aˇre je nutn´e do ˇsablony dosadit pouze jeho n´azev, ostatn´ı parametry mohou b´ yt spoleˇcn´e pro vˇsechny reposit´aˇre. Konfigurace v ˇsablonˇe napˇr´ıklad vyp´ın´a ukl´ad´an´ı dat v reposit´aˇri na disk a vyp´ın´a odvozov´an´ı nad naˇctenou ontologi´ı. Popis jednotliv´ ych konfiguraˇcn´ıch direktiv je k dispozici v dokumentaci k OWLIM-Lite.5 Vytvoˇren´ y reposit´aˇr je pak k dispozici pomoc´ı ob´alky RepositoryWrapper. Ta poskytuje metody na import ontologi´ı ze soubor˚ u ve filesyst´emu, import ze zadan´eho URL a pokl´ad´an´ı SeRQL dotaz˚ u. Aby bylo moˇzn´e ontologii importovat jak ze souboru, tak z URL, je reprezentov´ana abstraktn´ı tˇr´ıdou AbstractSource. Jej´ı vytvoˇren´ı zajiˇst’uje tˇr´ıda realizuj´ıc´ı ISourceFactory. Parametry pro vytvoˇren´ı dan´eho zdroje (URL, cesta k souboru) jsou pˇred´av´any ve tˇr´ıdˇe implementuj´ıc´ı ISourceParams. Z grafick´eho rozhran´ı zajiˇst’uje nastaven´ı tˇechto parametr˚ u tˇr´ıda ISourceParamsComponent. Vˇsechna tato rozhran´ı a abstraktn´ı tˇr´ıda musej´ı b´ yt pro dan´ y zdroj implementov´ana. Import lok´aln´ıch soubor˚ u tak zajiˇst’uj´ı tˇr´ıdy FileSource, FileSourceFactory a FileSourceParams. Konfiguraci z uˇzivatelsk´eho rozhran´ı zajiˇst’uje tˇr´ıda FileParamsComponent. Obdobn´e tˇr´ıdy pak implementuj´ı i naˇc´ıt´an´ı ontologie z URL. Vˇsechny zdroje a jejich tov´arny jsou spravov´any tˇr´ıdou SourceManager. Diagram tˇechto tˇr´ıd je zn´azornˇen na obr´azku 9.2. Ke kaˇzd´emu zdroji m˚ uˇze b´ yt pˇriˇrazeno nˇekolik pravidel, jeˇz zajiˇst’uj´ı vytv´aˇren´ı nov´ ych triplet˚ u. Architektura je velmi podobn´a spr´avˇe jednotliv´ ych zdroj˚ u ontologi´ı – pravidla implementuj´ıc´ı AbstractRule jsou vytv´aˇrena tov´arnami IRuleFactory. Parametry pravidla jsou reprezentov´any tˇr´ıdami implementuj´ıc´ımi rozhran´ı IRuleParams. Konfiguraci parametr˚ u z uˇzivatelsk´eho rozhran´ı zajiˇst’uje tˇr´ıda IRuleParamsComponent. Jednotliv´e tov´arny jsou opˇet spravov´any tˇr´ıdou RuleManager, pravidla jsou agregov´ana v kolekci zdroje, kter´emu n´aleˇz´ı. Oproti zdroj˚ um ontologi´ı nejsou parametry pravidla pouˇz´ıv´any pˇri jeho vytv´aˇren´ı, ale jsou konfigurov´any aˇz po jeho vzniku. Pˇri vytv´aˇren´ı vznik´a pouze instance s v´ ychoz´ım nastaven´ım. Metoda getStatements() pravidla prov´ad´ı dotaz na s´emantick´ y reposit´aˇr a vrac´ı v´ ysledek. Jednotliv´e triplety jsou uloˇzeny v kolekci implementuj´ıc´ı rozhran´ı Iteration, jeˇz poskytuje Sesame. Ten tak´e poskytuje dalˇs´ı tˇr´ıdy pro 5
https://confluence.ontotext.com/display/OWLIMv53/OWLIM-Lite+ Configuration
49
KIM-OWLImport
Popis implementace
FileSource
SourceManager
FileSource
1 UrlSource
UrlSource
1..*
1..*
1
creates
«interface»
AbstractSource
ISourceFactory
exported by 1..*
imported to uses to create new source
«interface»
queries
RepositoryWrapper
FileParams
ISourceParams
AbstractRule
UrlParams
creates
«interface»
FileParamsComponent
ISourceParamsComponent
UrlParamsComponent
Obr´azek 9.2: Diagram tˇr´ıd, kter´e zajiˇst’uj´ı naˇc´ıt´an´ı ontologie. filtrov´an´ı, spojov´an´ı a skl´ad´an´ı tˇechto kolekc´ı, takˇze je moˇzn´e v r´amci jednoho pravidla prov´est dotaz˚ u v´ıce, pˇr´ıpadnˇe triplety vygenerovat nez´avisle na reposit´aˇri a pot´e je pˇridat k v´ ysledku dotazu. Tyto tˇr´ıdy jsou opˇet zn´azornˇeny na obr´azku 9.3. RuleManager
RepositoryWrapper
1 queries 1..* creates
«interface»
AbstractRule
IRuleFactory
1
creates for rule configuration
1 «interface»
1
configures
IRuleParamsComponent
1
«interface»
IRuleParams
Obr´azek 9.3: Diagram tˇr´ıd, kter´e vytv´aˇrej´ı a reprezentuj´ı pravidla pro dopln ˇov´an´ı a transformaci ontologi´ı. KIM-OWLImport poskytuje n´asleduj´ıc´ı pravidla: ExportClassesRule exportuje vˇsechny tˇr´ıdy, jeˇz jsou v ontologii definov´any. Slouˇz´ı hlavnˇe ke sluˇcov´an´ı nˇekolika ontologi´ı do jednoho v´ ysledn´eho souboru. 50
KIM-OWLImport
Popis implementace
ExportInstancesRule exportuje vˇsechny instance, kter´e jsou v ontologii definov´any. Aby byla instance exportov´ana, mus´ı b´ yt jej´ı tˇr´ıda definovan´a ve stejn´e ontologii. Nelze exportovat instanci tˇr´ıdy, jej´ıˇz definice je definov´ana v jin´e ontologii. Podobnˇe jako pˇredchoz´ı pravidlo slouˇz´ı hlavnˇe ke sluˇcov´an´ı ontologi´ı. ExportTitleRule exportuje textov´e popisky instanc´ı. Popisek je vybr´an z uˇzivatelem zvolen´e vlastnosti a je exportov´an jako vlastnost rdf:label. Toto pravidlo slouˇz´ı jako uk´azka transformace ontologi´ı do struktury, jeˇz je pouˇz´ıv´ana KIM Platform. ProtonAlignRule najde vˇsechny tˇr´ıdy, kter´e nemaj´ı v ontologii definovanou rodiˇcovskou tˇr´ıdu, a vytvoˇr´ı triplet, jenˇz tyto tˇr´ıdy odvozuje od protont:Object. TrustedSourceRule vytvoˇr´ı definici d˚ uvˇeryhodn´eho zdroje a pro vˇsechny entity vygeneruje pravidlo, kter´e je oznaˇc´ı jako vygenerovan´e t´ımto d˚ uvˇeryhodn´ ym zdrojem. Dalˇs´ı pravidla je moˇzn´e pomˇernˇe snadno nadefinovat. Pro jejich pouˇzit´ı staˇc´ı jejich tov´arny zaregistrovat do RuleManager. Vykon´an´ı pravidel pro jednotliv´e ontologie a jejich zaps´an´ı do v´ ysledn´eho souboru zajiˇst’uje tˇr´ıda Exporter. Pro zadan´ y seznam ontologi´ı vykon´a vˇsechna pravidla a jejich v´ ystupy zap´ıˇse ve form´atu Turtle do vybran´eho souboru. Vygenerov´an´ı pravidel viditelnosti do souboru visibility.nt prov´ad´ı tˇr´ıda VisibilityGenerator. Dotazem do reposit´aˇre vygeneruje pro vˇsechny tˇr´ıdy, jeˇz jsou v ontologii definovan´e, seznam triplet˚ u s predik´atem kimso: visibilityLevel1 a v´ ysledek uloˇz´ı do uˇzivatelem vybran´eho souboru ve form´atu N-Triple. Diagram tˇr´ıd, kter´e zajiˇst’uj´ı export ontologi´ı, je na obr´azku 9.4. Vˇsechny definovan´e ontologie a pravidla je moˇzn´e uloˇzit ve form´atu XML. Vytvoˇren´ı a opˇetovn´e naˇcten´ı tohoto souboru zajiˇst’uj´ı tˇr´ıdy ProjectWriter a ProjectReader. Mezi uˇzivatelsk´e rozhran´ı a aplikaˇcn´ı a datov´ y model nen´ı vloˇzena ˇza´dn´a doplˇ nuj´ıc´ı vrstva abstrakce. Formul´aˇre vyuˇz´ıvaj´ı layout manager GridLayoutManager od tv˚ urc˚ u IntelliJ. Pro pˇreklad a spuˇstˇen´ı aplikace je tak potˇreba pˇribalen´a knihovna forms_rt.jar.
51
KIM-OWLImport
Popis implementace
generates visiblity for
1
1..*
AbstractSource 1..*
AbstractRule 1 imported to
queries
1 RepositoryWrapper
exports rules in
queries
Exporter
VisiblityGenerator
Obr´azek 9.4: UML diagram tˇr´ıd pro export ontologi´ı.
52
10 V´ysledky Funkˇcnost ˇreˇsen´ı je prezentov´ana na dvou ˇca´stech: ovˇeˇren´ı s´emantick´e anotace podle vytvoˇren´e ontologie a realizaci vybran´eho vyhled´avac´ıho sc´en´aˇre. Obˇe ˇca´sti byly provedeny jak s testovac´ımi dokumenty, u kter´ ych je pˇredem zn´am oˇcek´avan´ y v´ ysledek, tak se skuteˇcn´ ymi dokumenty, jeˇz byly do KIM Platform nahr´any pomoc´ı n´astroje KIMBridge.
10.1
S´ emantick´ a anotace
Pro ovˇeˇren´ı funkˇcnosti s´emantick´e anotace byl vytvoˇren testovac´ı textov´ y dokument, kter´ y obsahuje vˇsechny term´ıny z ontologie vˇcetnˇe jejich alias˚ u. Vˇsechny term´ıny byly um´ıstˇeny do jednoduch´e vˇety, kter´a simuluje okoln´ı text term´ınu. Tento textov´ y dokument byl do KIM Platform nahr´an pomoc´ı n´astroje populater. Uk´azka anotovan´eho dokumentu je na obr´azku 10.1.
ˇ ast anotovan´eho dokumentu zobrazen´a ve webov´em rozhran´ı Obr´azek 10.1: C´ KIM UI. Anotovan´e term´ıny jsou zv´ yraznˇeny tuˇcnˇe. Aˇz na jedin´ y term´ın byla vˇsechna kl´ıˇcov´a slova spr´avnˇe rozpozn´ana. Probl´emem byl term´ın ART2“, kter´ y ve sv´em n´azvu obsahuje nˇekolik p´ısmen ” a ˇc´ıslovku. Z term´ınu bylo rozpozn´ano pouze ˇc´ıslo, jeˇz bylo oznaˇceno jako ˇc´ıs53
V´ysledky
Vyhled´av´an´ı
lovka, a zbytek term´ınu rozpozn´an nebyl. Term´ıny obsahuj´ıc´ı jedno p´ısmeno n´asledovan´e jednou nebo nˇekolika ciframi byly rozpozn´any spr´avnˇe. D´ale byla spuˇstˇena sluˇzba KIMBridge, jenˇz stahuje dokumenty z Google Drive a diskuze z vybran´ ych skupin na soci´aln´ı s´ıti LinkedIn. Ve sluˇzbˇe Google Drive bylo uloˇzeno nˇekolik odborn´ ych publikac´ı, kter´e se t´ ykaj´ı pˇrev´aˇznˇe ERP komponent. Vˇsechny tyto dokumenty byly anotov´any v KIM Platform. Celkem bylo zpracov´ano 76 z 94 dokument˚ u, u zbyl´ ych dokument˚ u se nepodaˇrilo extrahovat text kv˚ uli dˇr´ıve zm´ınˇen´e chybˇe v knihovnˇe PDFBox. Pˇr´ıklad anotovan´eho PDF dokumentu je na obr´azku 10.2.
Obr´azek 10.2: Anotovan´ y PDF dokument o komponent´ach P3a a P3b zobrazen´ y ve webov´em rozhran´ı KIM UI.
10.2
Vyhled´ av´ an´ı
V r´amci ovˇeˇren´ı funkˇcnosti vyhled´av´an´ı byl realizov´an 3. vyhled´avac´ı sc´en´aˇr ze specifikace poˇzadavk˚ u: Chci naj´ıt diskuzi o metodˇe matching pursuit vy” ˇsetˇruj´ıc´ı existenci P3 komponenty.“ Vyhled´avac´ı dotaz tedy bude obsahovat n´asleduj´ıc´ı kl´ıˇcov´a slova: matching pursuit“, P3“, existence“. ” ” ”
54
V´ysledky
Vyhled´av´an´ı
Pro otestov´an´ı byla vytvoˇrena sada celkem 15 textov´ ych dokument˚ u. Tyto dokumenty jsou podle obsahu kl´ıˇcov´ ych slov rozdˇeleny do n´asleduj´ıc´ıch 3 skupin: 1. Neobsahuj´ıc´ı ˇza´dn´a kl´ıˇcov´a slova dotazu. Ve v´ ysledku vyhled´av´an´ı by se tyto dokumenty nemˇely objevit. 2. Obsahuj´ıc´ı ˇc´ast kl´ıˇcov´ ych slov z dotazu, pˇr´ıpadnˇe aliasy entit P3“ ” a matching pursuit“. Tyto dokumenty by do v´ ysledku vyhled´av´an´ı ” nemˇely b´ yt zahrnuty. 3. Obsahuj´ıc´ı vˇsechna kl´ıˇcov´a slova z dotazu a aliasy entit P3“ a match” ” ing pursuit“. Vˇsechny tyto dokumenty by mˇely b´ yt zahrnuty do v´ ysledku. Dokumenty byly importov´any do KIM Platform pomoc´ı n´astroje populater a pˇres webov´e rozhran´ı byl v sekci Faceted Search“ zad´an v´ yˇse uveden´ y ” vyhled´avac´ı dotaz. Detail v´ ysledku vyhled´av´an´ı je na obr´azku 10.3.
Obr´azek 10.3: Detail v´ ysledku vyhled´av´an´ı entit P3b“, Matching Pursuit“ ” ” a kl´ıˇcov´eho slova existence“. ” Podle pˇredpokladu byly ve v´ ysledc´ıch vyhled´av´an´ı zahrnuty jen dokumenty, kter´e obsahovaly vˇsechna kl´ıˇcov´a slova. Pˇri zad´av´an´ı dotazu je moˇzn´e zad´avat libovoln´ y alias pro vybranou entitu. Kromˇe entit z ontologie je moˇzn´e zadat libovoln´e kl´ıˇcov´e slovo, kter´e bude vyhled´av´ano fulltextovˇe. Vyhled´avac´ı dotaz byl poloˇzen tak´e na dokumentech importovan´ ych z Goˇ ogle Drive a z diskuz´ı na soci´aln´ı s´ıti LinkedIn. Z´adn´ y dokument vyˇsetˇruj´ıc´ı existenci P3 komponenty metodou matching pursuit nebyl v dokumentech z Google Drive zahrnut. Pˇri upˇresˇ nov´an´ı dotazu vˇsak bylo nalezeno nˇekolik dokument˚ u ˇreˇs´ıc´ıch problematiku P3a a P3b komponent.
55
11 Z´avˇer Prvn´ı ˇca´st pr´ace se zab´ yv´a principy a technologiemi s´emantick´eho webu. Popisuje pˇredevˇs´ım struktury, kter´e se pouˇz´ıvaj´ı pro definici ontologi´ı v jazyce OWL, a jejich souvislosti se standardy RDF a RDF Schema. D´ale se tak´e zab´ yv´a moˇznostmi, jak´ ymi lze s´emantick´a data uchov´avat, a jazykem SPARQL, j´ımˇz je moˇzn´e se na uloˇzen´a s´emantick´a data dotazovat. Na prvn´ı ˇca´st navazuje pˇrehled u ´loˇziˇst’ s´emantick´ ych dat (s´emantick´ ych reposit´aˇr˚ u), kter´e jsou v praxi nejv´ıce rozˇs´ıˇren´e a kter´e jsou srovn´avan´e v aktu´aln´ıch testech v´ ykonu. Na z´akladˇe vlastnost´ı a jejich pouˇzit´ı v re´aln´ ych projektech bylo vybr´ano u ´loˇziˇstˇe OWLIM a KIM Platform od spoleˇcnosti Ontotext AD. Produkt KIM Patform umoˇzn ˇuje s´emantick´e anotov´an´ı dokument˚ u na z´akladˇe ontologie, jeˇz je uloˇzena v s´emantick´em reposit´aˇri, kter´ y je souˇca´st´ı KIM Platform. V anotovan´ ych dokumentech je moˇzn´e vyhled´avat a d´ıky vyuˇzit´ı term´ın˚ u z ontologie z´ıskat v´ıce relevantn´ı v´ ysledky neˇz v pˇr´ıpadˇe bˇeˇzn´eho fulltextov´eho vyhled´av´an´ı. Pouˇzit´a ontologie mus´ı vych´azet z ontologie PROTON a pro plnou funkˇcnost produktu mus´ı splˇ novat nˇekolik dalˇs´ıch podm´ınek. S´emantick´e anotov´an´ı vyˇzaduje ontologii, jeˇz obsahuje definice a klasifikaci term´ın˚ u z EEG/ERP dom´eny. Anal´ yzou ontologie, kter´a je v souˇcasnosti pouˇz´ıvan´a v EEG/ERP port´alu, bylo zjiˇstˇeno, ˇze tato ontologie potˇrebn´e term´ıny neobsahuje. Ontologie vytv´aˇren´a v´ yzkumnou skupinou v r´amci organizace INCF bude dostupn´a aˇz v pr˚ ubˇehu l´eta 2013, proto bylo nutn´e pro ovˇeˇren´ı funkˇcnosti ˇreˇsen´ı vytvoˇrit prototypovou ontologii obsahuj´ıc´ı ˇc´ast znalost´ı ERP dom´eny. Pro usnadnˇen´ı tvorby ontologie, jeˇz bude splˇ novat poˇzadavky KIM Platform, byl vytvoˇren n´astroj KIM-OWLImport. Tento n´astroj je schopen naˇc´ıst vybranou ontologii do s´emantick´eho reposit´aˇre v pamˇeti a na z´akladˇe definovan´ ych pravidel ontologii doplnit tak, aby ji bylo moˇzn´e pouˇz´ıt pro s´emantick´e anotov´an´ı. Pro import dokument˚ u do KIM Platform byl vytvoˇren program KIMBridge. Ten bˇeˇz´ı jako sluˇzba na serveru a periodicky stahuje nov´e dokumenty z vybran´ ych zdroj˚ u dat. KIMBridge podporuje stahov´an´ı PDF dokument˚ u z Google Drive a stahov´an´ı textu diskuz´ı na soci´aln´ı s´ıti LinkedIn. Staˇzen´e dokumenty jsou anotov´any a indexov´any v KIM Platform. N´asledn´e vyhled´av´an´ı je umoˇznˇeno d´ıky webov´emu rozhran´ı, kter´e je souˇc´ast´ı KIM. Funkˇcnost vyhled´av´an´ı byla ovˇeˇrena na testovac´ı sadˇe dokument˚ u i na nˇekolika odborn´ ych publikac´ıch o neuroinformatick´em v´ yzkumu. V r´amci pr´ace tak bylo nasazeno a otestov´ano komplexn´ı ˇreˇsen´ı pro s´e56
Z´avˇer
mantick´e anotov´an´ı a vyhled´av´an´ı odborn´ ych dokument˚ u a diskuz´ı na socia´ln´ıch s´ıt´ıch. Toto ˇreˇsen´ı odpov´ıd´a poˇzadavk˚ um v´ yzkumn´e skupiny, a proto byl c´ıl pr´ace splnˇen. V r´amci dalˇs´ıho v´ yvoje je nutn´e nahradit prototypovou ontologii ontologi´ı, jeˇz bude obsahovat vˇetˇs´ı mnoˇzstv´ı kl´ıˇcov´ ych term´ın˚ u z EEG/ERP dom´eny. Jako z´aklad t´eto ontologie je moˇzn´e pouˇz´ıt ontologii vznikaj´ıc´ı v r´amci organizace INCF. Pro automatizovan´ y pˇrevod libovoln´e ontologie do struktury, kter´a odpov´ıd´a ontologii PROTON a kterou vyˇzaduje KIM Platform, je moˇzn´e pouˇz´ıt n´astroj KIM-OWLImport. Ten je snadno rozˇsiˇriteln´ y o dalˇs´ı pravidla a m˚ uˇze se tak st´at plnohodnotn´ ym transformaˇcn´ım n´astrojem.
57
Seznam pouˇ zit´ ych zkratek API ASP BSBM EEG ERP GNU GPL HTML INCF LUBM MIME NIF NLP OUBM OWL PHP REST RDF RMI SOAP SPARQL SQL URI VSP WAR XML XSD
Application Programming Interface Active Server Pages Berlin SPARQL Benchmark Elektroencefalogram Event-Related Potentials GNU’s Not Unix! General Public License HyperText Markup Language International Neuroinformatics Coordinating Facility Lehigh University Benchmark Multipurpose Internet Mail Extensions Neuroscience Information Framework Natural Language Processing Ontology Benchmark Web Ontology Language PHP: Hypertext Preprocessor Representational State Transfer Resource Description Framework Remote Method Invocation Simple Object Access Protocol SPARQL Protocol and RDF Qury Language Structured Query Language Uniform Resource Identifier Virtuoso Server Pages Web application ARchive Extensible Markup Language XML Schema Definition Language
58
Literatura [1] BECKETT, D. RDF/XML Syntax Specification (Revised). Recommendation, W3C, u ´nor 2004. Dostupn´e z: http://www.w3.org/TR/2004/ REC-rdf-syntax-grammar-20040210/. [2] BECKETT, D. – GRANT, J. RDF Test Cases. Recommendation, W3C, u ´nor 2004. Dostupn´e z: http://www.w3.org/TR/2004/ REC-rdf-testcases-20040210/. [3] BECKETT, D. et al. Turtle: Terse RDF Triple Language. Candidate Recommendation, W3C, u ´nor 2013. Dostupn´e z: http://www.w3.org/ TR/2013/CR-turtle-20130219/. [4] BELLEAU, F. et al. Bio2RDF: Towards a mashup to build bioinformatics knowledge systems. Journal of Biomedical Informatics. 2008, 41, 5, s. 706 – 716. Dostupn´e z: http://www.sciencedirect.com/science/ article/pii/S1532046408000415. [5] BERNERS-LEE, T. – CONNOLLY, D. Notation3 (N3), A readable RDF syntax. Team Submission, W3C, bˇrezen 2011. Dostupn´e z: http: //www.w3.org/TeamSubmission/2011/SUBM-n3-20110328/. [6] BIZER, C. – SCHULTZ, A. BSBM V3 Results. Technical report, Freie Universit¨at Berlin, u ´nor 2011. [7] BIZER, C. et al. DBpedia: Querying Wikipedia like a Database, kvˇeten 2007. 16th International World Wide Web Conference Developers Track presentation. Dostupn´e z: http://wifo5-03.informatik. uni-mannheim.de/bizer/pub/DBpedia-WWW2007-draft-slides.pdf. [8] Google Drive API Reference. Google Inc., 2013. [cit. 3. 4. 2013]. Dostupn´e z: https://developers.google.com/drive/v2/reference/. [9] GUHA, R. V. – BRICKLEY, D. RDF Vocabulary Description Language 1.0: RDF Schema. Recommendation, W3C, u ´nor 2004. Dostupn´e z: http://www.w3.org/TR/2004/REC-rdf-schema-20040210/. 59
LITERATURA
LITERATURA
[10] HARRIS, S. – SEABORNE, A. SPARQL 1.1 Query Language. Recommendation, W3C, bˇrezen 2013. Dostupn´e z: http://www.w3.org/TR/ 2013/REC-sparql11-query-20130321/. [11] HICKSON, I. HTML Microdata. Technical Draft, W3C, ˇr´ıjen 2012. Dostupn´e z: http://www.w3.org/TR/2012/WD-microdata-20121025/. [12] HICKSON, I. et al. Microdata to RDF: Transformation from HTML+Microdata to RDF. Interest Group Note, W3C, ˇr´ıjen 2012. Dostupn´e z: http://www.w3.org/TR/2012/ NOTE-microdata-rdf-20121009/. [13] HIRSCH, F. et al. XML Signature Syntax and Processing (Second Edition). Recommendation, W3C, ˇcerven 2008. Dostupn´e z: http: //www.w3.org/TR/2008/REC-xmldsig-core-20080610/. [14] KIRYAKOV, A. et al. Semantic Annotation, Indexing, and Retrieval. In 2nd International Semantic Web Conference. Springer-Verlag Berlin Heidelberg, 2003. Dostupn´e z: http://www.ontotext.com/sites/ default/files/publications/SemAIR_ISWC169.pdf. [15] KOIVUNEN, M.-R. – MILLER, E. W3C Semantic Web Activity [online]. 2001. [cit. 30. 3. 2013]. Dostupn´e z: http://www.w3.org/2001/ 12/semweb-fin/w3csw. ¨ [16] KROTZSCH, M. et al. OWL 2 Web Ontology Language Primer. W3C Recommendation, W3C, prosinec 2012. http://www.w3.org/TR/2012/REC-owl2-primer-20121211/. [17] REST API – LinkedIn Developer Network. LinkedIn Corporation, 2013. [cit. 3. 4. 2013]. Dostupn´e z: http://developer.linkedin.com/rest. [18] Throttle Limits – LinkedIn Developer Network. LinkedIn Corporation, 2013. [cit. 3. 4. 2013]. Dostupn´e z: http://developer.linkedin.com/ documents/throttle-limits. [19] LUCK, S. J. An Introduction to the Event-Related Potential Technique. Cambridge, MA : MIT Press, 1st edition, 2005. ISBN 978-0262621960. [20] MARKVART, F. EEG/ERP port´al – transformace do s´emantick´eho webu. Bakal´aˇrsk´a pr´ace, Z´apadoˇcesk´a univerzita v Plzni, Plzeˇ n, 2011. [21] MILLER, E. – MANOLA, F. RDF Primer. Recommendation, W3C, u ´nor 2004. Dostupn´e z: http://www.w3.org/TR/2004/ REC-rdf-primer-20040210/. 60
LITERATURA
LITERATURA
[22] Ontotext AD. The National Archives: Semantic Knowledge Base [online]. [cit. 21. 10. 2012]. Dostupn´e z: http://www.ontotext.com/case/ nationalArchives-skb. [23] KIM 3.6 Documentation. Ontotext AD, 2013. [cit. 30. 3. 2013]. Dostupn´e z: https://confluence.ontotext.com/display/Kim36Docs. [24] Ontotext AD. Semantic Repository [online]. [cit. 31. 3. 2013]. Dostupn´e z: http://www.ontotext.com/semantic-repository. [25] Ontotext AD. KIM Platform: Knowledge Base Statistics [online]. listopad 2011. [cit. 21. 10. 2012]. Dostupn´e z: http://www.ontotext.com/ sites/default/files/kim/KB_statistics.pdf. [26] OpenLink Software. Virtuoso Universal Server - Feature Comparison Matrix [online]. [cit. 21. 10. 2012]. Dostupn´e z: http://virtuoso. openlinksw.com/features-comparison-matrix/. [27] RAYFIELD, J. Sports Refresh: Dynamic Semantic Publishing [online]. 17. 4. 2012. [cit. 21. 10. 2012]. Dostupn´e z: http://www.bbc.co.uk/ blogs/bbcinternet/2012/04/sports_dynamic_semantic.html. [28] Sesame User Guide: rdf:about Sesame 2. Sesame developers, 2012. [cit. 21. 10. 2012]. Dostupn´e z: http://www.openrdf.org/doc/sesame2/ users/ch01.html. [29] Sesame User Guide: The SeRQL query language (revision 3.1). Sesame developers, 2012. [cit. 4. 4. 2013]. Dostupn´e z: http://www.openrdf. org/doc/sesame2/users/ch09.html. [30] W3C. Vocabularies [online]. [cit. 30. 3. 2013]. Dostupn´e z: http://www. w3.org/standards/semanticweb/ontology. [31] OpenLink Virtuoso – Semantic Web Standards wiki [online]. 2012. [cit. 21. 10. 2012]. Dostupn´e z: http://www.w3.org/2001/sw/wiki/ OpenLink_Virtuoso. [32] W3C OWL Working Group. OWL 2 Web Ontology Language Document Overview (Second Edition). W3C Recommendation, W3C, prosinec 2011. Dostupn´e z: http://www.w3.org/TR/2012/ REC-owl2-overview-20121211/.
61
Pˇ r´ılohy
62
A Ontologie EEG/ERP komponent
63
B Ontologie metod zpracov´an´ı sign´ alu ˇ Autorem seznamu metod, jejich rozˇclenˇen´ı a grafu je Ing. Tom´aˇs Rond´ ık.
64
65
Configurator
1
1
1
1
1
1
1
1
1
1..*
1..*
AbstractConfiguration
FactoryConfiguration
1
1
RepositoryConfiguration
KIMConnector
creates, annotates, and stores
KIMBridgeDocument(kimDocument: KIMDocument)
KIMBridgeDocument
IRepositoryFactory
«interface»
1..*
creates and configures
1
RepositoryConfigurator(config: Configurator) initializeRepositories(bridge: KIMBridge) : void
RepositoryConfigurator
1
registers repositories
creates
1 uploads documents to 1
KIMBridge
0..*
«interface»
getId() : long isNew() : boolean getTitle() : String
IDocument
«interface»
0..*
creates
1
getId() : String getNewDocuments() : List documentIndexed() : void getState() : IRepositoryState setState(state: IRepositoryState) : void
IDocumentRepository
1..*
fetches documents from
1
«interface»
persists
getExtension() : String getData() : byte[]
IBinaryDocument
«interface»
getContents() : String
ITextDocument
«interface»
stores state in
IRepositoryState
KIMBridge(connector: KIMConnector, syncState: SyncStatePersister) annotateNewDocuments() : void
1
1
SyncStatePersister(syncFile: File) load() : void restoreState(repositoryId: String) : IRepositoryState storeState(repositoryId: String, repoState: IRepositoryState) : void save() : void
setConfiguration(configuration: FactoryConfiguration) : void createRepository(id: String, configuration: RepositoryConfiguration) : IDocumentRepository
1 loads repository config 1
KIMConnector(host: String, port: int) getDocument(id: long) : KIMBridgeDocument createDocumentFromString(text: String) : KIMBridgeDocument createDocumentFromBinaryData(bytes: byte[], extension: String) : KIMBridgeDocument annotateDocument(document: KIMBridgeDocument) : void storeDocument(document: KIMBridgeDocument) : void synchronizeDocument(document: KIMBridgeDocument) : void removeDocument(document: KIMBridgeDocument) : void updateDocument(id: long, updatedDocument: KIMBridgeDocument) : KIMBridgeDocument
1
loadDefaults() : void load(configStream: InputStream) : void loadFile(configFile: File) : void getFactories() : Map<String, FactoryConfiguration> getRepositories() : Map<String, RepositoryConfiguration>
CorporaAPI
«interface»
DocumentRepositoryAPI
«interface»
SemanticAnnotationAPI
«interface»
KIMService
«interface»
KIMDocument
«interface»
SyncStatePersister
C UML diagram tˇr´ıd v projektu
KIMBridge
D UML diagram tˇr´ıd v projektu KIM-OWLImport RepositoryManager
RepositoryWrapper creates
createRepository(id: String) : RepositoryWrapper getRepository(id: String) : RepositoryWrapper importSource(source: AbstractSource) : void importSources(sources: List) : void close() : void
importFile(file: File, baseUrl: String, context: String) : void importUrl(owlUrl: String, baseUrl: String, context: String) : void executeGraphQuery(query: String, params: Map<String, Value>) : GraphQueryResult close() : void
imports
FileSourceParams
writeSources(sources: List) : void
AbstractSource(srcTitle: String, owlBaseUrl: String) importToRepository(repository: RepositoryWrapper) : void saveLocation(writer: XMLStreamWriter) : void getTitle() : String getBaseUrl() : String addRule(rule: AbstractRule) : void getRules() : List
URLSourceParams
configures
«interface»
Exporter
AbstractSource
loadXml(reader: XMLStreamReader) : void
FileSource
1
0..*
ISourceParams
URLSource
«interface»
ISourceParamsComponent loads and creates
ProjectWriter
provides
save(sources: List) : void
creates «interface»
ISourceFactory
getCreatedClass() : Class createSource(title: String, baseUrl: String, parameters: ISourceParams) : AbstractSource loadParams(reader: XMLStreamReader) : ISourceParams createGuiComponent() : ISourceParamsComponent
1..*
1
1
SourceManager
registerSourceFactory(factory: ISourceFactory) : void getSourceFactories() : List getFactoryFor(className: String) : ISourceFactory addSource(source: AbstractSource) : void getSources() : List loadProject(inputFile: File, rlManager: RuleManager) : void saveProject(outputFile: File) : void
FileSourceFactory populates URLSourceFactory
provides
AbstractRule
initializes configures ProjectReader
load() : List
«interface»
IRuleParamsComponent
«interface»
IRuleParams 1
1
setRuleParams(params: IRuleParams) : void getRuleParams() : IRuleParams createGuiComponent() : IRuleParamsComponent getStatements() : Iteration<Statement, Exception> getSource() : AbstractSource getTitle() : String getGuiComponent() : IRuleParamsComponent saveParams(writer: XMLStreamWriter) : void getRepository() : RepositoryWrapper
saveXml(writer: XMLStreamWriter) : void loadXml(reader: XMLStreamReader) : void creates
«interface»
RuleManager
IRuleFactory 1
uses to create rules registerFactory(factory: IRuleFactory) : void getFactories() : List getFactoryFor(className: String) : IRuleFactory
66
1..* getCreatedClass() : Class createRule(title: String) : AbstractRule loadParams(reader: XMLStreamReader) : IRuleParams
0..*
E Uˇzivatelsk´a dokumentace k KIM-OWLImport Zdrojov´e k´ody KIM-OWLImport jsou k dispozici ve veˇrejn´em Git reposit´aˇri: https://github.com/NEUROINFORMATICS-GROUP-FAV-KIV-ZCU/KIM-OWLImport
Program je moˇzn´e pˇreloˇzit n´astrojem ant: ant -f owlimport.xml
Ve sloˇzce out/artifacts/OWLImport_jar bude vytvoˇren spustiteln´ y JAR soubor. Do stejn´eho adres´aˇre budou tak´e nakop´ırov´any vˇsechny potˇrebn´e z´avislosti. Hlavn´ı okno programu (obr´azek E.1) je rozdˇeleno do 4 ˇca´st´ı: 1. 2. 3. 4.
N´astrojov´a liˇsta, seznam ontologi´ı, seznam pravidel aktu´alnˇe vybran´e ontologie a nastaven´ı pr´avˇe vybran´eho pravidla.
Obr´azek E.1: Hlavn´ı okno programu Pr´aci s programem je moˇzn´e zaˇc´ıt bud’ naˇcten´ım jiˇz dˇr´ıve vytvoˇren´eho projektu tlaˇc´ıtkem Load Project, nebo rovnou pˇrid´an´ım ontologie tlaˇc´ıtkem Import OWL. Pˇri importu OWL souboru (obr´azek E.2) je nutn´e zadat n´azev ontologie (bude pouˇzit v nab´ıdk´ach a pro vygenerov´an´ı URL d˚ uvˇeryhodn´eho zdroje entit), z´akladn´ı URL ontologie a vybrat jej´ı typ. V souˇcasn´e verzi je podporov´ano pˇrid´av´an´ı soubor˚ u uloˇzen´ ych na disku a ontologi´ı dostupn´ ych pˇres s´ıt’ pomoc´ı protokolu HTTP. 67
Uˇzivatelsk´a dokumentace k KIM-OWLImport
Ontologie m˚ uˇze b´ yt uloˇzen´a v jednom z n´asleduj´ıc´ıch form´at˚ u:
RDF/XML, OWL/XML, Turtle, N-Triples a Notation-3 (N3).
V pˇr´ıpadˇe lok´aln´ıho souboru i ontologie um´ıstˇen´e na webu je nutn´e, aby soubor mˇel pˇr´ıponu odpov´ıdaj´ıc´ı dan´emu form´atu.
Obr´azek E.2: Import ontologie. Pˇridan´a ontologie se objev´ı v seznamu ontologi´ı. Jej´ım vybr´an´ım v seznamu je moˇzn´e definovat pravidla pro export ˇci transformaci ontologie pomoc´ı tlaˇc´ıtka Add Rule. Pˇri pˇrid´av´an´ı pravidla (obr´azek E.3) je nutn´e zadat jeho n´azev, kter´ y bude zobrazen v seznamu, a vybrat typ pravidla. Dalˇs´ı volby konfigurace budou dostupn´e aˇz po pˇrid´an´ı pravidla.
Obr´azek E.3: Pˇrid´an´ı pravidla. Po pˇrid´an´ı pravidla se opˇet objev´ı v seznamu pravidel. Jeho vybr´an´ım je moˇzn´e pravidlo konfigurovat v prav´em panelu. Pˇr´ıklad konfigurace pravidla 68
Uˇzivatelsk´a dokumentace k KIM-OWLImport
je zn´azornˇen na obr´azku E.4. Nˇekter´a pravidla nemaj´ı ˇza´dn´e moˇznosti konfigurace. Pro doplnˇen´ı triplet˚ u k ontologii, kter´a jiˇz m´a strukturu vyˇzadovanou KIM Platform, je nutn´e pˇridat n´asleduj´ıc´ı pravidla: Generate Trusted Source for All Entities a Align Root Classes to Proton Ontology (pouze pokud jiˇz tˇr´ıdy v ontologii nedˇed´ı od tˇr´ıd definovan´ ych v ontologii Proton).
Pravidla pro transformaci ontologi´ı, jeˇz jeˇstˇe nejsou ve struktuˇre pro KIM, jsou z´avisl´a na form´atu ontologie a je nutn´e pro nˇe dodefinovat pravidla programovˇe. Pravidlo je moˇzn´e odstranit jeho vybr´an´ım v seznamu a n´asledn´ ym stiskem tlaˇc´ıtka Remove Rule.
Obr´azek E.4: Konfigurace pravidla. Po pˇrid´an´ı vˇsech ontologi´ı a definici pravidel pro export zb´ yv´a jen prov´est export. Tlaˇc´ıtkem Export lze zah´ajit k exportu vˇsech pˇridan´ ych ontologi´ı podle k nim definovan´ ych pravidel. V´ ysledn´ y soubor je ve form´atu Turtle. Tlaˇc´ıtko Generate Visibility vygeneruje pravidla pro zobrazen´ı tˇr´ıd v ontologii v uˇzivatelsk´em rozhran´ı KIM Platform. Triplety z vytvoˇren´eho souboru je nutn´e pˇridat do visibility.nt v datech KIM. Definovan´a pravidla je moˇzn´e uloˇzit k pozdˇejˇs´ımu pouˇzit´ı pomoc´ı tlaˇc´ıtka Save Project. Do v´ ysledn´eho XML souboru jsou uloˇzeny jen cesty k ontologi´ım, soubory proto mus´ı i po opˇetovn´em otevˇren´ı existovat.
69
F Uˇzivatelsk´a pˇr´ıruˇcka k vyhled´av´an´ı Dokumenty jsou stahov´any z Google Drive a z diskuz´ı v soci´aln´ı s´ıti LinkedIn n´astrojem KIMBridge. Pro staˇzen´ı dokumentu ve form´atu PDF z Google Drive jej staˇc´ı nasd´ılet s uˇzivatelem 380431440078-079h1ai8dhiq3q57ks1og2fuu70f79k4@ developer.gserviceaccount.com. Z LinkedIn jsou stahov´any pˇr´ıspˇevky z n´asleduj´ıc´ıch skupin: Brain Pages – Where Professionals And Consumers Meet For Brain Health1 , Brain-Computer Interface group2 , Computational Neuroscience3 , EEG Signal Processing4 a Neurofeedback5 .
Testovac´ı webov´e rozhran´ı vyhled´av´an´ı je k dispozici na adrese http:// ´ eeg.kiv.zcu.cz:8080/KIM/. Uvodn´ ı obrazovka obsahuje struˇcn´e informace o jednotliv´ ych typech vyhled´av´an´ı a seznam posledn´ıch dokument˚ u. Webov´e rozhran´ı KIM poskytuje n´asleduj´ıc´ı moˇznosti vyhled´av´an´ı: Structure search umoˇzn ˇuje vyhledat ve znalostn´ı b´azi entity, kter´e spln ˇuj´ı definovan´e podm´ınky. Je moˇzn´e urˇcit tˇr´ıdu, omezen´ı jednotliv´ ych datov´ ych atribut˚ u ˇci vztahy k jin´ ym entit´am. Vyhled´av´an´ı tak´e umoˇzn ˇuje vyhledat dokumenty, jeˇz obsahuj´ı v´ yskyty entit splˇ nuj´ıc´ıch dan´e podm´ınky. Tomuto vyhled´av´an´ı je podobn´ y Pattern serach, kter´ y obsahuje pˇreddefinovan´e podm´ınky a vztahy mezi jednotliv´ ymi entitami, do nichˇz jen uˇzivatel vypln´ı hodnoty, kter´e chce vyhledat. Tyto vzory vyhled´av´an´ı jsou vˇsak nadefinov´any pˇr´ımo ve zdrojov´ ych k´odech webov´e aplikaci a nelze je tedy snadno upravovat. Boolean search umoˇzn ˇuje poloˇzit textov´ y dotaz obsahuj´ıc´ı logick´e oper´atory AND a OR. Zadan´e term´ıny jsou vyhled´any v dokumentech fulltextov´ ym vyhled´av´an´ım a aliasy jednotliv´ ych entit nejsou zohlednˇeny. Sekce Ontology zobrazuje ontologii, kter´a je obsaˇzena ve znalostn´ı b´azi. Je moˇzn´e proch´azet jednotliv´e tˇr´ıdy a jejich vlastnosti. 1
http://www.linkedin.com/groups?gid=4166025 http://www.linkedin.com/groups?gid=1103077 3 http://www.linkedin.com/groups?gid=1376707 4 http://www.linkedin.com/groups?gid=959647 5 http://www.linkedin.com/groups?gid=1825465 2
70
Uˇzivatelsk´a pˇr´ıruˇcka k vyhled´av´an´ı
Structure search
Faceted search umoˇzn ˇuje postupnˇe vyb´ırat ze seznam˚ u jednotliv´e entity, jeˇz chceme v dokumentech vyhled´avat, a postupnˇe tak zpˇresˇ novat a filtrovat vyhled´avac´ı dotaz. Pro uˇzivatele jsou nejuˇziteˇcnˇejˇs´ı sekce Structure search a Faceted search, proto budou nyn´ı rozebr´any podrobnˇeji.
F.1
Structure search
Formul´aˇr na vyhled´av´an´ı entit ve znalostn´ı b´azi podle zadan´ ych podm´ınek je zn´azornˇen na obr´azku F.1. Umoˇzn ˇuje definovat podm´ınky podobnˇe jako kdybychom skl´adali SPARQL dotaz.
Obr´azek F.1: Formul´aˇr pro structure search. Jeho funkci pˇredvedeme na 2 pˇr´ıkladech vyhled´av´an´ı: vyhled´an´ı dokument˚ u, kter´e se t´ ykaj´ı ERP komponent souvisej´ıc´ıch se zpracov´an´ım jazyka s kladnou polaritou, a vyhled´an´ı filtraˇcn´ıch metod zpracov´an´ı sign´alu, jeˇz je moˇzn´e pouˇz´ıt ke korekci baseline.
F.1.1
Vyhled´ an´ı dokument˚ u t´ ykaj´ıc´ıch se vybran´ ych komponent
ERP komponenty v ontologii jsou rozdˇeleny do nˇekolika tˇr´ıd. Tyto tˇr´ıdy pˇredstavuj´ı kategorie. Zaˇcneme v´ ybˇerem Language Related Component“ u po” l´ıˇcka X is an“. T´ım urˇc´ıme typ nezn´am´e entity X. ” Po v´ ybˇeru tˇr´ıdy dostaneme v sekci Attribute restrictions“ moˇznost defi” novat omezen´ı pro jednotliv´e vlastnosti entity. ERP komponenty v ontologii maj´ı jedin´ y atribut: polarity“. Ten vybereme v nab´ıdce. V prav´e ˇc´asti for” mul´aˇre pot´e m˚ uˇzeme zadat hodnotu. Pokud bychom tak neuˇcinili, byly by 71
Uˇzivatelsk´a pˇr´ıruˇcka k vyhled´av´an´ı
Structure search
vyhled´av´any pouze komponenty, kter´e maj´ı uvedenou polaritu libovoln´e hodnoty. Webov´e rozhran´ı bohuˇzel neum´ı pracovat s omezen´ımi vlastnost´ı, proto nedostaneme na v´ ybˇer seznam hodnot, jak´ ych m˚ uˇze nab´ yvat. Lze vˇsak vybrat oper´ator starts with“ a n´aslednˇe zadat jen zaˇc´atek slova positive“. ” ” Dalˇs´ı moˇzn´e hodnoty vlastnosti jsou negative“ a variable“. ” ” Vyplnˇen´ y formul´aˇr je zn´azornˇen na obr´azku F.2.
Obr´azek F.2: Vyplnˇen´e hodnoty pro vyhled´an´ı kladn´ ych komponent souvisej´ıc´ıch se zpracov´an´ım jazyka. Vyhled´an´ı provedeme klepnut´ım na tlaˇc´ıtko Documents“ v odd´ıle Search ” ” for“. V´ ysledek je zachycen na obr´azku F.3.
Obr´azek F.3: V´ ysledek vyhled´av´an´ı kladn´ ych komponent souvisej´ıc´ıch se zpracov´an´ım jazyka.
F.1.2
Vyhled´ an´ı metod zpracov´ an´ı sign´ alu podle zadan´ ych podm´ınek
I metody pro zpracov´an´ı sign´alu jsou rozdˇeleny do tˇr´ıd. Pokud chceme vyhledat filtraˇcn´ı metody zpracov´an´ı, kter´e lze pouˇz´ıt ke korekci baseline, m˚ uˇzeme 72
Uˇzivatelsk´a pˇr´ıruˇcka k vyhled´av´an´ı
Structure search
postupovat dvˇema zp˚ usoby: Vybrat pro nezn´ amou entitu X tˇr´ıdu Filter“, jako vztah k nezn´am´e ” entitˇe Y vybrat Method Usage“ a jako n´azev entity Y zvolit baseline ” ” correction“. Vybrat pro nezn´ amou entitu X tˇr´ıdu Signal Processing Method Usa” ge“, jej´ı n´azev zvolit baseline correction“, vztah k entitˇe Y Method“ ” ” a tˇr´ıda entity Y Filter“. ”
V´ ysledky obou dotaz˚ u jsou stejn´e, budou jen prohozeny entity X a Y. Ve druh´em pˇr´ıpadˇe tak´e mus´ıme vybrat v sekci Interested in“ hodnotu X and ” ” Y“, jinak bychom ve v´ ysledku nedostali poˇzadovan´ y seznam metod. Vyplnˇen´ y formul´aˇr pro druh´ y zp˚ usob zad´an´ı je zn´azornˇen na obr´azku F.4.
Obr´azek F.4: Vyhled´an´ı metody zpracov´an´ı sign´alu podle jej´ıho moˇzn´eho pouˇzit´ı. Vyhled´av´an´ı metod zah´aj´ıme tlaˇc´ıtkem Entities“ v sekci Search for“. Tla” ” ˇc´ıtkem Documents“ bychom opˇet vyhled´avali dokumenty, jeˇz obsahuj´ı vy” bran´e entity. V´ ysledek vyhled´av´an´ı je zachycen na obr´azku F.5.
Obr´azek F.5: V´ ysledek vyhled´an´ı filtraˇcn´ıch metod zpracov´an´ı sign´alu, kter´e je moˇzn´e pouˇz´ıt ke korekci baseline.
73
Uˇzivatelsk´a pˇr´ıruˇcka k vyhled´av´an´ı
F.2
Faceted search
Faceted search
Tento typ vyhled´av´an´ı umoˇzn ˇuje postupnˇe filtrovat dokumenty, jeˇz obsahuj´ı v´ yskyty zadan´ ych entit a kl´ıˇcov´ ych slov. Hlavn´ı obrazovka vyhled´av´an´ı je zn´azornˇena na obr´azku F.6. Ve v´ ychoz´ım nastaven´ı umoˇzn ˇuje webov´e rozhran´ı filtrovat pouze entity typu osoba, organizace a m´ısto. Pro filtraci entit typu ERP Component“ ” a Signal Processing Method“ je nutn´e v prav´em horn´ım rohu klepnout na ” odkaz Options“ a vybrat vlastn´ı kategorie pro filtraci. Moˇzn´e nastaven´ı je ” zn´azornˇeno na obr´azku F.7. Po nastaven´ı kategori´ı je moˇzn´e zaˇc´ıt zad´avat n´azvy entit, kter´e chceme v dokumentech vyhledat. V seznamu pod textov´ ym pol´ıˇckem budou viditeln´e dalˇs´ı entity, jeˇz jsou ve zb´ yvaj´ıc´ıch dokumentech jeˇstˇe obsaˇzeny. Jejich v´ ybˇerem m˚ uˇzeme vyhled´av´an´ı postupnˇe upˇresˇ novat. V lev´e ˇca´sti obrazovky je pol´ıˇcko Document keyword filter“. Do nˇej m˚ u” ˇzeme zadat kl´ıˇcov´a slova, kter´a chceme v dokumentech vyhled´avat fulltextovˇe. Pˇr´ıklad v´ ysledku vyhled´av´an´ı je zn´azornˇen na obr´azku 10.3 v sekci V´ ysledky.
Obr´azek F.6: Faceted search.
74
Uˇzivatelsk´a pˇr´ıruˇcka k vyhled´av´an´ı
Faceted search
Obr´azek F.7: Nastaven´ı kategori´ı pro filtraci.
75
G Instalace sluˇzby KIMBridge Zdrojov´e k´ody KIMBridge jsou k dispozici ve veˇrejn´em Git reposit´aˇri: https://github.com/NEUROINFORMATICS-GROUP-FAV-KIV-ZCU/KIMBridge
Program KIMBridge je moˇzn´e zkompilovat n´astrojem ant: ant -f kimbridge.xml
Ve sloˇzce out/artifacts/KIMBridge_jar bude vytvoˇren spusiteln´ y JAR soubor. Do stejn´e sloˇzky budou tak´e pˇribaleny vˇsechny z´avislosti potˇrebn´e pro spuˇstˇen´ı a pˇr´ıklad konfigurace v souboru config.example.xml.
G.1
Spuˇ stˇ en´ı
Pˇred spuˇstˇen´ım sluˇzby KIMBridge je nutn´e nastavit pˇr´ıstupov´e kl´ıˇce k API vzd´alen´ ych sluˇzeb a nastavit jednotliv´e reposit´aˇre. Konfigurace je pops´ana v kapitole 8. Sluˇzba se pˇripojuje k instanci KIM Platform na lok´aln´ım stroji, proto mus´ı b´ yt nastavena na stroj, kde sluˇzba KIM bˇeˇz´ı. KIMBridge m˚ uˇze bˇeˇzet ve dvou reˇzimech: konzolov´a aplikace a linuxov´a sluˇzba. V obou pˇr´ıpadech je nutn´e sluˇzbu pouˇstˇet s n´asleduj´ıc´ımi parametry, jinak nebude Java RMI dostupn´e: -Djava.security.manager -Djava.security.policy=security.policy
G.1.1
Konzolov´ a aplikace
Pˇred spuˇstˇen´ım konzolov´e aplikace je nutn´e vytvoˇrit konfiguraˇcn´ı soubor config.xml a um´ıstit jej do pracovn´ıho adres´aˇre aplikace. Aplikaci je moˇzn´e spustit pˇr´ıkazem java: java -Djava.security.manager -Djava.security.policy=security.policy -jar KIMBridge.jar
Veˇsker´e z´aznamy o pr˚ ubˇehu synchronizace budou vypisov´any do konzole. Bˇeh aplikace je moˇzn´e ukonˇcit kl´avesami Ctrl-C.
G.1.2
Linuxov´ a sluˇ zba
Pro spuˇstˇen´ı v reˇzimu linuxov´e sluˇzby je potˇreba m´ıt nainstalovan´ y n´astroj jsvc. V distribuci Debian je k dispozici ve stejnojmenn´em bal´ıˇcku. Spouˇstˇen´ı a zastavov´an´ı sluˇzby je moˇzn´e inicializaˇcn´ım skriptem, kter´ y je pˇriloˇzen ve 76
Instalace sluˇzby KIMBridge
Spuˇstˇen´ı
sloˇzce init.d se sestaven´ ym JAR souborem. Pˇred jeho pouˇzit´ım je nutn´e nastavit n´asleduj´ıc´ı promˇenn´e na zaˇca´tku inicializaˇcn´ıho skriptu: KB_HOME – sloˇzka s KIMBridge, JDK_HOME – cesta k instalaci Javy, JSVC – cesta ke spustiteln´emu souboru jsvc a CONFIG – um´ıstˇen´ı konfiguraˇcn´ıho souboru. Vˇsechny cesty musej´ı b´ yt uvedeny absolutnˇe. Z´aznamy o bˇehu sluˇzby jsou vypisov´any do soubor˚ u kimbridge.out a kimbridge.err.
77