SlideShare a Scribd company logo
1 of 15
FII Linked Data<br />Barat Mihaela, Mihai Teodora<br />Facultatea de Informatica Iasi<br />Abstract. Aplicatie web care ofera un punct terminal SPARQL pentru interogarea resurelor publice de interes din cadrul FII pe baza unui model de cunostinte privitor la personal, studenti, discipline, locatii, evenimente.<br />Cuvinte cheie: RDF, SPARQL, FII, Virtuoso, Jena, JSP.<br />Tehnologii folosite<br />Aplicatia web a fost implementata folosind tehnologiile Java EE: JSP, Jena API, Jasper Reports. Ca server web s-a folosit Apache Tomcat 7.0, pentru stocarea datelor interogate serverul Virtuoso, iar ca IDE Eclipse Helios.<br />Descrierea succinta a tehnologiilor utilizate<br />Eclipse Helios<br />Eclipse Helios este un IDE open-source ce permite crearea facila de aplicatii in diferite limbaje de programare: Java, C, C++, Perl, PHP, Python etc. Poate rula pe diferite sisteme de operare: Linux, Mac OS X, Solaris, Windows. Un avantaj al acestui IDE este faptul ca utilizatorii pot sa ii extinda capacitatile prin instalarea de plug-inuri scrise pentru Eclipse, precum tool-urile de dezvoltare pentru alte limbaje de programare.<br />Java EE<br />Proiectul a fost dezvoltat folosind JDK 1.5, Apache Tomcat 7.0 ( deoarece are  suport pentru dezvoltarea aplicatiilor web semantice) si JSP (Java Server Pages), care este o modalitate pentru generarea de continut dinamic pe web, si totodata este strategia Java EE pentru generarea prezentarii (View). <br />    O pagina JSP este formata din:<br />Tipar (componenta statica – HTML, XML)<br />Taguri JSP<br />Secvente de cod (scripleturi)<br />RDF & Jena API<br />RDF ( Resource Description Fremework) este un framework pentru descrierea resurselor web, cum ar fi titlul, autorul, continutul si informatiile de copyright ale unei pagini web. Modelul RDF este similar cu alte concepte de modelare si se bazeaza pe ideea crearii de afirmatii despre resurse (resurse web in particular) , sub forma de expresii subiect-predicat-obiect. Acestea sunt cunoscute sub numele de triple in terminología RDF. Subiectul este reprezentat de o resursa, predicatul de trasatura a resursei si exprima o relatie intre subiect si obiect.<br />      Jena este un API Java pentru aplicatiile web semantice. Pachetul Java care trebuie importat este com.hp.hpl.jena.rdf.model. API-ul a fost definit sub forma de interfete, astfel incat codul aplicatiei sa poata lucra cu diferite implementari fara a se recurge la modificari. Pachetul contine interfete pentru reprezentarea modelelor, resurselor, proprietatilor, literalilor si a altor concepte cheie privitoare la RDF, precum si un ModelFactory pentru  crearea modelelor. In acest mod codul aplicatiei ramane independent de implementare.<br />Virtuoso OpenLink<br />Serverul Virtuoso este un server hibrid de baze de date care combina functionalitatea unui RDBMS ( sistem de management pentru base de date relationale), ORDBMS (sistem de management pentru baze de date obiectual-relationale), RDF, XML intr-un singur sistem. Editia open-source al acestui server este cunoscuta ca “OpenLink Virtuoso”.<br />     Virtuoso este alcatuit din doua componente: client si server. Elementele tipice utilizate pentru a comunica cu un server Virtuoso local sau la distanta includ:<br />Driverele Virtuoso pentru ODBC, JDBC, ADO.NET si OLE DB<br />Conductor, o interfata web pentru administrarea bazei de date<br />ISQL ( SQL Interactiv) <br />Documentatie si tutoriale<br />Exemple<br />Acest server pune la dispozitia utilizatorilor o interfata grafica prietenoasa, usor de utilizat. Intefata permite administrarea si configurarea facila a serverului.<br /> <br />Descrierea proiectului<br />In Virtuoso,  datele sunt stocate sub forma de triple ( care sunt formatul pentru Linked Data). Linked data descrie o metoda de a afisa date structurate, astfel incat sa fie interconectate si sa devina mult mai utile. Se bazeaza pe tehnologiile web standard ca HTTP sau URI-uri, dar in loc sa se foloseasca la crearea paginilor web pentru utilizatori, aceasta extinde functionalitatea astfel incat sa fie automat citite de calculatoare.<br />In proiect s-a utilizat principiul linked data, prin crearea unui document RDF ce stocheaza datele de interes referitoare la personalul, studentii, disciplinele, locatiile si evenimentele din cadrul Facultatii de Informatica, Iasi. Documentul RDF a fost validat folosind w3.org – Validator. Instantele prezente in document apartin unor clase precum:<br />Profesor<br />Student<br />Materie<br />Eveniment<br />Sala<br />Concurs<br />GrupaStudent <br />Mai jos sunt prezentate cateva instante ale claselor mentionate:<br /><rdf:Description rdf:about=quot;
#Imagine Cupquot;
><br />   <rdf:type rdf:resource=quot;
#Concursquot;
 /><br /></rdf:Description><br /><rdf:Description rdf:about=quot;
