MuLang



                 Oana-Elena Apopei 1 , Georgiana Ghergheluc 1

           Master de Inteligenţă artificială şi lingvistică
            1


                       computaţională ,
                 Facultatea de Informatică, Iaşi
                      {oana.apopei,
        georgiana.ghergheluc}@info.uaic.ro




Abstract



          Scopul proiectului o reprezintă implementarea unui instrument Web care să
realizeze diverse statistici privitoare la utilizarea mai multor categorii în cadrul
conţinuturilor redactate şi a conversaţiilor realizate pe platforma socială Facebook .




Cuvinte cheie: Facebook, statistica, categorii, ontologie, indivizi, comentarii.
1. Introducere



                Dorinţa de a şti în ce context se desfăşoară discutiile pe
Facebook între prieteni şi postarea pe „Wall-ul” personal a dus la
realizarea unei statistici.
                Pentru început este neserara crearea unei clasificari, o
ontologie care să cuprindă cuvinte cheie ce vor fi de folos în
identificarea posturilor. Realizarea ontologiei a încercat pentru început
să se bazeze pe una existentă şi anume o ontologie de analiză a
discursului, dar cum căutările au eşuat s-a pornit de la analiza posturilor
Facebook şi clasificarea acestora.Ulterior s-au stabilit cuvinte cheie cât
mai reprezentative, iar cu ajutorul WordNet-ului românesc s-au realizat
legături de sinonimie.
                Aplicaţia se doreşte a fi in timp real şi integrată în
Facebook , de aceea se va folosi un API Facebook.




                                    2
2. Ontologia



                Literatura inteligenţei artificiale conţine mai multe
definiţii ale unei ontologii. Multe dintre ele fac să se contrazică una pe
cealaltă. O ontologie este o descriere oficială de concepte într-un
domeniu de discurs; clase, proprietăţile fiecărui concept descriind
diverse caracteristici si atribute ale conceptului. În contextul sistemelor
bazate pe cunoştinţe, o ontologie conţine un număr de concepte care au
atribute şi care se pot afla în diverse relaţii între ele.




                                       3
Metotodologie de dezvoltare a unei ontologii pornind de
                      la Protégé



               Nu există o cale sau o metodă exactă prin care să se
dezvolte o ontologie. Se vor vedea metodele generale pentru a
considera şi oferi un posibil proces pentru dezvoltarea unei ontologii.
Se va descrie un proces iterativ de dezvotare a unei ontologii pornind
cu un prim pas brut. Mai intâi se vor accentua nişte reguli fundamentale
în proiectul de ontologie. Acestea vor putea ajuta în luarea deciziilor de
mai târziu în multe cazuri.
               Pasul 1. Determinarea domeniului şi scopului
ontologiei


               Mai intâi vom dezvolta ontologia definindu-i domeniul
şi scopul. Câteva întrebări vor fi puse pentru a ne ajuta:
                   •   care este domeniul pe care ontologia îl acoperă?
                   •   pentru ce scop este folosită ontologia?
                   •   pentru ce tipuri de întrebări ar trebui să furnizeze
                       răspuns ontologia?
                   •   cine va folosi şi menţine ontologia?
               Răspunsul la aceste întrebări e posibil să se schimbe pe
parcusul procesului de creare, dar la un anumit timp cu ajutorul lor se
restrânge scopul modelului.


               Pasul 2. Analiza folosirii ontologiilor deja existente




                                     4
Reutilizarea unor ontologii deja existente poate fi
considerată o cerinţă dacă sistemul nostru trebuie să interacţioneze cu
alte aplicaţii care folosesc deja ontologii particulare sau vocabulare
controlate. Multe ontologii sunt deja disponibile în format electronic şi
pot fi importate în dezvoltatorul de ontologii în care se lucrează.
Formalismul în care o anumită ontologie este exprimată de multe ori nu
prea contează, se pot importa şi exporta multe ontologii de la multe
sisteme care le dezvoltă. Chiar dacă un sistem de reprezentare nu poate
să lucreze direct cu un anumit formalism, modul de translatare a unei
ontologii de la un formalism, , modul de translatare a unei ontologii de
la un formalism la altul, de obicei, nu este unul complicat. Mai întâi
dezvoltăm ontologia în limbajul natural, iar apoi folosim un editor de
ontologii pentru a o transforma.


               Pasul 3. Enumerarea termenilor importanţi din
