Fii linked data

17
FII Linked Data Barat Mihaela, Mihai Teodora Facultatea de Informatica Iasi 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. Cuvinte cheie: RDF, SPARQL, FII, Virtuoso, Jena, JSP. Tehnologii folosite 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. Descrierea succinta a tehnologiilor utilizate Eclipse Helios 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.

description

 

Transcript of Fii linked data

Page 1: Fii linked data

FII Linked Data

Barat Mihaela, Mihai Teodora

Facultatea de Informatica Iasi

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.

Cuvinte cheie: RDF, SPARQL, FII, Virtuoso, Jena, JSP.

1 Tehnologii folosite

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.

2 Descrierea succinta a tehnologiilor utilizate

2.1 Eclipse Helios

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.

2.2 Java EE

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

Page 2: Fii linked data

FII Linked DATA

continut dinamic pe web, si totodata este strategia Java EE pentru generarea prezentarii (View).

O pagina JSP este formata din:

Tipar (componenta statica – HTML, XML) Taguri JSP Secvente de cod (scripleturi)

2.3 RDF & Jena API

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.

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.

2.4 Virtuoso OpenLink

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”.

Virtuoso este alcatuit din doua componente: client si server. Elementele tipice utilizate pentru a comunica cu un server Virtuoso local sau la distanta includ:

Driverele Virtuoso pentru ODBC, JDBC, ADO.NET si OLE DB

Conductor, o interfata web pentru administrarea bazei de date ISQL ( SQL Interactiv)

Page 3: Fii linked data

FII Linked DATA

Documentatie si tutoriale Exemple

Acest server pune la dispozitia utilizatorilor o interfata grafica prietenoasa, usor de utilizat. Intefata permite administrarea si configurarea facila a serverului.

3 Descrierea proiectului

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.

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:

Profesor Student Materie Eveniment Sala Concurs GrupaStudent

Page 4: Fii linked data

FII Linked DATA

Mai jos sunt prezentate cateva instante ale claselor mentionate:

<rdf:Description rdf:about="#Imagine Cup"> <rdf:type rdf:resource="#Concurs" /></rdf:Description>

<rdf:Description rdf:about="#Grigoras Gheorghe"> <esteDecan rdf:resource="#Facultatea de Informatica" /> <rdf:type rdf:resource="#Decan"/></rdf:Description>

<rdf:Description rdf:about="#Grupa Master2 ISS"> <rdf:type rdf:resource="#GrupaStudent" /></rdf:Description>

3.1 Relatiile dintre clase

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:

<rdfs:Class rdf:ID="Persoana" ></rdfs:Class>

<rdfs:Class rdf:ID="Profesor"> <rdfs:subClassOf rdf:resource="http://www.infoiasi.ro#Persoana" /></rdfs:Class>

<rdfs:Class rdf:ID="Asistent"> <rdfs:subClassOf rdf:resource="#Persoana" /></rdfs:Class>

<rdfs:Class rdf:ID="Colaborator">

Page 5: Fii linked data

FII Linked DATA

<rdfs:subClassOf rdf:resource="#Persoana" /></rdfs:Class>

<rdfs:Class rdf:ID="Staff"> <rdfs:subClassOf rdf:resource="#Persoana" /></rdfs:Class>

<rdfs:Class rdf:ID="Student"> <rdfs:subClassOf rdf:resource="#Persoana" /></rdfs:Class>

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:

<rdf:Description rdf:about="Algoritmi si Programare"> <rdf:type rdf:resource="http://www.infoiasi.ro#Materie" /> <areProfSeminar rdf:resource="Necula Raluca; Necula Emilian"/> <areProfCurs rdf:resource="Lucanu Dorel"/></rdf:Description>

3.2 Afisarea informatiilor

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) .

De exemplu, interogarea SPARQL necesara pentru aflarea tuturor colaboratorilor in ordine alfabetica, precum si a trasaturilor acestora, din cadrul FII are urmatoarea forma:

query = "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 ?a";

Page 6: Fii linked data

FII Linked DATA

Instructiunile java care proceseaza rezultatul din urma interogarii SPARQL de mai sus sunt:

QueryExecution e = QueryExecutionFactory.sparqlService( service, query );

ResultSet results = e.execSelect();

