Resource Description Framework

Il Resource Description Framework (RDF) è lo strumento base proposto da W3C per la codifica, lo scambio e il riutilizzo di metadati strutturati e consente l'interoperabilità semantica tra applicazioni che condividono le informazioni sul Web.
È costituito da due componenti:
RDF Model and Syntax: espone la struttura del modello RDF, e descrive una possibile sintassi.
RDF Schema: espone la sintassi per definire schemi e vocabolari per i metadati.

L'RDF Data Model si basa su tre principi chiave:
Qualunque cosa può essere identificata da un Uniform Resource Identifier (URI).
The least power: utilizzare il linguaggio meno espressivo per definire qualunque cosa.
Qualunque cosa può dire qualunque cosa su qualunque cosa.

Principi e modello dei dati
 
Qualunque cosa descritta da RDF è detta risorsa. 
Principalmente una risorsa è reperibile sul web, ma RDF può descrivere anche risorse che non si trovano direttamente sul web. Ogni risorsa è identificata da un URI, Uniform Resource Identifier.

Il modello di dati RDF è formato da risorse, proprietà e valori. Le proprietà sono delle relazioni che legano tra loro risorse e valori, e sono anch'esse identificate da URI. Un valore, invece, è un tipo di dato primitivo, che può essere una stringa contenente l'URI di una risorsa.

L'unità base per rappresentare un'informazione in RDF è lo statement. Uno statement è una tripla del tipo Soggetto – Predicato – Oggetto,
dove il soggetto è una risorsa, il predicato è una proprietà e l'oggetto è un valore (e quindi anche un URI che punta ad un'altra risorsa).

Il data model RDF permette di definire un modello semplice per descrivere le relazioni tra le risorse, in termini di proprietà identificate da un nome e relativi valori. Tuttavia, RDF data model non fornisce nessun meccanismo per dichiarare queste proprietà, né per definire le relazioni tra queste proprietà ed altre risorse. Tale compito è definito da RDF Schema.

RDF Container 

RDF quando deve far riferimento a più di una risorsa, per esempio per descrivere il fatto che la risorsa è associata a più proprietà, definisce dei contenitori (container), ossia liste di risorse.
Tre sono i tipi di contenitori:
Bag, è una lista non ordinata di risorse o costanti. Viene utilizzato per dichiarare che una proprietà ha valori multipli. Per esempio i componenti di un convegno.
Sequence, differisce da Bag per il fatto che l'ordine delle risorse è significativo. Per esempio si vuole mantenere l'ordine alfabetico di un insieme di nomi, gli autori di un sito.
Alternative, è una lista di risorse che definiscono un'alternativa per il valore singolo di una proprietà. Per esempio per fornire titoli alternativi in varie lingue.

Rappresentazione fisica del modello

Un modello RDF è  rappresentabile da un grafo orientato sui cui nodi ci sono risorse o tipi
primitivi e i cui archi rappresentano le proprietà.
Un grafo RDF è rappresentato fisicamente mediante una serializzazione.

Le principali serializzazioni adottabili per un grafo RDF sono:

RDF/XML: documento RDF è serializzato in un file XML.
N-Triples: serializzazione del grafo come un insieme di triple soggetto - predicato - oggetto.
Notation3: serializzazione del grafo descrivendo, una per volta, una risorsa e tutte le sue proprietà.

In particolare la serializzazione in XML può avvenire secondo due metodi, quello classico e quello abbreviato, più leggibile per l'uomo.

Esempio
Si supponga di voler serializzare la frase "Mario_Rossi" "è_autore_di" "Rosso_di_sera_bel_tempo_si_spera": il risultato in RDF/XML sarà:

 <rdf:RDF 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:au="http://description.org/schema/">
   <rdf:Description about="http://www.book.it/Rosso_di_sera_bel_tempo_si_spera/">
     <au:author>Mario_Rossi</au:author>
   </rdf:Description>
 </rdf:RDF>

RDF Schema 

In RDF Schema (RDFS) ogni predicato è in relazione con altri predicati e permette di dichiarare l'esistenza di proprietà di un concetto, che permettano di esprimere con metodo sistematico affermazioni simili su risorse simili.
RDF Schema permette di definire nuovi tipi di classe. 
Inoltre specificando il concetto di classe e sottoclasse, consente di definire gerarchie di classi.
In RDF si possono rappresentare le risorse come istanze di classi e definire sottoclassi e tipi.

Classi RDF
Ogni risorsa descritta in RDF è istanza della classe rdfs:Resource.  
Le sottoclassi di rdfs:Resource sono: 
rdfs:Literal  Rappresenta un letterale, una stringa di testo.
rdfs:Property  Rappresenta le proprietà.
rdf:Class  Una classe dei linguaggi object-oriented. 

Proprietà RDF
rdf:type  Indica che una risorsa è del tipo della classe che viene specificata.
rdfs:subClassOf  Indica la relazione classe/sottoclasse fra due classi. 
L'ereditarietà può essere multipla.
rdfs:subPropertyOf  Indica che una proprietà è specializzazione di un'altra.
rdfs:seeAlso  Specifica che la risorsa è anche descritta in altre parti.
rdfs:isDefinedBy  Indica la risorsa "soggetto dell'asserzione" ovvero chi ha fatto l'asserzione.

Vincoli RDF
rdfs:range (codominio) È utilizzato come proprietà di una risorsa; indica le classi che faranno parte di una asserzione con la proprietà. 
rdfs:domain (dominio) Indica la classe a cui può essere applicata la proprietà.

Esempi RDFS: Classi e Proprietà

Esempio 1
La classe gatto viene dichiarata sottoclasse della classe animale.
  <rdf:Description rdf:ID="Animale">
   <rdf:type
    rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
 </rdf:Description>

 <rdf:Description rdf:ID="gatto">
   <rdf:type
   rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
 <rdfs:subClassOf rdf:resource="#Animale"/>
 </rdf:Description>

Esempio 2
La proprietà matrice viene dichiarata come specializzazione della proprietà madre.
  <rdf:Description rdf:ID="Madre">
   <rdf:type 
   rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
 </rdf:Description>

 <rdf:Description rdf:ID="Matrice">
   <rdf:type 
   rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
 <rdfs:subPropertyOf rdf:resource="#Madre"/>
 </rdf:Description>

Voci correlate 
 Annotea
 Web Ontology Language
 Ontologia (informatica)
 Web semantico
 FOAF+DOAC
 DataPortability
 Jena (informatica)
 OpenRDF
 RDF/XML
 Notation3
 Turtle (formato)
 TriG
 TriX
 N-Triples

Altri progetti

Collegamenti esterni 
 

 
Metadati