XML/RDF - Resource Description Framework

Wikibooks, manuali e libri di testo liberi.
< XML
Indice del libro

Obiettivi di apprendimento

  • Comprendere il Resource Description Framework (RDF)
  • Utilizzare RDF per definire i metadati per le risorse web
  • Includere standard come il Dublin Core per le descrizioni
  • Scoprire come Adobe gestisce i metadati
  • Creare le tue proprietà individuali per espandere la tua descrizione

Il Resource Description Framework (RDF) è una terminologia utilizzata per codificare, scambiare e riutilizzare i metadati nel World Wide Web. I metadati, dati strutturati che riguardano altri dati, includono qualsiasi tipo importante di informazione su una risorsa come autore, titolo, data di creazione o lingua. Una risorsa è tutto ciò che può essere indirizzato con un Uniform Resource Identifier (URI),[1] ad esempio una pagina web o un altro tipo di documento. RDF considera la descrizione come l'atto di fare dichiarazioni sulle proprietà (attributi, caratteristiche) e sulle relazioni tra queste risorse. Un framework è un modello comune per contenere o gestire le diverse informazioni su una risorsa.

Perché non usare XML per descrivere le cose?[modifica]

XML è troppo flessibile, ci sono troppi modi per descrivere una stessa cosa. Ad esempio, per il nome di una persona si può scrivere

  <person name="Pete Maravich">

oppure

 <person>
   <name>Pete Maravich</name>
 </person>

Ognuno di questi documenti XML verrebbe mappato in un diverso albero logico. Tuttavia, una query, come per esempio qual è il nome della persona x, deve essere indipendente dalla scelta dell'albero. RDF è diverso perché ha un modo standard di interpretare le descrizioni codificate in XML delle risorse che si converte in un albero logico e copre quindi tutte le possibili rappresentazioni di una descrizione.

I documenti XML inoltre seguono uno schema. L'ordine degli elementi è stringente e i documenti non p senza modificare lo schema. RDF consente di elencare le informazioni indipendentemente dal loro ordine o aspetto ed è anche estensibile. Ciò significa che se si riceve una descrizione di qualcosa o qualcuno, è possibile aggiungere facilmente informazioni senza essere costretti a seguire uno schema. Questo è un grande vantaggio, in particolare per le applicazioni di annotazione e metadati. Oltre a ciò, è complicato recuperare qualsiasi valore semantico da un documento XML senza conoscere lo schema XML.

RDF è un'applicazione di XML che applica i vincoli strutturali necessari per fornire metodi inequivocabili per esprimere la semantica. La sintassi XML garantisce indipendenza, estensibilità, convalida del fornitore e capacità di rappresentare strutture complesse. RDF estende la sintassi e il modello XML generali per essere specifici per la descrizione delle risorse. Inoltre, RDF utilizza namespace XML che consentono di individuare e identificare in modo univoco un insieme di proprietà. Con i namespace che puntano agli URI, è possibile generare per le proprie risorse nomi univoci a livello globale, che quindi non hanno bisogno di alcun contesto per qualificarsi.

Breve storia[modifica]

RDF è il risultato di diverse comunità di metadati che si uniscono per creare un'architettura solida e flessibile per supportare i metadati sul web esistente. La prima specifica RDF è stata rilasciata nel 1997 da Ora Lassila e Ralph Swick. Sulla base di tale specifica, negli anni seguenti furono istituiti gruppi di interesse RDF e RDF divenne una raccomandazione del W3C.[2] È stato presto realizzato quale fosse il potenziale di RDF e una volta che il suo uso sarà diffuso, gli impatti saranno enormi. Ora Lassila ha dichiarato che

« Una volta che la rete è stata sufficientemente "popolata" con metadati ricchi, cosa possiamo aspettarci? Innanzitutto, la ricerca sul web diventerà più semplice poiché i motori di ricerca hanno più informazioni disponibili e quindi la ricerca può essere più focalizzata. Saranno inoltre aperte le porte agli agenti software automatizzati per il roaming sul web, alla ricerca di informazioni per noi o alla negoziazione di attività commerciali per conto nostro. La rete di oggi, la vasta massa non strutturata di informazioni, potrebbe in futuro trasformarsi in qualcosa di più gestibile - e quindi qualcosa di molto più utile. »
(W3C_NOTE_1997-11-13)

