Il web semantico è un'estensione del World Wide Web in cui i documenti pubblicati (pagine HTML, , immagini, e così via) sono associati ad informazioni e dati (metadati) che ne specificano il contesto semantico in un formato adatto all'interrogazione e all'interpretazione (es. tramite motori di ricerca) e, più in generale, all'elaborazione automatica.
Con l'interpretazione del contenuto dei documenti che il Web semantico impone, saranno possibili ricerche molto più evolute delle attuali, basate sulla presenza nel documento di parole chiave, e altre operazioni specialistiche come la costruzione di reti di relazioni e connessioni tra documenti secondo logiche più elaborate del semplice collegamento ipertestuale. Il termine è stato coniato da Tim Berners-Lee, inventore del Web..
Introduzione Per la sua costruzione/definizione, si potrebbe pensare di utilizzare l'XML, un metalinguaggio che consente di descrivere (e con il dettaglio desiderato) le diverse parti di un documento. Un documento così descritto può poi essere elaborato per usi diversi: estrazione di informazioni secondo specifici criteri, riformulazione più o meno parziale per l'adattamento ad altri formati, visualizzazione in funzione delle capacità del terminale. XML però non consente una definizione semantica adeguata, per motivi che specificheremo dopo.
Sebbene un documento sia un buon modo per specificare informazioni, un documento, ancorché espresso in formato XML, è poco adatto al Web che, per sua natura, è distribuito e decentralizzato e, quindi, informazioni su una particolare entità possono essere localizzate ovunque.
Infatti, con XML è possibile descrivere adeguatamente i contenuti di un documento, ma la sintassi XML non definisce alcun meccanismo esplicito per qualificare le relazioni tra documenti. In questo non è di aiuto neppure il meccanismo dei collegamenti ipertestuali reso popolare dall'HTML perché amorfo, cioè non prevede la possibilità di descrivere il legame definito.
In altre parole, sebbene in un documento (ad es. una pagina HTML) sia possibile parlare di un Signor Ciampi ed esprimere semanticamente questo con opportuni tag, è poi difficile capire se due documenti che parlano di un Signor Ciampi si riferiscano alla stessa persona, con conseguente scarsa qualità dei risultati restituiti dai motori di ricerca.
Nella migliore delle ipotesi sarebbe possibile dedurlo se, tra gli altri, vi fossero dati anagrafici semanticamente definiti e sufficientemente precisi (ad es. il Codice Fiscale) o collegamenti ipertestuali debitamente descritti che li collegano.
Poiché, però, i diversi documenti sono redatti per scopi differenti, indipendentemente gli uni dagli altri e normalmente senza condividere un comune formato XML, informazioni utili quali l'indirizzo postale o la data di nascita finiscono per essere espresse in modo dissimile e non uniforme. L'indirizzo in un caso può essere semplicemente racchiuso dal tag <indirizzo>, in altri da <indirizzo_postale>, <direccion>, <address> o <adresse>, e poi è da considerare la possibilità di avere esplicitamente identificati <via>, <numero_civico>, ... rendendo ardua e non priva di rischi ogni deduzione automatica.
Nei prossimi paragrafi si illustreranno prima il linguaggio utilizzato per costruire il web semantico, quindi le previste evoluzioni, gli strumenti e il contributo che queste tecnologie potrebbero dare per rispondere definitivamente ad uno dei problemi irrisolti in ambito informatico: la gestione della conoscenza.
I primi linguaggi: RDF, N3 L'evoluzione del web in web semantico inizia con la definizione, da parte del W3C, dello standard Resource Description Framework (RDF), una particolare applicazione XML che standardizza la definizione di relazioni tra informazioni ispirandosi ai principi della logica dei predicati (o logica predicativa del primo ordine) e ricorrendo agli strumenti tipici del Web (ad es. URI) e dell'XML (namespace).
In estrema sintesi, secondo la logica dei predicati le informazioni sono esprimibili con asserzioni (statement in inglese) costituite da triplette formate da soggetto, predicato e valore (in inglese spesso identificati come subject, verb e object, rispettivamente). Ad esempio, le seguenti affermazioni su un Presidente della repubblica italiano: Il Signor Ciampi vive a Roma. Il Signor Ciampi ha codice fiscale CMPCLZ20T09E625V.
possono essere schematicamente scomposte come Asserzione 1 Asserzione 2 Soggetto Il Signor Ciampi Il Signor Ciampi Predicato vive a ha codice fiscale Valore Roma CMPCLZ20T09E625V allora, per alcuni di questi elementi, è possibile reperire arbitrariamente sul Web URI (risorse) che li identificano univocamente quali: Il Signor Ciampi http://presidenti.quirinale.it/Ciampi/cia-biografia.htm vive a https://it.wiktionary.org/wiki/vivere Roma http://www.comune.roma.it Ha codice fiscale codice fiscale
In questo caso, per Il Signor Ciampi si è scelto di referenziare la relativa biografia disponibile sul sito ufficiale del Quirinale Roma si è scelto di utilizzare il sito istituzionale del Comune di Roma vive a si è scelto di referenziare la definizione del verbo vivere disponibile su Wikizionario ha codice fiscale si è scelto di referenziare la definizione di codice fiscale disponibile su Wikipedia
Nei prossimi paragrafi si descrive come formalizzare le precedenti frasi in RDF nella sua forma canonica, in due suoi formati testuali alternativi (N3 ed N3 con prefissi) e graficamente.
Si segnala che appositi programmi come IsaViz del W3C consentono di passare da un formato all'altro e sono utili per la sperimentazione del Web semantico.
Soluzione RDF canonica
Una possibile formalizzazione dell'esempio in RDF è: 1. <?xml version="1.0"?> 2. <rdf:RDF 3. xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 4. xmlns:wikipedia="http://it.wikipedia.org/wiki/" 5. xmlns:wikizionario="http://it.wiktionary.org/wiki/"> 6. <rdf:Description 7. rdf:about="http://www.quirinale.it/qrnw/statico/ex-presidenti/Ciampi/cia-biografia.htm"> 8. <wikizionario:vivere 9. rdf:resource="http://www.comune.roma.it/index.asp" 10. /> 11. </rdf:Description> 12. <rdf:Description 13. rdf:about="http://www.quirinale.it/qrnw/statico/ex-presidenti/Ciampi/cia-biografia.htm"> 14. <wikipedia:codice_fiscale> 15. CMPCLZ20T09E625V 16. </wikipedia:codice_fiscale> 17. </rdf:Description> 18. </rdf:RDF>
{| class="wikitable" | Riga 1 | colspan=2|<?xml version='1.0'?>, header xml standard
| Riga 2 | colspan=2|rdf:RDF è il nodo radice di un documento RDF definito nel namespace rdf di cui alla Riga 3 |- | Riga 3 | colspan=2|xmlns:rdf= referenzia il namespace standard della sintassi RDF, identificandolo come rdf. Si ricorda che in XML si definisce un namespace per rendere più sintetica la scrittura del codice. D'ora in poi, infatti, ogni volta che si incontra rdf: lo si deve (mentalmente) sostituire con quanto scritto a destra dell= di questa espressione, come già fatto nella Riga 2.
| Riga 4 e 5 | colspan=2|xmlns:wikipedia= e xmlns:wikizionario= referenziano due ulteriori namespace, identificandoli come wikipedia e wikizionario |- | Righe 6-11 | colspan=2|Definiscono lasserzione Il Signor Ciampi vive a Roma
| Riga 6 | colspan=2|rdf:Description è il tag del namespace rdf di cui alla Riga 3 che consente di specificare unasserzione (soggetto, predicato, valore)
| Riga 7 | rdf:about è un attributo dell'elemento Description di Riga 6 da utilizzare per specificare il soggetto di un'asserzione quando, come in questo caso, è un URI | Il signor Ciampi |- | Riga 8 | vivere è il tag definito nel namespace wikizionario di cui alla Riga 4, utilizzato per definire il predicato | vive a
| Riga 9 | rdf:resource è un identificativo del namespace rdf di cui alla Riga 3 per specificare il valore dell'asserzione, quando espresso come URI | Roma |- | Riga 10 | colspan=2|definizione della chiusura di un tag XML vuoto |- | Riga 11 | colspan=2|Chiude il tag Description aperto alla Riga 6
| Riga 12-17 | colspan=2|Definiscono lasserzione Il Signor Ciampi ha codice fiscale CMPCLZ20T09E625V
| Riga 12 | colspan=2|rdf:Description è il tag del namespace rdf di cui alla Riga 3 che consente di specificare unasserzione (soggetto, predicato, valore)
| Riga 13 | rdf:about è un attributo dell'elemento Description di Riga 12 da utilizzare per specificare il soggetto di un'asserzione quando, come in questo caso, è un URI | Il Signor Ciampi
| Riga 14 | codice_fiscale è il tag definito nel namespace wikipedia di cui alla Riga 4, utilizzato per definire il predicato | Ha codice fiscale
| Riga 15 | Il valore dellasserzione | CMPCLZ20T09E625V|- | Riga 16 | colspan=2|Chiude l'elemento aperto alla Riga 14
| Riga 17 | colspan=2|Chiude il tag Description aperto alla Riga 12
| Riga 18 | colspan=2|Chiude l'elemento radice RDF aperto alla Riga 2
Poiché le due frasi hanno lo stesso soggetto, allora possono essere riformulate nella seguente: Il Signor Ciampi vive a Roma ed ha Codice Fiscale CMPCLZ20T09E625V
alla quale corrisponde una formalizzazione RDF altrettanto sintetica (ed equivalente alla precedente):
<?xml version='1.0'?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:wikipedia="http://it.wikipedia.org/wiki/" xmlns:wikidizionario="http://it.wiktionary.org/wiki/"> <rdf:Description rdf:about="http://www.quirinale.it/qrnw/statico/ex-presidenti/Ciampi/cia-biografia.htm""> <wikidizionario:vivere rdf:resource="http://www.comune.roma.it/index.asp"/> <wikipedia:codice_fiscale> CMPCLZ20T09E625V </wikipedia:codice_fiscale> </rdf:Description> </rdf:RDF>
Soluzione grafica Per rappresentare graficamente asserzioni RDF, si utilizzano i grafi scegliendo i nodi per soggetto e valore, uniti da un arco orientato da soggetto a valore per il predicato.
Alcuni applicativi, come il già citato IsaViz, utilizzato in quest'esempio, adottano ellissi per i nodi che sono URI (http://www.comune.roma.it/index.asp), altrimenti dei rettangoli per i nodi che contengono semplici stringhe di caratteri (CMPCLZ20T09E625V). Detto ciò, al nostro esempio corrisponde il grafo:
Soluzione N3 N3 (noto anche come N-triples o Notation 3) propone una forma più facile da leggere rispetto ad RDF e l'esempio che stiamo considerando trova la seguente soluzione: <http://www.quirinale.it/qrnw/statico/ex-presidenti/Ciampi/cia-biografia.htm"> <https://it.wiktionary.org/wiki/vivere> <http://www.comune.roma.it/index.asp>.
<http://www.quirinale.it/qrnw/statico/ex-presidenti/Ciampi/cia-biografia.htm"> <codice fiscale> "CMPCLZ20T09E625V".
Ciascuna asserzione può essere scritta anche su un'unica linea, mettendo soggetto, predicato e valore l'uno di seguito all'altro. Si ricorda che in N3 è significativo anche il . (punto) che contrassegna la fine di ciascuna asserzione.
Soluzione N3 con prefissi N3 con prefissi (N3 with prefix nella dizione inglese) è ancor più sintetico di N3 e riprende l'idea dei namespace XML per agevolare la compilazione utilizzando dei semplici editor. In questo caso l'esempio è tradotto come:
@prefix presidente: http://www.quirinale.it/presidente/ @prefix wikipedia: https://it.wikipedia.org/wiki/ @prefix wikidizionario: https://it.wiktionary.org/wiki/ @prefix comune_roma: http://www.comune.roma.it/
presidente:ciampi.html wikidizionario:vivere comune_roma:index.asp. presidente:ciampi.html wikipedia:codice_fiscale "CMPCLZ20T09E625V".
Dove con il comando @prefix si definiscono costanti di sostituzione che specifici strumenti automatici si occupano di operare per completare le asserzioni che le utilizzano. Così come per N3, anche per N3 con prefissi è significativo il . (punto) alla fine di ciascuna asserzione.
OWL RDF non è che il primo passo. Il web semantico lo si sta costruendo a strati: