Approcci al Web Semantico

Articolo di Antonella Dorati e Stefania Costantini.

Antonella Dorati si è laureata in Scienze dell'Informazione presso l'Università degli Studi di L'Aquila con una tesi dal titolo: "PrettyLog: un sistema per la resa visuale di oggetti simbolici". La sua tesina di laurea era invece incentrata sul Web Semantico. I suoi interessi spaziano dal Web Semantico alla programmazione, soprattutto quella logica, e dalle basi di dati al Web Design.

Stefania Costantini è professore ordinario presso il Dipartimento di Informatica dell'Università degli Studi di L'Aquila. I suoi interessi di ricerca riguardano soprattutto la Logica Computazionale ed l'Intelligenza Artificiale, ed in particolare gli agenti intelligenti e i sistemi multi-agente, e l'Answer Set Programming. Il suo gruppo di ricerca ha definito ed implementato il linguaggio DALI, che è un linguaggio logico orientato agli agenti dotato di reattivita', proattivita' e capacita' evolute di comunicazione.

1. Introduzione
2. L'architettura del Web Semantico
3. URI ovvero Uniform Resource Identifiers
4. RDF ovvero Resource Description Framework
4.1. L'RDF Data Model
4.2. RDF Schema
4.3 Un esempio pratico
4.4. I metadati
4.5. RDF oltre XML
5. Ontologie
5.1 Ontologie di Scopo
5.2 Ontologie di Dominio
5.3 Agganciare oggetti e scopo
6. Logica, dimostrazioni, fiducia e firme digitali
7. Conclusioni
8. Bibliografia & link utili
9. Riferimenti

Introduzione

Lo scenario attuale del World Wide Web è quello di un enorme insieme di testi collegati in qualche modo tra loro. Una peculiarità essenziale del WWW è la sua universalità; il potere di un link ipertestuale deriva dal fatto che "qualunque cosa può essere collegata a qualunque altra cosa da chiunque". I testi sono creati ad uso e consumo dei soli utenti umani, gli unici allo stato attuale in grado di comprendere i contenuti delle pagine che stanno visitando. Possiamo distinguere i collegamenti tra le pagine in due classi:

  • collegamenti sintattici: sono legati al funzionamento di un qualche codice di programmazione. Sono piuttosto solidi (un link localizza una risorsa attraverso un URL univoco, anche se si pone un problema di updating)
  • collegamenti descrivono il significato di un collegamento. Questi ultimi sono invece piuttosto deboli (i.e. generici e vaghi), cioè oltre a portare in un determinato luogo un collegamento dovrebbe descrivere il luogo verso cui porta (capacità semantica)

Gli utenti umani si orientano nel Web grazie alla loro esperienza di navigazione e alla capacità di evocazione che possono avere parole o espressioni chiave. L'esperienza è un aspetto molto importante di cui tutti ci serviamo: impariamo che determinati contenuti si possono reperire sotto determinati portali, che l'aspetto di un sito può dirci qualche cosa sul genere (formale o informale) delle informazioni. Essa si costruisce nel tempo ma non è molto legata ad aspetti tecnici, al codice e alle applicazioni che costituiscono un sito. L'altro aspetto, quello delle parole chiave, è più legato al codice.
Queste caratteristiche non appartengono invece a nessuna applicazione, che in definitiva non è in grado (tranne qualche eccezione limitata e molto complessa, quindi non significativa) di interpretare il contenuto delle pagine.
Il termine Web Semantico è stato proposto per la prima volta nel 2001 da Tim Berners-Lee. Da allora il termine è stato associato all'idea di un Web nel quale agiscano agenti intelligenti (creati senza ricorrere all'intelligenza artificiale ad alti livelli), applicazioni in grado di comprendere il significato dei testi presenti sulla rete e perciò in grado di guidare l'utente direttamente verso l'informazione ricercata, oppure di sostituirsi a lui nello svolgimento di alcune operazioni. Un agente dovrebbe essere in grado di

  • comprendere il significato dei testi presenti sulla rete
  • creare percorsi in base alle informazioni richieste dall'utente, guidandolo poi verso di esse (in alcuni casi si può anche sostituire all'utente)
  • spostarsi di sito in sito collegando logicamente elementi diversi dell'informazione richiesta

Come caratteristica ulteriore, dovrebbe verificare l'attendibilità di una informazione (tramite ricerche incrociate o in dipendenza dal contesto) utilizzando un meccanismo che potremmo assimilare alle famigerate catene di S. Antonio.
Utilizzando questa tecnologia si può automatizzare la ricerca delle pagine, poiché all'atto della creazione del contenuto delle pagine le informazioni sono definite ed inserite secondo precise regole semantiche (per questo è stato coniato il termine Web Semantico).
Il Web Semantico è quindi un nuovo modo di concepire i documenti per il World Wide Web . Secondo la definizione di Tim Berners-Lee [5]

"Il Web Semantico è un'estensione del Web corrente in cui le informazioni hanno un ben preciso significato e in cui computer e utenti lavorano in cooperazione".
Semantic Web - Scientific American, Maggio 2001.

Le possibilità offerte dal Web Semantico sono tante e tali che non si sono ancora approfondite le sue potenzialità. Per questo, più che di tecnologia, si parla di visione del Web Semantico.

Torna all'inizio

L'architettura del Web Semantico

Scrivere del codice in grado di compiere operazioni semantiche dipende dallo schema utilizzato per archiviare le informazioni. Lo schema (ad esempio uno schema XML) è un insieme di regole sull'organizzazione dei dati. Può definire relazioni fra i dati e può anche esprimere vincoli tra classi di dati.
L'idea del Web Semantico nasce estendendo l'idea di utilizzare schemi per descrivere domini di informazione. Dei metadati (sono le informazioni comprensibili da una macchina e relativi ad una risorsa Web o qualche altra cosa, che possono essere estratti da una risorsa o possono essere trasferiti con il documento) devono mappare i dati rispetto a classi, o concetti, di questo schema di dominio. In questo modo si hanno strutture in grado di descrivere e automatizzare i collegamenti esistenti fra i dati.
Il Web Semantico è, come l'XML, un ambiente dichiarativo, in cui si specifica il significato dei dati, e non il modo in cui si intende utilizzarli. La semantica dei dati consiste nel dare alla macchina delle informazioni utili in modo che essa possa utilizzare i dati nel modo corretto, convertendoli eventualmente.
Riassumendo, il Web Semantico si compone di tre livelli fondamentali:

  1. i dati
  2. i metadati riportano questi dati ai concetti di uno schema
  3. nello schema si esprimono le relazioni fra concetti, che diventano classi di dati