#Grigoras Gheorghequot;
><br />   <esteDecan rdf:resource=quot;
#Facultatea de Informaticaquot;
 /><br />   <rdf:type rdf:resource=quot;
#Decanquot;
/><br /></rdf:Description><br /><rdf:Description rdf:about=quot;
#Grupa Master2 ISSquot;
><br />   <rdf:type rdf:resource=quot;
#GrupaStudentquot;
 /><br /></rdf:Description><br />Relatiile dintre clase<br />Aplicatia permite, printre altele, afisarea tuturor colaboratorilor, asistentilor, profesorilor, personalului asociat, studentilor. Pentru a exemplifica relatia dintre acestia a fost definita clasa Persoana, care are ca subclase clasele: Colaborator, Asistent, Staff, Profesor, Student. Fragmentul de cod care prezinta cele mentionate mai sus este urmatorul:<br /><rdfs:Class rdf:ID=quot;
Persoanaquot;
 ><br /></rdfs:Class><br /><rdfs:Class rdf:ID=quot;
Profesorquot;
>       <br />   <rdfs:subClassOf rdf:resource=quot;
http://www.infoiasi.ro#Persoanaquot;
 /><br /></rdfs:Class> <br /><rdfs:Class rdf:ID=quot;
Asistentquot;
>       <br />   <rdfs:subClassOf rdf:resource=quot;
#Persoanaquot;
 /><br /></rdfs:Class><br /><rdfs:Class rdf:ID=quot;
Colaboratorquot;
>       <br />   <rdfs:subClassOf rdf:resource=quot;
#Persoanaquot;
 /><br /></rdfs:Class><br /><rdfs:Class rdf:ID=quot;
Staffquot;
>       <br />   <rdfs:subClassOf rdf:resource=quot;
#Persoanaquot;
 /><br /></rdfs:Class><br /><rdfs:Class rdf:ID=quot;
Studentquot;
>       <br />   <rdfs:subClassOf rdf:resource=quot;
#Persoanaquot;
 /><br /></rdfs:Class><br />Fiecare clasa are o serie de proprietati  reprezentative, ce au rolul de a evidentia trsaturile clasei in cauza; de exemplu clasa Materie are urmatoarele proprietati: areProfSeminar, areProfCurs, iar o instanta a sa are urmatoarea forma: <br /><rdf:Description rdf:about=quot;
Algoritmi si Programarequot;
><br />   <rdf:type       rdf:resource=quot;
http://www.infoiasi.ro#Materiequot;
 /><br />   <areProfSeminar rdf:resource=quot;