Scopo[modifica]

Oltre a rendere i metadati leggibili da un essere umano, RDF ha lo scopo di consentire lo scambio di informazioni tra diverse applicazioni senza alcuna perdita di significato. L'uso efficace dei metadati tra le applicazioni, tuttavia, richiede convenzioni comuni sulla sintassi e sulla struttura della semantica. RDF impone queste convenzioni che rendono possibile un trasferimento privo di ambiguità. Le aree di applicazione includono la descrizione delle risorse, le sitemap, la classificazione dei contenuti, il commercio elettronico, i servizi collaborativi e le preferenze sulla privacy. In precedenza, uno dei principali ostacoli all'interoperabilità dei metadati è stata la molteplicità di standard, tra loro incompatibili, per la sintassi dei metadati e i linguaggi di definizione degli schemi. Tuttavia, poiché RDF è una raccomandazione del W3C e le comunità forniscono un vocabolario standard per descrivere le cose che i progettisti e gli sviluppatori di applicazioni possono usare per creare applicazioni che consentono lo scambio di metadati in modo standardizzato.

La struttura di base[modifica]

Dichiarazioni[modifica]

Con RDF si possono fare dichiarazioni sulle risorse. Di seguito puoi vedere un esempio di una dichiarazione che può essere fatta su una pagina web:

http://www.example.org/index.html ha un autore il cui nome è Pete Maravich.

In generale un'istruzione RDF è una tripletta che contiene:

  • una risorsa, oggetto della dichiarazione
  • una proprietà, il predicato dell'istruzione
  • un valore, l'oggetto di un'istruzione

RDF si basa sul concetto che ogni risorsa può avere proprietà diverse con diversi valori. Una risorsa, rappresentata da un riferimento URI, può essere completamente descritta usando le proprietà e i loro valori. Altre proprietà per questa pagina Web potrebbero essere:

http://www.example.org/index.html ha una lingua che è l'inglese.

o

http://www.example.org/index.html ha un titolo che è Example_Title.

Diagrammi[modifica]

Un'istruzione RDF è una tripletta strutturata che contiene un soggetto, un predicato e un oggetto. Un insieme di tali triplette è chiamato "diagramma": in esso un soggetto è sempre un nodo, un predicato è sempre un arco e un oggetto è sempre un nodo:

Diagramma astratto RDF

L'insieme delle istruzioni di esempio può essere rappresentato dal seguente grafico:

Diagramma esempio

Soggetto http://www.example.org/index.html è un riferimento URI o un nodo vuoto
Predicato http://purl.org/dc/elements/1.1/Title è un riferimento URI
Oggetto Example_Title può essere un riferimento URI, un nodo letterale o un nodo vuoto

RDF/XML[modifica]

Le frasi in una lingua naturale e i diagrammi che rappresentano il modello concettuale di RDF sono molto utili per comprendere le basi di RDF. Tuttavia, RDF utilizza una sintassi XML normativa chiamata RDF/XML per creare e scambiare grafici. Come HTML, RDF/XML è processabile da una macchina e, utilizzando gli URI, può collegare informazioni. Tuttavia, a differenza dell'ipertesto convenzionale, gli URI RDF possono fare riferimento a qualsiasi cosa identificabile, comprese quelle che potrebbero non essere direttamente recuperabili sul web (come le persone).

Le seguenti righe rappresentano il grafico nella seconda figura qui sopra in RDF/XML:

1  <?xml version="1.0"?>
2  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3           xmlns:dc="http://purl.org/dc/elements/1.1/"
4           xmlns:property="http://www.example.org/properties/">
5      <rdf:Description rdf:about="http://www.example.org/index.html">
6         <property:author>Pete Maravich</property:author>
7      </rdf:Description>
8      <rdf:Description rdf:about="http://www.example.org/index.html">
9          <dc:language>en</dc:language>
10     </rdf:Description>
11     <rdf:Description rdf:about="http://www.example.org/index.html">
12         <dc:title>Example_Title</dc:title> 
13     </rdf:Description>
14 </rdf:RDF>

