Professional Documents
Culture Documents
Il Prolog fa parte della famiglia dei linguaggi della Logical Programming, molto
interessante e basato su predicati e clausule, con uno schema tipico Soggetto
Predicato Valore.
Dopo una fase in cui il Prolog si era stagnato, ecco che i progetti Open Source tirano
fuori dal cilindro il pacchetto software SWI-PROLOG, dal nome dell'università di
Amsterdam "Sociaal-Wetenschappelijke Informatica", e il cui autore principale è Jan
Wielemaker (Vedi http://it.wikipedia.org/wiki/SWI-Prolog).
L'importanza del SWI-Prolog e della sua ripresa risiede tutto dietro a 4 cose: il Web
semantico e la Social Network Analysis, i motori di ricerca e la problematica del
knowledge Management nelle aziende.
Il concetto è questo: "Se nel pubblicare su Web i dati, essi sono accompagnati da
particolari metadati semantici che permettono di relazionare le informazioni e la loro
rilevanza, allora successivamente è possibile studiare i grafi, statici e dinamici, che si
formano a seguito delle relazioni di aggregazione stabilite naturalmente tra le persone
e comprendere il loro comportamento. In tal modo si possono a scopo di marketing
segmentare le persone, sui gusti etc e poter fare advertising mirato, pubblicità e
offerte".
Il fine ultimo è la Social Network Analisys, analizzando i grafi e i "cluster di dati" che
si formano, con algoritmi particolari (vedi l'articolo "Introduzione agli algoritmi di
clustering
http://www.gruppoeratostene.com/articoli/Algoritmi%20di%20clustering.pdf).
Per ottenere tali dati, il "trucco" è di offrire tools di aggregazione sociale: Facebook,
Google, Twitter, etc. I vostri dati saranno valutati, verrete osservati come interagite
nel gruppo, se siete dei leader, se siete l'anello di congiunzione tra più gruppi, se
avete peso sugli altri, quanto interagite etc.
Ma per ottenere qualcosa di meglio non si può rinunciare al Web semantico: non basta
HTML, XML etc. Si devono introdurre concetti di relazione e gli strumenti adatti a
tale scopo discendono da concetti di Prolog: Soggetto Predicato Valore.
Ad esempio questo si può ottenere con tre risorse già esistenti: l'XML, gli URI e i
namaspace ma in una forma più attinente. Difatti si usano:
RDF (Resource Description Framework)
N3 ed N3 con namespace (un miglioramento rispetto a RDF)
OWL
In tal modo si avrà un web che "ragiona", che possa trovare cose attinenti con una
maggiore precisione, distinguere se un riferimento è già stato trovato e presentato.
A tal proposito si potranno creare anche Web server ad hoc, o aggiungere plug-in a
quelli esistenti. Intanto sono nate librerie come PiLLoW per integrare la Logic
Programming ed il WWW.
Comunque il Prolog è efficace anche nell'analisi dei grafi (e non solo). Non ci credete?
arco(a,b,5).
arco(b,c,5).
arco(c,d,7).
arco(d,a,4).
arco(b,d,9).
arco(d,e,5).
arco(a,e,7).
arco(c,e,8).
andare(X,Y,K) :- arco(X,Y,K).
andare(X,Y,K) :- arco(Y,X,K).
/* raggiungibile con 1,2,3 passi */
raggiungibili(A,B) :- andare(A,B,_).
percorso1(A,Z,K) :- andare(A,Z,K).
percorso1(a,d,X).
X=4
La risposta è Sì: è a distanza 4
Vogliamo sapere se esistono altri percorsi tra a e d? digitiamo ";" ed esce false.
Proviamo:
percorso1(b,e,X).
false.
Proviamo:
percorso2(a,e,X).
X=12;
X=14;
X=15;
false.
Proviamo invece:
percorso3(a,e,X).
X = 17 ;
X = 19 ;
X = 20 ;
X = 19 ;
X = 21 ;
X = 22 ;
X = 20 ;
X = 22 ;
X = 23 ;
false.
Come si vede realizza anche una base dati di conoscenza tutto sommato, e potrebbe
essere utile, questo esempio, per delle tabelle di routing di rete.