Necula Raluca; Necula Emilianquot;
/><br />   <areProfCurs rdf:resource=quot;
Lucanu Dorelquot;
/><br /></rdf:Description><br />Afisarea informatiilor<br />Pentru afisarea informatiilor a fost necesara interogarea documentului RDF cu ajutorul limbajului SPARQL (este un limbaj descriptiv standardizat pentru realizarea de interogari pe baza potrivirilor de sabloane referitoare la triple RDF; este inspirit din RDQL si este oferit de Jena, RAP, Redland) . <br />De exemplu, interogarea SPARQL necesara pentru aflarea tuturor colaboratorilor in ordine alfabetica, precum si a trasaturilor acestora,  din cadrul FII are urmatoarea forma: <br />query = quot;
prefix fii:<http://www.infoiasi.ro#> prefix rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> select distinct ?a ?b ?c where {?a rdf:type fii:Colaborator. ?a fii:areEmail ?b. ?a fii:areUrl ?c. }order by ?aquot;
;  <br />Instructiunile java care proceseaza rezultatul din urma interogarii SPARQL de mai sus sunt:<br />QueryExecution e = QueryExecutionFactory.sparqlService( service, query );<br />ResultSet results = e.execSelect();<br />while ( results.hasNext() ) {<br />QuerySolution s = results.nextSolution();<br />System.out.println(quot;
Afisare s:quot;
+s);<br />String nume = s.getResource(quot;
aquot;
).toString();<br />System.out.println(nume);<br />System.out.println(quot;
Am ajuns la e-mailquot;
);<br />String email = s.getResource(quot;
bquot;
).toString();<br />System.out.println(email);<br />String url = s.getResource(quot;
cquot;
).toString();%><br /><tr><br /><td><br /><% out.println(nume.toString()); %><br /></td><br /><td><br /><% out.println(email.toString()); %><br /></td><br /><td><br /><a href=quot;
http://<% out.println(url.toString());%>quot;
 target=quot;
_blankquot;
><% out.println(url.toString());%></a><br /></td><br /></tr><br /><% }<br />e.close();<br />Colaboratorii din cadrul aplicatiei FII Linked Data sunt afisati in tabelul de mai jos:<br />Functionalitatea aplicatiei<br />Aplicatia FII Linked Data are, printre altele, urmatoarele functionalitati:<br />Prima pagina (index.jsp) afiseaza cele mai recente stiri si evenimente cu toate informatiile aferente lor;<br />             <br /> Pagina filtered.jsp are un combobox de unde utilizatorul poate selecta o anumita optiune (All Staff / Teachers / Collaborators / Assistants), iar la apasarea butonului Submit vor aparea datele aferente optiunii respective;<br />  Pagina students.jsp permite afisarea informatiilor foarte utile studentilor ca: toate grupele existente impreuna cu coordonatorii acestora si numarul de studenti prezenti in fiecare grupa; toate materiile impreuna cu profesorii care predau materia respectiva la seminar/ laborator si la curs;<br />se poate observa sa exista materii care pot avea la seminar/ laborator unul sau mai multi profesori/colaboratori/asistenti;<br />Pagina resources.jsp prezinta: toate salile din cadrul FII Linked Data, tipul lor (curs/seminar/laborator/amfiteatru) si etajul la care sunt situate; o parte din cartile cele mai utile studentilor (acestea sunt identificate printr: titlu, autor, tema, descriere, data publicarii, format); concursurile care tocmai s-au desfasurat sau urmeaza sa se desfasoare cat mai repede;<br />Pagina contact.jsp afiseaza decanul, prodecanii, personalul asociat din cadrul FII Linked Data precum si cateva linkuri utile pentru utilizator; Staff-ul tehnic si administrativ  are asociate in documentul RDF proprietati ca: areFunctie, areEmail; <br />Vocabulare de meta-date <br />In aplicatia FII Linked Data este utilizat vocabularul de meta-date DCMI (Dublin Core Metadata Initiative care contine proprietati pentru descrierea  resurselor) la crearea modelului de cunostinte privitor la cartile cele mai utile studentilor; <br /> <rdf:Description rdf:about=quot;
Programarea retelelorquot;
><br />    <dc:Title><br />      Atelier de programare in retele de calculatoare<br />    </dc:Title><br />    <dc:Creator><br />      Sabin Buraga<br />    </dc:Creator><br />    <dc:Subject><br />     networks,network programming,client/server,signals<br />    </dc:Subject><br />    <dc:Description><br />      An introduction in network programming using socket interface BSD. <br />    </dc:Description><br />    <dc:Date><br />      2005-01-08<br />    </dc:Date><br />    <dc:Format><br />      text/html<br />    </dc:Format><br />  </rdf:Description><br />Interogarea SPARQL care afiseaza toate cartile si detaliile acestora are urmatoarea forma:<br />query = quot;
prefix fii:<http://www.infoiasi.ro#> prefix rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> prefix dc:<http://purl.org/dc/elements/1.1/> select distinct ?b ?c ?d ?e ?f ?g  where {?a dc:Title ?b. ?a dc:Creator ?c. ?a dc:Subject ?d. ?a dc:Description ?e. ?a dc:Date ?f. ?a dc:Format ?g } order by ?aquot;
;  <br />Rezultatul efectiv al acestei interogari este prezentat in imaginea de mai jos:<br />Interfata & meniul aplicatiei<br />Interfata aplicatiei este simpla, dispune de un meniu prietenos, astfel incat utilizatorul sa poata naviga si  sa poata cauta cu usurinta informatiile de interes;<br />Elementele importante ale interfetei (de exemplu meniul=element de navigatie) sunt vizibile, exista consistenta de la o pagina la alta (prin utilizarea unui template) pentru a reduce incarcarea memoriei si pentru a nu forta utilizatorul sa nu se refamiliarizeze cu interfata la fiecare schimbare de pagina;<br />Meniurile, link-urile ajuta la localizarea informatiei, astfel incat userul sa poata gasi repede si cu usurinta datele dorite;<br />Imaginea de mai jos reprezinta meniul aplicatiei:<br />Se poate observa ca meniul are 5 optiuni (Home, Academic Staff, Students, Resources, Contact) fiecare din ele permitand afisarea anumitor categorii de date. De exemplu optiunea Academic Staff listeaza tot personal din cadrul FII, toti colaboratorii, asistentii, profesorii, <br />Prima pagina a aplicatiei (index.jsp), ce contine printre altele si cele mai recente stiri din cadrul FII Linked Data, permite citirea in intregime a unei stiri de interes prin simpla apasare pe link-ul intitulat “read more”, asa cum este ilustrat in imaginea urmatoare:<br />Generarea de rapoarte cu JasperReports<br />In cadrul aplicatiei este posibila si generarea de diferite rapoarte :  lista tuturor profesorilor din facultate, lista referitoare cu grupele de studenti sau lista de cursuri predate in cadrul facultatii. Pentru aceasta s-a folosit biblioteca Jasper Reports si tool-ul iReport. Pentru a putea genera rapoartele cu date provenind din rdf-ul stocat pe serverul Virtuoso, a fost nevoie intai de crearea de java beanuri, care nu sunt altceva decat clase avand ca metode doar getteri si setteri.<br />Mai jos este prezentat bean-ul referitor la cursurile din facultate :<br />package Staff;<br />public class Course {<br />private String course;<br />private String courseTeacher;<br />private String labTeacher;<br />public String getCourse() {<br />return course;<br />}<br />public void setCourse(String course) {<br />this.course = course;<br />}<br />public String getCourseTeacher() {<br />return courseTeacher;<br />}<br />public void setCourseTeacher(String         courseTeacher) {<br />this.courseTeacher = courseTeacher;<br />}<br />public String getLabTeacher() {<br />return labTeacher;<br />}<br />public void setLabTeacher(String labTeacher) {<br />this.labTeacher = labTeacher;<br />}<br />}<br />Atunci cand graful rdf este interogat in aplicatie, este populata o lista avand ca obiecte entitati din bean-ul respectiv . La sfarsitul interogarii, dupa ce lista s-a populat cu datele din rdf, este apelat un fisier cu extensia jrmxl (creat cu ajutorul tool-ului iReport) si generat raportul in format PDF, XML SI HTML. Codul pentru crearea unui astfel de raport este prezentat mai jos :<br />FileInputStream inputStream = new FileInputStream (quot;
G:/report/Courses.jrxmlquot;
);<br /> <br />JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(courses);  <br />JasperDesign jasperDesign = JRXmlLoader.load(inputStream);<br /> JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign;  <br /> JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(), beanColDataSource); <br />JasperExportManager.exportReportToPdfFile(jasperPrint, quot;
G:/report/all_courses.pdfquot;
); <br />JasperExportManager.exportReportToXmlFile(jasperPrint,quot;
G:/report/all_courses.xmlquot;
,false);<br />JasperExportManager.exportReportToHtmlFile(jasperPrint,quot;
G:/report/all_courses.htmlquot;
);<br />Raportul astfel creat este salvat pe disc si poate fi accesat. Mai jos este prezentata o imagine a unui raport in format pdf generat de aplicatie:<br />   <br />   <br />Bibliografie<br />,[object Object]
http://jena.sourceforge.net/documentation.html
http://jena.sourceforge.net/tutorial/RDF_API/
http://www.w3.org/TR/rdf-sparql-query/
http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/
http://en.wikipedia.org/wiki/Virtuoso_Universal_Server
http://www.infoiasi.ro/bin/Main/
Fii linked data
Fii linked data
Fii linked data
Fii linked data
Fii linked data
Fii linked data
Fii linked data
Fii linked data

