Archive for the 'Semantic Web' Category

L’11 giugno, il dipartimento di Filosofia dell’Università di Bologna ha ospitato un Focus Group che abbiamo organizzato (io, Christian Morbidoni, Giovanni Tummarello e soprattutto Matteo D’Alfonso, che probabilmente essendo un “cervello in rientro” non ha diritto a un homepage nel sito dell’Università di Bologna) nell’ambito del progetto Discovery. Lo scopo era quello di registrare le reazioni di studenti e dottorandi di materie umanistiche (erano presenti filosofi, storici, antichisti, psicologi) agli stimoli proposti dalle nostre presentazioni del modello Open Access e delle tecnologie Semantic Web applicati alle scienze umane. Nelle settimane precedenti abbiamo discusso a lungo se includere o meno nel focus group anche i già dottori e alla fine abbiamo deciso di non includerli. Pensavamo che limitandoci ai più giovani avremmo raccolto idee meno filtrate dalle logiche accademiche, più rivoluzionarie, più radicali. E invece, a parte qualche caso isolato, è stato veramente scioccante sentire quanto questi ragazzi fossero disillusi, talmente dentro al sistema da non riuscire ad estraniarsene neanche un momento per osservarlo criticamente. Quando a un certo punto abbiamo fatto notare che forse non è proprio il massimo se per pubblicare in una rivista devi presentarti con una letterina scritta dal tuo professore, alcuni erano del tutto spaesati, vedendo quello come l’unico sistema possibile per la selezione e il controllo della qualità. Molti di questi ragazzi, specialmente i più “alternativi” (la sede del focus group era bologna, tradizionalmente tutt’altro che un’avanguardia reazionaria) vedevano con assoluto terrore la pubblicità e il riuso del sapere, preoccupati più che altro del potenziale plagio delle loro opere. La pubblicità anzichè il segreto come mezzo di protezione della paternità intellettuale sono concetti che abbiamo faticato a portare all’attenzione del gruppo. E’ evidente che se questi temi vengono perlopiù trascurati anche da coloro i quali dovrebbero essere i maestri, questa generazione di ricercatori difficilmente sarà parte integrante e decisiva di un cambiamento radicale che la comunità scientifica sarà prima o poi costretta ad affrontare. Ma noi avevamo comunque sperato di trovare in questi ragazzi un po’ di quella furia creativa che tanto gioverebbe al dibattito.
La buona notizia è che dopo le nostre presentazione “strettamente tecniche” sembrava esserci più consapevolezza del fatto che queste tecnologie non sono solo un mezzo ma anche l’oggetto del discorso politico o che esse sono, come le hanno denominate Francesca e Maria Chiara, “filosofia politica applicata”.

Prima o poi doveva succedere che “semantics” diventasse una buzzword di tutto rispetto e che tutti cominciassero a lavorarci. Ecco che finalmente è giunto il momento, ed ecco che imperversa la discussione sui diversi approcci per esplicitare la semantica delle informazioni contenute nelle pagine html. Due sono gli ordini di problemi, il primo consiste nel trovare un modo di inserire (embed) informazione semanticamente strutturata nelle pagine HTML e il secondo consiste nell’estrarre questa informazione e trasformarla in un formato più facilmente manipolabile dagli strumenti Semantic Web (reasoners e triple stores). L’approccio naif della blogosfera al primo problema si è ormai da qualche tempo concentrato sui microformats che sono una soluzione decisamente povera e inefficiente dal punto di vista strettamente tecnico ma d’altra parte hanno il vantaggio dell’estrema semplicità. Il grosso punto a favore dei microformats è che (forse anche grazie alla loro semplicità, ma di certo c’entra anche la moda) vengono adottati da grandi players come Flickr, LinkedIn, Eventful e altri.
Dall’altra parte della barricata il w3c e la community dei ricercatori del Semantic Web propongono approcci più potenti come erdf e sopratutto rdfa.
Per quanto riguarda il secondo problema, quello dell’estrazione dei dati machine readable “nascosti” all’interno dell’html, si possono usare uno dei tanti parser di microformats disponibili, che sono però specifici per un dato tipo di microformats, oppure il recente GRDDL, una candidate recommendation del W3C che permette di ottenere un grafo RDF associando ad un documento XML un algoritmo di trasformazione (gli algoritmi di trasformazione possono essere espressi teoricamente in qualunque linguaggio, in pratica vengono espressi in XSLT. Probabilmente, come sostiene questo post, non sarebbe una cattiva idea che la specifica fosse limitata al solo utilizzo di xslt).
Volevo scrivere un breve post e invece sto rischiando di scrivere un articolo. Mi fermo quindi e approfondirò alcuni argomenti in un prossimo post. Fatemi solo dire che Firefox 3 supporterà nativamente i microformats

