1. Studiu Comparativ Vizand Procesarea RDF pentru Platforma Java
Gheorghita Raluca
Programatorii Java ce doresc sa dezvolte aplicatii Web semantice au acum un set mare de
instrumente si librarii din care sa aleaga. In acest raport, vom discuta despre trei din cele mai
importante instrumente, vizand posibiltatile lor de a realiza procesare RDF.
Vom lua in considerare diferite aspecte, precum maniera de stocare a triplelor, suportul pentru
realizarea de interogari SPARQL, suportul oferit programatorilor (de exemplu, documentatie,
integrare in mediul de dezvoltare, curba de invatare,...), performanta (e.g., viteza de procesare,
eficienta interogarilor etc.), interoperabilitatea, maturitatea implementarii, maniera de
licentiere.
Din multitudinea de framework-uri, vom analiza trei mai populare si reprezentative: Jena,
Sesame si Mulgara.
Jena
Jena este un framework Java util in realizarea de aplicatii Web semantic. Furnizeaza un mediu
de programare pentru RDF (Resource Description Framework), RDFS (RDF Schema) si OWL (Web
Ontology Language), SPARQL (SPARQL Protocol and RDF Query Language) si include un motor
de inferente bazat pe reguli.
Jena include:
1. Un API pentru manipularea de grafuri RDF
2. Suport pentru multiple motoare de inferenta – OWL-DL, OWL-Lite si RDF Schema
3. Suport pentru multiple sisteme de persistenta back-end, incluzand
a. suport nativ pentru grafuri stocate in memorie
b. sistem de persistenta in tabele RDBMS, implementat pentru Oracle, SQL Server,
MySQL, Postgres etc.
4. Suport pentru limbajul de interogare SPARQL
2. 5. Server software (Joseki) ce suporta limbajul de interogare SPARQL
Sesame
Sesame este un framework open source pentru stocarea, inferenta si interogarea datelor RDF.
Sesame ofera:
1. Un API pentru manipularea de grafuri RDF
2. Server software ce suporta limbajul de interogare SeRQL
3. Support pentru un sistem de stocare properietar, bazat pe fisiere
4. Inferente realizate cu RDF Schema
Mulgara/Kowari
Mulgara Semantic Store reprezinta un sistem de stocare open source, foarte scalabil, ce ofera siguranta
tranzactiilor, construit cu scopul de a stoca si extrage date RDF, scris in Java. Reprezinta o ramura activa
a framework-ului Kowari.
Mulgara ofera:
1. Un server ce suporta limbajul de interogar/updatare Itql
2. Un sistem de persistenta proprietar back-end
Stocarea Triplelor RDF
Exista trei tipuri de metode de stocare a triplelor RDF: in memorie, nativa si in baze de date
externe. Stocarea in memorie presupune salvarea grafurilor RDF in memoria principala. Aceasta
metoda nu este utila in cazul stocarii volumelor foarte mari de date. Totusi, acest tip poate fi
folosit pentru realizarea diferitelor operatii precum salvarea temporara a datelor de pe site-uri
si realizarea de inferente. A doua categorie este cea nativa, bazata pe stocarea persistenta a
triplelor folosind implementari proprii ale bazelor de date. Cea din urma categorie presupune
utilizarea unor baze de date externe, cum ar fi MySQL, PostgreSQL, Oracle etc. in vederea
stocarii triplelor.
Jena implementeaza API-uri pentru manipularea tehnologiilor precum RDF si OWL. Clasa
fundamentala oferita utilizatorilor este clasa Model, un API utilizat in manipularea seturilor de
3. triple RDF. Un Model poate fi creat din sistemul de fisiere sau dintr-un fisier remote. Utilizand
JDBC, acesta poate fi legat de un sistem relational de gestiune a bazelor de date precum MySQL
sau PostgreSQL.
Pe langa stocarea in memorie, Jena propune doua subsisteme de stocare a datelor RDF si OWL:
SDB si TDB.
TDB este un motor nativ de persistenta, netranzactional, de perfomanta ridicata, ce utilizeaza
un motor Java pur. SDB este un nivel de persistenta ce foloseste o baza de date SQL si suporta
tranzactii ACID complete. Din cele doua, TDB este mai usor si mai rapid de setat.
TDB, nivelul de persistenta pentru stocarea grafurilor, a fost folosit pentru incarcarea versiunii
13.4 a bazei de date UniProt (1.7 miliarde de triple) pe o singura masina cu un singur procesor
pe 64 biti.
SDB este o componenta a framework-ului Jena ce ofera persistenta scalabila si interogarea
seturilor de date RDF folosind baze de date SQL conventionale in aplicatii de sine statatoare,
J2EE si alte framework-uri de aplicatii. SDB este conceput in mod specific sa suporte SPARQL.
Baze de date suportate (cu versiunile lor anterioare), includ:
Oracle 10gR@ incluzand Oracle Express
Microsoft SQL Server 2005 incluzand SQL Server Express
IBM DB2 inlcuzand DB2 Express
PostgreSQL v8
MySQL 5.0
HSQLDB 1.8
H2 1.0.73
Apache Derby 10.2
Datele stocate cu SDB pot fi accesate si manipulate cu scripturile puse la dispozitie si prin
intermediul API-ului Jena. In afara de aceasta modalitate prin intermediul API-ului Jena, SDB
poate fi legat de serverul web Joseki, server de interogari SPARQL. Acest lucru ofera
posibilitatea interogarii datelor stocate cu SDB prin HTTP.
Surse Web (http://esw.w3.org/topic/LargeTripleStore) indica faptul ca Jena SDB poate incarca
pana la 650 de milioane de triple RDF.
La fel ca si Jena, Sesame ofera suport pentru toate cele trei moduri de stocarea a triplelor.
Exista, totusi, cateva mici diferente: pentru stocarea in sisteme relationale de baze de date,
Sesame suporta MySQl si PostgreSQL, spre deosebire de Jena ce ofera suport pentru mult mai
multe sisteme relationale de baze de date. In ceea ce priveste stocarea nativa, Sesame propune
4. Sesame Native. Este mai putin scalabil decat TDB-ul oferit de Jena, acest fapt fiind demonstrat
si de surse web ce confirma testarea acestuia cu pana la 70 de milioane de triple RDF, spre
deosebire de Jena TDB care functioneaza cu 1.7 miliarde de triple
(http://esw.w3.org/topic/LargeTripleStore).
Spre deosebire de Jena si Sesame, Mulgara nu se bazeaza pe o stocare intr-o baza de date
relationala datorita numarului mare de join-uri intre tabele intr-un sistem relational atunci cand
se lucreaza cu metadate. In schimb, Mulgara este o noua baza de date optimizata pentru
managementul metadetelor. Modelele Mulgara stocheaza metadatele sub forma unor
declaratii de tipul subiect-predicat-obiect, asemanator cu standardul RDF. Metadatele pot fi
importate si exportate din Mulgara in format RDF sau Notation 3. In vederea realizarii acestor
operatii, Mulgara ofera un API de conectare. Surse web confirma faptul ca Mulgara este capabil
sa stocheze pana la 500 de milioane de triple.
Suportul pentru Realizarea de Interogari SPARQL
SPARQL este un limbaj de interogare RDF, considerat o tehnologie cheie in web-ul semantic.
Majoritatea sistemelor de stocare a triplelor RDF ofera suport pentru SPARQL, fie in forma
nativa a acestuia, fie prin limbaje ce au la baza SPARQL.
In Jena, suportul pentru realizarea interogarilor SPARQL este oferit prin intermediul motorului
de interogari ARQ, o implementare proprie a limbajului SPARQL. Pe langa sintaxa standard
SPARQL, ARQ permite si alte operatii suplimentare, aducand astfel extensii limbajului standard;
ca si caracteristici noi sau modificate putem aminti Sparql/Update (un limbaj pentru update-uri
bazat pe SPARQL), extensii ale algebrei SPARQL, functii de filtrare si cautare customizate, functii
de agregare, grupare si asignare etc. Pe langa accesul direct la date, exista si posiblitatea de a
utiliza un server de interogari SPARQL, Joseki, ce permite interogari ale datelor stocate cu SDB
prin http.
Sesame foloseste SeRQL (Sesame RDF Query Language), un nou limbaj RDF/RDFS dezvoltat de
Aduna ca parte a Sesame. Combina cele mai bune caracteristici ale altor limbaje de interogare
(RQL, RDQL etc) si adauga unele proprii, cum ar fi transformari ale grafurilor, suport pentru RDF
si XML etc. In ultima versiune, SeRQL a fost modificat pentru a semana mai mult cu SPARQL,
adoptand semantica si operatorii acestuia. De asemenea, si SPARQL a adoptat unele
caracteristici ale SeRQL.
Mulgara suporta doua moduri de acces la triple, folosind interogari TQL si mai recent SPARQL.
Accesul poate fi facut prin intermediul API-urilor ca Jena sau Sesame sau folosind iTQL, SOAP
etc.
5. Suportul Oferit Programatorilor
Majoritatea sistemelor de procesare RDF sunt open source si beneficiaza de suportul unor
intregi comunitati. Mai toate ofera posibilitatea de a posta intrebari, de a raporta probleme si
de a contribui activ la dezvoltare.
Jena dispune de o documentatie bine pusa la punct, de stabilitate si vechime, si o popularitate
datorata mai ales suportului pentru o gama larga de sisteme relationale de baze de date. De
asemenea, Jena ofera suport OWL, ceea ce ii ofera un plus in optiunile celor ce sunt interesati
de aceasta caracteristica.
Cu toate acestea, Sesame capata din ce in ce mai multa popularitate, datorita unei arhitecturi
moderne, modulare, integrare cu framework-ul Spring si posibilitatea de testare a interogarilor
direct din browser (folosind Tomcat). De asemenea, Sesame dispune de o comunitate in
crestere, documentatie complet actualizata si detaliata
Mulagra a intampinat, la inceput, o usoara reticenta din partea comunitatii, datorita
desprinderii din Kowari insa a castigat rapid teren, datorita scalabilitatii crescute si integrarii cu
celelalte API-uri. In momentul de fata, documentatia acestuia este migrata catre una de tip wiki,
care este relativ incompleta; in schimb este prezenta si vechea documentatie, mult mai
completa si detaliata.
Performanta si Interoperabilitate
Desi Jena dispune de cea mai mare scalabilitate si respecta indeaproape protocolul si sintaxa
SPARQL, acest fapt face ca acesta sa fie mai incet decat celelalte sisteme; este un compromis al
vitezei in fata scalabilitatii iar in cazul SDB acest lucru se datoreaza in principal utilizarii unor
baze de date externe, SDB fiind doar loaderul. Acest lucru nu ii permite optimizare pentru un
anumit tip de baza de date, generalizarea contribuind la viteza redusa. Sesame, desi comparabil
cu Jena, nu este la fel de scalabil dar este mai rapid (in special Sesame Native). Mulgara nu
dispune de un API propriu, de aceea perfomantele sale sunt strans legate de performantele API-
ului folosit. In ceea ce privestea scalabilitatea, Mulgara a intampinat probleme de incarcare a
unor seturi de date foarte mari folosind API-uri, de aceea documentatia oficiala sugereaza
incarcarea acestora folosind scripturile proprii.
In prezent, Jena si Sesame sunt cele mai populare implementari pentru procesarea datelor RDF.
Deoarece nu exista niste specificatii ale unui API pentru RDF acceptate de comunitatea java,
programatorii folosesc ori API-ul Jena, ori API-ul Sesame pentru a afisa, interoga, sau a face
inferente peste triplele RDF. Prin urmare, codul sursa rezultat al aplicatiei RDF este strans legat
ori de API-ul Jena, ori de API-ul Sesame.
6. Interoperabilitatea intre Jena si Sesame apare ca o problema atunci cand o aplicatie bazata pe
API-ul Jena are nevoie sa acceseze un back-end Sesame, sau o aplicatie bazata pe API-ul Sesame
necesita accesarea unui back-end Jena. Aceasta problema se rezolva partial cu Sesame-Jena
Adapter, ce ofera acces la un model Jena prin API-ul Sesame SAIL (The Storage And Inference
Layer).
Modelul Jena Sesame (JSM) considera problema interoperabilitatii dintre Jena si Sesame intr-o
alta maniera. JSM furnizeaza acces la un depozit Sesame prin intermediul API-ului Jena. JSM are
urmatoarele caracteristici:
JSM se conformeaza cu Jena Model API;
JSM se conformeaza cu Jena Graph SPI;
Intern, JSM opereaza pe un deposit Sesame;
JSM suporta limbajul de interogare RDQL cu exceptia expresiilor regulate.
Maturitatea Implementarii si Maniera de Licentiere
Din toate framework-urile amintite, Jena se bucura de cea mai matura implementare; mai mult
de atat, ofera suport back-end pentru o multitudine de baze de date, care, de asemenea, aduc
un aport de maturitate intregului sistem (ex. Oracle, SQL Server, DB2). Cu toate ca Sesame nu
beneficiaza de o aceeasi maturitate a implementarii, este o alternativa din ce in ce mai viabila,
intrucat abaterea sa de la specificatiile respectate cat mai strict de Jena a permis optimizari si o
arhitectura moderna si modularizata. Mulgara a urmat un traseu al maturizarii diferit fata de
celelalte doua sisteme, prin desprindere acestuia de Kowari, a carui continuitate a fost
intrerupta intre timp.
Jena este distribuit sub o licenta de tip BSD, ce permite modificarea si distribuirea pachetelor si
surselor; de asemenea Jena utilizeaza subsisteme cu licente de tip Common Public License,
Apache2 si IBM X (http://jena.sourceforge.net/license.html,
http://jena.sourceforge.net/Licenses/index.html).
Sesame este de asemenea distribuit sub o licenta de tip BSD, incluzand si software dezvoltat
sub licenta Apache si LGPL (http://www.openrdf.org/license.jsp )
Mulgara este distribuit sub licenta OSL, aleasa pentru compatibilitatea cu licenta MPL a Kowari.
Noul cod este scris sub licenta Apache 2, care este compatibil cu OSL si mult mai popular in
cadrul comunitatii. (http://mulgara.org/developers.html )
7. Desi Jena este unul din cele mai stabile, scalabile, ofera suport pentru foarte multe sisteme de
baze de date, si respecta cat mai strict protocolul si specificatiile SPARQL, tocmai acest fapt il
face sa fie mai lent si mai rigid, fapt care a indreptat atentia dezvoltatorilor mai mult catre
Sesame, cu o arhitectura moderna, modulara, o scalabilitate mai scazuta dar performante la
capitolul viteza. Mulgara reprezinta si el un sistem de stocare cunoscut dar nu se bucura de
aceeasi popularitate precum clasicele sisteme de baze de date.
Referinte:
http://www.openrdf.org/
http://www.mulgara.org/
http://jena.sourceforge.net/
http://esw.w3.org/topic/LargeTripleStores
http://www.bioontology.org/wiki/images/6/6a/Triple_Stores.pdf
http://openjena.org/wiki
http://www.pnl.gov/main/publications/external/technical_reports/PNNL-17237.pdf
http://en.wikipedia.org
http://www.2paths.com/2008/12/30/mulgara-rdf-store/