More Related Content

Similar to Fii linked data

Fii linked data
Fii linked dataFii linked data
Fii linked datateodora001
 
Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHP
Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHPStudiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHP
Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHPaledi
 
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2Diana Tataran
 
Dezvoltarea Aplicatiilor Web
Dezvoltarea Aplicatiilor WebDezvoltarea Aplicatiilor Web
Dezvoltarea Aplicatiilor Webdanielnastase
 
Herea Adrian Open Calais
Herea Adrian Open CalaisHerea Adrian Open Calais
Herea Adrian Open CalaisHerea Adrian
 
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...Sabin Buraga
 
Procesarea Rdf in .NET
Procesarea Rdf in .NETProcesarea Rdf in .NET
Procesarea Rdf in .NETancaantochi
 
Programarea aplicațiilor distribuite
Programarea aplicațiilor distribuiteProgramarea aplicațiilor distribuite
Programarea aplicațiilor distribuite Dumitru Maros
 
Documentatie Your Academic Tasks
Documentatie Your Academic TasksDocumentatie Your Academic Tasks
Documentatie Your Academic TasksAlice Burdujanu
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Sabin Buraga
 
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...Sabin Buraga
 
Javascript ajax tutorial
Javascript ajax tutorialJavascript ajax tutorial
Javascript ajax tutorialVlad Posea
 