Qui sotto la mia traduzione del post di Ryan Tomayko, “How I explained REST to My Wife”. Volevo riformularlo in un dialogo padre-figlio, dato che il post originale è stato accusato di essere sessista, ma poi ci ho ripensato, perchè alla fine, mi sembra un’accusa insensata (vedi le numerose risposte all’accusa di sessismo) che ricorda tanto l’insopportabile abitudine di alcuni di iniziare le lettere con “cari tutti e tutte”. Inoltre il post originale non specifica alcuna licenza d’uso, quindi non credo che i lavori derivati possano essere fatti liberamente. Quindi mi sono limitato a infrangere il diritto d’autore facendo una traduzione non autorizzata (nonchè piuttosto libera). Ho tradotto HTTP GET con PRENDERE e HTTP PRENDI e HTTP PUT con METTERE e HTTP METTERE, tutti gli usi “tecnici” di get e put sono, come nell’originale, in maiuscoletto.

Moglie: Chi è Roy Fielding?

Ryan: Un ragazzo…intelligente.

Moglie: Davvero? e cosa ha fatto?

Ryan: Ha contribuito a creare i primi web server e poi ha fatto un sacco di ricerca per spiegare perchè e come funziona il web. Sulla specifica del protocollo che viene utilizzato per portare le pagine web dai server al tuo browser c’e’ il suo nome.

Moglie: Come funziona?

Ryan: Il web?

Moglie: certo.

Ryan: Hmmm. Beh, è abbastanza stupefacente, davvero. E la cosa buffa è che viene parecchio sottovalutato. Il protocollo di cui ti parlavo, HTTP è capace di fare un sacco di cose belle che la gente per qualche motivo ignora.

Moglie: Intendi proprio quell’http che scrivo all’inizio degli indirizzi nel browser?

Ryan: proprio. Quella parte all’inizio dice al browser quale protocollo deve utilizzare. Quella roba che scrivi è una delle più importanti rivoluzioni nella storia dell’informatica.

Moglie: perchè?

Ryan: Perchè è capace di descrivere la localizzazione di cose in ogni parte del mondo da ogni parte del mondo. Puoi immagirnarla come come le coordinate GPS per la l’informazione e la conoscenza.

Moglie: Per le pagine web?

Ryan: Per qualsiasi cosa in realtà. Quel ragazzo, Roy Fielding, parla un sacco di a cosa puntino quelle cose in quella ricerca di cui ti dicevo. Il web è costruito con uno stile architetturale chiamato “REST“. REST fornisce la definizione di “risorsa”, che è proprio ciò a cui quelle cose puntano.

Moglie: Una pagina web è una risorsa?

Ryan: Più o meno. Una pagina web è la “rappresentazione” di una risorsa. Le risorse sono solamente concetti astratti. URL, quelle cose che scrivi dentro al browser.

Moglie: Lo so che cos’è un URL!

Ryan: Ah giusto. Bene, Gli URL dicono al browser che da qualche parte c’è un concetto. Così poi il browser può richiedere una determinata rappresentazione di quel concetto. Nello specifico il browser richiede la rappresentazione del concetto in forma di pagina web.

Moglie: Che altre forme di rappresentazione ci sono?

Ryan: Al momento le rappresentazioni sono una di quelle cose che non viene molto usata. Il più delle volte una risorsa ha una singola rappresentazione. Ma speriamo che le rappresentazioni siano usate sempre di più nel futuro perchè ci sono una bel pò di nuovi formati che stanno spuntando in giro.

Moglie: Per esempio?

Ryan: Beh…C’è questa cosa che la gente chiama “Web services”. Significa mille cose diverse per mille persone diverse ma il concetto base è che le macchine potrebbero usare il web così come lo fanno le persone.

Moglie: Un’altra di quelle cose robot?

Ryan: No, non sul serio. Non intendo dire che i robot staranno seduti alla scrivania a navigare sul web. Però i computer potrebbero usare gli stessi protocolli per scambiarsi messaggi tra di loro. Lo facciamo daun sacco di tempo ma nessuna delle tecniche che usiamo oggi funziona bene quando devi parlare a tutte le macchine del mondo.

Moglie: Perchè no?