while ( results.hasNext() ) {

QuerySolution s = results.nextSolution();

System.out.println("Afisare s:"+s);

String nume = s.getResource("a").toString();

System.out.println(nume);System.out.println("Am ajuns

la e-mail");String email =

s.getResource("b").toString();System.out.println(email);

String url = s.getResource("c").toString();%>

<tr><td>

<% out.println(nume.toString()); %>

</td><td>

<% out.println(email.toString()); %>

</td><td>

<a href="http://<% out.println(url.toString());%>" target="_blank"><% out.println(url.toString());%></a>

</td></tr>

<% }e.close();

Page 7: Fii linked data

FII Linked DATA

Colaboratorii din cadrul aplicatiei FII Linked Data sunt afisati in tabelul de mai jos:

3.3 Functionalitatea aplicatiei

Aplicatia FII Linked Data are, printre altele, urmatoarele functionalitati:

Prima pagina (index.jsp) afiseaza cele mai recente stiri si evenimente cu toate informatiile aferente lor;

Pagina filtered.jsp are un combobox de unde utilizatorul poate selecta o anumita optiune (All Staff / Teachers /

Page 8: Fii linked data

FII Linked DATA

Collaborators / Assistants), iar la apasarea butonului Submit vor aparea datele aferente optiunii respective;

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;se poate observa sa exista materii care pot avea la seminar/ laborator unul sau mai multi profesori/colaboratori/asistenti;

Page 9: Fii linked data

FII Linked DATA

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;

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;

3.4 Vocabulare de meta-date

In aplicatia FII Linked Data este utilizat vocabularul de meta-date DCMI (Dublin Core Metadata Initiative care contine

Page 10: Fii linked data

FII Linked DATA

proprietati pentru descrierea resurselor) la crearea modelului de cunostinte privitor la cartile cele mai utile studentilor;

<rdf:Description rdf:about="Programarea retelelor"> <dc:Title> Atelier de programare in retele de

calculatoare </dc:Title> <dc:Creator> Sabin Buraga </dc:Creator> <dc:Subject> networks,network

programming,client/server,signals </dc:Subject> <dc:Description> An introduction in network programming

using socket interface BSD. </dc:Description> <dc:Date> 2005-01-08 </dc:Date> <dc:Format> text/html </dc:Format> </rdf:Description>

Interogarea SPARQL care afiseaza toate cartile si detaliile acestora are urmatoarea forma:

query = "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 ?a";

Rezultatul efectiv al acestei interogari este prezentat in imaginea de mai jos:

Page 11: Fii linked data

FII Linked DATA

3.5 Interfata & meniul aplicatiei

Interfata aplicatiei este simpla, dispune de un meniu prietenos, astfel incat utilizatorul sa poata naviga si sa poata cauta cu usurinta informatiile de interes;

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;

Meniurile, link-urile ajuta la localizarea informatiei, astfel incat userul sa poata gasi repede si cu usurinta datele dorite;

Imaginea de mai jos reprezinta meniul aplicatiei:

Page 12: Fii linked data

FII Linked DATA

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,

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:

3.6 Generarea de rapoarte cu JasperReports

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.

Mai jos este prezentat bean-ul referitor la cursurile din facultate :

Page 13: Fii linked data

FII Linked DATA

package Staff;

public class Course {

private String course;private String courseTeacher;private String labTeacher;public String getCourse() {

return course;}public void setCourse(String course) {

this.course = course;}public String getCourseTeacher() {

return courseTeacher;}public void setCourseTeacher(String

courseTeacher) {this.courseTeacher = courseTeacher;

}public String getLabTeacher() {

return labTeacher;}public void setLabTeacher(String

labTeacher) {this.labTeacher = labTeacher;

}}

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 :

FileInputStream inputStream = new FileInputStream ("G:/report/Courses.jrxml"); JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(courses);

Page 14: Fii linked data

FII Linked DATA

JasperDesign jasperDesign = JRXmlLoader.load(inputStream); JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign;

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(), beanColDataSource);

JasperExportManager.exportReportToPdfFile(jasperPrint, "G:/report/all_courses.pdf");

JasperExportManager.exportReportToXmlFile(jasperPrint,"G:/report/all_courses.xml",false);

JasperExportManager.exportReportToHtmlFile(jasperPrint,"G:/report/all_courses.html");

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:

Page 15: Fii linked data

FII Linked DATA

4 Bibliografie

1. http://jena.sourceforge.net/ARQ/Tutorial/basic_patterns.html 2. http://jena.sourceforge.net/documentation.html 3. http://jena.sourceforge.net/tutorial/RDF_API/ 4. http://www.w3.org/TR/rdf-sparql-query/ 5. http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/ 6. http://en.wikipedia.org/wiki/Virtuoso_Universal_Server 7. http://www.infoiasi.ro/bin/Main/