Guardiamo ora più in profondità la struttura alla base della visione del Web Semantico. Faremo riferimento a un diagramma piramidale [10]:

Diagramma Piramidale che illustra la struttura del Web Semantico

Il Web Semantico ha quindi una architettura a livelli, che però non è stata ancora sviluppata completamente. Ciò avverrà nei prossimi anni. Vediamo ora il diagramma più in dettaglio:

  1. il Web Semantico si basa sullo standard [11] URI (Uniform Resource Identifiers), per la definizione univoca di indirizzi Internet
  2. al livello superiore si trova XML (eXtensible Markup Language), che gioca un ruolo di base con i namespace e gli XML Schema. Con XML è possibile modellare secondo le proprie esigenze, e senza troppi vincoli, la realtà che si considera: per questo è un linguaggio che porta con sé alcune informazioni sulla semantica degli oggetti. Questa libertà lo rende poco adatto, però, a definire completamente la struttura e l'interscambio di informazioni tra diverse realtà, quindi è stata favorita la creazione di un nuovo linguaggio
  3. RDF (Resource Description Framework) e RDF Schema, che costituiscono il linguaggio per descrivere le risorse e i loro tipi. Derivano da XML
  4. al livello superiore si pone il livello ontologico. Una ontologia permette di descrivere le relazioni tra i tipi di elementi (per es. "questa è una proprietà transitiva") senza però fornire informazioni su come utilizzare queste relazioni dal punto di vista computazionale
  5. la firma digitale è di significativa importanza in diversi strati nel modello astratto del Web Semantico. La crittografia a chiave pubblica è una tecnica nota da qualche anno, ma non ancora diffusa su larga scala, forse perché impone una scelta binaria tra fiducia o non fiducia, mentre sarebbe necessaria una infrastruttura in cui le parti possano essere riconosciute e accettate in specifici domini. Con questo accorgimento, la firma digitale potrebbe essere utilizzata per stabilire la provenienza delle ontologie e delle deduzioni, oltre che dei dati
  6. il livello logico è il livello immediatamente superiore. A questo livello le asserzioni esistenti sul Web possono essere utilizzate per derivare nuova conoscenza. Tuttavia, i sistemi deduttivi non sono normalmente interoperabili, per cui invece di progettare un unico sistema onnicomprensivo per supportare il ragionamento, si potrebbe pensare di definire un linguaggio universale per rappresentare le dimostrazioni. I sistemi potrebbero quindi autenticare con la firma digitale queste dimostrazioni ed esportarle ad altri sistemi che le potrebbero incorporare nel Web Semantico

Torna all'inizio

URI ovvero Uniform Resource Identifiers

Se vogliamo intraprendere una conversazione, o vogliamo scrivere un testo qualsiasi, dobbiamo prima identificare in maniera univoca l'argomento che vogliamo trattare, altrimenti non potremo riferirci ad esso.
Nel Web Semantico è stato definito [11] un sistema di identificatori unificato: sono gli Uniform Resource Identifiers (URI). Il nome deriva dal fatto che ogni elemento identificato viene considerato una risorsa. Gli URI sono utilizzati da RDF per codificare l'informazione in un documento, ed assicurano che i concetti non sono solo parole in un documento, ma sono vincolanti.
Gli URI costituiscono la tecnologia di base ideale con la quale costruire un Web globale. Possiamo definire un URI per un qualsiasi oggetto, e qualsiasi cosa che ha un URI può essere condiderato sul Web. Gli URI sono il fondamento del Web : mentre ogni parte del Web stesso può essere rimpiazzata, gli URI no. Anche per identificare le pagine sul Web utilizziamo identificatori: sono i tipi più comuni di URI, gli indirizzi URL (Uniform Resource Locator). Guardando più in profondità si può notare che un URL comunica al computer dove trovare una risorsa specifica. Diversamente da altre forme di URI, un URL allo stesso tempo identifica e localizza. Poiché il Web è troppo esteso per essere essere controllato da una qualsiasi organizzazione, gli URI in massima parte sono decentralizzati. Nessuna persona o organizzazione controlla chi li produce o cosa ne fa. Questa flessibilità rende gli URI potenti, ma porta alcuni problemi. Ad esempio, poiché chiunque può creare un URI, inevitabilmente avremo più URI che rappresentano la stessa cosa; e non c'è modo per determinare se due URI puntano alla stessa risorsa. Perciò non siamo in grado di dire con esattezza cosa significa un URI.
Una pratica comune per creare URI è quella di iniziare da una pagina Web. La pagina descrive l'oggetto che deve essere identificato e spiega che l'URL della pagina è l'URI per tale oggetto. Il punto d'arrivo sarà che qualsiasi istanza rappresenterà sia la risorsa fisica, sia la pagina Web che la descrive. Ciò è noto come problema dell'identificazione delle pagine Web.
Questo è un fatto importante da comprendere. Un URI non è un insieme di direttive che indicano al computer dove trovare un file specifico nel Web (sebbene lo faccia anche), ma è un nome per una risorsa (una cosa), accessibile o meno attraverso Internet. L'URI può o no fornire un modo per ottenere più informazioni su una risorsa. Altri metodi per fornire informazioni sugli URI e le risorse che essi identificano sono in via di sviluppo. è anche vero che l'abilità di dire cose su di un URI è una parte importante del Web Semantico. Ma non dobbiamo assumere che un URI fa qualcosa di più che fornire un identificatore per una risorsa.
David Connelly del W3C ha realizzato una pagina [12] in cui ha raccolto gli schemi URI che sono stati definiti.

Torna all'inizio

RDF ovvero Resource Description Framework