Ryan: Perchè non erano pensate per funzionare in quel modo. Quando Fielding e i suoi amici hanno iniziato a costruire il web parlare con qualsiasi macchina in qualunque parte del mondo era un requisito indispensabile. La gran parte delle tecniche che usiamo oggi per far comunicare i computer non soddisfano questo requisito. Avevamo giusto bisogno di parlare con un piccolo gruppo di macchine.

Moglie: E adesso abbiamo bisogno di parlare con tutte le macchine del mondo?

Ryan: Si e c’e’ dell’altro! Abbiamo bisogno di parlare con tutte le macchine di tutte le cose che sono contenute in tutte le altre macchine. Per cui abbiamo bisogno di un modo per parlare a una macchina di una risorsa che potrebbe essere contenuta in una terza macchina.

Moglie: Che cosa?!??!?!

Ryan: Diciamo che stai parlando con tua sorella che vuole che gli presti l’aspirapolvere o qualsiasi altra cosa. Ma tu non ce l’hai, ce l’ha tua madre. Così dici a tua sorella di prenderlo da tua madre. Cose come questa succedono continuamente nella vita reale e succedono continuamente anche quando le macchine si mettono a dialogare.

Moglie: E come fanno le macchine a dirsi tra di loro dove sono le cose?

Ryan: Usando l’URL ovviamente. Se tutte le cose di cui le macchine hanno bisogno di parlare hanno un URL, ecco che hai creato l’equivalente di un nome, per le macchine.
Il fatto che io e te ci siamo messi d’accordo su come dare i nomi alle cose è abbastanza importante, no?

Moglie: certo.

Ryan: Le macchine non hanno un sistema universale per dare i nomi, ecco perchè fanno schifo.
Ogni linguaggio di programmazione, database o qualsiasi altra cosa ha il suo proprio modo di dare nomi alle cose. Ecco perchè l’URL è così importante.
Permette a ognuno di questi sistemi di parlare agli altri dei loro nomi.

Moglie: Ma quando io cerco una pagina web, non la vedo a questo modo.

Ryan: Nessuno lo fa. Eccetto Fielding e una manciata di altre persone. Ecco perchè le macchine fanno ancora schifo.

Moglie: E che mi dici di verbi, aggettivi e pronomi?

Ryan: Buffo che tu me l’abbia chiesto, perchè questo è un altro degli aspetti fondamentali di REST.
O almeno i verbi lo sono.

Moglie: Stavo scherzando!

Ryan: Scherzavi ma in realtà non è uno scherzo. I verbi sono importanti. C’è un concetto potente nella programmazione e nell’informatica teorica chiamato “polimorfismo”.
E’ un modo difficile di dire che a nomi differenti è possibile applicare lo stesso verbo.

Moglie: Non capisco.

Ryan: Beh…guarda il tavolino da caffè. Quali sono i nomi? Tazza, vassoio, giornale, telecomando. Adesso, quali sono alcune cose che puoi fare con ognuna di queste cose?

Moglie: Non capisco…

Ryan: Puoi “prenderle” giusto? Puoi raccoglierle, puoi buttarle per terra. Puoi bruciarle. Puoi applicare esattamente questi stessi verbi a tutti gli oggetti che ci sono li sopra.

Moglie: Ok, e allora?

Ryan: Beh, è importante. Cosa succederebbe se invece di poter dire “prendi il giornale”, “prendi la tazza” e “prendi il telecomando”, avessimo bisogno di un verbo differente per ognuno dei nomi? Se non potessi usare universalmente la parola “prendi” ma dovessi pensare a una parola diversa per ogni possibile combinazione di nome e verbo.

Moglie: E’ assurdo!

Ryan: Si, lo è. Le nostri menti sono sveglie abbastanza da sapere che gli stessi verbi possono essere applicati a diversi nomi. Alcuni verbi sono più specifici di altri e si applicano solo a determinati nomi. Per esempio non posso “guidare una tazza” e “bere un’automobile”. Ma alcuni verbi come PRENDERE, METTERE e CANCELLARE (GET, PUT, DELETE) sono quasi universali.

Moglie: Non puoi CANCELLARE una tazza!

Ryan: Si va beh, però puoi buttarla via. Era un altro scherzo vero?

Moglie: Si.

Ryan: Ad ogni modo HTTP, quel protocollo che Fielding e i suoi amici hanno inventato, è tutto centrato intorno all’applicare verbi ai nomi. Quando vai su una pagina web il browser fa un HTTP PRENDI (HTTP GET) sull’URL che hai scritto e ottiene in cambio una pagina web.

