You are on page 1of 11

Sveučilište u Zagrebu

Fakultet organizacije i informatike

Sustav za analizu društvenih


mre ža
Projekt

Tomislav Mikulček Mentor:


br. indeksa: 38822/09-R Mirko Ćubrilo

Varaždin, 1. rujna 2010.


Sadržaj

1 Uvod 1

2 Opis aplikacijske domene 2

3 Teorijski uvod 3

4 Implementacija 4

5 Korišteni alati 5

6 Model baze podataka 6

7 Datalog kôd 7

Literatura 8
Sustav za analizu društvenih mreža – Projekt

Poglavlje 1

Uvod

Internet se sve više koristi kako bi se ostalo u kontaktu sa starim te stvorilo nove prijatelje. Više čak
nije potrebno niti vidjeti osobu da bi ju se upoznalo. Ta činjenica, uz povećanje mobilnosti u svijetu
(Europska Unija na primjer omogućava veliku slobodu kretanja i rada unutar zemalja članica),
utjecala je na izmjenu socijalnih kontakata. Prije su prijateljstva većinom sklapana unutar jedne
zemlje ili izmedu susjednih zemalja dok danas više nije problem naći ljude koji imaju poznanike
na suprotnim krajevima svijeta.
Za analizu odnosa izmedu osoba, ali i drugih entiteta, koristimo teoriju društvenih mreža koja
obuhvaća teorije, modele i primjene koje su izražene u obliku relacijskih koncepata ili procesa.

Kolegij: Logičko programiranje 1/9


Sustav za analizu društvenih mreža – Projekt

Poglavlje 2

Opis aplikacijske domene

Relacije definirane vezama izmedu pojedinaca su osnovni čimbenici teorija mreža. Društvene mreže
nisu konstantne već se mijenjaju s vremenom. Neke se veze prekidaju, a nove javljaju (nekadašnji
prijatelji se sada više ne poznaju, trgovinski ugovor je istekao i nije obnovljen, ...). Ne mjenjaju se
samo veze već i čvorovi (neki nastaju dok drugi nestaju).
Mrežni model je način formalnog prikazivanja društvene mreže u svrhu proučavanja odnosa i
dinamike mreže. Sastoji se od čvorova, veza i entiteta. Čvorovi mogu predstavljati ljude, grupe,
organizacije države i sl. Bilo koje biće ili tvorevina koja može komunicirati i stvarati odnose sa svo-
jim ravnopravnim susjedima je čvor. Veza predstavlja odnose izmedu čvorova (npr. prijateljstvo,
trgovinski ugovor i sl.) i služi za njihovo povezivanje te je ujedno i kanal za razmjenu resursa bilo
materijalnih ili nematerijalnih. Entitet predstavlja osnovnu jedinicu promatranja prilikom analize
društvene mreže. Sudionici i njihove aktivnosti se gledaju u meduzavisnosti, a ne kao nezavisne
jedinice. Sastoji se od više čvorova i veza povezanih u veću cjelinu, a najčešće se kao entitet uzima
jedna razina iznad čvora. Dakle, ako čvor predstavlja osobu onda entitet najčešće predstavlja
grupu, a ako je čvor država onda entitet može biti Europska unija ili svijet.
Mrežni modeli konceptualiziraju strukturu (socijalnu, ekonomsku, političku, ...) kao dugo-
trajne uzorke veza izmedu sudionika, a često se fokusiraju na to kako pojedinac vidi mogućnosti i
ograničenja u mrežnoj strukturi.

Kolegij: Logičko programiranje 2/9


Sustav za analizu društvenih mreža – Projekt

Poglavlje 3

Teorijski uvod

Za potrebe analize društvenih mreža korištena je deduktivna baza podataka

Deduktivna baza podataka DBP sastoji se od tri komponente:

(1) Eksplicitna (ekstenzijska) baza podataka EBP


(2) Implicitna (intenzijska) baza podataka IBP
(3) Uvjeti integriteta (integritetna ograničenja) UI

Za specifikaciju deduktivne baze podataka koristi se datalog koji se definira putem abecede.
Abeceda se sastoji od slijedečih konačnih skupova:

1) Konstante: a, b, c, . . .
2) Varijable: x, y, z, . . .
3) Relacije (predikati): r, r1, r2, . . . (obične relacije)
4) (Ugradene) relacije usporedivanja: =, <, ≤, >, ≥, . . .
5) Logički veznici: ∨, ∧, ←
6) Zagrade: (, [, {, ), ], }

Kolegij: Logičko programiranje 3/9


Sustav za analizu društvenih mreža – Projekt

Poglavlje 4

Implementacija