Esaminiamo le righe di codice per comprendere meglio la sintassi:

  • riga 1: dichiarazione XML, identifica il documento come XML nella versione corrente 1.0
  • riga 2: inizio di un elemento rdf:RDF, identifica il codice successivo come RDF - dichiara anche un namespace XML rdf, tutti i tag che iniziano con il prefisso rdf: fanno parte del namespace identificato dall'URIref http://www.w3.org/1999/02/22-rdf-syntax-ns#, che descrive il vocabolario RDF
  • riga 3: dichiara un namespace XML dc, tutti i tag che iniziano con il prefisso dc: fanno parte del namespace identificato da URIref http://purl.org/dc/elements/1.1/ - il collegamento definisce un vocabolario standard di termini per metadati
  • riga 4: dichiara namespace XML property, tutti i tag che iniziano con il prefisso property: fanno parte dello namespace identificato dall'URIref http://www.example.org/properties/ - questo URI è fittizio ed è stato scelto per mostrare che chiunque può creare il proprio vocabolario per descrivere le risorse
  • righe 5-7: rappresentano un'affermazione specifica sulla risorsa http://www.example.org/index.html come mostrato negli esempi - la riga 5 dichiara l'oggetto della descrizione, mentre la riga 6 fornisce un elemento property, in cui il nome property è un'abbreviazione che rappresenta il namespace assegnato (riga 4), property:author sta per http://www.example.org/properties/author - nel tag property è incorporato il valore (oggetto) della descrizione come testo semplice
  • righe 8-10: mostra un'altra affermazione - la riga 8 fornisce nuovamente l'argomento - dc:language specifica il predicato per la dichiarazione, http://purl.org/dc/elements/1.1/language - en è un codice standard internazionale di due lettere per l'inglese
  • righe 11-13: mostra ancora un'altra affermazione - la riga 10 serve per identificare il soggetto - dc:title specifica il predicato per la dichiarazione, http://purl.org/dc/elements/1.1/title - il valore Example_Title è l'oggetto
  • riga 14: termina l'elemento rdf:RDF

Valori di proprietà strutturati e nodi vuoti[modifica]

Come accennato in precedenza, l'oggetto di un'istruzione può essere un riferimento letterale, un nodo vuoto o un riferimento URI. Gli ultimi due danno a RDF maggiore potenza perché consentono di creare strutture complesse, i cosiddetti valori di proprietà strutturati. Ad esempio, si prenda in considerazione la descrizione dell'indirizzo di qualcuno. Un indirizzo è una struttura che consiste di valori diversi come una strada, una città, uno stato e un codice postale. In RDF si identificherebbe l'indirizzo come una risorsa per consentire una descrizione più dettagliata.

Diagramma RDF strutturato

Come puoi vedere, il valore della proprietà creator è rappresentato da un riferimento usando l'URI http://www.example.org/members/1234. Le istruzioni RDF (archi e nodi aggiuntivi) possono quindi essere scritte con quel nodo come soggetto, per rappresentare le informazioni aggiuntive come il nome del creatore e il suo indirizzo. La stessa proprietà adress è rappresentata da un URI, che consente una descrizione dettagliata che viene aggregata da ulteriori dichiarazioni sull'indirizzo.

Tuttavia, per l'URIref http://www.example.org/address/1234 potrebbe non essere mai necessario fare riferimento direttamente dall'esterno di un particolare grafico e pertanto potrebbe non richiedere un identificatore specifico. Il concetto sopra potrebbe anche essere rappresentato usando un nodo vuoto per l'oggetto indirizzo. I nodi vuoti erano chiamati risorse anonime, non avevano URIrif né letterali.

Diagramma strutturato RDF con un nodo vuoto

In RDF/XML il concetto di valore di proprietà strutturato e nodo vuoto sono rappresentati in questo modo:

1  <?xml version="1.0"?>
2  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3           xmlns:dc="http://purl.org/dc/elements/1.1/"
4           xmlns:property="http://www.example.org/properties/">
5      <rdf:Description rdf:about="http://www.example.org/index.html">
6          <dc:creator>
7              <rdf:Description rdf:about="http://www.example.org/members/1234">
8                  <properties:name>Pete Maravich</properties:name>
9                  <properties:address rdf:nodeID="abc"/>
10             </rdf:Description>
11         </dc:creator>
12     </rdf:Description><br>
13     <rdf:Description rdf:nodeID="abc">
14         <properties:street>346 Broad Street</properties:street>
15         <properties:city>Athens</properties:city>
16         <properties:state>Georgia</properties:state>
17     </rdf:Description>
18 </rdf:RDF>

Esaminiamo le righe di codice che rappresentano i nuovi concetti:

  • righe 5-12: descrive la risorsa http://www.example.org/index.html che ha il valore http://www.example.org/members/1234
  • righe 7-10: mostra un modo per abbreviare più elementi di proprietà per una risorsa - di solito un nodo ha più archi (proprietà) che si tolgono, e invece di scrivere una descrizione per ogni proprietà si può abbreviare usando più elementi di proprietà figlio all'interno del nodo elemento che descrive il nodo soggetto
  • riga 9: mostra come si può identificare un nodo vuoto in RDF/XML - a volte è necessario che lo stesso nodo vuoto in un diagramma sia indicato in RDF/XML in più punti - in tal caso, può essere fornito al nodo vuoto un identificatore "nodo vuoto" per identificarlo nel documento
  • righe 13-17: visualizza le proprietà e i valori per il nodo vuoto identificato nella riga 9

Applicazioni RDF[modifica]

Dublin Core Metadata Initiative[modifica]

La Dublin Core Metadata Initiative (DCMI)[3] è un'organizzazione che si occupa di promuovere l'adozione di standard di metadati interoperabili, e di sviluppare vocabolari di metadati specializzati per la descrizione delle risorse che consentono sistemi più intelligenti di rilevazione delle informazioni.

Fondamentalmente il Dublin Core è un insieme di elementi che vengono utilizzati per descrivere un documento. Il suo obiettivo è fornire un set minimo di elementi descrittivi che supportano e semplificano la descrizione e l'indicizzazione automatizzata di oggetti web simili a documenti. Gli strumenti di rilevazione su internet, come i "Webcrawlers" impiegati dai motori di ricerca del World Wide Web, utilizzano set di metadati. Inoltre, il Dublin Core è concepito per essere sufficientemente semplice da essere compreso e utilizzato da autori e editori occasionali che pubblicano informazioni su Internet.[4]

Dublin Core Metadata Element Set[5] mostra una descrizione di tutti gli elementi correnti definiti nel Dublin Core. Nel seguente esempio si può vedere un documento RDF che utilizza gli elementi Dublin Core per descrivere un articolo in una rivista:

1  <?xml version="1.0"?><br>
2  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3           xmlns:dc="http://purl.org/dc/elements/1.1/"
4           xmlns:dcterms="http://purl.org/dc/terms/"><br>
5      <rdf:Description rdf:about="http://www.cio.com/archive/101504/km.html">
6          <dc:title>Less for Success</dc:title>
7          <dc:creator>Alice Dragoon</dc:creator>
8          <dc:subject>
9              <rdf:Bag>
10                 <rdf:li>knowledge management</rdf:li>
11                 <rdf:li>technology investments</rdf:li>
12             </rdf:Bag>
13         </dc:subject>
14         <dc:description>Forget the big bang approach. When it comes to demonstrating the value
15          of knowledge management, a piecemeal strategy works best.</dc:description>
16         <dc:publisher>CXO Media</dc:publisher>
17         <dcterms:issued>October 15, 2004</dcterms:issued>
18         <dc:format>text/html</dc:format>
19         <dc:language>en</dc:language>
20         <dcterms:isPartOf rdf:resource="http://www.cio.com/archive/101504/index.html"/>
21     </rdf:Description><br>
22 </rdf:RDF>