ontologie


               Este folositor să se creeze o listă cu toţi termenii care
sunt folosiţi pentru ai întelege mai bine sau pentru a putea fi explicaţi.


               Pasul 4. Definirea claselor şi ierarhia de clasă


               Există câteva moduri posibile de dezvoltare a ierarhiei
unei clase:




                                     5
•   dezvoltarea de sus în jos începe cu definirea
                      celor mai generale concepte din domeniu şi
                      ulterior cu specializarea conceptelor.
                  •   dezvoltarea de jos în sus începe cu definirea
                      celor mai specifice clase, cu gruparea acestor
                      clase în mai multe concepte generale.
                  •   dezvoltarea combinată este o combinatie între
                      cele două de mai sus. Mai întâi definim
                      conceptele principale, iar apoi le generalizăm.
                      Trebuie să începem cu câteva concepte de nivel
                      înalt, şi câteva concepte specifice. Apoi definim
                      superclasa pentru acesta, de nivel mediu.
               Nici una dintre aceste trei metode nu este mai bună
decât cealelalte. Combinaţia între acestea este mai uşoară pentru mulţi
dezvoltatori de ontologii. Oricare ar fi cea pe care o alegem, de obicei
pornim cu definirea claselor. De la crearea listei la pasul 3, selectăm
termenii care descriu obiectele care au existenţă incependentă. Aceşti
termeni vor fi clase in ontologie şi vor deveni ancore în ierarhia de
clasă.


               Pasul 5. Definirea proprietăţilor claselor


               Clasele singure nu vor furniza destulă informaţie pentru
a răspunde întrebărilor de la pasul 1. Odată ce am definit unele dintre
clase, trebuie să descriem structura internă a conceptelor. Am selectat




                                   6
deja clasele de la lista termenilor pe care am creat-o la pasul 3. Restul
termenilor sunt potriviti să fie proprietăţi pentru aceste clase.
                Pentru       fiecare     proprietate   din    listă,   trebuie   să
determinăm ce clasă descrie.


                Pasul 6. Crearea instanţelor


                Ultimul pas este crearea instanţelor individuale ale
claselor în ierarhie. Definirea unei instanţe individuale a unei clase
necesită: *alegerea clasei
                      •    crearea unei instanţe individuale a clasei
                      •    completarea valorilor sloturilor.


                Pasul 7. Definirea claselor şi a unei ierarhii de clasă


                La definirea claselor şi a ierarhiilor de clase se pot face
uşor greşeli. Aşa cum am mai menţionat şi anterior, nu există o singură
ierarhie a clasei corectă pentru orice domeniu. Ierarhia depinde de
posibile utilizări ale ontologiilor, nivelul detaliilor care este necesar
pentru   aplicaţie,       preferinţele    personale    şi    uneori    cerinţe   de
compatibilitate cu alte modele.
                      •    Asigurarea că ierarhia claselor este corectă –
                           Relaţia „este o”

                Ierarhia de clasă reprezintă o relaţie „este o” : o clasă A
este o subclasă a lui B, dacă fiecare instanţă a clasei A este, de
asemenea, o instanţă din B.




                                          7
•   Tranzitivitatea ierarhiei ralaţiilor
               Dacă B este o subclasă a lui A şi C este o subclasă a lui
B, atunci C este o subclasă a lui A.
               Uneori va trebui să distingem între subclase directe şi
subclase indirecte. O subclasă directă este „cea mai apropiată” subclasă
a clasei, nu mai exista clase între clasa de bază şi subclasele sale directe
într-o ierarhie. În cazul subclaselor indirecte avem una sau mai multe
subclase intermediare între clasa de bază şi subclasa la care facem
referire.
                   •   Clasele şi numele lor
               Este important să se facă distincţie între o clasă şi