Projektni zadatak je bio napraviti sustav koji bi analizirao društvene mreže. Problem izrade
aplikacije za analizu društvenih mreža je dvojaki. Prvo je potrebno prikupiti dovoljnu količinu
relevantnih podataka nad kojima se može vršiti smislena analiza, a zatim je potrebno izraditi
potrebne alate kako bi se prikupljeni podaci mogli analizirati.
Prvotna zamisao je bila napraviti sustav koji bi djelovao kao društvena mreža gdje bi se korisnici
mogli registrirati, kreirati grupe, medusobno se povezivati te slati poruke grupama ili drugim
korisnicima. Na takav sustav bi se zatim nadogradio program za analizu nastale mreže. Nedostatak
ovog pristupa je potreba za izradom dvije odvojene aplikacije, jedna za sudjelovanje u društvenoj
mreži i druga za analizu interakcije. Kako je nerealno za očekivati da će u kratkom roku izradena
stolna aplikacija privuči veći broj korisnika, potrebno bi bilo oslanjati se na ručno unesene testne
podatke. Za bilo kakvu smislenu analizu, broj takvih testnih podataka bi trebao biti poprilično
velik. Na kraju bi većina vremena bila utrošena na kreiranje umjetne interakcije umjesto na glavni
dio zadatka tj. izradu alata za analizu dobivene situacije. Jedno od mogućih rješenja ove situacije
bi bilo izrada aplikacije u kojoj bi se unosili podaci za odredeno područje (npr. tvrtke i njihovi
zaposlenici ili osobe i njihove medusobne veze).
Drugi pristup problemu je korištenje već gotove društvene mreže kao što je Facebook1 uz pomoć
aplikacije koja bi uz dopuštenje korisnika popisivala korisničke podatke, prijatelje, grupe i dogadaje.
Ovaj pristup je na kraju odabran kao najprihvatljiviji.

1 http://www.facebook.com/

Kolegij: Logičko programiranje 4/9


Sustav za analizu društvenih mreža – Projekt

Poglavlje 5

Korišteni alati

Za izradu projekta korišten je PostgreSQL1 za bazu podataka, XSB Prolog2 za izradu pravila i ana-
lizu prikupljenih podataka te Gambas23 za korisničko sučelje i pristup online podacima. Takoder
su korišteni pgAdmin4 i pgDesigner5 kao pomoćni alati za izradu baze podataka te Texmaker6 za
izradu dokumentacije.
XSB Prolog sam po sebi nije osobito ugodan za rad. Nedostaju neke funkcionalnosti koje nisu
bitne za sami rad sustava, ali su već toliko puta ugradivane u različita okruženja da se gotovo
smatraju obaveznima. Najznačajniji takav propust je nemogućnost kretanja kroz povijest naredbi
sa ↑ i ↓ te nemogućnost kretanja kroz naredbe sa ← i →. Kako se naredbe pozivaju isključivo
preko Gambasa, ova ograničenja nisu znatnije utjecala na izradu aplikacije. Bitniji problem je
zastarjela dokumentacija i nekompatibilnost libwww plugina sa trenutnom verzijom XSB-a što je
onemogućilo povezivanje XSB-a izravno sa Facebook API-jem. Ovo je ujedno i glavni razlog zašto
je spajanje izvedeno putem Gambasa.
Gambas2 je programski jezik raden po uzoru na Visual Basic te je koristan za prototipiranje.
Sučelje se može prilično jednostavno izraditi, ali još uvijek ima nedostataka kao što je nemogućnost
izravnog pristupanja kodu dohvaćene web stranice.
PostgreSQL sustav za upravljanje bazom podataka je daleko najbolji od korištenih alata. Za
izradu aplikacije je korištena verzija 8.4.4.

1 http://www.postgresql.org/
2 http://xsb.sourceforge.net/
3 http://gambas.sourceforge.net/en/main.html
4 http://www.pgadmin.org/
5 http://pgdesigner.sourceforge.net/en/index.html
6 http://www.xm1math.net/texmaker/

Kolegij: Logičko programiranje 5/9


Sustav za analizu društvenih mreža – Projekt

Poglavlje 6

Model baze podataka

Sama baza je prilično jednostavna. U nju se zapisuju podaci o prijateljima, dogadajima, grupama,
rodnim gradovima te veze izmedu prijateljima, članstva u grupama i prisustva dogadajima.

Slika 6.1: UML model za analizu društvene mreže

Kolegij: Logičko programiranje 6/9


Sustav za analizu društvenih mreža – Projekt

Poglavlje 7

Datalog kôd