Adobe XMP[modifica]

Extensible Metadata Platform è una specifica che descrive modelli di dati e di archiviazione basati su RDF per metadati riguardanti documenti in qualsiasi formato. XMP può essere incluso in file di testo come HTML o SVG, formati di immagine come JPEG o GIF e formati proprietari di Adobe come Photoshop o Acrobat. Adobe si sta impegnando affinché tutte le sue applicazioni supportino XMP. Tuttavia, nonostante Adobe affermi che XMP fornisce un formato standard per la creazione, l'elaborazione e l'interscambio di metadati, la specifica non è uno standard.

XMP fornisce:

  • Un modello di dati: un modo utile e flessibile per descrivere i metadati nei documenti.
  • Un modello di archiviazione: per l'implementazione del modello di dati. Ciò include la serializzazione dei metadati come flusso di pacchetti XML e XMP, un mezzo per impacchettare i dati in file.
  • Schemi: insiemi predefiniti di definizioni di proprietà dei metadati rilevanti per una vasta gamma di applicazioni, inclusi tutti i prodotti di modifica e pubblicazione di Adobe, nonché per le applicazioni di molti altri fornitori. XMP fornisce anche linee guida per l'estensione e l'aggiunta di schemi.

Tuttavia, i vocabolari di metadati XMP sono relativamente brevi, quindi i modi per descrivere un documento sono limitati. Per ovviare a questo problema, Adobe utilizza standard di metadati come Dublin Core e consente inoltre agli utenti di definire il proprio vocabolario.

RSS (RDF Site Summary)[modifica]

RDF Site Summary (RSS) è a sua volta un'applicazione di RDF. Per approfondire si veda il capitolo su RSS in questo Wikibook.

Creazione di un vocabolario RDF[modifica]

Come visto in precedenza, è possibile creare il proprio vocabolario di metadati RDF, nonostante l'utilizzo di standard come il Dublin Core. Questa sezione ha lo scopo di mostrare un approccio molto generale alla creazione di un vocabolario personale.

Il primo passo nella creazione di un vocabolario è definire gli elementi del dominio e le loro proprietà all'interno dell'area data. Ciò significa che bisogna delineare quale tipo di informazioni sulla risorsa devono essere descritte. Diciamo che vogliamo salvare i seguenti dati su una risorsa:

Proprietà Descrizione
Title Titolo della risorsa
Created Data di creazione
Author Autore della risorsa
Status Stato corrente della risorsa
Subject Oggetto/argomento della risorsa
Format Formato della risorsa
FunFactor FunFactor della risorsa

Il prossimo passo è creare un documento RDF Schema (RDFS) per il nuovo vocabolario. Qui puoi vedere la definizione per le proprietà desiderate. Utilizzando questo RDFS si può descrivere l'articolo visto sopra nel modo seguente:

 <?xml version="1.0"?>
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
          xmlns:same="http://mitglied.lycos.de/virtuoso5/elements/1.0/myschema#">
     <rdf:Description rdf:about="http://www.cio.com/archive/101504/km.html">
         <same:title>Less for Success</same:title>
         <same:author>Alice Dragoon</same:author>
         <same:subject>
             <rdf:Bag>
                 <rdf:li>knowledge management</rdf:li>
                 <rdf:li>technology investments</rdf:li>
            </rdf:Bag>
         </same:subject>
         <same:format>text/html</same:format>
         <same:status>active</same:status>
         <same:created>2004-10-19</same:created>
         <same:funFactor>3</same:funFactor>
     </rdf:Description><br>
 </rdf:RDF>

Per convalidare i suoi file RDFS e RDF è possibile utilizzare il validatore RDF W3C (http://www.w3.org/RDF/Validator/).

Note[modifica]

  1. http://www.isi.edu/in-notes/rfc2396.txt
  2. W3C RDF
  3. DCMI
  4. Vedi anche RFC-2413
  5. Dublin Core Metadata Element Set