A cosa serve il Data Model RDF?
RDF fornisce un modello per descrivere le risorse e le relative proprietà, dove per risorsa intendiamo qualsiasi oggetto identificabile univocamente attraverso un URI[1].
Il Data Model RDF è molto semplice, ed è basato su tre tipi di oggetti:
- Risorsa: qualunque cosa venga descritta da una espressione RDF è detta risorsa (resource). Una risorsa può essere una pagina Web, o una sua parte, o un elemento XML all’ interno del documento sorgente oppure un’intera collezione di pagine web o potrebbe anche essere un oggetto non direttamente accessibile via Web (per es. un libro, un dipinto, etc.). Le risorse sono sempre individuate da un URI, eventualmente con un anchor id;
- Proprietà: una proprietà (property) descrive un aspetto specifico, un attributo o una relazione usata per descrivere una risorsa. Ogni proprietà definisce i valori ammissibili, i tipi di risorse che può descrivere e le sue relazioni con le altre proprietà. Le proprietà associate ad una risorsa sono individuate da un nome e assumono dei valori;
- Asserzioni: una asserzione (statement) è una tupla composta da un soggetto (risorsa), un predicato (proprietà) e un oggetto (valore). In particolare l’oggetto di uno statement (il property value) può essere una espressione (una stringa, un intero o qualche altro tipo primitivo definito da XML) o un’altra risorsa. Una asserzione si esprime dicendo che il soggetto ha una proprietà il cui valore è dato dall’oggetto.
Graficamente, le relazioni tra Resource, Property e Value vengono rappresentate mediante grafi etichettati orientati, in cui le risorse vengono identificate come nodi (graficamente delle ellissi), le proprietà come archi orientati etichettati, e i valori corrispondenti a sequenze di caratteri come rettangoli.
Figura 1: Rappresentazione grafica di una generica descrizione RDF
L’insieme delle proprietà che fanno riferimento ad una stessa risorsa è chiamato descrizione (description).
Per chiarire meglio l’utilizzo di RDF possiamo ricorrere ad un piccolo esempio; consideriamo quindi le seguenti espressioni:
1) Antonio è autore del Tutorial RDF
2) L’autore del Tutorial RDF è Antonio
Queste due espressioni, per quanto possano apparire equivalenti ad un essere umano, sarebbero viste come distinte da una macchina. La vera potenza di RDF consiste proprio nella disambiguazione del significato in casi come questi; attraverso il suo semplice modello fondato su soggetto, predicato e oggetto, fornisce un metodo che permette di esprimere il significato di una espressione senza lasciare adito a dubbi nella elaborazione da parte della macchina.
Cerchiamo ora di trasformare la nostra espressione in uno statement RDF. Per prima cosa va dichiarata una risorsa che rappresenti il nostro Tutorial RDF e poi la proprietà e il valore che essa assume. Abbiamo quindi la seguente tripla:
Risorsa: http://www.example.org/Antonio/TutorialRDF.pdf
Proprietà: ha Autore
Valore: Antonio Cicirelli
Lo statement del nostro esempio verrebbe quindi rappresentato come:
http://www.example.org/Antonio/TutorialRDF.pdf ha Autore Antonio Cicirelli
e la sua rappresentazione grafica sarebbe la seguente:
Figura 2: Rappresentazione grafica di uno statement RDF
Se invece volessimo aggiungere altre informazioni sull’oggetto l’espressione cambia ancora. Se per esempio vogliamo dire:
Antonio Cicirelli, che studia presso il Politecnico di Bari e la cui e-mail è antoniocici@example.org, è l’ autore del TutorialRDF
desideriamo esprimere delle informazioni riguardo ad (about) Antonio Cicirelli, andando a trasformare il valore della proprietà autore in una entità strutturata. In RDF, un’entità di questo tipo viene rappresentata come un’ altra risorsa. Poiché nel nostro statement non viene attribuito un nome a questa entità strutturata, il diagramma risultante sarebbe il seguente:
Figura 3: Rappresentazione grafica di una proprietà con valore strutturato
Si noti che questo diagramma potrebbe anche essere letto come:
http://www.example.org/Antonio/TutorialRDF.pdf ha Autore qualcuno e questo qualcuno ha Nome Antonio Cicirelli, Email antoniocici@example.org ed Affiliation Politecnico di Bari
dove alla risorsa anonima “qualcuno” potrebbe essere assegnato un identificatore univoco come per esempio il Codice Fiscale, corrispondente ad un URI del tipo:
http://www.finanze.it/CF/CCRNTN85S20A225K
Figura 4: Rappresentazione grafica di una proprietà con valore strutturato con identificatore
In figura 4 possiamo vedere il diagramma completo dell’asserzione con l’entità strutturata che ha assunto l’identificatore univoco.
La Serializzazione RDF/XML
Un grafo RDF è comprensibile all’uomo, ma non alle macchine. Per questo ogni grafo necessita di un processo di serializzazione. Fra le serializzazioni disponibili per RDF, noi andremo ad analizzare la RDF/XML. Tale procedimento ci permette di passare dal grafo RDF ad un documento XML che può essere facilmente letto e condiviso dalle macchine.
Se consideriamo il nostro primo esempio (rappresentato graficamente in Figura 2), esso può essere espresso, utilizzando la sintassi XML, come segue:
<?xml version=”1.0″?><rdf:RDF
xmlns:rdf=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”
xmlns:a=”http://www.example.it/schema_autore/”>
<rdf:Description about=”http://www.example.org/Antonio/TutorialRDF.pdf”>
<a:autore>
Antonio Cicirelli
</a:autore >
</rdf:Description>
</rdf:RDF>
L’elemento <rdf:RDF> racchiude la definizione dello statement RDF ed al suo interno troviamo la definizione di due Namespace: il primo è relativo al Namespace RDF, mentre il secondo Namespace contiene l’URI che identifica lo schema RDF utilizzato per descrivere le regole per l’utilizzo della proprietà autore presente nel nostro statement. L’uso dei namespace XML è molto importante in quanto essi forniscono un metodo per identificare senza ambiguità la semantica e le convenzioni che disciplinano l’utilizzo di proprietà all’interno di Authority (come ad esempio la Dublin Core) che ne gestisce il vocabolario.
La descrizione del metadato è contenuta all’interno dell’elemento <rdf:Description> ed il suo attributo about identifica la risorsa alla quale si riferisce il metadato stesso. La proprietà dello statement è descritta utilizzando il tag <a:autore>, secondo le regole che sono espresse nel relativo schema RDF.
Il nostro secondo esempio di statement RDF (il cui grafo è presente in Figura 4), sarà espresso come segue:
<rdf:RDF
xmlns:rdf=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”
xmlns:a=”http://www.example.it/schema_autore/”>
<rdf:Description about=”http://www.example.org/Antonio/TutorialRDF.pdf”>
<a:autore rdf:resource=”http://www.finanze.it/CF/CCRNTN85S20A225K”/>
</rdf:Description>
<rdf:Description about=”http://www.finanze.it/CF/CCRNTN85S20A225K”>
<a:nome>Antonio Cicirelli</a:nome>
<a:email>antoniocici@example.org</a:email>
<a:affiliate>Politecnico di Bari</a:affiliate>
</rdf:Description>
</rdf:RDF>
In questo caso, all’interno dello statement RDF abbiamo la definizione di due risorse, identificate dai due elementi <rdf:Description>, che sono messe in relazione attraverso l’uso dell’attributo rdf:resource presente nell’elemento <a:autore>. In questo modo la descrizione della seconda risorsa (quella relativa all’autore del documento) viene assegnata come valore della proprietà autore della prima risorsa.
I Contenitori
In alcuni casi può essere necessario far riferimento a più di una risorsa, per esempio per descrivere il fatto che un libro è stato scritto da più autori, oppure che un documento è composto da una serie di componenti, oppure che una funzione può essere svolta da una delle persone elencate e così via.
RDF pone una soluzione a tale necessità definendo tre tipi di contenitori (container):
- Bag: è una lista non ordinata di risorse o costanti, che serve a dichiarare che una proprietà può assumere valori multipli, senza attribuire un significato particolare al loro ordine. Sono ammessi valori duplicati;
- Sequence: è una lista ordinata di risorse o costanti, usata nel caso in cui si definisce una proprietà che può assumere valori multipli e per la quale è importante l’ordine di successione degli stessi. Anche in questo caso sono ammessi valori duplicati;
- Alternative: è una lista di risorse o costanti che costituiscono una alternativa al singolo valore assunto da una proprietà.
RDF permette inoltre di definire proprietà sia dell’intero container che dei singoli elementi.
Vediamo ora un esempio di contenitore di tipo Bag che rappresenti il fatto che il nostro tutorial RDF ha due esempi che sono identificati univocamente dalla loro URL:
Figura 5: Rappresentazione grafica di un contenitore Bag
Andiamo a vedere ancora una volta il risultato della serializzazione:
<rdf:RDF
xmlns:rdf=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”
xmlns:ex=”http://www.example.it/schema_esempi/”>
<rdf:Description about=”http://www.example.org/Antonio/TutorialRDF.pdf”>
<ex:Esempio>
<rdf:Description>
<rdf:type rdf:resource=”http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag”/>
<rdf:_1 rdf:resource=”http://example.org/Antonio/rdf/Example1.pdf”/>
<rdf:_2 rdf:resource=”http://example.org/Antonio/rdf/Example2.pdf”/>
</rdf:Description>
</rdf:Description>
</rdf:RDF>
La Reificazione
Come abbiamo detto in precedenza, gli statement riguardano le risorse. In alcuni casi, tuttavia, può essere utile certificare la credibilità di un particolare statement formulando degli statement relativi ad altri statement. Per esempio:
http://example.org/Antonio/TutorialRDF.pdf ha Autore Antonio Cicirelli
viene vista da RDF come un fatto, mentre lo statement:
Pinco Pallino asserisce che http://example.org/Antonio/TutorialRDF.pdf ha Autore Antonio Cicirelli
non afferma un fatto relativo alla risorsa http://example.org/Antonio/TutorialRDF.pdf, ma un fatto relativo all’affermazione di Pinco Pallino. Per esprimere questo fatto in RDF, dobbiamo modellare lo statement come una risorsa con quattro proprietà.
Nell’ambito della comunità che si interessa di Knowledge Representation, questo processo prende il nome di reificazione (reification), e il modello di statement prende il nome di reified statement.
Per modellare questa particolare categoria di statement, RDF definisce queste quattro proprietà:
- Soggetto (subject), che identifica la risorsa sulla quale era stato formulato lo statement originale (nel nostro caso http://example.org/Antonio/TutorialRDF.pdf);
- Predicato (predicate), che definisce la proprietà nello statement originale (nel nostro caso Autore);
- Oggetto (object), in cui è identificato il valore della proprietà nello statement modellato (nel nostro caso Antonio Cicirelli);
- Tipo (type), ovvero una descrizione del tipo della nuova risorsa.
Figura 6: Rappresentazione grafica di un reified statement
La figura 6 mostra il grafo relativo al nostro esempio di statement reificato (reified statement).
Antonio Cicirelli
[1] URI (Uniform Resource Identifier) è una stringa che identifica univocamente una generica risorsa all’interno di un determinato dominio. Un esempio di URI è l’URL, ovvero quella stringa che identifica univocamente una risorsa all’interno del WWW.
Se il post ti è piaciuto, ti ha incuriosito o se non ha soddisfatto appieno la tua voglia di conoscenza lasciaci un commento, ci sarà d'aiuto per andare avanti e migliorare oppure sottoscrivi i feed e ricevi i prossimi articoli nel tuo RSS reader.
grazie, devo sostenere un esame, quanto scritto mi è stato molto utile, A.