# XML/RDF - Resource Description Framework

XML
Copertina Tutti i moduli · Sviluppo
PrefazioneXML/Prefazione
* IntroduzioneXML/Introduzione
* Entità singoleXML/Entità singole
* Strutture dati di baseXML/Strutture dati di base
* Relazione uno-moltiXML/Relazione uno-molti
* Relazione uno-unoXML/Relazione uno-uno
* Relazione molti-moltiXML/Relazione molti-molti
* Relazioni ricorsiveXML/Relazioni ricorsive
* Schemi di datiXML/Schemi di dati
* Document Type Definition (DTD)XML/DTD
* XHTMLXML/XHTML
* XPathXML/XPath
* XLinkXML/XLink
* CSSXML/CSS
* XSLT e fogli di stileXML/XSLT e fogli di stile
* CocoonXML/Cocoon
* Parsing di file XMLXML/Parsing di file XML
* XULXML/XUL
* Asynchronous JavaScript and XML (AJAX)XML/AJAX
* Web serviceXML/Web service
* XMLHttpRequestXML/XMLHttpRequest
* Database e XMLXML/Database e XML
* SVGXML/SVG
* VoiceXMLXML/VoiceXML
* DocBookXML/DocBook
* SMILXML/SMIL
* XBRLXML/XBRL
* WDDX
* RPCXML/RPC
* RDFXML/RDF - Resource Description Framework
* RSSXML/RSS
* NamespaceXML/Namespace
* Gestire XML con MySQL
* XML EncryptionXML/XML Encryption
* XQueryXML/XQuery
* XML e JDBC
* XFormsXML/XForms
* OpenOffice.org e l'OpenDocument FormatXML/OpenOffice.org e l'OpenDocument Format
* KML e Google EarthXML/KML
* Lo standard ACORD - XML nel settore delle assicurazioniXML/ACORD
Modifica il sommario
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), 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?

XML è troppo flessibile, ci sono troppi modi per descrivere una stessa cosa. Ad esempio, per il nome di una persona si può scrivere
oppure
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

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. È 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

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
### Dichiarazioni

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

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:
L'insieme delle istruzioni di esempio può essere rappresentato dal seguente grafico:
| 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

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:
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

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.
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.
In RDF/XML il concetto di valore di proprietà strutturato e nodo vuoto sono rappresentati in questo modo:
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
### Dublin Core Metadata Initiative

La Dublin Core Metadata Initiative (DCMI) è 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.
Dublin Core Metadata Element Set 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:

### Adobe XMP

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)

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

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:
Per convalidare i suoi file RDFS e RDF è possibile utilizzare il validatore RDF W3C (http://www.w3.org/RDF/Validator/).

## Note

* ↑ http://www.isi.edu/in-notes/rfc2396.txt
* ↑ W3C RDF
* ↑ DCMI
* ↑ Vedi anche RFC-2413
* ↑ Dublin Core Metadata Element Set