numele ei: clasele reprezintă concepte şi nu cuvinte care denotă aceste
concepte. Numele unei clase se poate schimba dacă vom alege o
terminologie diferită, dar termenul în sine reprezintă obiectivul realităţii
în lume. De exemlu, dacă avem denumită o clasă şi apoi o redenumim
cu un sinonim al său, acest lucru nu defineşte doua clase diferite.
               Sinonimele pentru acelaşi concept nu reprezintă clase
diferite. Multe sisteme de asociere permit o listă de sinonime, traduceri
sau nume de prezentare cu clasa. Dacă un sistem nu permite aceste
asociaţii, intotdeauna sinonimele ar putea fi enumerate în documentaţia
de clasă.
                   •   Evitarea ciclurilor clasei
               Trebuie să evităm ciclurile în ierarhia de clasă. Există un
ciclu intr-o ierarhie de clasă atunci când o anume clasă A are o subclasă
B şi în acelaşi timp B este o superclasă a clasei A. Crearea unui astfel
de ciclu într-o ierarhie a valorilor în care se declară că aceste clase A şi




                                       8
B sunt echivalente: toate instanţele clasei A sunt instanţe ale clasei B şi
toate instanţele clasei B sunt instanţe ale clasei A. Deoarece B este o
subclasă a lui A, toate instanţele lui B trebuie să fie instanţe ale clasei A
şi cât timp A este o subclasă a lui B, toate instanţele lui A trebuie să fie
instanţe ale clasei B.




                                     9
Crearea ontologiei “facebook-ontology”




               Ontologia este creată în Protégé şi conţine ierarhia de
clase ce poate fi vizualizată în figura1




                                    10
Fig1. Clase si subclase ala ontologiei




              În fiecare clasa au fost declarate : superclasa , clasele
disjuncte , si membrii fiecărei clase, precum şi două proprietăţi dupa
cum se văd în figura2




              Fig2. Proprietăţi ale clasei




                                   11
Fiecarei clase şi subcase i s-au atribuit o serie de indivizi
care să facă mai usoară realizarea statisticii si identificarea categoriilor
prezente pe „Wall-ul” persoanei dorite. Acest lucru e vizibil in figura3.




                Fig3. Indivizii subclasei „Felicitari” din clasa Diverse


                În final ontologia a fost salvată în formatul RDF/XML,
format ce va fi inclus în aplicaţie.




                                       12
3. Aplicaţia



               Realizarea de aplicaţii pentru Faceboook conduce la
crearea de cont pe http://www.facebook.com/developers/ , unde pentru
autenticitate trebuie să dai numărul de telefon sau numărul carţii de
credit. Primeşti un cod pe care îl foloseşti în pagina amintită şi astfel
poţi crea propria aplicaţie Facebook, iar la final, cand aceasta este gata,
se va integra în APP Directory.




               Fig4. Aplicaţia MuLang
               În spaţiul destinat aplicaţiei avem un canvas în care se
va încarca aplicaţia noastră.




                                    13
Realizarea aplicaţiei



                  Aplicatia a fost dezvotata pe platforma .NET, utilizand
limbajul de programare C# si tehnologiile ASP.NET. Pentru folosirea
în    aplicaţie      a     ontologiei        create   am   folosit    API-ul
http://facebooksdk.codeplex.com/          şi de asemenea am mai inclus
libraria “dotNetRDF - Semantic Web/RDF Library for C# „ .
                  În figura 5 avem ilustrată ierarhia de clase şi fisiere ale
aplicaţiei. Astfel în folderul App_Data regăsim ontologia creată şi un
fişier queryFile.txt in care sunt salvate id-ul fiecărui prieten selectat
pentru a ne ajuta în afişare acestuia . Default si Results sunt fisierele în
care se realizează practic aplicaţia:
                      •   preiau prietenii
                      •   selectez un prieten
                      •   afişez wall-ul personal al acestuia
                      •   realizez statistica




                                        14