Le pagine di solito hanno delle immagini giusto? Le immagini sono risorse a se.
La pagina web si limita a specificare le URL alle immagini, il browser va e fa altri HTTP PRENDI (HTTP GET)
finchè non ha ottenuto tutte le risorse; alla fine mostra la pagina web completa. Ma la cosa più importante qui è che noi molto diversi tra loro possono essere trattati allo stesso modo. Che il nome sia un immagine, un testo, un video, un mp3, una presentazione, o qualsiasi cosa non importa. posso PRENDERE (GET) tutte queste cose nello stesso modo, dato il loro URL.

Moglie: Pare proprio che PRENDERE (GET) sia un verbo importante.

Ryan: E lo è. Specialmente quando usi un browser web perchè i browser si limitano più o meno a PRENDERE cose. Non hanno molti altri tipi di interazione con le risorse. Questo è un problema perchè ha portato le persone a pensare che HTTP serva solo a PRENDERE cose. Ma in realtà HTTP è un protocollo generico per applicare verbi ai nomi.

Moglie: Fantastico. Ma continuo a non vedere come questo possa cambiare le cose. Che tipi di nomi e verbi vorresti?

Ryan: Beh, i nomi ci sono ma non sono nel formato adatto.

Pensa a quando stai sfogliando il catalogo di amazon.com per cercarmi cose da regalarmi a natale. Immagina che ognuno di quei prodotti sia un nome. Se fossero disponibili rappresentazioni che le macchine fossero in grado di comprendere, potresti fare un sacco di belle cose.

Moglie: Perchè una macchina non è capace di comprendere una normale pagina web?

Ryan: Perchè le pagine web sono pensate per essere comprese dalle persone. A una macchina non interessano la grafica e lo stile. Le macchine hanno più o meno bisogno solamente dei dati. Idealmente un URL potrebbe avere una rappresentazione leggibile dalle persone e una rappresentazione leggibile dalle macchine. Quando una macchina PRENDE la risorsa, chiederà la rappresentazione leggibile dalle macchine. Quando un browser PRENDE la risorsa per una persona, chiederà quella leggibile dalle persone.

Moglie: Quindi la gente dovrebbe pubblicare delle versioni proprie pagine leggibili dalle macchine ?

Ryan: Se fossero utili.
Senti, stiamo parlando di questa cosa con un sacco di astrazioni. Che ne dici di fare un esempio reale?
Sei un insegnante, scommetto che a scuola hai un grande computer o più probabilmente tre o quattro computer per gestire gli studenti: in che classe sono, che corsi stanno seguendo, i loro contatti di emergenza, informazioni sui libri che utilizzano, etc.
Se il sistema funzionasse sul web ci sarebbe probabilmente un URL per ognuno dei nomi coinvolti: studente, insegnante, classe, libro, aula.
Oggi, PRENDERE l’URL con il browser ti darebbe una pagina web.
Se ci fosse una rappresentazione leggibile dalle macchine per ogni URL sarebbe semplice attaccare al sistema nuovi strumenti, perchè
tutte quelle informazioni sarebbero utilizzabili in modo standard. Diventerebbe anche parecchio più semplice parlare con gli altri sistemi. Potresti costruire un sistema statale capace di parlare con ognuno dei sistemi scolastici per ottenere un’aggregazione di tutti i voti agli esami. Le possibilità sarebbero davvero infinite.

Ognuno di questi sitemi potrebbe PRENDERE le informazioni dagli altri utilizzando un semplice HTTP PRENDI (HTTP GET). Se un sistema avesse bisogno di aggiungere qualcosa a un altro sistema userebbe un HTTP METTI (HTTP PUT). L’unica cosa che rimane da capire è che formato dovrebbero avere i dati.

Moglie: Quindi è questo quello su cui adesso la gente sta lavorando? Decidere che formato dovrebbero avere i dati?

Ryan: Purtroppo no. La maggior parte sono occupati a scrivere strati di specifiche complesse per fare le stesse cose in un modo diverso che è non è nemmeno lontanamente altrettanto utile o eloquente. I nomi non sono universali e i verbi non sono polimorfici. Stiamo buttando via decadi di sperimentazione sul campo e tecniche dimostrate per ricominciare da capo con qualcosa che sembra molto simile a sistemi che hanno già fallito in passato. Stiamo utilizzando HTTP solo perchè ci aiuta a discutere un po’ meno con il personale addetto alla rete e alla sicurezza. Stiamo barattando la semplicità con le perline colorate.

Moglie: Perche’?

Ryan: Non ne ho idea.

Moglie: Perche tu non dici qualcosa?

Ryan: Forse lo farò.

Close
E-mail It