RDF (Resource Description Framework) è uno standard [18] proposto dal W3C come set di linguaggi dichiarativi basato su sintassi XML ed adatto a descrivere la struttura di una parte della realtà. Per realtà intendiamo qualsiasi risorsa sia possibile identificare sulla rete con un indirizzo univoco, mentre per descrizione indichiamo l'insieme delle proprietà, degli attributi e delle relazioni con altre realtà.
RDF è lo strumento base per la codifica, lo scambio e il riutilizzo di metadati strutturati, e consente l'interoperabilità tra applicazioni che si scambiano sul Web informazioni machine-understandable. I settori nei quali RDF può essere utilizzato o portare vantaggi sono i più disparati:

  • descrizione del contenuto di un sito Web , o di una pagina, o di una biblioteca digitale
  • implementazione di agenti software intelligenti, per lo scambio di conoscenza e un utilizzo migliore delle risorse Web
  • classificazione del contenuto, per applicare criteri di selezione
  • descrizione di un insieme di pagine, che rappresentano un singolo documento logico
  • stabilire i criteri di proprietà intellettuale delle singole pagine
  • esprimere criteri di privacy preference degli utenti e le privacy policies di un sito Web
  • con il meccanismo della firma digitale, contribuire alla creazione del Web of Trust, per le applicazioni nel commercio elettronico, la cooperazione, etc..

RDF, quindi, non descrive la semantica, ma fornisce una base comune per poterla esprimere, permettendo di definire la semantica dei tag XML. RDF è costituito da due componenti:

  • RDF Model and Syntax: definisce il modello di dati RDF e la sua codifica XML, senza definire alcun livello di gerarchia o di relazione
  • RDF Schema: permette di definire specifici vocabolari per i metadati e creare nessi tra oggetti

Quindi da una parte avremo i dati, dall'altra uno schema che definisce come i dati si strutturano e come sono in relazione fra loro; c'è bisogno anche di un livello intermedio in cui tenere traccia di come un dato specifico (istanza) può essere espresso a partire dallo schema.

Torna all'inizio

L'RDF Data Model

RDF fornisce un modello per descrivere le risorse che possono avere delle proprietà (o anche attributi o caratteristiche). Per RDF una risorsa è un qualsiasi oggetto che sia identificabile univocamente mediante un URI. L'RDF Data Model è quindi basato su tre tipi di oggetti:

  • Risorse: una risorsa può essere rappresentata da una pagina, un gruppo di pagine, un'immagine, un server o una qualsiasi altro elemento che abbia un URI
  • Proprietà: una proprietà è una specifica caratteristica o attributo di una risorsa; una proprietà può anche descrivere relazioni con altre risorse
  • Asserzioni: una asserzione è costituita dall'insieme di una risorsa, una proprietà e uno specifico valore per quella proprietà e descrive le caratteristiche di una risorsa e le relazioni con altre risorse