Fig5. Fişierele aplicaţiei
               În fişierul Default.aspx declar un obiect de tip Facebook
şi cer permisiunea de conectare la Facebook. Informaţiile, sub forma
unor obiecte serializabile (jsonobject),     sunt aduse cu următoarele
acţiuni
                    •   “get_me” - informatii despre utilizator
                    •   “get_me/friends” – informaţii depre prietenii
                        mei
                    •   “get_user_id/feed” - salvarea listei de posturi de
                        pe wall
               Dupa afisarea listei de prieteni şi selectarea prietenilor
doriţi , acţiunea butonului de Submit are ca efect scrierea în fisierul
queryFile.txt id-urile selectate, iar apoi se face redirect spre pagina
Results.aspx. Aici citesc id-urile din queryFile şi aduc toate posturile pe
care le pun într-un string (StringBuilder). Deasemenea pentru o mai




                                    15
bună vizualizare pun sa fie afişate fiecare pe câte o linie. Citesc apoi
ontologia, creez un dictionar avand categoriile ”key” şi „value” pentru
fiecare categorie, iau şi indivizii din ontologie şi pentu fiecare individ
vad în ce categorie este şi îl adun la valorea respectivă din dictonar.
               Există de asemnea şi o restricţie. Deoarece pe Facebook
nu pot face mai mult de 600 de request-uri , vom putea prelua maxim
10 prieteni pentru care sa realizăm statistica.Acest lucru este specificat
în codul aplicatiei in fisierul Default.aspx.cs --- int maxCount = 10; .
Dacă sunt mai mult de 10 prieteni selectaţi , nu îi mai ia în calcul – face
Brack.




                                    16
Configurarea maşinii pentru rularea aplicaţiei

               Aplicaţia poate fi rulată de pe calculatorul personal dacă
acesta are ca Sistem de Operare Windows 7 şi ca soft Visual Studio
2008. Verificăm dacă avem IIS7 instalat, dacă nu vom urmări paşii:
                   1. Control Panel/Programs/Programs and Features/
                       Turn Windows features On or Off şi acolo von
                       bifa Internet Infomation Services.
                   2. Windows/System32/drivers/etc şi aici vom avea
                       un fişier hosts în care vom adăuga următoarea
                       linie 127.0.0.1       www.mulangapp.com
                       (pentru ca serverul local sa poată face apel la
                       aplicaţia noastră).
               După ce am urmat paşii de mai sus vom merge şi vom
deschide IIS (fig 6)




                                    17
Fig 6. Interfaţa IIS




unde vom face configurările din figura.7.




                                  18
Fig 7. Configurarea IIS




  Ne mai rămâne decât să mergem în browser şi să scriem
www.mulangapp.com .Astfel ne vom conecta la Facebook unde va
trebui să acceptam aplicaţia.




                                  19
4. Use case



                Utlizatorul aplicaţiei are pentru început afiaşată lista de
prieteni ordonată alfabetic şi id-ul fiecăruia (fig. 8).




                Fig. 8 Lista de prieteni


                Urmează ca utilizatorul să iţi selecteaze prietenul despre
care doreşte să afle informaţii.
                Acţiunea de apăsare a butonului de submit conduce la
afişarea unei statistici privioare la posturile pe care le are pe wall




                                     20
(apelându-se astfel la categoriile din ontologie – câte posturi corespund
diferitelor categorii) - (fig.9)




                Fig. 9 Wall-ul personal




                                   21
precum şi continutul acestora (fig10).




               Fig.10 Statistica




                                   22
5. Concluzii



               Proiectul pune baza unei aplicaţii de ordin lingvistic şi
statistic în ceea ce priveşte căutarea de prieteni cu care poti comunica
despre anumite teme în funcţie de statistica returnată în urma analizei
posturilor de pe wall a fiecăruia.




                                     23
6. Referinţe



1. A Practical Guide To Building OWL Ontologies Using Protégé
    4 and CO-ODE Tools Edition 1.2 Matthew Horridge
    (http://owl.cs.manchester.ac.uk/tutorials/protegeowltutorial/reso
    urces/ProtegeOWLTutorialP4_v1_2.pdf )
