Molti ormai sono abituati ad usare i tags per catalogare in modo piu’ semplice e intuitivo i propri contenuti…

Premessa: questo post prevede la conoscenza di RDF e delle ontologie, almeno a livello teorico, ma puo’ essere uno spunto per quelli curiosi: e’ quindi un post tecnico

Il problema nasce quando i tags iniziano ad essere molti e gestiscono in realta’ un’area della conoscenza, per non parlare delle lingue e dei sinonimi che entrano in gioco…

In breve c’e’ un doppio problema:

  • uno di natura semantica e linguistica: il fatto che io possa usare il tag apple per indicare la ditta mentre un altro possa indicare il frutto e una cosa non del tutto scontata quale la lingua in cui e’ scritto il tag…
  • gestire i sinonimi impliciti per i tags… iniziare a gestirli con il loro significato ed evitare doppie presenze.. esempio tecnologia e tecnologie per indicare la medesima cosa

Partiamo da un caso pratico: questo blog e’ dotato di tags… ma il loro uso e’ limitato e voglio provare a potenziarlo:

  • gestire la lingua e la collisione sintattica
  • avere un backend di RDF che gestisca il tutto

Questo chiaramente in chiave di gestire tutto il sito anche semanticamente, oltre che per i lettori umani ( in forma testuale semplice, quale e’ adesso ).

Il primo passo in effetti e’ trasformare il feed RSS1 ( totalmente RDF ) potenziandolo con il modulo per le taxonomies inserendo appunto i tags locali e le categorie per indicare gia’ nel feed il contesto dei posts… ( questa parte verra’ discussa in un post futuro ).

Il passo successivo e’ usare un datastore RDF locale per salvare in un sol colpo questo RSS potenziato con tutti i posts del blog e creare un cron giornaliero che aggiorni tale datastore.

Tags e loro unicita’ con implicazioni

Intanto prendiamo in esame la soluzione proposta da Stefano Mazzocchi particolarmente brillante…

Partiamo a vedere di cosa parla:

[…]
Still, Shirky misses one important point: ontologies are not overrated, they are just contracts, a (more or less explicit) agreement between different parties. Language is a contract as well. So are categories. So is metadata. So are APIs, protocols, plug shapes and their voltage, meters…. you name it! Many make the mistake of associating an ‘ontology’ with Plato’s metaphysical ideas, I think Shirky is one of them.

The semantic web is a bad name for an attemp to make data interoperability scale at a web level. Ontology are a bad name to describe relationships between symbols. That’s all there is, really.

Now, you use tags to categorize things for yourself, but instead of using a ‘controlled vocabulary’, taxonomy or ontology (depending on what field you come from, you will like to call them differently… which also is a metaproof of the point, but let’s move on), you invent your own.

Ci sono qui delle cose importantissime, ve l’assicuro…

Capire che il semantic web altro non e’ che portare l’interazione con i dati ad un livello web e’ la chiave per uscire dai luoghi comuni legati alla metafisicita’ dell’idea stessa che puo’ portare fuori strada…
Per non parlare delle ontologie stesse che altro non sono che spiegazioni dei simboli usati per convenzione

Questo tra l’altro viene espresso anche da Tim Berners Lee,il creatore del Web:

The Semantic Web, like the World Wide Web, is just taking well established ideas, and making them work interoperability over the Internet. This is done with standards, which is what the World Wide Web Consortium is all about.

We are not inventing relational models for data, or query systems or rule-based systems. We are just webizing them.
We are just allowing them to work together in a decentralized system - without a human having to custom handcraft every connection.

Bene, una volta compreso questo si e’ capito sia il futuro del Web, sia le possibili implicazioni nel suo potenziamento… al di la’ dei tecnicismi e delle visioni accademiche…

Tornando a noi l’idea e’ questa: servizi quali del.icio.us o simili portano a questa cosa:

Now, the real breakthru of folksonomical-based systems like del.icio.us or flickr is not the lack of structure or commitee-based design in the ontological space, but is the idea that if two people use the same term, it’s more probable than they meant the same thing than they meant different things.

C’e’ un problema di design che deriva dal compromesso iniziale di non partire dalle tassonomie ritenute troppo formali e rigide nella strutturazione dei contenuti ( in effetti e’ vero ), ma partendo da questo assunto:

The problem is rather simple, really: words are not unique identifiers for concepts. Everybody knows this very well: synonyms exist in every language. So, all you need to start is to create unique identifiers for your tags, but if you don’t do it well enough, it doesn’t scale globally.