Similar to Fii linked data (20)

Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHP
Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHPStudiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHP
Studiu Comparativ Privind API-urile de Procesare RDF Inplementate in PHP
 
Music Finder
Music FinderMusic Finder
Music Finder
 
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
 
Dezvoltarea Aplicatiilor Web
Dezvoltarea Aplicatiilor WebDezvoltarea Aplicatiilor Web
Dezvoltarea Aplicatiilor Web
 
Herea Adrian Open Calais
Herea Adrian Open CalaisHerea Adrian Open Calais
Herea Adrian Open Calais
 
Webappdev
WebappdevWebappdev
Webappdev
 
Irina Cureraru
Irina CureraruIrina Cureraru
Irina Cureraru
 
Catalog online
Catalog onlineCatalog online
Catalog online
 
Flori x
Flori xFlori x
Flori x
 
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...
 
ARC vs RAP
ARC vs RAPARC vs RAP
ARC vs RAP
 
Procesarea Rdf in .NET
Procesarea Rdf in .NETProcesarea Rdf in .NET
Procesarea Rdf in .NET
 
Web todo
Web todo Web todo
Web todo
 
Programarea aplicațiilor distribuite
Programarea aplicațiilor distribuiteProgramarea aplicațiilor distribuite
Programarea aplicațiilor distribuite
 
Documentatie Your Academic Tasks
Documentatie Your Academic TasksDocumentatie Your Academic Tasks
Documentatie Your Academic Tasks
 
Licenta web aplicatie.pptx
Licenta web aplicatie.pptxLicenta web aplicatie.pptx
Licenta web aplicatie.pptx
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
 
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...
 
Javascript ajax tutorial
Javascript ajax tutorialJavascript ajax tutorial
Javascript ajax tutorial