2. http://protege.stanford.edu/
3. http://profs.info.uaic.ro/~alaiba/mw/index.php?
    title=Dezvoltatorul_de_ontologii_Protege
4. http://developers.facebook.com/docs
5. http://facebooksdk.codeplex.com/




                                  24

MuLang

  • 1.
    MuLang Oana-Elena Apopei 1 , Georgiana Ghergheluc 1 Master de Inteligenţă artificială şi lingvistică 1 computaţională , Facultatea de Informatică, Iaşi {oana.apopei, georgiana.ghergheluc}@info.uaic.ro Abstract Scopul proiectului o reprezintă implementarea unui instrument Web care să realizeze diverse statistici privitoare la utilizarea mai multor categorii în cadrul conţinuturilor redactate şi a conversaţiilor realizate pe platforma socială Facebook . Cuvinte cheie: Facebook, statistica, categorii, ontologie, indivizi, comentarii.
  • 2.
    1. Introducere Dorinţa de a şti în ce context se desfăşoară discutiile pe Facebook între prieteni şi postarea pe „Wall-ul” personal a dus la realizarea unei statistici. Pentru început este neserara crearea unei clasificari, o ontologie care să cuprindă cuvinte cheie ce vor fi de folos în identificarea posturilor. Realizarea ontologiei a încercat pentru început să se bazeze pe una existentă şi anume o ontologie de analiză a discursului, dar cum căutările au eşuat s-a pornit de la analiza posturilor Facebook şi clasificarea acestora.Ulterior s-au stabilit cuvinte cheie cât mai reprezentative, iar cu ajutorul WordNet-ului românesc s-au realizat legături de sinonimie. Aplicaţia se doreşte a fi in timp real şi integrată în Facebook , de aceea se va folosi un API Facebook. 2
  • 3.
    2. Ontologia Literatura inteligenţei artificiale conţine mai multe definiţii ale unei ontologii. Multe dintre ele fac să se contrazică una pe cealaltă. O ontologie este o descriere oficială de concepte într-un domeniu de discurs; clase, proprietăţile fiecărui concept descriind diverse caracteristici si atribute ale conceptului. În contextul sistemelor bazate pe cunoştinţe, o ontologie conţine un număr de concepte care au atribute şi care se pot afla în diverse relaţii între ele. 3
  • 4.
    Metotodologie de dezvoltarea unei ontologii pornind de la Protégé Nu există o cale sau o metodă exactă prin care să se dezvolte o ontologie. Se vor vedea metodele generale pentru a considera şi oferi un posibil proces pentru dezvoltarea unei ontologii. Se va descrie un proces iterativ de dezvotare a unei ontologii pornind cu un prim pas brut. Mai intâi se vor accentua nişte reguli fundamentale în proiectul de ontologie. Acestea vor putea ajuta în luarea deciziilor de mai târziu în multe cazuri. Pasul 1. Determinarea domeniului şi scopului ontologiei Mai intâi vom dezvolta ontologia definindu-i domeniul şi scopul. Câteva întrebări vor fi puse pentru a ne ajuta: • care este domeniul pe care ontologia îl acoperă? • pentru ce scop este folosită ontologia? • pentru ce tipuri de întrebări ar trebui să furnizeze răspuns ontologia? • cine va folosi şi menţine ontologia? Răspunsul la aceste întrebări e posibil să se schimbe pe parcusul procesului de creare, dar la un anumit timp cu ajutorul lor se restrânge scopul modelului. Pasul 2. Analiza folosirii ontologiilor deja existente 4
  • 5.
    Reutilizarea unor ontologiideja existente poate fi considerată o cerinţă dacă sistemul nostru trebuie să interacţioneze cu alte aplicaţii care folosesc deja ontologii particulare sau vocabulare controlate. Multe ontologii sunt deja disponibile în format electronic şi pot fi importate în dezvoltatorul de ontologii în care se lucrează. Formalismul în care o anumită ontologie este exprimată de multe ori nu prea contează, se pot importa şi exporta multe ontologii de la multe sisteme care le dezvoltă. Chiar dacă un sistem de reprezentare nu poate să lucreze direct cu un anumit formalism, modul de translatare a unei ontologii de la un formalism, , modul de translatare a unei ontologii de la un formalism la altul, de obicei, nu este unul complicat. Mai întâi dezvoltăm ontologia în limbajul natural, iar apoi folosim un editor de ontologii pentru a o transforma. Pasul 3. Enumerarea termenilor importanţi din ontologie Este folositor să se creeze o listă cu toţi termenii care sunt folosiţi pentru ai întelege mai bine sau pentru a putea fi explicaţi. Pasul 4. Definirea claselor şi ierarhia de clasă Există câteva moduri posibile de dezvoltare a ierarhiei unei clase: 5
  • 6.
    dezvoltarea de sus în jos începe cu definirea celor mai generale concepte din domeniu şi ulterior cu specializarea conceptelor. • dezvoltarea de jos în sus începe cu definirea celor mai specifice clase, cu gruparea acestor clase în mai multe concepte generale. • dezvoltarea combinată este o combinatie între cele două de mai sus. Mai întâi definim conceptele principale, iar apoi le generalizăm. Trebuie să începem cu câteva concepte de nivel înalt, şi câteva concepte specifice. Apoi definim superclasa pentru acesta, de nivel mediu. Nici una dintre aceste trei metode nu este mai bună decât cealelalte. Combinaţia între acestea este mai uşoară pentru mulţi dezvoltatori de ontologii. Oricare ar fi cea pe care o alegem, de obicei pornim cu definirea claselor. De la crearea listei la pasul 3, selectăm termenii care descriu obiectele care au existenţă incependentă. Aceşti termeni vor fi clase in ontologie şi vor deveni ancore în ierarhia de clasă. Pasul 5. Definirea proprietăţilor claselor Clasele singure nu vor furniza destulă informaţie pentru a răspunde întrebărilor de la pasul 1. Odată ce am definit unele dintre clase, trebuie să descriem structura internă a conceptelor. Am selectat 6
  • 7.
    deja clasele dela lista termenilor pe care am creat-o la pasul 3. Restul termenilor sunt potriviti să fie proprietăţi pentru aceste clase. Pentru fiecare proprietate din listă, trebuie să determinăm ce clasă descrie. Pasul 6. Crearea instanţelor Ultimul pas este crearea instanţelor individuale ale claselor în ierarhie. Definirea unei instanţe individuale a unei clase necesită: *alegerea clasei • crearea unei instanţe individuale a clasei • completarea valorilor sloturilor. Pasul 7. Definirea claselor şi a unei ierarhii de clasă La definirea claselor şi a ierarhiilor de clase se pot face uşor greşeli. Aşa cum am mai menţionat şi anterior, nu există o singură ierarhie a clasei corectă pentru orice domeniu. Ierarhia depinde de posibile utilizări ale ontologiilor, nivelul detaliilor care este necesar pentru aplicaţie, preferinţele personale şi uneori cerinţe de compatibilitate cu alte modele. • Asigurarea că ierarhia claselor este corectă – Relaţia „este o” Ierarhia de clasă reprezintă o relaţie „este o” : o clasă A este o subclasă a lui B, dacă fiecare instanţă a clasei A este, de asemenea, o instanţă din B. 7
  • 8.
    Tranzitivitatea ierarhiei ralaţiilor Dacă B este o subclasă a lui A şi C este o subclasă a lui B, atunci C este o subclasă a lui A. Uneori va trebui să distingem între subclase directe şi subclase indirecte. O subclasă directă este „cea mai apropiată” subclasă a clasei, nu mai exista clase între clasa de bază şi subclasele sale directe într-o ierarhie. În cazul subclaselor indirecte avem una sau mai multe subclase intermediare între clasa de bază şi subclasa la care facem referire. • Clasele şi numele lor Este important să se facă distincţie între o clasă şi numele ei: clasele reprezintă concepte şi nu cuvinte care denotă aceste concepte. Numele unei clase se poate schimba dacă vom alege o terminologie diferită, dar termenul în sine reprezintă obiectivul realităţii în lume. De exemlu, dacă avem denumită o clasă şi apoi o redenumim cu un sinonim al său, acest lucru nu defineşte doua clase diferite. Sinonimele pentru acelaşi concept nu reprezintă clase diferite. Multe sisteme de asociere permit o listă de sinonime, traduceri sau nume de prezentare cu clasa. Dacă un sistem nu permite aceste asociaţii, intotdeauna sinonimele ar putea fi enumerate în documentaţia de clasă. • Evitarea ciclurilor clasei Trebuie să evităm ciclurile în ierarhia de clasă. Există un ciclu intr-o ierarhie de clasă atunci când o anume clasă A are o subclasă B şi în acelaşi timp B este o superclasă a clasei A. Crearea unui astfel de ciclu într-o ierarhie a valorilor în care se declară că aceste clase A şi 8
  • 9.
    B sunt echivalente:toate instanţele clasei A sunt instanţe ale clasei B şi toate instanţele clasei B sunt instanţe ale clasei A. Deoarece B este o subclasă a lui A, toate instanţele lui B trebuie să fie instanţe ale clasei A şi cât timp A este o subclasă a lui B, toate instanţele lui A trebuie să fie instanţe ale clasei B. 9
  • 10.
    Crearea ontologiei “facebook-ontology” Ontologia este creată în Protégé şi conţine ierarhia de clase ce poate fi vizualizată în figura1 10
  • 11.
    Fig1. Clase sisubclase ala ontologiei În fiecare clasa au fost declarate : superclasa , clasele disjuncte , si membrii fiecărei clase, precum şi două proprietăţi dupa cum se văd în figura2 Fig2. Proprietăţi ale clasei 11
  • 12.
    Fiecarei clase şisubcase i s-au atribuit o serie de indivizi care să facă mai usoară realizarea statisticii si identificarea categoriilor prezente pe „Wall-ul” persoanei dorite. Acest lucru e vizibil in figura3. Fig3. Indivizii subclasei „Felicitari” din clasa Diverse În final ontologia a fost salvată în formatul RDF/XML, format ce va fi inclus în aplicaţie. 12
  • 13.
    3. Aplicaţia Realizarea de aplicaţii pentru Faceboook conduce la crearea de cont pe http://www.facebook.com/developers/ , unde pentru autenticitate trebuie să dai numărul de telefon sau numărul carţii de credit. Primeşti un cod pe care îl foloseşti în pagina amintită şi astfel poţi crea propria aplicaţie Facebook, iar la final, cand aceasta este gata, se va integra în APP Directory. Fig4. Aplicaţia MuLang În spaţiul destinat aplicaţiei avem un canvas în care se va încarca aplicaţia noastră. 13
  • 14.
    Realizarea aplicaţiei Aplicatia a fost dezvotata pe platforma .NET, utilizand limbajul de programare C# si tehnologiile ASP.NET. Pentru folosirea în aplicaţie a ontologiei create am folosit API-ul http://facebooksdk.codeplex.com/ şi de asemenea am mai inclus libraria “dotNetRDF - Semantic Web/RDF Library for C# „ . În figura 5 avem ilustrată ierarhia de clase şi fisiere ale aplicaţiei. Astfel în folderul App_Data regăsim ontologia creată şi un fişier queryFile.txt in care sunt salvate id-ul fiecărui prieten selectat pentru a ne ajuta în afişare acestuia . Default si Results sunt fisierele în care se realizează practic aplicaţia: • preiau prietenii • selectez un prieten • afişez wall-ul personal al acestuia • realizez statistica 14
  • 15.
    Fig5. Fişierele aplicaţiei În fişierul Default.aspx declar un obiect de tip Facebook şi cer permisiunea de conectare la Facebook. Informaţiile, sub forma unor obiecte serializabile (jsonobject), sunt aduse cu următoarele acţiuni • “get_me” - informatii despre utilizator • “get_me/friends” – informaţii depre prietenii mei • “get_user_id/feed” - salvarea listei de posturi de pe wall Dupa afisarea listei de prieteni şi selectarea prietenilor doriţi , acţiunea butonului de Submit are ca efect scrierea în fisierul queryFile.txt id-urile selectate, iar apoi se face redirect spre pagina Results.aspx. Aici citesc id-urile din queryFile şi aduc toate posturile pe care le pun într-un string (StringBuilder). Deasemenea pentru o mai 15
  • 16.
    bună vizualizare punsa fie afişate fiecare pe câte o linie. Citesc apoi ontologia, creez un dictionar avand categoriile ”key” şi „value” pentru fiecare categorie, iau şi indivizii din ontologie şi pentu fiecare individ vad în ce categorie este şi îl adun la valorea respectivă din dictonar. Există de asemnea şi o restricţie. Deoarece pe Facebook nu pot face mai mult de 600 de request-uri , vom putea prelua maxim 10 prieteni pentru care sa realizăm statistica.Acest lucru este specificat în codul aplicatiei in fisierul Default.aspx.cs --- int maxCount = 10; . Dacă sunt mai mult de 10 prieteni selectaţi , nu îi mai ia în calcul – face Brack. 16
  • 17.
    Configurarea maşinii pentrurularea aplicaţiei Aplicaţia poate fi rulată de pe calculatorul personal dacă acesta are ca Sistem de Operare Windows 7 şi ca soft Visual Studio 2008. Verificăm dacă avem IIS7 instalat, dacă nu vom urmări paşii: 1. Control Panel/Programs/Programs and Features/ Turn Windows features On or Off şi acolo von bifa Internet Infomation Services. 2. Windows/System32/drivers/etc şi aici vom avea un fişier hosts în care vom adăuga următoarea linie 127.0.0.1 www.mulangapp.com (pentru ca serverul local sa poată face apel la aplicaţia noastră). După ce am urmat paşii de mai sus vom merge şi vom deschide IIS (fig 6) 17
  • 18.
    Fig 6. InterfaţaIIS unde vom face configurările din figura.7. 18
  • 19.
    Fig 7. ConfigurareaIIS Ne mai rămâne decât să mergem în browser şi să scriem www.mulangapp.com .Astfel ne vom conecta la Facebook unde va trebui să acceptam aplicaţia. 19
  • 20.
    4. Use case Utlizatorul aplicaţiei are pentru început afiaşată lista de prieteni ordonată alfabetic şi id-ul fiecăruia (fig. 8). Fig. 8 Lista de prieteni Urmează ca utilizatorul să iţi selecteaze prietenul despre care doreşte să afle informaţii. Acţiunea de apăsare a butonului de submit conduce la afişarea unei statistici privioare la posturile pe care le are pe wall 20
  • 21.
    (apelându-se astfel lacategoriile din ontologie – câte posturi corespund diferitelor categorii) - (fig.9) Fig. 9 Wall-ul personal 21
  • 22.
    precum şi continutulacestora (fig10). Fig.10 Statistica 22
  • 23.
    5. Concluzii Proiectul pune baza unei aplicaţii de ordin lingvistic şi statistic în ceea ce priveşte căutarea de prieteni cu care poti comunica despre anumite teme în funcţie de statistica returnată în urma analizei posturilor de pe wall a fiecăruia. 23
  • 24.
    6. Referinţe 1. APractical Guide To Building OWL Ontologies Using Protégé 4 and CO-ODE Tools Edition 1.2 Matthew Horridge (http://owl.cs.manchester.ac.uk/tutorials/protegeowltutorial/reso urces/ProtegeOWLTutorialP4_v1_2.pdf ) 2. http://protege.stanford.edu/ 3. http://profs.info.uaic.ro/~alaiba/mw/index.php? title=Dezvoltatorul_de_ontologii_Protege 4. http://developers.facebook.com/docs 5. http://facebooksdk.codeplex.com/ 24