SlideShare ist ein Scribd-Unternehmen logo
1 von 16
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.
FII Linked DATA




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



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.


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.
FII Linked DATA




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




  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,
FII Linked DATA




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




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:
FII Linked DATA




<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">
   <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>
FII Linked DATA




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";

  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>
FII Linked DATA




                              <%
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();

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




Functionalitatea aplicatiei
      Aplicatia FII Linked Data are, printre altele, urmatoarele
functionalitati:
FII Linked DATA




  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 / 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;
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
FII Linked DATA




utilizator; Staff-ul tehnic si administrativ are asociate in documentul
RDF proprietati ca: areFunctie, areEmail;




Vocabulare de meta-date
       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;

   <rdf:Description rdf:about="Programarea
retelelor">
      <dc:Title>
        Atelier de programare in retele de
calculatoare
      </dc:Title>
      <dc:Creator>
        Sabin Buraga
FII Linked DATA




        </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:
FII Linked DATA




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:




        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:
FII Linked DATA




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 :


  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;
FII Linked DATA




     }
     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);
  JasperDesign jasperDesign =
JRXmlLoader.load(inputStream);
 JasperReport jasperReport =
JasperCompileManager.compileReport(jasperDesign;

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

JasperExportManager.exportReportToPdfFile(jasper
Print, "G:/report/all_courses.pdf");
FII Linked DATA




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


JasperExportManager.exportReportToHtmlFile(jaspe
rPrint,"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:




  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
FII Linked DATA




7.   http://www.infoiasi.ro/bin/Main/

Weitere ähnliche Inhalte

Ähnlich wie Fii linked data

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
 
Procesarea Rdf in .NET
Procesarea Rdf in .NETProcesarea Rdf in .NET
Procesarea Rdf in .NETancaantochi
 
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
 
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
 
WADe 2017-2018 (6/12) RDF Data Management. Accessing RDF Data via SPARQL
WADe 2017-2018 (6/12) RDF Data Management. Accessing RDF Data via SPARQLWADe 2017-2018 (6/12) RDF Data Management. Accessing RDF Data via SPARQL
WADe 2017-2018 (6/12) RDF Data Management. Accessing RDF Data via SPARQLSabin Buraga
 
O lectie de anatomie Web. Disectia unui document HTML
O lectie de anatomie Web. Disectia unui document HTMLO lectie de anatomie Web. Disectia unui document HTML
O lectie de anatomie Web. Disectia unui document HTMLSabin Buraga
 
Programarea aplicațiilor distribuite
Programarea aplicațiilor distribuiteProgramarea aplicațiilor distribuite
Programarea aplicațiilor distribuite Dumitru Maros
 
Cautaera multilingva
Cautaera multilingvaCautaera multilingva
Cautaera multilingvabringiton
 
Procesarea RDF pentru platforma Java
Procesarea RDF pentru platforma JavaProcesarea RDF pentru platforma Java
Procesarea RDF pentru platforma JavaRalucaGheorghita
 
[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
 
De câte stele sunt datele d-voastră?
De câte stele sunt datele d-voastră?De câte stele sunt datele d-voastră?
De câte stele sunt datele d-voastră?Sabin Buraga
 
J boss seam framework
J boss seam frameworkJ boss seam framework
J boss seam frameworkbeatrisrusu
 

Ähnlich wie Fii linked data (20)

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
 
Procesarea Rdf in .NET
Procesarea Rdf in .NETProcesarea Rdf in .NET
Procesarea Rdf in .NET
 
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
 
ARC vs RAP
ARC vs RAPARC vs RAP
ARC vs RAP
 
Music Finder
Music FinderMusic Finder
Music Finder
 
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...
 
Twet
TwetTwet
Twet
 
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...
 
Webappdev
WebappdevWebappdev
Webappdev
 
Flori x
Flori xFlori x
Flori x
 
WADe 2017-2018 (6/12) RDF Data Management. Accessing RDF Data via SPARQL
WADe 2017-2018 (6/12) RDF Data Management. Accessing RDF Data via SPARQLWADe 2017-2018 (6/12) RDF Data Management. Accessing RDF Data via SPARQL
WADe 2017-2018 (6/12) RDF Data Management. Accessing RDF Data via SPARQL
 
O lectie de anatomie Web. Disectia unui document HTML
O lectie de anatomie Web. Disectia unui document HTMLO lectie de anatomie Web. Disectia unui document HTML
O lectie de anatomie Web. Disectia unui document HTML
 
Programarea aplicațiilor distribuite
Programarea aplicațiilor distribuiteProgramarea aplicațiilor distribuite
Programarea aplicațiilor distribuite
 
Cautaera multilingva
Cautaera multilingvaCautaera multilingva
Cautaera multilingva
 
Procesarea RDF pentru platforma Java
Procesarea RDF pentru platforma JavaProcesarea RDF pentru platforma Java
Procesarea RDF pentru platforma Java
 
[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
 
De câte stele sunt datele d-voastră?
De câte stele sunt datele d-voastră?De câte stele sunt datele d-voastră?
De câte stele sunt datele d-voastră?
 
Irina Cureraru
Irina CureraruIrina Cureraru
Irina Cureraru
 
J boss seam framework
J boss seam frameworkJ boss seam framework
J boss seam framework
 

Fii linked data

  • 1. 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.
  • 2. FII Linked DATA 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 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) 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. 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.
  • 3. FII Linked DATA 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) 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. 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,
  • 4. FII Linked DATA 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 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> 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:
  • 5. FII Linked DATA <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"> <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>
  • 6. FII Linked DATA 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"; 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>
  • 7. FII Linked DATA <% 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(); Colaboratorii din cadrul aplicatiei FII Linked Data sunt afisati in tabelul de mai jos: Functionalitatea aplicatiei Aplicatia FII Linked Data are, printre altele, urmatoarele functionalitati:
  • 8. FII Linked DATA 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 / 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;
  • 9. 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
  • 10. FII Linked DATA utilizator; Staff-ul tehnic si administrativ are asociate in documentul RDF proprietati ca: areFunctie, areEmail; Vocabulare de meta-date 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; <rdf:Description rdf:about="Programarea retelelor"> <dc:Title> Atelier de programare in retele de calculatoare </dc:Title> <dc:Creator> Sabin Buraga
  • 11. FII Linked DATA </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:
  • 12. FII Linked DATA 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: 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:
  • 13. FII Linked DATA 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 : 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;
  • 14. FII Linked DATA } 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); JasperDesign jasperDesign = JRXmlLoader.load(inputStream); JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign; JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(), beanColDataSource); JasperExportManager.exportReportToPdfFile(jasper Print, "G:/report/all_courses.pdf");
  • 15. FII Linked DATA JasperExportManager.exportReportToXmlFile(jasper Print,"G:/report/all_courses.xml",false); JasperExportManager.exportReportToHtmlFile(jaspe rPrint,"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: 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
  • 16. FII Linked DATA 7. http://www.infoiasi.ro/bin/Main/