%k o n e k c i j a
:− import odbc open / 3 , o d b c a t t a c h / 2 , o d b c i n s e r t / 2 , o d b c d e l e t e /2 from
odbc call .
:− odbc open ( ’ drustvene mreze ’ , ’ p o s t g r e s ’ , ’ p o s t g r e s ’ ) . % i z m j e n i t i o v a j
r e d prema p o t r e b i
:− o d b c a t t a c h ( osoba , t a b l e ( osoba ) ) .
:− o d b c a t t a c h ( r o d n i g r a d , t a b l e ( r o d n i g r a d ) ) .
:− o d b c a t t a c h ( grupa , t a b l e ( grupa ) ) .
:− o d b c a t t a c h ( u g r u p i , t a b l e ( u g r u p i ) ) .
:− o d b c a t t a c h ( u v e z i s a , t a b l e ( u v e z i s a ) ) .
:− o d b c a t t a c h ( d o g a d j a j , t a b l e ( d o g a d j a j ) ) .
:− o d b c a t t a c h ( p r i s u s t v o d o g a d j a j u , t a b l e ( p r i s u s t v o d o g a d j a j u ) ) .

%i n s e r t
:− o d b c i n s e r t ( i n s e r t o s o b a ( Id , I , P , D, G) , ( osoba ( Id , I , P , D, G) ) ) .
:− o d b c i n s e r t ( i n s e r t r o d n i g r a d ( Id , N) , ( r o d n i g r a d ( Id , N) ) ) .
:− o d b c i n s e r t ( i n s e r t g r u p a ( Id , N, O) , ( grupa ( Id , N, O) ) ) .
:− o d b c i n s e r t ( i n s e r t u g r u p i (O, G) , ( c l a n s t v o (O, G) ) ) .
:− o d b c i n s e r t ( i n s e r t u v e z i s a (O1 , O2) , ( u v e z i s a (O1 , O2) ) ) .
:− o d b c i n s e r t ( i n s e r t d o g a d j a j ( Id , N, O, D) , ( d o g a d j a j ( Id , N, O, D) ) ) .
:− o d b c i n s e r t ( i n s e r t p r i s u s t v o d o g a d j a j u (O, D) , ( p r i s u s t v o d o g a d j a j u (O
, D) ) ) .

%d e l e t e
:− o d b c d e l e t e ( d e l e t e o s o b a ( Id ) , ( osoba ( Id , , , , ))).
:− o d b c d e l e t e ( d e l e t e r o d n i g r a d ( Id ) , ( r o d n i g r a d ( Id , ))).
:− o d b c d e l e t e ( d e l e t e g r u p a ( Id ) , ( r o d n i g r a d ( Id , , ))).
:− o d b c d e l e t e ( d e l e t e u g r u p i (O, G) , ( u g r u p i (O, G) ) ) .
:− o d b c d e l e t e ( d e l e t e u v e z i s a (O1 , O2) , ( u v e z i s a (O1 , O2) ) ) .
:− o d b c d e l e t e ( d e l e t e d o g a d j a j ( Id ) , ( d o g a d j a j ( Id , , , ))).
:− o d b c d e l e t e ( d e l e t e p r i s u t s t v o d o g a d j a j u (O, D) , ( p r i s u t s t v o d o g a d j a j u
(O, D) ) ) .

Kolegij: Logičko programiranje 7/9


Sustav za analizu društvenih mreža – Projekt

%o s t a l o
osoba ( Id ) :− osoba ( Id , , , , ).
p r i j a t e l j s t v o ( Id1 , Id2 ) :− u v e z i s a ( Id1 , Id2 ) .
p r i j a t e l j s t v o ( Id1 , Id2 ) :− u v e z i s a ( Id2 , Id1 ) .
p r i j a t e l j i ( Ime1 , Prezime1 , Ime2 , Prezime2 , X) :− osoba ( i d 1 , Ime1 ,
Prezime1 , , ) , osoba ( i d 2 , Ime2 , Prezime2 , , ) , prijateljstvo (
id1 , id2 ) , X is 1.
p r i j a t e l j p r i j a t e l j a ( Ime1 , Prezime1 , Ime2 , Prezime2 ) :− p r i j a t e l j i ( Ime1
, Prezime1 , ImeX , PrezimeX ) , p r i j a t e l j i ( ImeX , PrezimeX , Ime2 ,
Prezime2 ) .
c l a n g r u p e ( Ime , Prezime , Grupa ) :− osoba ( i d o , Ime , Prezime , , ),
grupa ( i d g , Grupa , ) , u grupi ( id o , id g ) .
s u d i o n i k ( Ime , Prezime , Dogadjaj ) :− osoba ( i d o , Ime , Prezime , , ),
d o g a d j a j ( i d d , Dogadjaj , , ) , prisustvno dogadjaju ( id o , id d )
.

Kolegij: Logičko programiranje 8/9


Sustav za analizu društvenih mreža – Projekt

Bibliografija

Maleković, M., 2008. Teorija baza podataka - skripta.

Mika, P., 2007. Social Networks and the Semantic Web. Springer Science+Business Media, LLC,
233 Spring Street, New York, NY 10013, USA.

Wasserman, S. and Faust, K., 1994. Social Network Analysis: Methods and Applications. Cam-
bridge University Press, 40 West 20th Street, New York, NY 10011-4211, USA.

Kolegij: Logičko programiranje 9/9

You might also like