Occorre ragionare a livello del web per rendere la cosa scalabile…
e la soluzione e’ particolarmente elegante:

urn:tag:[MD5 hash of my email address]/[base64 encoding of the tag]
Ecco le motivazioni di questa scelta:

  • email address perche’ in base al dominio siamo certi che e’ univoco e usiamo l‘hash MD5 per proteggerci dall’abuso degli spammer
  • encoding base 64 per rendere l’URN indipendente a livello sintattico dalla lingua adottata per scrivere il tag e in piu’ e’ una protezione perche’ da questo encoding posso risalire al tag stesso

In questo modo rendendo il tag con un id unico posso associarci qualsiasi proprieta’ come la label stessa:

urn:tag:8f5d07638061eb9e3b60172c59b107b9/c2Vtd2ViCg== a tags:Tag . urn:tag:8f5d07638061eb9e3b60172c59b107b9/c2Vtd2ViCg== rdfs:label "semweb"@en .

Tra parentesi queste sono due triple RDF scritte in N3… una delle forme piu’ intuitive di serializzazione di dati RDF.

sintassi: ( soggetto property value . )

In altre parole ora riesco a gestire il caso di collisione sintattica ma non semantica ( l’esempio della apple giusto per capirsi ), visto che e’ chiaro questo:

But as folksonomical systems do, we can assume that, for linguistic efficiency reasons, otherwise noted, two colliding unique tags will mean to reference the same semantic notion.

Prendiamo un altro esempio:

But there are other benefits: say my friend also used “semantic_web” along with “semweb”, because he’s a messier tagger or simply because he never realized…

Posso gestire la collisione di 2 tags sinonimi semplicemente aggiungendo una proprieta’ OWL:

  • owl:differentFrom : per gestire i due id della apple, che semanticamente sono diversi ( il loro significato e’ diverso in base al contesto )
    • owl:sameAs : per gestire ad esempio il caso molto comune di usare tags diversi per indicare la stessa cosa ( sintassi diversa ma semantica uguale )

E questo e’ proprio quello che dice anche Stefano:

So, ironically, using an ontology, and without reducing functionality, we solved the two biggest problems that current folksonomies have:

1. syntactic collisions can be differentiated
2. syntactic differences can be equated

E questo procedimento posso usarlo anche per quanto riguarda le relazioni tra i tags stessi…
Il fatto che gli identificativi poi siano poco leggibili non ci riguarda visto che bisogna ricordare che RDF e’ progettato per essere letto dalle macchine e non da noi…

Quindi le conclusioni raggiunte sono particolarmente importanti:

Now, imagine a system where the disambiguation of two tags yields a return on your metadata investiment that you consider worth it (if you own an iPod you know what I mean by return on your metadata investiment!), the ability to share this information across systems (say between flickr and del.icio.us, or even between your own blog, or even your email client or calendar system!) will very likely revolutionize the way we do things and allowing to pick statement between the people, organizations,entities that you like, will allow you to disagree, to avoid massification, to avoid feeling locked into a platonic semantic cage.

In pratica cosa significa?
Vuol dire che ci potra’ essere un sistema che sara’ in grado in automatico di condividere informazioni semanticamente corrette e in base a semplici regole di inferenza di fare delle semplici contestualizzazioni senza il bisogno di intervento umano!!!

Sara’ possibile interagire con semplici affermazioni in modo scalabile a livello del web creando reti sociali inimmaginabili oggi..

Il problema attuale con cui mi sono scontrato anch’io ( tutt’ora a dir la verita’ ) e’ che ormai inizia ad essere chiara la visione d’insieme ma iniziarla e’ tutto un altro paio di maniche…

Quello che sto cercando di fare nel mio piccolo e’ proprio questo: rendere scalabile l’informazione nel blog, poi nell’intero sito a livello semantico…

Possibili sviluppi del sito

Se uso un backend RDF sarebbe importante creare anche una URL per ogni tag locale che mostri tutte le info esplicite ed implicite riguardo a quel tag…

In altre parole attualmente la gestione e’ questa:

L’idea e’ che una volta settato un id univoco ad ogni tag, associargli anche una URL da usare come base per la navigazione del tag stesso e a questa URL predisporre una visualizzazione dei dati RDF disponibili riguardo a quel tag in particolare…

Riferimenti:

-> One Million Tags
-> Folksologies: de-idealizing ontologies