Talvolta, è necessario far riferimento a più di una risorsa (un documento può essere composto da una serie di componenti). Per questo scopo RDF definisce tre tipi di container:

  • Bag: è una lista non ordinata di risorse o costanti. Viene utilizzato per dichiarare che una proprietà ha valori multipli, senza alcun significato particolare attribuito al loro ordine (per esempio, i componenti di una commissione). Sono ammessi valori duplicati
  • Sequence: è una lista ordinata di risorse o costanti. Viene utilizzato per dichiarare che una proprietà ha valori multipli, e che il loro ordine è significativo (per esempio un insieme di nomi di cui si voglia preservare l'ordine alfabetico). Sono ammessi valori duplicati
  • Alternative: è una lista di risorse o costanti che rappresentano una alternativa per il valore (singolo) di una proprietà. Può essere utilizzato, per esempio, per fornire titoli alternativi in varie lingue

È possibile definire proprietà sia dell'intero container che dei singoli elementi.
Non bisogna confondere i container e le proprietà multiple: una risorsa può essere soggetto in più asserzioni, sempre con lo stesso predicato (per esempio, Calvino è autore di "Se una notte d'inverno un viaggiatore", "Le fiabe italiane", "Il barone rampante",...). Si noti che è semanticamente diverso il caso in cui si ha una singola asserzione il cui oggetto è un container contenente vari esemplari. Per esempio, l'asserzione: "La commissione composta da X, Y e Z ha adottato una decisione", non implica che ogni membro della commissione abbia espresso lo stesso parere, come invece sarebbe nel caso di un'asserzione multipla.
In alcuni casi, può essere utile poter certificare la credibilità di una particolare asserzione, cioè formulare delle asserzioni relative ad altre asserzioni. Per esempio prendendo la risorsa:

http://www.nomesito.it/Dorati/Tesina.html
has Author Antonella Dorati

viene vista da RDF come un fatto. Invece, l'asserzione:

Alessio Crisologo dice che la risorsa
http://www.nomesito.it/Dorati/Tesina.html
has Author Antonella Dorati

non afferma un fatto relativo alla risorsa
http://www.nomesito.it/Dorati/Tesina.html
ma un fatto relativo all'affermazione di Alessio Crisologo. Per esprimere questo fatto in RDF, dobbiamo modellare l'asserzione come una risorsa con quattro proprietà:

  • soggetto: identifica la risorsa che viene descritta dall'asserzione modellata, quindi il soggetto è la risorsa relativamente alla quale era stato formulato l'asserzione originale (http://www.nomesito.it/Dorati/Tesina.html, nell'esempio)
  • predicato: identifica la proprietà originale nell'asserzione modellata. Il valore del predicato è una risorsa che rappresenta la specifica proprietà nell'asserzione originale (nel nostro esempio, Author)
  • oggetto: identifica il valore della proprietà nell'asserzione modellata. Il valore dell'oggetto è l'oggetto nell'asserzione originale (nel nostro esempio: "Antonella Dorati")
  • tipo descrive il tipo della nuova risorsa

Una nuova risorsa con queste quattro proprietà rappresenta l'asserzione originale, e può essere utilizzata come oggetto di altre asserzioni e avere ulteriori asserzioni che lo riguardano. Nell'ambito della comunità che si interessa di Knowledge Representation, questo processo prende il nome di reificazione, e il modello di asserzione reified statement.

Torna all'inizio

RDF Schema

I namespace XML forniscono un metodo per identificare in maniera non ambigua la semantica e le convenzioni che regolano l'utilizzo delle proprietà identificando l'authority che gestisce il vocabolario. Uno degli esempi più noti di queste autority è la Dublin Core Initiative che definisce, ad esempio, il campo Subject and Keywords nel seguente modo:

Name: Subject and Keywords
Identifier: Subject
Definition: The topic of the content of the resource.
Comment: Typically, a Subject will be expressed as keywords,
key phrases or classification codes that describe a topic of
the resource. Recommended best practice is to select a value
from a controlled vocabulary or formal classification scheme.

Si può quindi utilizzare un namespace XML per identificare in maniera non ambigua lo schema per il vocabolario Dublin Core puntando alla risorsa Dublin Core che ne definisce la semantica.
L'RDF Data Model permette di definire un modello semplice per descrivere le relazioni tra le risorse. Tuttavia non fornisce alcun meccanismo per dichiarare queste proprietà, né per definire le relazioni tra queste proprietà ed altre risorse. RDF Schema permette di definire dei vocabolari, quindi l'insieme delle proprietà semantiche individuato da una particolare comunità. RDF Schema permette definire significato, caratteristiche e relazioni di un insieme di proprietà, compresi eventuali vincoli sul dominio e sui valori delle singole proprietà. Inoltre, implementando il concetto (transitivo) di classe e sottoclasse, consente di definire gerarchie di classi, con il conseguente vantaggio che gli agenti software possono utilizzare queste relazioni per svolgere i loro compiti.

Torna all'inizio

Un esempio pratico

Vediamo come si realizza un documento. Immaginiamo di avere una risorsa relativi a corsi e a lezioni online:

http://www.nomesito.it/nomecorso/nomecorso.html

Dobbiamo avere perciò uno schema, o ontologia, per definire quel dominio. Nella dichiarazione iniziale definiamo degli URI che identificano i costrutti RDF, RDF Schema e l'ontologia. Per il resto lo schema descrive le classi e le proprietà. Vediamone una parte:

<?xml version='1.0' encoding='ISO-8859-1'?>
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:a="http://www.nomesito.it/data/nomeontologia#">
<rdfs:Class rdf:about
  resource="http://www.nomesito.it/data/nomeontologia#Corso"/>
  <rdfs:subClassof rdf:resource="#Resource"/>
</rdfs:Class>
<rdfs:Class rdf:about
  resource="http://www.nomesito.it/data/nomeontologia#Argomento"/>
  <rdfs:subClassof rdf:resource="#Corso"/>
</rdfs:Class>
<rdfs:Class rdf:about
  resource="http://www.nomesito.it/data/nomeontologia#Specializzazione"/>
  <rdfs:subClassof rdf:resource="#Resource"/>
</rdfs:Class>
<rdfs:Property rdf:about
  resource="http://www.nomesito.it/data/nomeontologia#Titolo"/>
  <rdfs:domain rdf:resource="#Corso"/>
  <rdfs:range rdf:resource="#Literal"/>
</rdfs:Class>
<rdfs:Property rdf:about
 resource="http://www.nomesito.it/data/nomeontologia#Livello_di_Spec"/>
  <rdfs:domain rdf:resource="#Corso"/>
  <rdfs:range rdf:resource="#Specializzazione"/>
</rdfs:Class>
<rdfs:Property rdf:about
  resource="http://www.nomesito.it/data/nomeontologia#Utenti"/>
  <rdfs:domain rdf:resource="#Specializzazione"/>
  <rdfs:range rdf:resource="#Utenti"/>
</rdfs:Class>
<rdfs:Property rdf:about
  resource="http://www.nomesito.it/data/nomeontologia#Prep_Utenti"/>
  <rdfs:domain rdf:resource="#Specializzazione"/>
  <rdfs:range rdf:resource="#Literal"/>
</rdfs:Class>
</rdf:RDF>

Abbiamo definito una classe (rdfs:Class) che avrà come nome (rdf:about) la risorsa (rdf:resource)

http://www.nomesito.it/data/nomeontologia#Corso

La parte dell'URL che precede # indica una precisa ontologia (indica il nome dello schema al quale è riferito un elemento), la parte successiva al # indica il nome dell'elemento. La classe Corso è sottoclasse (rdfs.subClassof) di Resource, che rappresenta una risorsa, o una classe generica. Riferire un elemento ad essa significa dire che quell'elemento è genericamente una risorsa, significa collegarsi al livello radice (livello 0) del nostro dominio, mentre la classe Corso apparterrà al livello 1. La classe Argomento è a sua volta sottoclasse di Corso.
La classe Corso ha una proprietà, chiamata Titolo, di tipo stringa. Infatti questo elemento Titolo è stato definito come rdf:Property, con dominio (rdfs:domain) la classe Corso e con codominio (rdfs:range), Literal, ossia la risorsa standard che in RDF definisce i dati di testo.
Una classe può essere definita specificando i suoi attributi (o anche collegandola attraverso un metadato ad un URL). La classe Corso ha un titolo che deve essere specificato tramite una stringa. La classe Argomento, sottoclasse della precedente, eredita la proprietà Titolo.
La classe Corso ha una proprietà che si chiama Livello_di_Spec. Questa proprietà ha il compito di tener traccia del livello di specializzazione col quale è stato preparato un corso. Questa proprietà non è però semplice, non è definibile semplicemente riempiendo una stringa, ma punta ad un'altra classe.
La classe Specializzazione ha due attributi. Uno indica il tipo di utenti, e punta ad un classe utenti non descritta nell'esempio, uno indica la preparazione di questi utenti. In pratica la proprietà Livello_di_Spec, per il fatto di puntare ad un'altra classe, non è più una semplice proprietà ma diventa una relazione fra classi. SubClassof indica una parentela di ereditarietà: gli attributi del padre sono trasmessi ai figli. Le relazioni definite tramite le Property non hanno un significato specifico, ma delimitano le proprietà di una classe attraverso quelle di un'altra.
Con questo piccolo esempio si possono vedere le possibilità espressive di uno schema ontologico. Il corso può avere un livello di specializzazione che dipende dal tipo di utenti a cui si rivolge e dalla preparazione che si presume questi abbiano. Con una situazione di questo tipo si sta descrivendo una proprietà, Livello_di_Spec, con una sorta di restrizione a seconda dell'utente a cui di volta in volta si attribuisce.

Torna all'inizio

I metadati

Adesso abbiamo uno schema, costruito per la risorsa localizzabile all'URL

http://www.nomesito.it/nomecorso/nomecorso.html.

Descriviamo ora qualche metadato e cerchiamo di capire come questa risorsa si relaziona al nostro schema. La dichiarazione iniziale non necessita del namespace rdfs.

<?xml version='1.0' encoding='ISO-8859-1'?>
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:a=" http://www.nomesito.it/data/nomeontologia#">
<a:Corso rdf:about="http://www.nomesito.it/nomecorso/nomecorso.html">
  <a:Titolo="nomecorso"/>
</a:Corso>
<a:Argomento rdf:about="http://www.nomesito.it/nomecorso/nomecorso.html" 
  a:Titolo="nomeargomento1"/>
</a:Argomento>
<a:Argomento rdf:about="http://www.nomesito.it/nomecorso/nomecorso.html" 
  a:Titolo="nomeargomento2"/>
</a:Argomento>
</rdf:RDF>

Per il momento abbiamo prodotto dei metadati molto semplici. Abbiamo detto che la prima risorsa è un corso dal titolo nomecorso. Poi abbiamo detto che questa stessa risorsa è legata a due argomenti diversi. I metadati sono costituiti tutti da asserzioni. Ogni asserzione è costituita, da un punto di vista logico, da una tripla in cui sono presenti tre elementi fondamentali:

  • soggetto
  • predicato
  • oggetto

Il soggetto sarà generalmente la classe di uno schema ma potrà anche essere la classe di uno schema diverso (usando l'URI per identificarla), il predicato sarà sempre una proprietà della classe (che può però puntare ad un'altra classe), l'oggetto un dato: può essere o una stringa, oppure un'altra classe dello schema, o ancora una classe di schemi differenti (per collegare due schemi fra di loro).
Queste triple possono essere scritte utilizzando tag XML. In RDF, in un documento si fanno asserzioni che determinati oggetti hanno proprietà con certi valori. Questa struttura è un modo naturale per descrivere la maggior parte dei dati processati dalle macchine. Soggetto e oggetto sono identificati da un URI, come si usa nei link alle pagine Web. I predicati sono ugualmente identificati da URI; ciò permette a chiunque di definire nuovi concetti solo definendo un URI ad essi da qualche parte nel Web.
Le triple di RDF formano ragnatele di informazioni su cose che sono in relazione. Poiché RDF utilizza queste informazioni per codificare queste informazioni in un documento, l'URI assicura che questi concetti non sono solo parole in un documento ma sono legati ad una definizione unica che chiunque può trovare sul Web.
Per ottenere maggiore espressività questa regola può essere espansa. In realtà le classi dello schema possono essere espresse come URL. Ogni schema è identificabile da un namespace e attraverso il namespace di uno schema si può identificare la classe. La nostra classe #Argomento, sostituendo il cancelletto con lo schema dichiarato in cima al documento, potrebbe essere espansa come

http://miosito/rdfs/nomeschema/Argomento

In questo modo si può notevolmente ampliare la capacità espressiva delle asserzioni RDF.
La struttura a tripla delle asserzioni è molto flessibile e abbastanza potente. La potenza può essere ampliata se si collegano fra loro più asserzioni. Le asserzioni si possono collegare facilmente tramite degli ID.

<a:Corso rdf:about="http://www.nomesito.it/nomecorso/nomecorso.html">
  <a: Livello_di_Spec=
    "http://www.nomesito.it/data/nomeontologia/model.rdf#ID_13"/>
</a:Corso>
<a:Specializzazione
  rdf:about="http://www.nomesito.it/data/nomeontologia/model.rdf#ID_13"
  a:Preparazione_Utenti="alta"/>
</a:Specializzazione>
<a:Specializzazione
  rdf:about="http://www.nomesito.it/data/nomeontologia/model.rdf#ID_13"
  a:Utenti="http://www.nomesito.it/data/nomeontologia/model.rdf#ID_14"/>
</a:Specializzazione>
<a:Utenti
  rdf:about="http://www.nomesito.it/data/nomeontologia/model.rdf#ID_14"
  a:nome="nomeutenti"/>
</a:Specializzazione>

Torna all'inizio

RDF oltre XML

Rispetto a XML, di cui è un figlio, RDF ha alcuni vantaggi, come per esempio la possibilità di definire agevolmente il tipo e le proprietà degli oggetti (si tratta sempre di un insieme definito di risorse, proprietà e valori). RDF limita e focalizza alcune caratteristiche di XML per renderlo un linguaggio rivolto alla descrizione di un oggetto, delle sue proprietà, e delle relazioni con gli altri oggetti.
Le differenze tra RDF e XML sono fondamentalmente due:

  • RDF è stato pensato espressamente per esprimere metadati. XML fa molte cose, e può anche essere usato per descrivere metadati, ma generalmente ha un rapporto molto più stretto con i dati, contiene già in sé dei dati che possono essere richiamati. RDF esprime metadati, nel senso più proprio: descrive contenuti di un documento che in esso non sono presenti
  • XML è centrato su una struttura a inclusione, riesce perciò ad esprimere senza difficoltà le relazioni di parentela o di essere parte di, ma per le altre relazioni dimostra dei limiti. Se volessi esprimere una relazione associativa fra due classi, cioè dire che esse hanno una relazione ma non sono incluse una nell'altra, con XML devo ricorrere agli ID e agli IDREF

Torna all'inizio

Ontologie

Gli RDF Schema hanno però alcune limitazioni. Non è ad esempio possibile definire due classi come equivalenti, magari perché realizzate da autori diversi (che quindi possono avere utilizzato diversi identificatori per definire il medesimo concetto). Non è neppure possibile limitare puntualmente il numero di proprietà da usare (per esempio: ogni corso ha uno e un solo argomento).
Per colmare queste lacune sono allora state introdotte le ontologie o OWL (Web Ontology Language), collezioni di informazioni.
Il più comune tipo di ontologia per il Web ha una tassonomia e un insieme di regole di inferenza. La tassonomia definisce classi di oggetti e relazioni tra di essi. Classi, sottoclassi, e relazioni tra entità sono un tool potente per l'uso per il Web. Possiamo esprimere un largo numero di relazioni tra le entità assegnando proprietà alle classi e permettendo che le sottoclassi ereditino tali proprietà.
L'OWL è un vocabolario XML che consente di definire, come gli RDF Schema, classi, proprietà e relazioni. A differenza degli RDF Schema, che estende, OWL aumenta le inferenze che un software è in grado di compiere. Utilizzando OWL è possibile riconoscere che due parti di un documento stanno descrivendo la stessa realtà, utilizzando però una terminologia diversa.
Riprendiamo l'esempio precedente, e supponiamo che il corso sia stato espresso in termini di <NomeCorso> invece di <Corso>.
Le ontologie sono utilizzate per definire dei metadati che descrivano dei testi. Il loro utilizzo permette di recuperare documenti esprimendo query complesse. Si parte da concetti semplici, ma si può raffinare la ricerca esprimendo vere e proprie asserzioni composte da un soggetto un predicato ed un oggetto. Si può insomma fare una richiesta del tipo: aziende (soggetto) che hanno come servizio (predicato) la fornitura di scarpe (oggetto) [come in 13].
Questa query è radicalmente diversa da quella che si potrebbe fare ad un motore di ricerca. In questo caso si potrebbero proporre tutti e tre i concetti di azienda di servizio e di scarpe, ma non potremmo mai esprimere il legame fra di essi. Da qui derivano appunto le imprecisioni dei motori di ricerca.
L'uso di ontologie nella navigazione di basi di dati è certamente interessante ma molto riduttivo. Le ontologie sono innanzi tutto degli schemi e come tali hanno lo scopo di organizzare un dominio. Questo può essere molto utile nei processi produttivi di una comunità ristretta. Una informazione solitamente non ha valore solo in una fase del processo produttivo, la stessa informazione può essere utile in situazioni diverse. Più spesso non è l'intera unità informativa ad essere recuperabile ma una parte di essa. Questo richiede uno schema di organizzazione dei dati in grado di suddividere il dominio in tutte le classi di oggetti che hanno un ruolo nei suoi processi. Le ontologie diventeranno probabilmente lo strumento più potente a disposizione di queste politiche; e se queste ultime intendono servirsi di Internet come infrastruttura, i linguaggi del Web Semantico diventano una risorsa applicativa indispensabile.
Anche se i livelli più alti dell'architettura potranno richiedere diversi anni prima di poter raggiungere uno stadio in cui siano effettivamente implementati e affidabili, già esiste una quantità significativa di lavoro nel settore delle ontologie. Le soluzioni pratiche includono l'uso di XSLT per derivare RDF da documenti XML, la comparsa di database e motori di ricerca RDF di tipo generalizzato, interfacce grafiche generalizzate e specifiche per RDF.
La prima cosa che dobbiamo perciò chiederci quando modelliamo un ontologia è questa: cosa vogliamo dire o fare dei nostri oggetti, come li chiamiamo in causa. In alcuni casi potremmo voler descrivere documenti che trattano di quegli oggetti. In altri casi possiamo aver bisogno di tenere traccia di un processo produttivo. In altri ancora tenere traccia delle scelte e delle attività operate da un utente.
Il processo nel quale dovrà essere inserito lo schema, diventa il punto focale della modellazione. Se siamo in grado di metterlo in luce con chiarezza sapremo quali oggetti descrivere. Solitamente si definiscono ontologie di scopo (task ontology) quelle che rappresentano la struttura dei processi. Le ontologie che forniscono gli oggetti specifici della nostra applicazione vengono invece dette ontologie di dominio (domain ontology).

Torna all'inizio

Ontologie di Scopo

Riprendiamo l'esempio fatto. Eravamo partiti con l'intenzione di sviluppare un'ontologia in supporto ad una operazione molto semplice: archiviare dei corsi di e-learning, con la possibilità di mettere in luce gli argomenti trattati. Per fare questo dobbiamo costruire una struttura di concetti che descriva l'archiviazione.
Un concetto può essere proprio quello di Archiviazione e potrebbe avere come attributi: contenuto, data e locazione (o anche "archiviatore", colui che ha archiviato il corso). Questi concetti possono essere semplici stringhe (ad esempio data), ed allora conterranno un singolo valore, oppure puntare ad altre classi.
Un altro concetto che potrebbe incluso può essere quello di Erogazione. A quanti utenti, o a quale categoria è stato erogato il corso?

Torna all'inizio

Ontologie di Dominio

La modellazione delle ontologie è una modellazione per classi. Il meccanismo dell'ereditarietà consente di definire un'unica volta gli attributi che classi ad uno stesso livello ereditano da un padre. La possibilità di definire come valore di un attributo un'altra classe consente di stabilire qualsiasi tipo di relazione fra classi.
Però non sempre è immediato capire cosa dobbiamo definire come attributo, cosa come classe, cosa come attributo che richiama una classe.
Possiamo dare alcune regole generali per ottenere una buona modellazione:

  • non dare alle classi nomi a volte al plurale a volte al singolare. Si può essere portati a utilizzare il plurale per classi che dovranno contenere più individui, il singolare per classi che indicano realtà generiche o astratte. La classe rappresenta solo una categoria, uno schema. Spesso si mettono i nomi al plurale pensando alla classe come ad un contenitore. Ma questa è una cattiva interpretazione della funzione della classe nell'ontologia
  • l'albero dell'ontologia deve essere bilanciato nella granularità. Se una classe A di livello 5 (perché ha su un ramo un padre 2, un padre 3, e un padre 4) ha su un altro ramo come padre una classe B di livello 2, significa che probabilmente non ho approfondito sufficientemente la granularità del ramo del concetto B e indica un buco nella definizione dei concetti e suggerisce che si debba colmare questa discrepanza inserendo nuovi concetti
  • se una classe A ha un numero elevato di figli ciò è indice di un deficit di definizione. Quello che bisogna fare è quindi ricercare proprietà in comune fra le varie classi figlie di A in modo da raggrupparle con l'aggiunta di nuove classi. Anche modellare una classe con un unico figlio è una scelta non buona. Suddividere una classe significa stabilire che alcune proprietà e caratteristiche devono riferirsi ad oggetti diversi. Suddividere con una unica classe figlia è quindi ingiustificato

Riprendiamo ora lo scenario dei corsi di e-learning.
Potremmo iniziare a costruire le classi partendo dall'elemento centrale del nostro dominio: la lezione. Avrò certamente una classe Lezione. Questa classe sarà composta da vari attributi: argomento, ore, materiale... Ore potrebbe essere una classe semplice, che accetta dati di tipo stringa. Argomento e materiale sono attributi complessi, composti a loro volta da più elementi, per questo punteranno ad un'altra classe e saranno definite come classi. Argomento potrebbe avere come attributi titolo ed un livello di specializzazione. Materiale potrebbe avere come attributo chiamato url. Siccome i documenti che compongono il materiale della lezione possono essere diversi questo attributo dovrà poter essere ripreso più volte, e avere quindi una cardinalità da uno a molti. Più lezioni formano un corso. Potremmo quindi definire una classe corso con l'attributo ha-lezione che punta alla classe Lezione. Il corso potrebbe avere questo attributo riempito con un numero indefinito di istanze di Lezione.

Torna all'inizio

Agganciare oggetti e scopo

Abbiamo ora bisogno di descrivere i soggetti protagonisti delle operazioni. Osservando con attenzione ci accorgiamo che i soggetti che entrano in gioco non possono essere definiti riferendosi semplicemente al concetto di persona. Intanto potremmo voler indicare come soggetto attore una organizzazione. Esempio nel caso che si voglia indicare il fornitore di alcuni tipi di materiale o l'organizzazione alla quale appartiene un determinato individuo. Inoltre una persona intesa come individuo non coincide con il ruolo che quell'individuo assume. Una persona può in effetti assumere più ruoli, alcuni ruoli sono poi temporanei (es. studente).
Modelleremo perciò il dominio inserendo una classe Agente con sottoclasse Persona e Organizzazione. Tra i vari attributi di Persona avremo ha-ruolo che punterà ad una classe. Definiremo quindi una classe Ruolo che nel nostro caso avrà come sottoclassi Docente, Tutor, Utente.
Definiti gli attori possiamo pensare ad alcune classi in grado di collegare soggetti, oggetti e scopi. Gli esempi variano moltissimo dalla applicazione che si ha in mente. Facciamo qui un esempio fra i tanti possibili.
Alla classe Lezione potremmo aggiungere la proprietà Livello_di_Spec. Questa proprietà ha il compito di tener traccia del livello di specializzazione col quale è stato preparata la lezione. La proprietà punta inoltre alla classe Specializzazione, in cui abbiamo due attributi. Uno indica il tipo di utenti, e punta ad un classe Utente, uno indica la preparazione di questi utenti, e potrebbe essere benissimo una stringa.
Questo piccolo esempio mostra le capacità espressive di uno schema ontologico. Ogni lezione può avere un livello di specializzazione che dipende dal tipo di utenti a cui si rivolge e dalla preparazione che si presume questi abbiano.

Torna all'inizio

Logica, dimostrazioni, fiducia e firme digitali

Questa parte del Web Semantico non è stata ancora sviluppata. Non sono stati creati ancora sistemi specifici, quindi si parlerà di concetti in generale che andranno a formare più sistemi. L'obiettivo è quello di realizzare dei sistemi in grado di formulare ogni principio logico e permettere ai computer di ragionare (per inferenza) usando questi principi.
Una volta costruiti questi sistemi "logici", potremmo utilizzarli per provare qualcosa. Persone in tutto il mondo possono scrivere istruzioni logiche. Quindi la macchina può seguire questi link "semantici" per costruire dimostrazioni. Mentre risulta molto difficile creare queste dimostrazioni (può richiedere di seguire migliaia o anche milioni di link), è molto facile controllarle. Seguendo questa via, iniziamo a costruire un Web di processori di informazioni. Alcuni di loro forniranno solamente dati che altri utilizzeranno per costruire regole. I più "intelligenti" saranno delle macchine euristiche che seguono tutte queste regole e le istruzioni per trarre conclusioni, e gentilmente mettono sul Web i loro risultati come dimostrazioni, come se fossero i vecchi dati.
Si può pensare che questi obiettivi siano affascinanti, ma privi di utilità pratica. Manca un controllo sull'autenticità di quanto si afferma. è per questo che sono state introdotte le firme digitali. Basate su lavori in matematica e in crittografia, le firme digitali attestano che una determinata persona ha scritto (o ritiene veritiero) un determinato documento o un'istruzione. Quindi firmando digitalmente le istruzioni RDF, chi le incontrerà potrà essere sicuro della loro autenticità. Ogni utente fisserà il suo personale livello di fiducia e sarà il computer a decidere a cosa (e quanto) credere.
È però difficile avere fiducia in un gran numero di persone e questo potrebbe limitare l'utilizzo del Web. Ecco perché si vuole costruire il Web of Trust: lo scenario che si vuole realizzare è che un utente comunica al tuo computer che ha fiducia in una persona, a sua volta questa persona ha fiducia in altre persone e queste ultime in altre. Tutte queste relazioni di fiducia si aprono a ventaglio e formano il Web of Trust. Ognuna delle relazioni ha un grado di fiducia (o di sfiducia) associata con esso. L'utente può decidere di rendere questo processo trasparente o opaco.

Torna all'inizio

Conclusioni

Difficilmente il Web assumerà le caratteristiche Web Semantico in breve tempo. Gli strumenti a disposizione sono primitivi e il lavoro è oneroso. Per ora possono essere utilizzati solo per progetti specifici o di pubblica utilità. Questa proposta ha comunque affascinato molto la comunità informatica. Il W3C ha attivato immediatamente un gruppo di lavoro. Le università hanno aperto numerosi programmi di ricerca legati a questi temi. Si sono imposti subito degli standard, il più famoso dei quali è certamente RDF.
Le critiche più insistenti sulla effettiva validità di questo progetto sono legate al fattore tempo (quanto tempo occorre per mappare tutto il Web sulle ontologie?) oppure sulle difficoltà di comunicazione tra ontologie diverse. Molti criticano le ontologie perché ritengono che avranno validità solo nel dominio per le quali sono state progettate.
Un esempio di Web Semantico è stata la pagina del prof. Hendler, ora non più on line. Il prof. Hendler mise in rete quella che definì la prima pagina appartenente al Web Semantico: era un prototipo di navigatore semantico realizzato dall'università di Milano e dall'ISUFI di Lecce.
Come esempio di quanto detto si può portare il campo dell'e-learning. Almeno un paio di grosse applicazioni sono state sviluppate secondo una struttura ontologica: si veda a questo proposito [14] e [15]. In questo campo organizzare una piattaforma secondo strutture ontologiche diventa estremamente produttivo. Un corso di meccanica può contenere una parte relativa alla meccanica dei fluidi che può essere ripresa, e poi ampliata, in un corso di idraulica. Se i vari materiali didattici sono organizzati in unità (learning objects) ogni singola unità può essere collegata alle altre e ricomposta in un nuovo corso.
Pensare al Web come ad una infrastruttura regolata nel suo complesso da una struttura semantica significa forse delineare una prospettiva incerta, quantomeno nel medio periodo. Diverso è il discorso se parliamo dell'uso di schemi semantici all'interno di architetture legate ad un dominio ben definito, quindi a servizio di comunità ristrette di utenti, orientate ad ottenere uno scopo preciso.

Torna all'inizio

Bibliografia & link utili

[1] A. Volpon, Web Semantico, il linguaggio del mondo
Mytech: URL http://www.mytech.it/mytech/internet/art006010046709.jsp
[2] P. Ceravolo, Che cos'è e a cosa serve il Web Semantico
HTML.it: URL: http://pro.html.it/articoli/id_327/id_cat_46/pro.html
[3] P. Ceravolo, I linguaggi del Web Semantico
HTML.it: URL: http://pro.html.it/articoli/id_334/id_cat_46/pro.html
[4] P. Ceravolo, Costruiamo le ontologie per il Web Semantico
HTML.it: URL: http://pro.html.it/articoli/id_341/id_cat_46/pro.html
[5] T. Berners-Lee, J. Hendler, O. Lassila, The Semantic Web
Scientific American
[6] AA. VV. Semantic Web
W3C URL: http://www.w3.org/2001/sw/
[7] 2° International Semantic Web Conference 2003 (ISWC'03)
URL: http://iswc2003.semanticweb.org/
[8] International Semantic Web Conference 2002 (ISWC'02)
URL: http://iswc2002.semanticweb.org/
[9] Semantic Web Working Symposium 2001 (SWWS'01)
URL: http://www.semanticweb.org/SWWS/
[10] T. Berners-Lee Semantic Web - XML2000
W3C: URL: http://www.w3.org/2000/Talks/1206-xml2k-tbl/Overview.html
[11] AA. VV. Uniform Resource Identifiers (URI): Generic Syntax
W3C: URL: http://www.ietf.org/rfc/rfc2396.txt
[12] D. Connolly, Addressing Schemes
W3C: URL: http://www.w3.org/Addressing/schemes
[13] R. Gentilucci M. Pirruccio Metadati: RDF e RDFS
URL: http://www.cs.unibo.it/~fabio/corsi/ltw01/slides/19-RDF/19-RDF.pdf
[14] AA.VV. Edutella Project Home Page
URL: http://edutella.jxta.org
[15] AA.VV. Merlot Home Page
URL: http://www.merlot.org
[16] O. Signore RDF per la rappresentazione della conoscenza
URL: http://w3c.cnr.it/papers/RDF.pdf
[17] A. Chiarelli RDF per descrivere il Web
URL: http://pro.html.it/articoli/id_114/id_cat_33/pro.html
[18] O. Lassila, R. R. Swick,
Resource Description Framework (RDF), Model and Syntax Specification W3C
Recommendation 22

W3C: URL: http://www.w3.org/TR/REC-rdf-syntax/
[19] P. Ceravolo, Organizzare i metadati per il Web Semantico
HTML.it: URL: http://pro.html.it/articoli/id_346/idcat_46/pro.html
[20] AA.VV., Semantic Web Activity Statement
W3C: URL: http://www.w3.org/2001/sw/Activity
[21] A. Swartz, The Semantic Web in Breadth
URL: http://logicerror.com/semanticWeb-long
[22] A. Swartz, The Semantic Web (for Web Developers)
URL: http://logicerror.com/semanticWeb-webdev
[23] S. B. Palmer, The Semantic Web : An Introduction
URL: http://infomesh.net/2001/swintro/
[24] D. Beckett, Dave Beckett's Resource Description Framework (RDF) Resource Guide
URL: http://www.ilrt.bristol.ac.uk/discovery/rdf/resources/
[25] T. Berners-Lee, Design Issues - Architectural and philosophical points
W3C: URL: http://www.w3.org/DesignIssues/
[26] I. F. Cruz,
NSF Sponsored Workshop International Semantic Web Working Symposium (SWWS)
URL: http://www.semanticweb.org/SWWS/report/swws-report.pdf
[27] E. Miller, R. Swick, Semantic Web Activity: Advanced Development
W3C: URL: http://www.w3.org/2000/01/sw/
[28] S. Hawke, How the Semantic Web Works
W3C: URL: http://www.w3.org/2002/03/semweb/
[29] L. Quin, eXtensible Markup Language (XML)
W3C: URL: http://www.w3.org/XML/
[30] M. Cerruti, Link relationship, tra accessibilità e Web semantico - 1
HTML.it: http://pro.html.it/articoli/id_350/idcat_39/pro.html

Torna all'inizio

Riferimenti

prof. Stefania Costantini (stefcost@di.univaq.it)
dott. Antonella Dorati (antonelladorati@tiscali.it)

Torna all'inizio