![]() ![]() |
REC-rdf-syntax-19990222-it |
REC-rdf-syntax-19990222-itResource Description Framework (RDF) Modello e SintassiQuesto documento è una copia tradotta della
Raccomandazione del W3C "Resource Description Framework (RDF) Model and
Syntax Specification"
Ogni errore trovato in questa traduzione può essere
segnalato a |
Questa:
http://www.w3.org/TR/1999/REC-rdf-syntax-19990222
Versione attuale:
http://www.w3.org/TR/REC-rdf-syntax
Editori:
Ora Lassila mailto:ora.lassila@research.nokia.com
, Nokia Research Center
Ralph R. Swick mailto:swick@w3.org, World Wide Web
Consortium
Stato del documento
Copyright © 1997,1998,1999 W3C (MIT, INRIA, Keio ), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
Questo documento è stato rivisto dai membri del W3C e da altri gruppi interessati ed è stato approvato dal Direttore come una raccomandazione del W3C. È un documento stabile e può essere usato come materiale di riferimento o citato come riferimento normativo da altri documenti. Il ruolo del W3C nel fare la Raccomandazione è quello di segnalare all'attenzione le specifiche e di promuoverne l' impiego più ampio e diffuso. Questo incrementa la funzionalità e l'interoperabilità del Web.
La lista degli errori trovati in questa specifica è disponibile a . http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/errata.
Commenti su questa specifica possono essere inviati <www-rdf-comments@w3.org>. L’archivio dei commenti pubblici è disponibile a http://www.w3.org/Archives/Public/www-rdf-comments.
Il World Wide Web è stato in origine costruito per essere usato dall'uomo e, sebbene ogni cosa in esso sia leggibile dalle macchine, questi dati tuttavia non sono comprensibili da queste ultime. È veramente difficile automatizzare qualunque cosa sul Web e, a causa della quantitàdi informazioni contenute, non è possibile gestirlo manualmente. La soluzione proposta qui è quella di usare i metadati per descrivere i dati contenuti sul Web. I metadati sono "dati sui dati" (per esempio un catalogo di biblioteca è un metadato poiché descrive pubblicazioni) o, nell'accezione usata in questa specifica, "dati che descrivono risorse Web". La distinzione fra "dati" e "metadati" non è di tipo assoluto; è una distinzione creata in origine da una specifica applicazione, e molte volte la stessa risorsa potràessere interpretata simultaneamente nei due modi.
Resource Description Framework (RDF) è una base per il trattamento dei metadati; esso fornisce interoperabilitàtra applicazioni che scambiano sul Web informazioni comprensibili dalle macchine. RDF pone l'accento sui mezzi che consentono l'elaborazione automatica di risorse Web. RDF può essere utilizzato in diverse aree di applicazione; per esempio: nella ricerca di risorse al fine di migliorare le capacitàdei motori di ricerca, nella catalogazione per descrivere il contenuto e le relazioni del contenuto disponibili in un particolare sito Web, in una pagina o in una biblioteca digitale, usato da agenti software intelligenti per facilitare la condivisione e lo scambio di conoscenza, nella valutazione di contenuto, nel descrivere collezioni di pagine che rappresentano un unico "documento" logico, per descrivere i diritti di proprietà intellettuale di pagine Web, e per esprimere le preferenze sulla riservatezza da parte di un utente così come le politiche di riservatezza di un sito Web. RDF associato alla firma digitale rappresenteràla chiave di volta per la costruzione di un " Web affidabile " per il commercio elettronico, per la collaborazione e per altre applicazioni.
Questo documento introduce un modello per rappresentare metadati RDF e una sintassi per la codifica e la trasmissione di questi metadati secondo modalitàche favoriscano l'interoperabilitàfra server e client Web sviluppati in modo indipendente. La sintassi qui riportata fa uso di XML (Extensible Markup Language): una delle finalitàdi RDF è quella di permettere la definizione di semantiche per dati in formato XML, secondo modalitàstandardizzate e che mirano all'interoperabilità. RDF e XML sono complementari: RDF è un modello di metadati e per molti problemi di codifica richiesti dalla trasmissione e dall'archiviazione dei file (quali internazionalizzazione, set di caratteri, ecc.) si limita a fare dei rinvii. In questo RDF fa riferimento ad XML. Inoltre è importante capire che questa sintassi XML è solo una possibile sintassi per RDF e che possono emergere anche metodi alternativi per rappresentare lo stesso modello dei dati RDF.
Scopo essenziale di RDF è quello di realizzare un meccanismo per la descrizione di risorse che non sia basato su un particolare dominio di applicazione, né che definisca (a priori) la semantica di qualche dominio di applicazione. La definizione di questo meccanismo, pertanto, dovrebbe essere neutrale rispetto ai domini, tuttavia il meccanismo dovrebbe essere adattabile alla descrizione di informazioni di qualsiasi dominio.
Questa specifica sarà seguita da altri documenti che completeranno la struttura. Tra le cose più importanti per facilitare la definizione di metadati, RDF disporrà di un sistema di classi, analogo a quelli utilizzato dai sistemi di programmazione e modellazione orientata agli oggetti. Una collezione di classi (tipicamente creata per uno scopo o per un dominio specifico) viene detta schema. Le classi sono organizzate in una gerarchia, e offrono meccanismi di estensibilità attraverso un raffinamento in sottoclassi. In questo modo, per creare uno schema leggermente differente da uno esistente, non sarà necessario "reinventare la ruota", ma si potranno realizzare solo modifiche incrementali rispetto allo schema di base. Attraverso la condivisione degli schemi, RDF favorirà il riutilizzo delle definizioni di metadati. Grazie alla estensibilità incrementale di RDF, se gli agenti che elaborano i metadati incontrano schemi non noti saranno comunque in grado di risalire all'indietro fino agli schemi a loro familiari ed eseguire azioni significative su metadati diversi da quelli per cui erano stati progettati. Inoltre la condivisibilità e l'estensibilità di RDF consentono ai creatori dei metadati di usare ereditarietà multiple per "mischiare" le definizioni, di fornire viste multiple per i loro dati, servendosi del lavoro già fatto da altri. Inoltre, è possibile creare istanze di dati RDF sulla base di schemi multipli utilizzando fonti multiple (es., "mischiando" tipi differenti di metadati). Gli schemi possono, a loro volta, essere scritti in RDF; un documento abbinato a questa specifica, [RDF Schema] descrive un insieme di proprietà e classi per descrivere gli schemi RDF.
Quale risultato dell'attività di molte comunità che si sono trovate a concordare sui principi di base della rappresentazione e della trasmissione dei metadati, RDF è il frutto dell'influenza di diverse fonti. Le influenze principali provengono dalla stessa comunità della standardizzazione del Web nella forma di metadati HTML e PICS, dalla comunità dei bibliotecari, dalla comunità dei documenti strutturati nella forma di SGML e soprattutto XML, e anche dalla comunità della rappresentazione della conoscenza (KR). Ci sono anche altre aree tecnologiche che hanno contribuito alla definizione di RDF: linguaggi di modellazione e programmazione orientata agli oggetti, e le basi di dati. Anche se RDF proviene dalla comunità della rappresentazione della conoscenza, i lettori familiari con questo specifico campo devono essere avvertiti che RDF non specifica un meccanismo per ragionare. RDF può essere definito un semplice sistema. Un meccanismo per ragionare potrebbe essere costruito al di sopra di questo sistema.
Alla base di RDF vi è un modello per rappresentare proprietà definite e valori di proprietà . Il modello RDF si basa su principi ben definiti provenienti da varie comunità operanti nel campo della rappresentazione dei dati. Le proprietà RDF possono essere pensate come attributi di risorse e in questo senso corrispondono alle tradizionali coppie attributo-valore. Le proprietà RDF rappresentano anche relazioni fra risorse e quindi un modello RDF può perciò somigliare ad un diagramma entità -relazione. (Più esattamente, gli schemi RDF - che sono essi stessi istanze del modello dei dati RDF - sono diagrammi entità -relazione). Nella terminologia delle architetture orientate agli oggetti, le risorse corrispondono ad oggetti e le proprietà corrispondono a variabili di istanza.
Il modello dei dati RDF è un modo - neutrale rispetto alla sintassi impiegata - di rappresentare espressioni RDF. La rappresentazione del modello dei dati è usata per valutare l'equivalenza dei significati. Due espressioni RDF sono equivalenti se, e solo se, le loro rappresentazioni del modello dei dati sono uguali. Questa definizione di equivalenza permette variazioni sintattiche nell'espressione, senza alterarne il significato. (Vedi la Sezione 6 per approfondimenti sulla comparazione delle stringhe).
Il modello di base dei dati è costituito da tre tipi di oggetto:
Risorse | Tutte le cose descritte con espressioni RDF vengono dette risorse . Una risorsa può essere un'intera pagina Web; ad esempio il documento "http://www.w3.org/Overview.html". Una risorsa può anche essere una parte di una pagina Web; ad esempio uno specifico elemento HTML o XML all'interno di un documento. Una risorsa può anche essere un'intera collezione di pagine; per esempio un intero sito Web. Una risorsa può anche essere un oggetto non direttamente accessibile via Web; ad esempio un libro stampato. Le risorse sono sempre definite da URI con eventuali anchor id. Qualsiasi cosa può avere associato un URI; l'estensibilità degli URI permette l'introduzione di identificatori per qualsiasi entità immaginabile. |
Proprietà | Una proprietà consiste in un aspetto specifico, una caratteristica, un attributo, o una relazione usata per descrivere una risorsa. Ogni proprietà ha un significato specifico, definisce i valori ammessi, i tipi di risorse a cui può riferirsi, e la sua relazione con altre proprietà. Questo documento non tratta del modo in cui le proprietà vengono espresse; per tali informazioni, vedi la specifica RDF Schema. |
Asserzioni | Una determinata risorsa, insieme ad una proprietà definita e al valore relativo alla proprietà stessa, costituiscono una asserzione RDF. Queste tre parti della asserzione sono dette, rispettivamente, il soggetto, il predicato, e l'oggetto. L'oggetto di una asserzione (ovvero il valore della proprietà ) può essere a sua volta un'altra risorsa, oppure può essere un letterale: ovvero una risorsa (definita da un URI) o una semplice stringa di caratteri o altro tipo di dato primitivo definito da XML. In termini RDF un letterale può comprendere nel suo contenuto anche markup XML, ma esso non è elaborato da un processore RDF. Esistono alcune restrizioni sintattiche su come può essere espresso il markup nei letterali; vedi la Sezione 2.2.1. |
Le risorse sono identificate da un identificatore di risorsa . Un identificatore di risorsa è un URI più un anchor id opzionale (vedi la sezione 2.2.1.). Ai fini di quanto trattato in questa sezione, le proprietà saranno indicate con semplici nomi.
Considera come semplice esempio la frase :
Ora lassila è il creatore della risorsa http://www.w3.org/Home/lassila
Questa frase si compone delle seguenti parti:
Soggetto (Risorsa) | http://www.w3.org/Home/Lassila |
Predicato (Proprietà ) | Creatore |
Oggetto (letterale) | "Ora Lassila" |
In questo documento noi rappresenteremo graficamente un'asserzione RDF servendoci di grafi orientati etichettati (detti anche "diagrammi a nodi e archi"). In questi diagrammi i nodi (di forma ovale) rappresentano le risorse e gli archi rappresentano le proprietà definite . I nodi che rappresentano stringhe (letterali) avranno forma rettangolare. La frase riportata sopra potrebbe pertanto essere rappresentata con il seguente diagramma:
Nota: La direzione della freccia è significativa. L'arco parte sempre dal soggetto e punta all'oggetto della asserzione. Il semplice diagramma riportato sopra può anche essere letto "http://www.w3.org/Home/Lassila ha come creatore "Ora Lassila", o più in generale "<soggetto> HA <predicato> <oggetto>".
Consideriamo ora il caso in cui si voglia dire qualcosa di più circa le caratteristiche del creatore di questa risorsa. In prosa tale proposizione potrebbe essere:
L'individuo il cui nome è Ora lassila, e-mail <lassila@w3.org>, è il creatore di http://www.w3.org/Home/lassila
Lo scopo di questa frase è quello di rendere il valore della proprietà "Creatore" un'entità strutturata. In RDF tale entità è rappresentata come un'altra risorsa. La proposizione riportata sopra non dà un nome a questa risorsa; essa è anonima, quindi nel diagramma sottostante noi la rappresenteremo come un ovale vuoto:
Nota: Nota: corrispondentemente a quanto indicato nella nota precedente, questo diagramma potrebbe essere letto "http://www.w3.org/Home/lassila ha come creatore qualcuno e questo qualcuno ha come nome Ora lassila e come e-mail lassila@w3.org"
All'entità strutturata dell'esempio precedente può anche essere assegnato un identificatore unico. La scelta dell'identificatore è fatta da chi progetta il database dell'applicazione. Per continuare l'esempio, si immagini che un id di un impiegato sia usato come identificatore univoco per una risorsa "persona". Gli URI utilizzati come chiave univoca per ciascun "impiegato" (come definito dall'organizzazione) potrebbero allora essere qualcosa come http://www.w3.org/staffId/85740. Ora possiamo scrivere le due proposizioni
L'individuo riferito da id dell'impiegato 85740 ha come nome Ora lassila e come indirizzo e-mail lassila@w3.org. La risorsa http://www.w3.org/Home/lassila è stata creata da questo individuo.
Il modello RDF relativo a queste proposizioni è:
Nota che questo diagramma è identico a quello precedente con la semplice aggiunta dell'URI per la risorsa che prima risultava essere anonima. Dal punto di vista di una seconda applicazione che interroghi questo modello, non c'è alcuna differenza tra asserzioni presenti in un'unica frase e asserzioni fatte in frasi separate. Alcune applicazioni, tuttavia, richiederanno che tale distinzione possa essere fatta, e RDF consente questo; per ulteriori approfondimenti, vedi la Sezione 4. Asserzioni su asserzioni.
Il modello dei dati RDF offre una struttura concettuale, astratta, per la definizione e l'uso di metadati. Per creare e scambiare questi metadati sarà necessaria anche una sintassi concreta. Questa specifica RDF usa la codifica XML come sintassi di interscambio. RDF richiede inoltre l'utilizzo di Namespace XML per associare ciascuna proprietà allo schema in cui è definita la proprietà ; vedi Sezione 2.2.3., Schemi e Namespace.
Le descrizioni sintattiche presenti in questo documento usano la notazione Extended Backus-Naur Form (così come definita nella specifica XML nella Sezione 6, intitolata "Notation") per descrivere gli elementi sintattici di base di RDF. La EBNF viene qui condensata, per facilitarne la lettura; in particolare, si usa "rdf" in corsivo per indicare una variabile di prefisso di namespace piuttosto che la più esatta notazione BNF " '<' Nsprefix ':...' ". è implicito dall'adozione delle regole XML il requisito che i nomi di proprietà e di tipo usati nei tag di chiusura coincidano esattamente a quelli usati nei tag di apertura. Tutte le flessibilità sintattiche di XML sono inoltre comprese implicitamente; es. trattamento degli spazi bianchi, uso degli apici singoli (') o doppi ("), character escaping, case sensitivity, e identificazione del linguaggio naturale o formale.
Questa specifica definisce due sintassi per la codifica di una istanza di un modello di dati RDF. La sintassi di serializzazione esprime in modo regolare tutte le caratteristiche del modello dei dati. La sintassi abbreviata include dei costrutti aggiuntivi che servono a rappresentare in forma più compatta un sottoinsieme del modello dei dati. Gli interpreti RDF devono essere in grado di trattare sia la sintassi di serializzazione completa che quella abbreviata. Quindi gli autori di metadati sono liberi di adoperare le due sintassi insieme.
Raramente una singola asserzione RDF compare isolata; più comunemente diverse proprietà di una risorsa saranno date insieme. La sintassi XML di RDF è stata progettata per compiere questo facilmente raggruppando le molteplici asserzioni riguardanti la stessa risorsa all'interno di un elemento Description. L'elemento Description indica, tramite l'attributo about, la risorsa alla quale si applicano tutte le asserzioni . Se la risorsa non esiste ancora (ovvero, non ha ancora un identificatore), allora l'elemento Description può fornire l'identificatore della risorsa usando un attributo ID
La sintassi di serializzazione RDF di base ha la seguente forma:
[1] RDF ::= ['<rdf:RDF>'] description* ['</rdf:RDF>'] [2] description ::= '<rdf:Description' idAboutAttr? '>' propertyElt* '</rdf:Description>' [3] idAboutAttr ::= idAttr | aboutAttr [4] aboutAttr ::= 'about="' URI-reference '"' [5] idAttr ::= 'ID="' IDsymbol '"' [6] propertyElt ::= '<' propName '>' value '</' propName '>' | '<' propName resourceAttr '/>' [7] propName ::= Qname [8] value ::= description | string [9] resourceAttr ::= 'resource="' URI-reference '"' [10] Qname ::= [ NSprefix ':' ] name [11] URI-reference ::= string, interpreted per [URI] [12] IDsymbol ::= (any legal XML name symbol) [13] name ::= (any legal XML name symbol) [14] NSprefix ::= (any legal XML namespace prefix) [15] string ::= (any XML text, with "<", ">", and "&" escaped)
L'elemento RDF è un semplice involucro che delimita i confini in un documento XML entro cui il contenuto è esplicitamente da intendere mappabile in una istanza di modello di dati RDF. L'elemento RDF è opzionale se il contenuto può essere riconosciuto come RDF dal contesto dell'applicazione.
L'elemento Description contiene gli elementi rimanenti che sono all'origine della creazione delle asserzioni nell'istanza del modello. L'elemento Description può essere pensato (ai fini della sintassi di base RDF) semplicemente come un posto dove inserire l'identificazione della risorsa che viene descritta. Tipicamente vi sarà più di una asserzione relativa ad una risorsa; Description fornisce un modo per indicare il nome della risorsa solo una volta pure in presenza di diverse asserzioni .
Quando, con l'elemento Description, viene specificato l'attributo about, le asserzioni contenute in Description si riferiscono alla risorsa il cui identificatore è indicato da about. Il valore dell'attributo about è interpretato come un riferimento-URI (Sez. 4 di [URI]). Il corrispondente identificatore della risorsa si ottiene risolvendo il riferimento-URI nella sua forma assoluta, secondo quanto specificato da [URI]. Se nel riferimento-URI è incluso un identificatore di frammento, allora l'identificatore di risorsa si riferisce solamente a quella sottocomponente della risorsa che contiene che è identificata dal corrispondente id del frammento interno alla risorsa principale (vedi anchor in [Dexter94]), altrimenti l'identificatore si riferisce all'intera risorsa indicata dall'URI. Un elemento Description senza attributo about rappresenta una nuova risorsa. Tale risorsa potrebbe essere un surrogato, o proxy, per qualche altra risorsa fisica che non abbia un URI riconoscibile. Il valore dell'attributo ID dell'elemento Description, se presente, rappresenta l' anchor id di questa risorsa "in-line" .
Se un'altro Description o un valore di proprietà deve essere riferito alla risorsa "in-line", questo userà il valore dell'ID di quella risorsa contenuto nel suo attributo about. L'attributo ID indica la creazione di una nuova risorsa e l'attributo about si riferisce ad una risorsa esistente; quindi, in Description è possibile specificare o ID o about, ma non entrambi contemporaneamente nello stesso elemento. I valori per ogni attributo ID non devono apparire in più di un attributo ID all'interno del singolo documento.
Un elemento Description può contenere più di un elemento propertyElt con lo stesso nome di proprietà. Ciascuno di questi propertyElt aggiunge un arco al grafo. L'interpretazione di questo grafo è definita da chi progetta lo schema.
All'interno di un propertyElt, l'attributo resource specifica che un'altra risorsa è il valore di questa proprietà; ovvero l'oggetto della asserzione, piuttosto che un letterale è un'altra risorsa identificata da un URI. L'identificatore di risorsa dell'oggetto è ottenuto risolvendo il riferimento-URI dell'attributo resource in modo analogo a quanto indicato sopra per l'attributo about. Le stringhe devono essere XML well-formed; i soliti meccanismi XML per l' "escaping" e per il contenuto fra apici possono essere usati se le stringhe contengono sequenze di caratteri (es. "<" e "&") che violano le regole di well-formed o che in qualche modo possano essere confuse con il markup. Vedi la Sezione 6. per la sintassi aggiuntiva per specificare un valore di una proprietà con contenuto XML well-formed contenente markup, in modo che questo markup non sia interpretato da RDF.
I nomi di proprietà devono essere associati con uno schema. Ciò può ottenersi qualificando i nomi degli elementi con un prefisso di namespace per connettere in modo non ambiguo la definizione della proprietà con il corrispondente schema RDF o dichiarando un namespace di default, così come specificato in [NAMESPACES].
La frase scelta come esempio nella sezione 2.1.1
Ora Lassila è il creatore della risorsa http://www.w3.org/Home/Lassila.
è rappresentata in RDF/XML come:
<rdf:RDF> <rdf:Description about="http://www.w3.org/Home/Lassila"> <s:Creator>Ora Lassila</s:Creator> </rdf:Description> </rdf:RDF>
Qui il prefisso 's' di namespace si riferisce a uno specifico prefisso di namespace scelto dall'autore di questa espressione RDF e definito in una dichiarazione di namespace XML del tipo:
xmlns:s="http://description.org/schema/"
Questa dichiarazione di namespace sarebbe tipicamente inclusa come attributo XML nell'elemento rdf:RDF ma può anche essere inclusa all'interno di un particolare elemento Description, o anche in una singola espressione propertyElt. L' URI del nome del namespace nella dichiarazione di namespace costituisce un identificatore unico globale per il particolare schema che l'autore di questi metadati sta usando per definire il proprio uso della proprietà Creator. Anche altri schemi possono definire una proprietà di nome Creator e le due proprietà saranno distinte attraverso i loro identificatori di schema. Nota anche che uno schema normalmente definisce diverse proprietà ; una singola dichiarazione di namespace sarà sufficiente a rendere disponibile l'uso di un ampio vocabolario di proprietà.
Il documento XML completo contenente le descrizioni di cui sopra sarebbe:
<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:s="http://description.org/schema/"> <rdf:Description about="http://www.w3.org/Home/Lassila"> <s:Creator>Ora Lassila</s:Creator> </rdf:Description> </rdf:RDF>
Usando per il namespace RDF la sintassi di default come definita in [NAMESPACES], questo documento potrebbe essere scritto anche così:
<?xml version="1.0"?> <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:s="http://description.org/schema/"> <Description about="http://www.w3.org/Home/Lassila"> <s:Creator>Ora Lassila</s:Creator> </Description> </RDF>
Inoltre, le dichiarazioni di namespace possono essere associate con un singolo elemento Description o anche con un singolo elemento propertyElt, come nell'esempio seguente:
<?xml version="1.0"?> <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <Description about="http://www.w3.org/Home/Lassila"> <s:Creator xmlns:s="http://description.org/schema/">Ora Lassila</s:Creator> </Description> </RDF>
Dal momento che le dichiarazioni di namespace possono essere annidate, l'esempio precedente potrebbe essere ulteriormente condensato nel seguente modo:
<?xml version="1.0"?> <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <Description about="http://www.w3.org/Home/Lassila"> <Creator xmlns="http://description.org/schema/">Ora Lassila</Creator> </Description> </RDF>
Tuttavia, espressioni fortemente condensate come questa sono scoraggiate quando la codifica RDF/XML è scritta a mano o per mezzo di un editor di testo. Sebbene priva di ambiguità, questa modalità aumenta le possibilità di errore rispetto all'uso coerente di prefissi espliciti. Nota che un frammento RDF/XML che si intende inserire in altri documenti dovrebbe dichiarare tutti i namespaces adoperati, in modo da essere completamente autoesplicativo. Ai fini di una migliore leggibilità, negli esempi introduttivi riportati nel seguito di questa sezione saranno omesse le dichiarazioni di namespace per far risaltare lo specifico punto illustrato.
Anche se la sintassi di serializzazione mostra la struttura di un modello RDF nel modo più chiaro, spesso può essere desiderabile usare una sintassi XML più compatta. La sintassi abbreviata RDF soddisfa questa esigenza. Come ulteriore beneficio, la sintassi abbreviata permette ai documenti conformi ad alcune DTDs XML ben-strutturate di essere interpretati direttamente come modelli RDF. La cosa non è ancora chiara
Tre forme di abbreviazione sono definite per la sintassi di serializzazione di base. La prima è utilizzabile per quelle proprietà che non vengono ripetute all'interno di un elemento Description e dove i valori di queste proprietà siano letterali . In questo caso, le proprietà possono essere scritte come attributi XML dell'elemento Description. L'esempio precedente, quindi, diventa:
<rdf:RDF> <rdf:Description about="http://www.w3.org/Home/Lassila" s:Creator="Ora Lassila" /> </rdf:RDF>
Nota che, poiché l'elemento Description non ha altro contenuto, una volta scritta la proprietà Creator in forma di attributo XML, viene impiegata la sintassi dell'elemento XML vuoto, al fine di omettere il tag di chiusura di Description.
Qui di seguito si riporta un altro esempio dell'uso di questa forma di abbreviazione:
<rdf:RDF> <rdf:Description about="http://www.w3.org"> <s:Publisher>World Wide Web Consortium</s:Publisher> <s:Title>W3C Home Page</s:Title> <s:Date>1998-10-03T02:27</s:Date> </rdf:Description> </rdf:RDF>
è equivalente, per gli scopi di RDF, a:
<rdf:RDF> <rdf:Description about="http://www.w3.org" s:Publisher="World Wide Web Consortium" s:Title="W3C Home Page" s:Date="1998-10-03T02:27"/> </rdf:RDF>
Nota che, pur essendo queste due espressioni RDF equivalenti, esse possono essere trattate differentemente da altri processori. In particolare, se queste due espressioni fossero incluse in un documento HTML allora il comportamento di default di un browser che non supporta RDF sarebbe quello di visualizzare i valori delle proprietà solo nel primo caso, mentre nel secondo caso non vi sarebbe alcun testo visualizzato (o tutt'al più uno spazio bianco).
La seconda forma di abbreviazione RDF si applica agli elementi Description annidati. Questa forma di abbreviazione può essere impiegata per specificheasserzioni, quando l'oggetto dellaasserzione è un'altra risorsa e i valori delle proprietà fornite in-line, di questa seconda risorsa, sono stringhe. Anche in questo caso si ricorre ad una trasformazione da elementi XML in attributi XML: le proprietà della risorsa nell'elemento Description annidato possono essere scritte come attributi XML dell'elemento propertyElt in cui quel Description era contenuto.
La frase del secondo esempio della Sezione 2.1.1.
L'individuo a cui si riferisce l'id impiegato 85740 ha come nome Ora lassila e come indirizzo e-mail lassila@w3.org. La risorsa http://www.w3.org/Home/lassila è stata creata da questo individuo.
è scritta in RDF/XML, usando la forma di serializzazione esplicita nel modo seguente:
<rdf:RDF> <rdf:Description about="http://www.w3.org/Home/Lassila"> <s:Creator rdf:resource="http://www.w3.org/staffId/85740"/> </rdf:Description> <rdf:Description about="http://www.w3.org/staffId/85740"> <v:Name>Ora Lassila</v:Name> <v:Email>lassila@w3.org</v:Email> </rdf:Description> </rdf:RDF>
Questa forma mette in evidenza per chi legge che vengono descritte due risorse distinte; ciò che è meno chiaro è che la seconda risorsa è usata all'interno della prima descrizione. Al fine di rendere questa relazione più chiara per chi legge, questa stessa espressione potrebbe essere scritta nel modo seguente (nota che per la macchina non vi è alcuna differenza):
<rdf:RDF> <rdf:Description about="http://www.w3.org/Home/Lassila"> <s:Creator> <rdf:Description about="http://www.w3.org/staffId/85740"> <v:Name>Ora Lassila</v:Name> <v:Email>lassila@w3.org</v:Email> </rdf:Description> </s:Creator> </rdf:Description> </rdf:RDF>
Usando la seconda forma di sintassi di base abbreviata, l'elemento Description più interno e le espressioni relative alle proprietà che esso contiene, possono essere scritte come attributi dell'elemento Creator:
<rdf:RDF> <rdf:Description about="http://www.w3.org/Home/Lassila"> <s:Creator rdf:resource="http://www.w3.org/staffId/85740" v:Name="Ora Lassila" v:Email="lassila@w3.org" /> </rdf:Description> </rdf:RDF>
Quando si usa questa forma di abbreviazione l'attributo about dell'elemento Description annidato diventa un attributo resource dell'elemento propertyElt, poiché la risorsa indicata dall'URI corrisponde, in entrambe i casi, al valore della proprietà Creator. È semplicemente una questione di preferenze quale delle tre forme adottare nel sorgente RDF. Tutte producono gli stessi modelli interni RDF.
Nota: Nota: Il lettore attento che ha studiato il seguito di questo documento vedrà che vi sono ancora altre relazioni rappresentate da un elemento Description per conservare lo specifico raggruppamento sintattico delle asserzioni . Di conseguenza, le tre forme di cui sopra sono leggermente differenti, anche se in misura non rilevante ai fini della discussione in questa sezione. Queste differenze diventano importanti nel caso delle asserzioni di ordine più alto come quelle descritte nella Sezione 4.
La terza forma di abbreviazione di base si applica al caso comune di un elemento Description contenente una proprietà type (per il significato della proprietà type, vedi la Sezione 4.1.). In questo caso, il tipo di risorsa definito nello schema corrispondente al valore della proprietà type, può essere usato direttamente come nome di elemento. Per esempio, usando il frammento RDF esaminato in precedenza, se volessimo aggiungere il fatto che la risorsa http://www.w3.org/staffID/85740 rappresenta un'istanza di una Persona, noi dovremmo scriverlo, secondo la sintassi di serializzazione estesa, nel modo seguente:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:s="http://description.org/schema/"> <rdf:Description about="http://www.w3.org/Home/Lassila"> <s:Creator> <rdf:Description about="http://www.w3.org/staffId/85740"> <rdf:type resource="http://description.org/schema/Person"/> <v:Name>Ora Lassila</v:Name> <v:Email>lassila@w3.org</v:Email> </rdf:Description> </s:Creator> </rdf:Description> </rdf:RDF>
e usando la terza forma abbreviata, nel modo seguente:
<rdf:RDF> <rdf:Description about="http://www.w3.org/Home/Lassila"> <s:Creator> <s:Person about="http://www.w3.org/staffId/85740"> <v:Name>Ora Lassila</v:Name> <v:Email>lassila@w3.org</v:Email> </s:Person> </s:Creator> </rdf:Description> </rdf:RDF>
L' EBNF per la sintassi abbreviata di base sostituisce le produzioni [2] e [6] della grammatica per la sintassi di serializzazione di base, nel modo seguente:
[2a] description ::= '<rdf:Description' idAboutAttr? propAttr* '/>' | '<rdf:Description' idAboutAttr? propAttr* '>' propertyElt* '</rdf:Description>' | typedNode [6a] propertyElt ::= '<' propName '>' value '</' propName '>' | '<' propName resourceAttr? propAttr* '/>' [16] propAttr ::= propName '="' string '"' (with embedded quotes escaped) [17] typedNode ::= '<' typeName idAboutAttr? propAttr* '/>' | '<' typeName idAboutAttr? propAttr* '>' property* '</' typeName '>'
Quando nel linguaggio naturale scriviamo una frase, usiamo parole che convenzionalmente sono associate ad uno specifico significato. Questo significato è fondamentale per la comprensione delle asserzioni, e, nel caso di applicazioni RDF, è cruciale per stabilire il trattamento corretto che si intende indicare. è fondamentale che sia colui che scrive che colui che legge una asserzione, attribuiscano lo stesso significato ai termini adoperati come: Creator, approvedBy, Copyright, etc. altrimenti sorgerà solo confusione. In un mezzo di comunicazione di scala globale, quale il World Wide Web, non è sufficiente fare affidamento su una comprensione culturale condivisa di concetti quali ad esempio "creazione"; conviene essere più precisi possibile.
In RDF il significato è espresso attraverso il riferimento ad uno schema. Si può immaginare lo schema come una sorta di dizionario. Uno schema definisce i termini che saranno usati nelle asserzioni RDF ed assegna ad essi un significato specifico. In RDF può essere adoperata una serie di forme di schemi, compresa quella definita in un altro documento [RDFSchema] che presenta caratteristiche particolari per l'implementazione automatica di processi che utilizzano RDF.
Uno schema rappresenta la sede in cui vengono documentate le definizioni e i vincoli di uso delle proprietà. Allo scopo di evitare confusioni tra definizioni dello stesso termine provenienti da fonte diversa e potenzialmente contrastanti, RDF adopera le funzionalità dei Namespace XML. I Namespace sono semplicemente un modo per associare un uso specifico di una parola contestualmente al dizionario schema) in cui si intende la definizione debba essere trovata. In RDF, ogni predicato usato in una asserzione deve essere identificato esattamente con un namespace, o schema. In ogni caso, un elemento Description può contenere asserzioni con predicati provenienti da diversi schemi. Nella Sezione 7 vengono riportati esempi di Description RDF che usano più di uno schema.
Spesso il valore di una proprietà è qualcosa che contiene un'informazione contestuale aggiuntiva, considerata "parte di" quel valore. In altre parole, c'è un'esigenza di qualificare i valori di proprietà. Esempi di una tale qualificazione sono ad esempio la definizione di un'unità di misura, o di un particolare vocabolario controllato, o di qualche altra annotazione. Per qualche uso è appropriato adoperare il valore della proprietà senza inserire i qualificatori. Per esempio, nell'asserzione "il prezzo di questa matita è di 75 cents U.S.", spesso potrebbe essere sufficiente dire "il prezzo di questa matita è 75".
Nel modello RDF un valore di proprietà qualificato è semplicemente un'altra istanza di un valore strutturato. L'oggetto della asserzione originaria è questo valore strutturato e i qualificatori sono ulteriori proprietà di questa risorsa comune. Il valore principale che viene qualificato è dato come valore della proprietà value di questa risorsa comune. Vedi laSezione 7.3. relazioni non-binarie per un esempio di uso della proprietà value.
Spesso è necessario riferirsi ad una collezione di risorse; per esempio per dire che un'opera è stata creata da più di una persona, o per elencare gli studenti di un corso, o i moduli di un pacchetto software. Per contenere queste liste di risorse o di letterali si usano i contenitori RDF.
RDF definisce tre tipi di oggetti contenitore:
Bag | Lista non ordinata di risorse o letterali. Si usano per dichiarare che una proprietà ha valori multipli e che l'ordine con cui questi valori sono inseriti non ha alcun significato. Il contenitore bag potrebbe essere usato per fornire una lista di numeri di sezioni dove l'ordine di elaborazione di queste sezioni non è importante. Sono ammessi valori duplicati. |
Sequence | Lista ordinata di risorse o letterali. Il contenitore Sequence si usa per dichiarare che una proprietà ha valori multipli e che l'ordine dei valori è significativo. Il contenitore Sequence potrebbe essere usato, per esempio, per conservare un ordine alfabetico dei valori. Sono ammessi valori duplicati. |
Alternative | Una lista di risorse o letterali che rappresentano delle alternative al valore (singolo) di una proprietà. Il contenitoreAlternative potrebbe essere impiegato, ad esempio, per indicare traduzioni in altre lingue del titolo di un'opera, o per fornire una lista di siti Internet mirror nei quali è reperibile la risorsa. Un'applicazione che usa una proprietà il cui valore è un raccolta di tipo Alternative sa di poter selezionare uno fra gli oggetti presenti nella lista |
Nota: Le definizioni di Bag e Sequence permettono esplicitamente di duplicare i valori. RDF non definisce un concetto ristretto di Set, che potrebbe essere un Bag senza duplicati, perché il nucleo di RDF non prevede meccanismi rafforzativi e obbligatori di questi vincoli. Il lavoro futuro sul nucleo di RDF potrà definire funzioni di questo genere.
Per rappresentare una collezione di risorse, RDF adopera una risorsa aggiuntiva che identifica la collezione specifica (un'istanza di una collezione, secondo la terminologia object modeling). Questa risorsa deve essere dichiarata quale istanza appartenente ad uno dei tipi di oggetti contenitore definiti sopra. Per formulare questa dichiarazione si utilizza la proprietà type, definita sopra. La relazione di appartenenza fra questa risorsa-contenitore e le risorse che fanno parte della collezione è definita attraverso un insieme di proprietà espressamente definite per questo scopo. Queste proprietà di appartenenza sono indicate semplicemente con "_1", "_2", "_3", etc. Le risorse contenitore possono anche avere altre proprietà, oltre alla proprietà di appartenenza e alla proprietà tipo. Ognuna di tali asserzioni aggiuntive descrive il contenitore; vedi Sezione 3.3., Referenti Distributivi, per l'esame delle asserzioni riguardanti ciascuno dei componenti [del contenitore].
Un impiego comune dei contenitori è per la definizione dei valori di una proprietà. Quando usato in questo modo, l'asserzione ha un oggetto singolo, a prescindere dal numero di componenti del contenitore; la stessa risorsa contenitore è infatti l'oggetto dell'asserzione.
Per esempio, per rappresentare la proposizione
Gli studenti del corso 6.001 sono Amy, Tim, John, Mary, e Sue.
il modello RDF è
I contenitori di tipo Bag non sono equivalenti alla ripetizione di proprietà dello stesso tipo; vedi la Sezione 3.5. per una analisi delle differenze. Gli autori dovranno decidere caso per caso quale delle due opzioni (ripetizione di proprietà o Bag) è più appropriato da usare.
La frase
Il codice sorgente per X11 può essere trovato a ftp.x.org, ftp.cs.purdue.edu, o ftp.eu.net
è modellata in RDF come segue
I contenitori di tipo Alternative sono spesso usati insieme a tag per l'identificazione del linguaggio. Un'opera il cui titolo è stato tradotto in diverse lingue potrebbe avere una proprietà Titolo che punta ad un contenitore di tipo Alternative contenente tutte le varianti linguistiche.
La sintassi per i contenitori RDF ha la seguente forma:
[18] container ::= sequence | bag | alternative [19] sequence ::= '<rdf:Seq' idAttr? '>' member* '</rdf:Seq>' [20] bag ::= '<rdf:Bag' idAttr? '>' member* '</rdf:Bag>' [21] alternative ::= '<rdf:Alt' idAttr? '>' member+ '</rdf:Alt>' [22] member ::= referencedItem | inlineItem [23] referencedItem ::= '<rdf:li' resourceAttr '/>' [24] inlineItem ::= '<rdf:li>' value '</rdf:li>'
I contenitori possono essere usati ovunque sia permesso un elemento Description:
[1a] RDF ::= '<rdf:RDF>' obj* '</rdf:RDF>' [8a] value ::= obj | string [25] obj ::= description | container
Nota che RDF/XML usa l'elemento li per evitare di dover numerare esplicitamente ciascun componente. L'elemento li assegna - se necessario - le proprietà _1, _2, etc. Il nome dell'elemento li è stato scelto per richiamare il termine "list item" di HTML.
Un contenitore Alt deve contenere almeno un componente. Questo componente sarà identificato dalla proprietà _1 e sarà il valore di default o il valore preferito.
Nota: La specifica [RDF Schema] definisce anche un meccanismo per dichiarare sottoclassi aggiuntive di questi tipi di contenitore, in questo caso la produzione[18] è estesa fino ad includere i nomi delle sottoclassi dichiarate. C'è anche una sintassi per scrivere i valori dei letterali in forma di attributo; vedi la grammatica nella versione integrale alla Sezione 6.
Il modello per la proposizione
Gli studenti del corso 6.001 sono Amy, Tim, John, Mary, e Sue.
è scritto in RDF nel modo seguente:
<rdf:RDF> <rdf:Description about="http://mycollege.edu/courses/6.001"> <s:students> <rdf:Bag> <rdf:li resource="http://mycollege.edu/students/Amy"/> <rdf:li resource="http://mycollege.edu/students/Tim"/> <rdf:li resource="http://mycollege.edu/students/John"/> <rdf:li resource="http://mycollege.edu/students/Mary"/> <rdf:li resource="http://mycollege.edu/students/Sue"/> </rdf:Bag> </s:students> </rdf:Description> </rdf:RDF>
In questo caso, dal momento che il valore della proprietà studenti è espressa come contenitore Bag, non è significativo l'ordine con cui sono scritti gli URI di ciascuno studente.
Il modello per la proposizione
Il codice sorgente per X11 può essere trovato a ftp.x.org, ftp.cs.purdue.edu, o ftp.eu.net
è scritto in RDF nel modo seguente
<rdf:RDF> <rdf:Description about="http://x.org/packages/X11"> <s:DistributionSite> <rdf:Alt> <rdf:li resource="ftp://ftp.x.org"/> <rdf:li resource="ftp://ftp.cs.purdue.edu"/> <rdf:li resource="ftp://ftp.eu.net"/> </rdf:Alt> </s:DistributionSite> </rdf:Description> </rdf:RDF>
Qui ciascuno degli oggetti elencati come valori del contenitore per DistributionSite è un valore accettabile, indipendentemente dagli altri oggetti.
Le strutture dei contenitori pongono una questione relativa alle asserzioni: quando un'asserzione è fatta in riferimento ad una collezione, l'asserzione che "cosa" sta descrivendo? O in altre parole, a quale oggetto si riferisce l'asserzione? L'asserzione descrive lo stesso contenitore o i suoi componenti? L'oggetto che viene descritto (nella sintassi XML viene indicato dall'attributo about) in RDF è chiamato il referente.
L'esempio seguente:
<rdf:Bag ID="pages"> <rdf:li resource="http://foo.org/foo.html" /> <rdf:li resource="http://bar.org/bar.html" /> </rdf:Bag> <rdf:Description about="#pages"> <s:Creator>Ora Lassila</s:Creator> </rdf:Description>
esprime che "Ora lassila" è il creatore del contenitore Bag di "pagine". Tuttavia non dice nulla sulle singole pagine, ovvero i componenti di Bag. Il referente della Descrizione è il contenitore (Bag), non i suoi componenti. Ma potrebbe essere utile, in alcuni casi, formulare un'asserzione riferita a ciascuno degli oggetti contenuti, invece che al contenitore. Per esprimere che Ora lassila è creatore di ciascuna delle pagine, è richiesto un diverso tipo di referente, che effettui una distribuzione sui componenti del contenitore. Questo referente viene espresso in RDF adoperando l'attributo aboutEach :
[3a] idAboutAttr ::= idAttr | aboutAttr | aboutEachAttr [26] aboutEachAttr ::= 'aboutEach="' URI-reference '"'
Ad esempio, se scriviamo
<rdf:Description aboutEach="#pages"> <s:Creator>Ora Lassila</s:Creator> </rdf:Description>
daremo il significato desiderato. Chiameremo il nuovo tipo di referente un referente distributivo. I referenti distributivi ci permettono di "condividere strutture" in una Description RDF. Per esempio, quando scriviamo diverse Description che hanno fra di loro in comune alcune parti di asserzioni (predicati e oggetti), le parti comuni possono essere condivise fra tutte le Descrizioni, favorendo il risparmio di spazio e la manutenzione dei metadati. Il valore di un attributo aboutEach deve essere un contenitore. Usare un referente distributivo su un contenitore equivale a formulare tutte le asserzioni separatamente su ciascuno dei componenti.
Non viene definita alcuna rappresentazione grafica dei referenti distributivi. Invece, in riferimento alle asserzioni formulate, i referenti distributivi si espandono nelle asserzioni individuali riferite ai singoli componenti del contenitore (al loro interno le implementazioni sono libere di conservare informazioni sui referenti distributivi - ad esempio, al fine di risparmiare spazio - e le funzioni di interrogazione saranno applicate come se le asserzioni fossero riferite a ciascun componente singolo). Quindi, in riferimento alle risorse "foo" e "bar", l'esempio appena visto è equivalente a:
<rdf:Description about="http://foo.org/foo.html"> <s:Creator>Ora Lassila</s:Creator> </rdf:Description> <rdf:Description about="http://bar.org/bar.html"> <s:Creator>Ora Lassila</s:Creator> </rdf:Description>
Un uso molto frequente dei metadati è quello in cui le asserzioni si riferiscono a "tutte le pagine del mio sito Web", o "tutte le pagine di questa parte del mio sito Web". In molti casi non sarebbe pratico - e neanche desiderabile - cercare di elencare esplicitamente tutte queste risorse e identificarle come componenti di un contenitore. RDF, quindi, ha un secondo tipo di referente distributivo. Questo secondo tipo consiste in una sintassi abbreviata che rappresenta un'istanza di un contenitore Bag i cui componenti sono per definizione tutte le risorse i cui identificatori di risorsa iniziano con una determinata stringa:
[26a] aboutEachAttr ::= 'aboutEach="' URI-reference '"' | 'aboutEachPrefix="' string '"'
L'attributo aboutEachPrefix dichiara che c'è un contenitore Bag i cui componenti sono tutte le risorse il cui identificatore completamente risolto inizia con la stringa di caratteri data come valore dell'attributo. Le asserzioni presenti in una Descrizione che ha l'attributo aboutEachPrefix si riferiscono a ciascuno dei componenti del contenitore Bag.
Per esempio, se esistono le due risorse http://foo.org/doc/page1 e http://foo.org/doc/page2 allora possiamo dichiarare che ciascuna di essa ha una proprietà di copyright, scrivendo:
<rdf:Description aboutEachPrefix="http://foo.org/doc"> <s:Copyright>© 1998, The Foo Organization</s:Copyright> </rdf:Description>
Se queste sono le sole due risorse il cui URI comincia con quella stringa, allora quanto sopra è equivalente a entrambi le seguenti alternative:
<rdf:Description about="http://foo.org/doc/page1"> <s:Copyright>© 1998, The Foo Organization</s:Copyright> </rdf:Description> <rdf:Description about="http://foo.org/doc/page2"> <s:Copyright>© 1998, The Foo Organization</s:Copyright> </rdf:Description>
e
<rdf:Description aboutEach="#docpages"> <s:Copyright>© 1998, The Foo Organization</s:Copyright> </rdf:Description> <rdf:Bag ID="docpages"> <rdf:li resource="http://foo.org/doc/page1"/> <rdf:li resource="http://foo.org/doc/page2"/> </rdf:Bag>
Una risorsa può avere asserzioni multiple con lo stesso predicato (p. es. adoperando la stessa proprietà ). Ciò non equivale ad avere una singola asserzione il cui oggetto sia un contenitore con molti componenti. La scelta sul sistema da adottare in ogni circostanza particolare è in parte fatta dalle persone che progettano lo schema e in parte dalle persone che scrivono le specifiche asserzioni RDF.
Consideriamo, ad esempio, la relazione fra una scrittrice e le sue pubblicazioni. Potremmo avere la proposizione:
Sue ha scritto "Anthology of Time", "Zoological Reasoning", "Gravitational Reflections".
Cioè, vi sono tre risorse ciascuna delle quali è stata scritta dalla stessa autrice.
In questo esempio non viene dichiarata nessuna relazione tra le pubblicazioni, se non quella che sono tutte state scritte dalla stessa persona.
Invece, la proposizione:
Il comitato composto da Fred, Wilma, e Dino ha approvato la risoluzione.
afferma che i tre membri del comitato, considerati come un unico insieme, hanno votato in una certa maniera; non si afferma, ovvero, necessariamente che ciascun membro del comitato ha votato a favore della risoluzione. Sarebbe scorretto modellare questa proposizione con tre separate asserzioni "approvedBy", una per ciascuno dei membri del comitato, quindi come tre voti individuali di approvazione. Piuttosto, è meglio modellare come una singola asserzione di "approvedBy" il cui oggetto è un contenitore Bag che ha come componenti le tre identità dei membri del comitato:
La scelta su quale rappresentazione adoperare, Bag o ripetizione di proprietà, è fatta da colui che crea i metadati, dopo aver considerato lo schema. Quindi, tornando all'esempio delle pubblicazioni fatto in precedenza, se volessimo affermare che quelle elencate rappresentano l'insieme completo delle pubblicazioni, allora lo schema potrebbe includere una proprietà di nome pubblicazioni. Il valore della proprietà pubblicazioni sarebbe un contenitore Bag contenente tutte le opere di Sue.
Oltre che per creare asserzioni su risorse Web, RDF può essere usato per fare asserzioni su altre asserzioni RDF; ci riferiremo a queste come asserzioni di ordine maggiore. Per fare un asserzione su un'altra asserzione, in effetti abbiamo la necessità di costruire un modello dell'asserzione originale; questo modello è una nuova risorsa alla quale possiamo aggiungere altre proprietà.
Le asserzioni sono fatte su risorse. Un modello di un'asserzione è la risorsa di cui abbiamo bisogno per poter fare nuove asserzioni (asserzioni di ordine maggiore) sull'asserzione modellata.
Per esempio, consideriamo la frase
Ora Lassila è il creatore della risorsa http://www.w3.org/Home/Lassila.
RDF considererebbe questa frase come un fatto. Se, invece, scriviamo la frase
Ralph Swick dice che Ora Lassila è il creatore della risorsa http://www.w3.org/Home/Lassila.
non abbiamo detto nulla della risorsa http://www.w3.org/Home/Lassila; invece, abbiamo espresso un fatto circa un'asserzione fatta da Ralph. Per esprimere questo fatto a RDF, dobbiamo modellare l'asserzione originale come una risorsa con quattro proprietà. Questo processo è formalmente chiamato reificazione nella comunità della Rappresentazione della Conoscenza. Un modello di un'asserzione è detto asserzione reificata.
Per modellare asserzioni RDF definisce le seguenti proprietà :
soggetto | La proprietà soggetto identifica la risorsa che viene descritta dall'asserzione modellata; ovvero, il valore della proprietà soggetto è la risorsa su cui è stata fatta l'asserzione originale (nel nostro esempio, http://www.w3.org/Home/Lassila). |
predicato | La proprietà predicato identifica il valore della proprietà nella asserzione modellata. Il valore della proprietà predicato è una risorsa che rappresenta la specifica proprietà nell'asserzione originale (nel nostro esempio, creatore). |
oggetto | La proprietà oggetto identifica il valore della proprietà nell'asserzione modellata. Il valore della proprietà oggetto è l'oggetto nell'asserzione originale (nel nostro esempio, "Ora Lassila"). |
tipo | Il valore della proprietà tipo descrive il tipo della nuova risorsa. Tutte le asserzioni reificate sono istanze di RDF:Statement; ovvero, hanno una proprietà tipo il cui oggetto è RDF:Statement. La proprietà tipo è usata anche più generalmente per dichiarare il tipo di una qualsiasi risorsa, come è stato mostrato nella Sezione 3, "Contenitori." |
Una nuova risorsa con queste quattro proprietà rappresenta l'asserzione originale e può essere usata sia come oggetto di altre asserzioni sia può avere asserzioni addizionali fatte su essa. La risorsa con queste quattro proprietà non è una sostituzione dell'asserzione originale, è un modello dell'asserzione. Un'asserzione e la sua corrispondente asserzione reificata esistono indipendentemente in un grafo RDF ed entrambi possono essere presenti senza l'altra. Si dice che il grafo RDF contiene il fatto dato nell'asserzione se e solo se l'asserzione è presente nel grafo, senza preoccuparsi della presenza della corrispondente asserzione reificata.
Per modellare l'esempio di sopra, potremmo aggiungere un'altra proprietà all'asserzione reificata (che si chiama, "attributedTo") con un valore appropriato (in questo caso, "Ralph Swick"). Usando una sintassi RDF/XML di livello base, questo potrebbe essere scritto come
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:a="http://description.org/schema/"> <rdf:Description> <rdf:subject resource="http://www.w3.org/Home/Lassila" /> <rdf:predicate resource="http://description.org/schema/Creator" /> <rdf:object>Ora Lassila</rdf:object> <rdf:type resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement" /> <a:attributedTo>Ralph Swick</a:attributedTo> </rdf:Description> </rdf:RDF>
La figura 8 rappresenta tutto ciò in modo grafico. Sintatticamente ciò è piuttosto prolisso; nella Sezione 4.2. presentiamo un metodo pratico per fare asserzioni su asserzioni.
La reificazione inoltre è necessaria per rappresentare nel modello in modo esplicito il raggruppamento di asserzioni che è sottinteso dagli elementi Description. Il modello grafico di RDF non necessita di una struttura speciale per le Description; dato che le Description sono realmente raccolte di asserzioni, un contenitore Bag è usato per indicare che una collezione di asserzioni proiene dalla stessa Description (sintattica). Ciascuna asserzione in una Description è reificata e ogni asserzione reificata è membro della Bag che rappresenta quella Description. Come esempio, il frammento RDF
<rdf:RDF> <rdf:Description about="http://www.w3.org/Home/Lassila" bagID="D_001"> <s:Creator>Ora Lassila</s:Creator> <s:Title>Ora's Home Page</s:Title> </rdf:Description> </rdf:RDF>
avrebbe come risultato il grafico mostrato in Figura 9.
Notare il nuovo attributo bagID. Questo attributo specifica la risorsa id della risorsa contenitore:
[2b] description ::= '<rdf:Description' idAboutAttr? bagIDAttr? propAttr* '/>' | '<rdf:Description' idAboutAttr? bagIDAttr? propAttr* '>' propertyElt* '</rdf:Description>' [27] bagIDAttr ::= 'bagID="' IDsymbol '"'
BagID ed ID non dovrebbero essere confusi. ID specifica l'identificazione di una risorsa in-line le cui proprietà sono successivamente dettagliate nella Description . BagID specifica l'identificazione della risorsa contenitore i cui membri sono le asserzioni reificate fatte su di un'altra risorsa. Una Description può avere sia un attributo ID sia un attributo bagID.
Dato che l'inclusione di un bagID in un Description ha come risultato l'inclusione nel modello di una Bag delle asserzioni reificate contenute in Description, possiamo usare questo come un metodo pratico sintattico quando creiamo asserzioni su asserzioni. Per esempio, se volevamo dire che Ralph afferma che Ora è il creatore di http://www.w3.org/Home/Lassila e anche che afferma che il titolo di quella risorsa è "Ora Home Page", all'esempio sopra possiamo semplicemente aggiungere
<rdf:Description aboutEach="#D_001"> <a:attributedTo>Ralph Swick</a:attributedTo> </rdf:Description>
Notare che questo esempio pratico include nel modello fatti addizionali non rappresentati dall'esempio in Figura 8. Questo uso pratico esprime fatti su asserzioni di Ralph ed anche fatti sulla home page di Ora.
Il lettore consulti la Sezione 5 ("Modello Formale") di questa specifica per un più formale trattamento di asserzioni di ordine maggiore e per la reificazione.
Questa specifica mostra tre rappresentazioni del modello dei dati; come 3-tuple (triple), come un grafico, ed in XML. Queste rappresentazioni hanno un significato equivalente. La mappatura tra le rappresentazioni usate in questa specifica non intende costringere in alcun modo la rappresentazione interna usata dalle implementazioni.
Il modello dei dati RDF è definito formalmente come segue:
1 | Esiste un insieme chiamato Resources (Risorse). |
---|---|
2 | Esiste un insieme chiamato Literals (Letterali). |
3 | Esiste un sottoinsieme di Resources chiamato Properties (Proprietà ). |
4 | Esiste un insieme chiamato Statements (Asserzioni), in cui ogni elemento è una tripla del tipo |
{pred, sub, obj} | |
Dove pred è una proprietà (membro di Properties), sub è una risorsa (membro di Resources), e obj è o una risorsa o un letterale (membro di Literals). |
Possiamo vedere un insieme di asserzioni (membri di Statements) come un grafo etichettato direzionale: ogni risorsa e letterale sono rappresentati come un vertice; una tripla { p, s, o} è un arco da s a o, etichettato da p. Questo è illustrato in figura 11.
Questo può essere letto sia
o è il valore di p per s
oppure (da sinistra verso destra)
s ha una proprietà p con un valore o
o anche
la p di s è o
Per esempio la frase
Ora Lassila è il creatore della risorsa http://www.w3.org/Home/Lassila
Dovrebbe essere rappresentata graficamente come segue:
e la corrispondente tripla (membro di Statements) sarebbe
{creator, [http://www.w3.org/Home/Lassila], "Ora Lassila"}
La notazione [I] denota la risorsa identificata dall'URI I e gli apici denotano un letterale.
Usando le triple, possiamo spiegare come le asserzioni sono reificate (come introdotto in Sezione 4). Data una asserzione
{creator, [http://www.w3.org/Home/Lassila], "Ora Lassila"}
possiamo esprimere la sua reificazione come una nuova risorsa X nel seguente modo:
{type, [X], [RDF:Statement]} {predicate, [X], [creator]} {subject, [X],[http://www.w3.org/Home/Lassila]} {object, [X], "Ora Lassila"}
Dal punto di vista di un processore RDF, i fatti (ovvero, le asserzioni) sono triple che sono membri di Statements. Perciò, l'asserzione originale rimane un fatto nonostante sia stata reificata dato che la tripla che rappresenta l'asserzione originale rimane in Statements. Abbiamo aggiunto soltanto quattro triple in più.
La proprietà chiamata "type" è definita per fornire tipi di dati primitivi. La definizione formale di type è:
5 | Esiste un elemento di Properties conosciuto come RDF:type. |
6 | I membri di Statements della forma {RDF:type, sub, obj} devono soddisfare il seguente: sub e obj sono membri di Resources. [RDFSchema] pone restrizioni addizionali sull'uso di type. |
Inoltre, la specifica formale di reificazione è:
7 | Esiste un elemento di Resources, non contenuto in Properties, conosciuto come RDF:Statement. |
8 | Esistono tre elementi in Properties conosciuti come RDF:predicate, RDF:subject e RDF:object. |
9 | La reificazione di una tripla {pred, sub, obj} appartenente a Statements è un elemento r di Resources che rappresenta la tripla reificata e gli elementi s1, s2, s3, e s4 di Statements tali che |
s1: {RDF:predicate, r, pred} | |
s2: {RDF:subject, r, subj} | |
s3: {RDF:object, r, obj} | |
s4: {RDF:type, r, [RDF:Statement]} |
La risorsa r nella definizione di sopra è chiamata l'asserzione reificata. Quando una risorsa rappresenta un'asserzione reificata; ovvero, ha una proprietà RDF:type con un valore RDF:Statement, allora quella risorsa deve avere esattamente una proprietà RDF:subject, una proprietà RDF:object, ed una proprietà RDF:predicate.
Come descritto in Sezione 3, spesso è necessario rappresentare una raccolta di risorse o letterali; per esempio per affermare che una proprietà ha una sequenza ordinata di valori. RDF definisce tre generi di collezioni: liste ordinate, chiamate Sequence, liste non ordinate, chiamate Bag, e liste che rappresentano alternative per il valore (singolo) di una proprietà, chiamate Alternative.
Formalmente, questi tre tipi di collezioni sono definite da:
10 | Esistono tre elementi di Resources, non contenuti in Properties, conosciuti come RDF:Seq, RDF:Bag, e RDF:Alt. |
11 | Esiste un sottoinsieme di Properties corrispondente agli ordinali (1, 2, 3.) chiamato Ord. Ci riferiamo agli elementi di Ord come RDF:_1, RDF:_2, RDF:_3, ... |
Per rappresentare una raccolta c, crea una tripla {RDF:type, c, t} dove t è uno dei tre tipi di collezioni RDF:Seq, RDF:Bag, o RDF:Alt. Le rimanenti triple {RDF:_1, c, r1}, ..., {RDF:_n, c, rn}, ... puntano a ciascuno dei membri rn della collezione. Per una singola risorsa della collezione ci potrà essere al massimo una tripla il cui predicato è un qualsiasi elemento dato di Ord e gli elementi di Ord devono essere usati in sequenza iniziando con RDF:_1. Per le risorse che sono istanze del tipo di collezione RDF:Alt, ci deve essere esattamente una tripla il cui predicato è RDF:_1 e quello è il valore di default per la risorsa Alternatives (ovvero, ci deve sempre essere almeno un'alternativa).
La BNF completa per RDF viene qui riprodotta dalle sezioni precedenti. Viene inoltre data l'interpretazione precisa della grammatica in termini del modello formale. Le caratteristiche sintattiche ereditate da XML non sono qui riprodotte. Queste includono tutti i vincoli di well-formedness, l'uso di spazi attorno agli attributi e il segno '=', oltre all'uso dei doppi e singoli apici intorno ai valori degli attributi. Questa sezione è da intendersi per gli implementatori che stanno costruendo tool che leggono ed interpretano la sintassi RDF/XML.
Dove saranno usate successivamente, le parole chiavi "DOVREBBE", "DEVE", e "NON DEVE " sono da interpretare come descritto nella RFC 2119. Ad ogni modo, per leggibilità, queste parole non appaiono tutte con lettere maiuscole in questa specifica.
[6.1] RDF ::= ['<rdf:RDF>'] obj* ['</rdf:RDF>'] [6.2] obj ::= description | container [6.3] description ::= '<rdf:Description' idAboutAttr? bagIdAttr? propAttr* '/>' | '<rdf:Description' idAboutAttr? bagIdAttr? propAttr* '>' propertyElt* '</rdf:Description>' | typedNode [6.4] container ::= sequence | bag | alternative [6.5] idAboutAttr ::= idAttr | aboutAttr | aboutEachAttr [6.6] idAttr ::= ' ID="' IDsymbol '"' [6.7] aboutAttr ::= ' about="' URI-reference '"' [6.8] aboutEachAttr ::= ' aboutEach="' URI-reference '"' | ' aboutEachPrefix="' string '"' [6.9] bagIdAttr ::= ' bagID="' IDsymbol '"' [6.10] propAttr ::= typeAttr | propName '="' string '"' (with embedded quotes escaped) [6.11] typeAttr ::= ' type="' URI-reference '"' [6.12] propertyElt ::= '<' propName idAttr? '>' value '</' propName '>' | '<' propName idAttr? parseLiteral '>' literal '</' propName '>' | '<' propName idAttr? parseResource '>' propertyElt* '</' propName '>' | '<' propName idRefAttr? bagIdAttr? propAttr* '/>' [6.13] typedNode ::= '<' typeName idAboutAttr? bagIdAttr? propAttr* '/>' | '<' typeName idAboutAttr? bagIdAttr? propAttr* '>' propertyElt* '</' typeName '>' [6.14] propName ::= Qname [6.15] typeName ::= Qname [6.16] idRefAttr ::= idAttr | resourceAttr [6.17] value ::= obj | string [6.18] resourceAttr ::= ' resource="' URI-reference '"' [6.19] Qname ::= [ NSprefix ':' ] name [6.20] URI-reference ::= string, interpreted per [URI] [6.21] IDsymbol ::= (any legal XML name symbol) [6.22] name ::= (any legal XML name symbol) [6.23] NSprefix ::= (any legal XML namespace prefix) [6.24] string ::= (any XML text, with "<", ">", and "&" escaped) [6.25] sequence ::= '<rdf:Seq' idAttr? '>' member* '</rdf:Seq>' | '<rdf:Seq' idAttr? memberAttr* '/>' [6.26] bag ::= '<rdf:Bag' idAttr? '>' member* '</rdf:Bag>' | '<rdf:Bag' idAttr? memberAttr* '/>' [6.27] alternative ::= '<rdf:Alt' idAttr? '>' member+ '</rdf:Alt>' | '<rdf:Alt' idAttr? memberAttr? '/>' [6.28] member ::= referencedItem | inlineItem [6.29] referencedItem ::= '<rdf:li' resourceAttr '/>' [6.30] inlineItem ::= '<rdf:li' '>' value </rdf:li>' | '<rdf:li' parseLiteral '>' literal </rdf:li>' | '<rdf:li' parseResource '>' propertyElt* </rdf:li>' [6.31] memberAttr ::= ' rdf:_n="' string '"' (where n is an integer) [6.32] parseLiteral ::= ' parseType="Literal"' [6.33] parseResource ::= ' parseType="Resource"' [6.34] literal ::= (any well-formed XML)
Il nome formale di namespace per le proprietà e le classi definite in questa specifica è http://www.w3.org/1999/02/22-rdf-syntax-ns#. Quando un processore RDF incontra un elemento XML o un nome di attributo che è dichiarato da un namespace il cui nome inizia con la stringa "http://www.w3.org/TR/REC-rdf-syntax" e il processore non riconosce la semantica di quel nome allora il processore deve saltare (ovvero, non generare tuple) l'intero elemento XML, incluso il suo contenuto, il cui nome non è riconosciuto o che ha un attributo il cui nome non è riconosciuto.
Ciascun propertyElt E contenuto da un elemento Description risulta nella creazione di una tripla {p,r,v} dove:
L'attributo parseType modifica l'interpretazione del contenuto dell'elemento. L'attributo parseType dovrebbe avere uno dei valori 'Literal' o 'Resource'. Il valore è case-sensitive. Il valore 'Literal' specifica che il contenuto dell'elemento deve essere trattato come un letterale RDF/XML; ovvero, il contenuto non deve essere interpretato da un processore RDF. Il valore 'Resource' specifica che il contenuto dell'elemento deve essere trattato come se fosse il contenuto di un elemento Description. Altri valori di parseType sono riservati da RDF per specifiche future. Con RDF 1.0 altri valori devono essere trattati come un 'Literal'. In ogni caso, il contenuto di un elemento che ha un attributo parseType deve essere XML ben-formato. Il contenuto di un elemento avente un attributo parseType="Resource" deve inoltre rispettare la produzione per il contenuto di un elemento Description.
Il modello RDF ed il Gruppo di Lavoro sulla Sintassi riconosce che il meccanismo parseType='Literal' è una soluzione di livello minimo ai requisiti per esprimere un'asserzione RDF con un valore che ha markup XML. Complessità addizionali di XML come la canonicalization degli spazi bianchi non sono ancora ben definite. Dai futuri lavori del W3C ci si attende che vengano risolti tali problemi in un modo uniforme per tutte le applicazioni basate su XML. Versioni future di RDF erediteranno questo lavoro e potranno estenderlo allorquando sarà acquisita maggiore esperienza da future applicazioni.
I riferimenti URI sono risolti a identificatori di risorsa prima risolvendo i riferimenti URI verso la forma assoluta come specificato dall' [URI] usando la base URI del documento in cui appare l'asserzione RDF. Se un identificatore di frammento è incluso nel riferimento URI allora l'identificatore di risorsa si riferisce solo ad un sottocomponente della risorsa che lo contiene; questo sottocomponente è identificato dal corrispondente id dell'ancora interno a quella risorsa che lo contiene e l'estensione del sottocomponente è definito dall'identificatore di frammento in congiunzione con il tipo del contenuto della risorsa che lo contiene, altrimenti l'identificatore di risorsa si riferisce all'intero oggetto specificato dall' URI.
Nota: Sebbene i caratteri non-ASCII negli URI non siano permessi da [URI], [XML] specifica una convenzione per evitare inutili incompatibilità nella sintassi URI estesa. Gli implementatori di RDF sono incoraggiati ad evitare ulteriori incompatibilità e ad usare la convenzione XML per gli identificatori di sistema. Vale a dire, che un carattere non-ASCII in un URI sia rappresentato in UTF-8 come uno o più byte, e che questi byte siano espressi con il meccanismo di escaping degli URI (ovvero, convertendo ciascun byte a %HH, dove HH è la notazione esadecimale del valore del byte).
L'elemento Description rappresenta esso stesso un'instanza di una risorsa Bag. I membri di questa Bag sono le risorse corrispondenti alla reificazione di ciascuna delle asserzioni contenute in Description. Se è specificato l'attributo bagID il suo valore è l'identificatore di questa Bag, altrimenti la Bag è anonima.
Quando about è specificato con Description, le asserzioni in Description si riferiscono alla risorsa nominata in about. Un elemento Description senza un attributo about rappresenta una risorsa in-line. Questa risorsa in-line ha un identificatore di risorsa formato usando il valore della base URI del documento contenente le asserzioni RDF più un anchor id uguale al valore dell'attributo ID dell'elemento Description, se presente. Quando un altro Description o un valore di proprietà si riferisce alla risorsa in-line esso userà il valore dell' ID in un attributo about. Quando l'altro Description si riferisce al contenitore Bag delle risorse corrispondenti alle asserzioni reificate esso userà il valore di bagID in un attributo about. Sia ID che about possono essere specificati su Description ma non entrambi insieme nello stesso elemento. I valori per ciascun attributo ID e bagID non devono apparire in più di uno di tali attributi all'interno di un documento ne può essere usato lo stesso valore in un ID e in un bagID all'interno di un singolo documento.
Quando aboutEach è specificato con Description, l'asserzione nella Description si riferisce a ciascuno dei membri del contenitore nominato da aboutEach. Le triple {p,r,v} rappresentata da ciascuna propertyElt E contenuta come descritto sopra sono duplicare per ciascun r che è membro del contenitore.
Quando aboutEachPrefix è specificato con Description, le asserzioni nella Description si riferiscono a ciascuno dei membri di un contenitore Bag anonimo. I membri di questo contenitore Bag sono tutte le risorse i cui identificatori di risorsa in forma assoluta iniziano con la stringa di caratteri data come valore di aboutEachPrefix. L'identificatore di risorsa in forma assoluta è prodotto risolvendo l'URI in accordo con l'algoritmo della "Sezione 5.2., Risolvere Riferimenti Relativi in Forma Assoluta", in [URI]. Le triple {p,r,v} rappresentate da ciascun propertyElt E contenuto come descritto sopra sono duplicate per ciascun r che è un membro del contenitore.
Ciascuna Seq, Bag, e Alt rappresentano ciascuno rispettivamente un'instanza di un tipo di risorsa contenitore Sequence, Bag, o Alternative. Una tripla {RDF:type,c,t} è creata dove c è la risorsa collezione e t è una tra RDF:Seq, RDF:Bag, o RDF:Alt. I membri della collezione sono denotati con li. Ciascun elemento E di li corrisponde ad un elemento membro della collezione e risulta nella creazione di una tripla {p,c,v} dove:
L'URI identifica (dopo la risoluzione) la risorsa in esame; ovvero, la risorsa a cui si applica la Description o la risorsa che è inclusa nel contenitore. L'attributo bagID in un elemento Description e l'attributo ID in un elemento contenitore permettono che Description o il contenitore possano essere riferiti da altre Description. L'ID in un elemento contenitore è il nome che è usato in un attributo resource su un elemento di proprietà per far si che la collezione sia il valore di quella proprietà .
All'interno di propertyElt (produzione [6.12]), l' URI usato in un attributo resource identifica (dopo la risoluzione) la risorsa che è l'oggetto dell'asserzione (ovvero, il valore di questa proprietà ). Il valore dell'attributo ID, se specificato, è l'identificatore per la risorsa che rappresenta la reificazione dell'asserzione. Se una espressione RDF (ovvero, contenuto con markup RDF/XML) è specificato come un valore di proprietà l'oggetto è la risorsa data dall'attributo about della Description contenuta oppure (possibilmente implicito) l'ID della Description contenuta oppure la risorsa contenitore. Le stringhe devono essere in XML ben-formato; gli stessi meccanismi di XML per racchiudere tra virgolette il contenuto e per l' escaping possono essere usati se la stringa contiene sequenze di caratteri (per esempio "<" e "&") che violano le regole di well-formedness o che altrimenti potrebbero somigliare a markup. L'attributo parseType="Literal" specifica che il contenuto dell'elemento è un letterale RDF. Qualsiasi markup che fa parte di questo contenuto è incluso come parte del letterale e non interpretato da RDF.
E' raccomandato che i nomi di proprietà siano sempre qualificati con un prefisso di namespace per collegare senza ambiguità la definizione di proprietà con il corrispondente schema.
Come definito da XML, il repertorio di caratteri di una stringa RDF è ISO/IEC 10646 [ISO10646]. Una stringa RDF effettiva, presente in un documento XML o in qualche altra rappresentazione del modello di dati RDF, può essere memorizzata usando una codifica diretta di ISO/IEC 10646 o una codifica che possa essere rappresentata in ISO/IEC 10646. L'etichetta di identificazione del linguaggio fa parte del valore della stringa; è applicata alle sequenze di caratteri all'interno di una stringa RDF e non ha una manifestazione esplicita nel modello di dati.
Due stringhe RDF sono ritenute identiche se le loro rappresentazioni ISO/IEC 10646 corrispondono. Ciascuna applicazione RDF deve specificare quale delle seguenti definizioni di "corrispondenza" usa:
Nota: Il W3C I18N WG sta lavorando ad una definizion per il riscontro di uguaglianza tra stringhe. Questa definizione si baserà molto probabilmente sulle equivalenze canoniche in accordo con lo standard Unicode e sul principio di normalizzazione uniforme iniziale. Gli utenti di RDF non dovrebbero contare su nessuna applicazione di corrispondenza basata sugli equivalenti canonici, ma dovrebbero provare ad assicurarsi che i loro dati siano in forma normalizzata in accordo con le definizioni imminenti.
Questa specifica non stabilisce un meccanismo per determinare equivalenza tra letterali che contengono markup, né se è garantita l'esistenza di un tale meccanismo.
L'attributo xml:lang può essere usato come definito da [XML] per associare un linguaggio con il valore di proprietà. Non esiste una specifica rappresentazione del modello di dati per xml:lang (ovvero, non aggiunge triple al modello di dati); il linguaggio di un letterale è considerato da RDF come parte del letterale. Una applicazione può ignorare l'identificatore di linguaggio di una stringa. Tutte le applicazioni RDF devono specificare se l'identificatore di linguaggio nei letterali è significativo o meno; ovvero se il linguaggio è preso o meno in considerazione quando si esegue un confronto tra stringhe o qualche altra elaborazione.
Gli attributi i cui nomi iniziano con "xmlns" sono dichiarazioni di namespacee non rappresentano triple nel modello di dati. Non esiste uno specifica rappresentazione del modello di dati per tali dichiarazioni di namespace.
Ciascuna proprietà e valore espressa sotto forma di attributo XML secondo le produzioni [6.3] e [6.10] è equivalente alla stessa proprietà e valore espressa come contenuto XML del corrispondente Description in accordo con la produzione [6.12]. Specificatamente, ciascun attributo XML, detto A, specificato all'interno del tag di apertura di un elemento Description insieme agli attributi ID, about, aboutEach, aboutEachPrefix, bagID, xml:lang, o a qualsiasi attributo che inizi con i caratteri xmlns, ha come conseguenza la creazione di una tripla {p,r,v} dove:
Grammaticamente, la produzione [6.11] è solo un caso speciale della produzione propName [6.10]. Il valore dell'attributo type è interpretato come un riferimento URI e espanso nello stesso modo come il valore dell'attributo resource. L'uso della [6.11] è equivalente ad usare rdf:type come nome di un elemento (proprietà ) insieme ad un attributo resource.
La forma typedNode (produzione [6.13]) può essere usata per rappresentare instanze di risorse di tipi specifici e per descrivere ulteriormente quelle risorse. Un Description espresso in forma typedNode dalla produzione [6.13] è equivalente allo stesso Description espresso dalla produzione [6.3] con gli stessi attributi ID, bagID, about più una proprietà di tipo addizionale in Description dove il valore della proprietà di tipo di è la risorsa il cui identificatore è dato dal URI completamente espanso e risolto, corrispondente al typeName del typedNode. Specificamente, un typedNode rappresenta una tripla {RDF:type,n,t} dove n è la risorsa il cui identificatore è dato dal valore dell'attributo about (dopo la risoluzione) o il cui anchor id è dato dal valore dell'attributo ID dell'elemento typedNode, e t è l'espansione del nome del tag qualificato dal namespace. Il resto degli attributi di typedNode e il contenuto sono gestiti come gli elementi Description di sopra.
Proprietà e valori espressi in forma di attributo XML all'interno di un elemento XML vuoto , detto E, secondo le produzioni [6.10] e [6.12] sono equivalenti alle stesse proprietà e valori espressi come contenuto XML di un singolo elemento Description, sia esso D, che diverrebbe il contenuto di E. Il referente di D è il valore della proprietà identificata dal nome di elemento XML di E in accordo con le produzioni [6.17], [6.2], e [6.3]. Specificamente; ogni tag di apertura propertyElt contenente specificazioni di attributi oltre che ID, resource, bagID, xml:lang, o qualsiasi attributo che inizia con i caratteri xmlns risulta nella creazione delle triple {p,r1,r2}, {pa1,r2,va1}, ..., {pan,r2,van} dove
Il valore dell'attributo bagID, se specificato, è l'identificatore per la Bag corrispondente alla Description D; altrimenti la Bag è anonima.
I seguenti esempi illustrano ulteriormente le caratteristiche di RDF spiegate sopra.
Una singola risorsa può essere il valore di più di una proprietà ; ovvero può essere l'oggetto di più di una asserzione e pertanto puntata da più di un arco. Per esempio, una singola pagina Web potrebbe essere condivisa da molti documenti e potrebbe pertanto essere referenziata più di una volta in una "mappa di un sito". Oppure possono essere date due differenti sequenze (ordinate) della stessa risorsa.
Consideriamo il caso di specificare la raccolta di lavori di un autore, ordinati prima per data di pubblicazione e poi ordinati alfabeticamente per soggetto:
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <Seq ID="JSPapersByDate"> <li resource="http://www.dogworld.com/Aug96.doc"/> <li resource="http://www.webnuts.net/Jan97.html"/> <li resource="http://www.carchat.com/Sept97.html"/> </Seq> <Seq ID="JSPapersBySubj"> <li resource="http://www.carchat.com/Sept97.html"/> <li resource="http://www.dogworld.com/Aug96.doc"/> <li resource="http://www.webnuts.net/Jan97.html"/> </Seq> </RDF>
Questo esempio XML usa anche la sintassi di default di dichiarazione di namespace per elidere il prefisso di namespace.
Per illustrare ulteriormente gli aggregati, considerare un esempio di documento con due autori specificati alfabeticamente, un titolo specificato in due linguaggi differenti, e avente due locazioni equivalenti sul Web:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/metadata/dublin_core#"> <rdf:Description about="http://www.foo.com/cool.html"> <dc:Creator> <rdf:Seq ID="CreatorsAlphabeticalBySurname"> <rdf:li>Mary Andrew</rdf:li> <rdf:li>Jacky Crystal</rdf:li> </rdf:Seq> </dc:Creator> <dc:Identifier> <rdf:Bag ID="MirroredSites"> <rdf:li rdf:resource="http://www.foo.com.au/cool.html"/> <rdf:li rdf:resource="http://www.foo.com.it/cool.html"/> </rdf:Bag> </dc:Identifier> <dc:Title> <rdf:Alt> <rdf:li xml:lang="en">The Coolest Web Page</rdf:li> <rdf:li xml:lang="it">La pagina Web più bella</rdf:li> </rdf:Alt> </dc:Title> </rdf:Description> </rdf:RDF>
Questo esempio illustra l'uso di tutti e tre i tipi di collezioni. L'ordine dei creatori è ritenuto significativo pertanto il contenitore Sequence è usato per raccoglierli. Le locazioni sul Web sono equivalenti; l'ordine non è significativo, pertanto è usatu un Bag. Il documento ha solo un unico titolo e quel titolo ha due varianti, pertanto è usato il contenitore Alternatives.
Nota: In molti casi, è impossibile avere un linguaggio preferito tra vari linguaggi alternativi; tutti i linguaggi sono considerati strettamente equialenti. In questi casi l'autore di description dovrebbe usare un Bag invece di un contenitore Alt.
Il modello di dati RDF supporta intrinsicamente solo relazioni binarie; ovvero, un'asserzione specifica una relazione tra due risorse. Negli esempi seguenti mostriamo il modo raccomandato per rappresentare in RDF relazioni di ordine superiore usando solo relazioni binarie. La tecnica raccomandata è di usare una risorsa intermedia con proprietà addizionali di questa risorsa che fornisca le rimanenti relazioni. Per esempio, considerate il soggetto di uno degli articoli recenti di John Smith -- "library science". Possiamo usare il Codice Decimale Dewey per "library science" per categorizzare quell'articolo. I codici Decimali Dewey sono lontani dallo schema di categorizzazione per soggetto, pertanto per mantenere la relazione con il sistema di classificazione identifichiamo una risorsa addizionale che è usata come valore della proprietà soggetto e associamo a questa risorsa una proprietà addizionale che identifica lo schema di categorizzazione usato. Come specificato nella Sezione 2.3., il nucleo RDF include una proprietà value per denotare il valore principale della relazione primaria. Il grafo risultante potrebbe essere:
che potrebbe essere rappresentata in questo modo:
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/metadata/dublin_core#" xmlns:l="http://mycorp.com/schemas/my-schema#"> <Description about="http://www.webnuts.net/Jan97.html"> <dc:Subject rdf:value="020 - Library Science" l:Classification="Dewey Decimal Code"/> </Description> </RDF>
Nota: Nell'esempio di sopra esistono due dichiarazioni di namespace per lo stesso namespace. Questo è frequentemente necessario quando i namespace di default sono dichiarati in modo che gli attributi che non provengono dal namespace dell'elemento possano essere specificati, come nel caso dell'attributo rdf:value nell'elemento dc:Subjectdi cui sopra.
Un uso comune di questa potenzialità di esprimere relazioni di ordine superiore si ha quando si tratta con unità di misura. Il peso di una persona non è solo un numero come "200", esso include anche l'unità di misura usata. In questo caso potremmo aver usato sia le libbre che i chilogrammi. Potremmo usare una relazione con un arco addizionale per registrare il fatto che John Smith è un gentiluomo piuttosto gagliardo:
che può essere rappresentata in questo modo:
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:n="http://www.nist.gov/units/"> <Description about="John_Smith"> <n:weight rdf:parseType="Resource"> <rdf:value>200</rdf:value> <n:units rdf:resource="http://www.nist.gov/units/Pounds"/> </n:weight> </Description> </RDF>
purchè la risorsa "Pounds" sia definita in uno schema del NIST avente URI http://www.nist.gov/units/Pounds.
I metadati Dublin Core sono progettati per facilitare la ricerca di risorse elettroniche in un modo simile ad una scheda di un catalogo di biblioteca. Questi esempi rappresentano la descrizione semplice di un insieme di risorse in RDF usando vocabolari definiti dalla Dublin Core Initiative. Nota: lo specifico vocabolario Dublin Core RDF mostrato qui non è inteso essere autoritario. La Dublin Core Initiative è il riferimento autoritario.
Questa è la descrizione di una home page di un sito Web usando le proprietà Dublin Core:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/metadata/dublin_core#"> <rdf:Description about="http://www.dlib.org"> <dc:Title>D-Lib Program - Research in Digital Libraries</dc:Title> <dc:Description>The D-Lib program supports the community of people with research interests in digital libraries and electronic publishing.</dc:Description> <dc:Publisher>Corporation For National Research Initiatives</dc:Publisher> <dc:Date>1995-01-07</dc:Date> <dc:Subject> <rdf:Bag> <rdf:li>Research; statistical methods</rdf:li> <rdf:li>Education, research, related topics</rdf:li> <rdf:li>Library use Studies</rdf:li> </rdf:Bag> </dc:Subject> <dc:Type>World Wide Web Home Page</dc:Type> <dc:Format>text/html</dc:Format> <dc:Language>en</dc:Language> </rdf:Description> </rdf:RDF>
Il secondo esempio è relativo ad un giornale stampato.
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/metadata/dublin_core#" xmlns:dcq="http://purl.org/metadata/dublin_core_qualifiers#"> <rdf:Description about="http://www.dlib.org/dlib/may98/05contents.html"> <dc:Title>DLIB Magazine - The Magazine for Digital Library Research - May 1998</dc:Title> <dc:Description>D-LIB magazine is a monthly compilation of contributed stories, commentary, and briefings.</dc:Description> <dc:Contributor rdf:parseType="Resource"> <dcq:AgentType rdf:resource="http://purl.org/metadata/dublin_core_qualifiers#Editor"/> <rdf:value>Amy Friedlander</rdf:value> </dc:Contributor> <dc:Publisher>Corporation for National Research Initiatives</dc:Publisher> <dc:Date>1998-01-05</dc:Date> <dc:Type>electronic journal</dc:Type> <dc:Subject> <rdf:Bag> <rdf:li>library use studies</rdf:li> <rdf:li>magazines and newspapers</rdf:li> </rdf:Bag> </dc:Subject> <dc:Format>text/html</dc:Format> <dc:Identifier>urn:issn:1082-9873</dc:Identifier> <dc:Relation rdf:parseType="Resource"> <dcq:RelationType rdf:resource="http://purl.org/metadata/dublin_core_qualifiers#IsPartOf"/> <rdf:value resource="http://www.dlib.org"/> </dc:Relation> </rdf:Description> </rdf:RDF>
Il terzo esempio è relativo ad uno specifico articolo del giornale riferito nel precedente esempio.
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/metadata/dublin_core#" xmlns:dcq="http://purl.org/metadata/dublin_core_qualifiers#"> <rdf:Description about= "http://www.dlib.org/dlib/may98/miller/05miller.html"> <dc:Title>An Introduction to the Resource Description Framework</dc:Title> <dc:Creator>Eric J. Miller</dc:Creator> <dc:Description>The Resource Description Framework (RDF) is an infrastructure that enables the encoding, exchange and reuse of structured metadata. rdf is an application of xml that imposes needed structural constraints to provide unambiguous methods of expressing semantics. rdf additionally provides a means for publishing both human-readable and machine-processable vocabularies designed to encourage the reuse and extension of metadata semantics among disparate information communities. the structural constraints rdf imposes to support the consistent encoding and exchange of standardized metadata provides for the interchangeability of separate packages of metadata defined by different resource description communities. </dc:Description> <dc:Publisher>Corporation for National Research Initiatives</dc:Publisher> <dc:Subject> <rdf:Bag> <rdf:li>machine-readable catalog record formats</rdf:li> <rdf:li>applications of computer file organization and access methods</rdf:li> </rdf:Bag> </dc:Subject> <dc:Rights>Copyright @ 1998 Eric Miller</dc:Rights> <dc:Type>Electronic Document</dc:Type> <dc:Format>text/html</dc:Format> <dc:Language>en</dc:Language> <dc:Relation rdf:parseType="Resource"> <dcq:RelationType rdf:resource="http://purl.org/metadata/dublin_core_qualifiers#IsPartOf"/> <rdf:value resource="http://www.dlib.org/dlib/may98/05contents.html"/> </dc:Relation> </rdf:Description> </rdf:RDF>
Nota: Gli sviluppatori dello schema potrebbero essere tentati di dichiarare i valori di certe proprietà per usare una sintassi corrispondente all'abbreviazione di nome qualificato di namespace XML. Sconsigliamo l'uso di questi nomi qualificati dentro i valori di proprietà poiché questo può causare incompatibilità con futuri meccanimi di tipizzazione in XML. Inoltre, coloro che sono molto esperti nelle caratteristiche di XML 1.0 possono riconoscere che un simile meccanismo di abbreviazione esiste nelle entità definite dall'utente. Sconsigliamo inoltre nel fare affidamento sull'uso di entità poichè esiste una proposta per definire un futuro sottoinsieme di XML che non include entità definite dall'utente.
Quando un valore di proprietà è un letterale che contiene marcatori XML, la seguente sintassi è usata per segnalare all'interprete RDF di non interpretare il marcare ma piuttosto di mantenerlo come parte del valore. La rappresentazione precisa del valore risultante non è qui specificata.
Nel seguente esempio, il valore della proprietà Title è un letterale contenente alcuni marcatori MATHML.
<rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/metadata/dublin_core#" xmlns="http://www.w3.org/TR/REC-mathml" rdf:about="http://mycorp.com/papers/NobelPaper1"> <dc:Title rdf:parseType="Literal"> Ramifications of <apply> <power/> <apply> <plus/> <ci>a</ci> <ci>b</ci> </apply> <cn>2</cn> </apply> to World Peace </dc:Title> <dc:Creator>David Hume</dc:Creator> </rdf:Description>
La Piattaforma di Selezione del Contenuto su Internet (PICS) è una raccomandazione W3C per scambiare descrizioni del contenuto di pagine Web e altro materiale. PICS è un predecessore di RDF ed è un'esplicito requisito di RDF essere in grado di esprimere qualsiasi cosa che possa essere espressa in una etichetta PICS.
Ecco un esempio di come un'etichetta PICS possa essere espressa in formato RDF. Nota che il lavoro per specificare di nuovo PICS come un'applicazione RDF può seguire il completamento della specifica RDF, pertanto il seguente esempio non dovrebbe essere considerato un esempio autoritario di un futuro schema RDF. Questo esempio proviene direttamente da [PICS]. Nota che un elemento Description relativo ad un Servizio di Valutazione PICS è esattamente analogo ad uno schema RDF; le categorie descritte in un tale file di descrizione di Servizio di Valutazione sono equivalenti alle proprietà nel modello RDF.
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:pics="http://www.w3.org/TR/xxxx/WD-PICS-labels#" xmlns:gcf="http://www.gcf.org/v2.5"> <rdf:Description about="http://www.w3.org/PICS/Overview.html" bagID="L01" gcf:suds="0.5" gcf:density="0" gcf:color.hue="1"/> <rdf:Description about="http://www.w3.org/PICS/Underview.html" bagID="L02" gcf:subject="2" gcf:density="1" gcf:color.hue="1"/> <rdf:Description aboutEach="#L01" pics:by="John Doe" pics:on="1994.11.05T08:15-0500" pics:until="1995.12.31T23:59-0000"/> <rdf:Description aboutEach="#L02" pics:by="Jane Doe" pics:on="1994.11.05T08:15-0500" pics:until="1995.12.31T23:59-0000"/> </rdf:RDF>
Nota che aboutEach è usato per indicare che le opzioni per l'etichetta PICS si riferiscono alle asserzioni individuali (valutazione) e non al contenitore in cui quelle asserzioni sono fornite.
[PICS] inoltre definisce un tipo chiamato etichetta generica. Un'etichetta generica PICS è una etichetta che si applica a tutte le pagine all'interno di una specifica porzione del sito Web.
Sotto viene mostrato un esempio di come una generica etichetta PICS potrebbe essere scritta in RDF, usando il costruttore di collezione aboutEachPrefix. Questo è tratto dall'esempio "Generic request" nell'Appendice B di [PICS]:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:pics="http://www.w3.org/TR/xxxx/WD-PICS-labels#" xmlns:ages="http://www.ages.org/our-service/v1.0/"> <rdf:Description aboutEachPrefix="http://www.w3.org/WWW/" bagID="L03" ages:age="11"/> <rdf:Description aboutEach="#L03" pics:by="abaird@w3.org"/> </rdf:RDF>
La proprietà age (età ) con il valore "11" appare su tutte le risorse il cui URI inizia con la stringa "http://www.w3.org/WWW/". L'asserzione reificata corrispondente a ciascuna di tali asserzioni ("The age of [I] is 11" - L'età di [I] è 11 anni) ha una proprietà che afferma che "abaird@w3.org" era responsabile per la creazione di quelle asserzioni.
RDF, essendo un XML ben-formato, è adatto per una inclusione diretta in un documento HTML quando lo "user agent" seguele raccomandazioni HTML per la gestione degli errori nei documenti non validi. Quando un frammento di RDF è incorporato in un documento HTML alcuni browser rappresenteranno qualsiasi contenuto esposto di una stringa. Il contenuto esposto della stringa è tutto ciò che appare tra il carattere ">" che termina un tag e il carattere "<" che inizia il tag successivo. Generalmente, spazi consecutivi multipli che includono caratteri end-of-line sono rappresentati come uno spazio singolo.
La sintassi abbreviata RDF può essere usata frequentemente per scrivere valori di proprietà che sono stringhe in forma di attibuti XML e lasciare solo gli spazi bianchi come contenuto esposto. Per esempio, la prima parte dell'esempio Dublin Core della Sezione 7.4. potrebbe essere scritta come:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/metadata/dublin_core#"> <rdf:Description about="http://www.dlib.org" dc:Title="D-Lib Program - Research in Digital Libraries" dc:Description="The D-Lib program supports the community of people with research interests in digital libraries and electronic publishing." dc:Publisher="Corporation For National Research Initiatives" dc:Date="1995-01-07"/> </rdf:RDF>
Riscrivere per impedire il contenuto esposto funzionerà per i casi più comuni. Un caso comune ma meno ovvio riguarda le descrizioni di contenitore. Considerate la prima parte dell'esempio nella Sezione 7.2.:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/metadata/dublin_core#"> <rdf:Description about="http://www.foo.com/cool.html"> <dc:Creator> <rdf:Seq ID="CreatorsAlphabeticalBySurname"> <rdf:li>Mary Andrew</rdf:li> <rdf:li>Jacky Crystal</rdf:li> </rdf:Seq> </dc:Creator> </rdf:Description> </rdf:RDF>
Pe riscrivere questo senza contenuto esposto, usiamo la seguente forma:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/metadata/dublin_core#"> <rdf:Description about="http://www.foo.com/cool.html"> <dc:Creator> <rdf:Seq ID="CreatorsAlphabeticalBySurname" rdf:_1="Mary Andrew" rdf:_2="Jacky Crystal"/> </dc:Creator> </rdf:Description> </rdf:RDF>
Nota che l'elemento li non può essere usato come attributo poiché le regole XML proibiscono multiple occorrenze dello stesso nome di attributo all'interno di un tag. Pertanto abbiamo usato la proprietà esplicita Ord di RDF; di fatto espandendo manualmente l'elemento li.
Un documento HTML completo contenente metadati RDF che lo descrivono è:
<html> <head> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/metadata/dublin_core#"> <rdf:Description about=""> <dc:Creator> <rdf:Seq ID="CreatorsAlphabeticalBySurname" rdf:_1="Mary Andrew" rdf:_2="Jacky Crystal"/> </dc:Creator> </rdf:Description> </rdf:RDF> </head> <body> <P>This is a fine document.</P> </body> </html>
Il documento HTML di cui sopra dovrebbe essere accettato da tutti i browser compatibili con HTML 3.2 e successivi e dovrebbe mostrare solo i caratteri "This is a fine document."
Questa specifica è il prodotto del Gruppo di Lavoro Modello e Sintassi RDF W3C ( W3C RDF Model and Syntax Working Group). Questo Gruppo di Lavoro è stato presieduto molto abilmente da Eric Miller di Online Computer Library Center e da Bob Schloss di IBM. Vogliamo Ringraziare Eric e Bob per il loro instancabile lavoro nel tenere il gruppo in careggiata e ringraziamo in modo speciale OCLC, IBM, e Nokia per aver sostenuto loro e noi in questo sforzo.
I membri del Gruppo di Lavoro che hanno aiutato a sviluppare questa specifica, a dibattere proposte, a fornire le parole, a correggere le numerose bozze in bruttacopia ed infine, a raggiungere il consenso sono: Ron Daniel (DATAFUSION), Renato Iannella (DSTC), Tsuyoshi SAKATA (DVL), Murray Maloney (Grif), Bob Schloss (IBM), Naohiko URAMOTO (IBM), Bill Roberts (KnowledgeCite), Arthur van Hoff (Marimba), Charles Frankston (Microsoft), Andrew Layman (Microsoft), Chris McConnell (Microsoft), Jean Paoli (Microsoft), R.V. Guha (Netscape), Ora Lassila (Nokia), Ralph LeVan (OCLC), Eric Miller (OCLC), Charles Wicksteed (Reuters), Misha Wolf (Reuters), Wei Song (SISU), Lauren Wood (SoftQuad), Tim Bray (Textuality), Paul Resnick (University of Michigan), Tim Berners-Lee (W3C), Dan Connolly (W3C), Jim Miller (W3C, emeritus), Ralph Swick (W3C). Dan Brickley (UK Bristol) si è associato all'attività relativa all'RDF Schema e ci ha dato molti consigli saggi nelle fasi finali di questo lavoro. Martin Dürst (W3C) ha rivisto molte bozze di lavoro e ha fatto un numero di suggerimenti di miglioramento a nome del W3C InternationalizationWorkingGroup. Janne Saarela (W3C) ha effettuato un'impagabile servizio riordinando le nostre bozze di lavoro.
Questo documento è il lavoro collettivo del Gruppo di Lavoro. Gli editori sono in debito con il Gruppo di Lavoro per l'aiuto fornito per creare e ripulire questa specifica.
I seguenti termini sono usati in questa specifica con vari gradi di significato intuitivo e significato preciso. Le definizioni qui ricapitolate servono solo come guida; esse sono non-normative. Dove appropriato, è data anche la posizione nel documento della definizione precisa.
Arco
Una rappresentazione di una proprietà in forma grafica; specificatamente gli archi in un grafo etichettato direzionale.
Attributo
Una caratteristica di un oggetto. Nel Capitolo 6 questo termine si riferisce ad uno specifico costrutto sintattico XML; la porzione nome="valore" di un tag XML.
Elemento
Come usato qui, questo termine si riferisce ad uno specifico costrutto sintattico XML; ovvero,il materiale tra i tag XML di apertura e di chiusura.
Letterale
Il tipo di valore più primitivo reappresentato in XML, tipicamente una stringa di caratteri. Il contenuto di un letterale non è interpretato da RDF stesso e può contenere markup XML addizionale. I letterali si distinguono dalle Risorse in quanto il modello RDF non permette ai letterali di essere il soggetto di una asserzione.
Nodo
Una rappresentazione di una risorsa o un letterale in forma grafica; specificatamente, un vertice in un grafo etichettato direzionale.
Proprietà
Uno specifico attributo con significato definito che può essere usato per descrivere altre risorse. Una proprietà più il valore di quella proprietà per una specifica risorsa è un asserzione su quella risorsa. Una proprietà può definire i propri valori permessi come pure i tipi di risorse che possono essere descritte con questa proprietà.
Risorsa
Un oggetto astratto che rappresenta un oggetto fisico come una persona o un libro, oppure un oggetto concettuale come un colore o la classe delle cose che hanno colori. Le pagine Web sono usualmente considerate oggetti fisici, ma la distinzione tra oggetti fisici e oggetti concettuali o astratti non è importante per RDF. Una risorsa può anche essere un componente di un oggetto più grande; per esempio, una risorsa può rappresentare una specifica mano sinistra di persona o uno specifico paragrafo di un documento. Come usato in questa specifica, il termine risorsa si riferisce all'intero oggetto se l' URI non contiene un identificatore di frammento (ancora) oppure alla specifica subunità indicata dall'indicatore di frammento o ancora.
Asserzione
Una espressione che segue una grammatica specifica che nomina una risorsa specifica, una proprietà specifica (attributo), e fornisce il valore di quella proprietà per quella risorsa. Più specificatamente, qui, un asserzione RDF è una asserzione che usa la grammatica RDF/XML specificata in questo documento.
Tripla
Una rappresentazione di una asserzione usata da RDF, composta proprio dalla proprietà, dall'identificatore della risorsa e dal valore della proprietà in questo ordine.
Le descrizioni possono essere associate alle risorse che descrivono in uno dei quattro modi che seguono:
1. Description può essere contenuto all'interno della risorsa ("embedded"; ad es. in HTML)..
2. Description può essere esterno alla risorsa ma fornito dal meccanismo di trasferimento nella stessa transazione di recupero che restituisce la risorsa ("along-with"; ad es. con HTTP GET o HEAD).
3. Description può essere recuperato indipendentemente dalla risorsa, anche da un sorgente differente ("service bureau"; ad es. usando GET HTTP).
4. Description può contenere la risorsa ("wrapped"; ad es. lo stesso RDF).
Tutte le risorse non supporteranno tutti i metodi di associazione; in particolare, molti tipi di risorse non supporteranno l'inclusione e solo certi tipi di risorse possono essere "wrapped".
Una descrizione di uno schema RDF comprensibile da un uomo o da una macchina può essere acceduta tramite negoziazione del contenuto dereferenziando l'URI dello schema. Se lo schema è interpretabile dalla macchina per un'applicazione può essere possibile imparare alcune delle semantiche delle proprietà denominate nello schema su richiesta. La logica e la sintassi degli schemi RDF sono descritti in un documento separato,[RDFSchema].
La tecnica raccomandata per includere espressioni RDF in un documento HTML consiste semplicemente nell'inserimento di RDF in linea come mostrato nell'Esempio 7.7. Questo renderà il documento risultante non conforme alle specifiche fino alla versione HTML 4.0 compresa ma il W3C si aspetta chele specifiche HTML evolveranno per supportarlo. Sorgeranno due conseguenze pratiche quando questa tecnica verrà impiegata nei confronti dei browser conformi alle specifiche fino alla HTML 4.0 compresa. In questi casi sono disponibili alternative per gli autori; vedi[XMLinHTML].Spetta all'autore scegliere l'alternativa appropriata in ogni circostanza.
1. Alcuni browser HTML 2.0 includeranno virtualmente un tag /HEAD immediatamente prima che il primo elemento RDF appaia all'interno di HEAD.
Gli autori hanno interesse che browser molto vecchi possono inserire tutte le espressioni RDF alla fine dell'elemento head del documento.
2. Tutti i browser conformi alle specifiche fino alla HTML 4.0 compresa visualizzaranno qualsiasi contenuto appaia nei valori di proprietà RDF espressi come elementi XML (ovvero, produzione [6.12]).
Gli autori che vogliono impedire che il loro contenuto RDF venga visualizzato nei vecchi browser possono usare la sintassi abbreviata (forma propAttr) per spostare il valore di proprietà in un attributo. Non tutte le proprietà possono essere espresse in questo modo.
Nel caso nessuna delle alternative di cui sopra offra le potenzialità desiderate dall'autore, le espressioni RDF possono essere lasciate esterne al documento HTML e collegate con un elemento HTML <LINK>. Il tipo di relazione raccomandato per questo scopo è REL="meta"; ad esempio:
LINK rel="meta" href="mydocMetadata.DC.RDF"
Le sintassi abbreviate e di serializzazione RDF usano XML come loro codifica. Gli elementi e gli attributi XML sono case sensitive, pertanto i nomi di proprietà RDF sono pertanto case sensitive. Questa specifica non richiede alcun formato specifico oltre al fatto che questi devono essere nomi legali XML. Per i propri identificatori, RDF ha adottato la convenzione che tutti i nomi di proprietà usano lo stile "InterCap"; ovvero, la prima lettera del nome di proprietà e il resto della parola è minuscolo; ad es. soggetto. Quando il nome di proprietà è una composizione di parole o frammenti di parole, le parole sono concatenate con la prima lettera di ciascuna parola (esclusa la prima parola) in maiuscolo e senza addizionali segni di interpunzione; ad es. subClassOf.
RDF usa il meccanismo proposto dei namespace XML per implementare globalmente identificatori unici per tutte le proprietà. Inoltre, il nome di namespace serve come identificatore per il corrispondente schema RDF. Il nome di namespace è risolto in forma assoluta come specificato dall'algoritmo in Sezione 5.2., Risolvere Riferimenti Relativi in Forma Assoluta, in [URI]. Un processore RDF può aspettarsi di usare l'URI dello schema per accedere al contenuto dello schema. Questa specifica non pone ulteriori requisiti sul contenuto che potrebbe essere fornito a quell'URI, ne' su come (se questo fosse possibile) l' URI possa essere modificato per ottenere forme alternative o un frammento dello schema.
[Dexter94]
F. Halasz and M. Schwarz. The Dexter Hypertext Reference Model. Communications of the ACM, 37(2):30--39, February 1994. Edited by K. Grønbæck and R. Trigg.http://www.acm.org/pubs/citations/journals/cacm/1994-37-2/p30-halasz/
[HT ML]
HTML 4.0 Specification, Raggett, Le Hors, Jacobs eds, World Wide Web Consortium Recommendation; http://www.w3.org/TR/REC-html40
[ISO10646]
ISO/I EC 10646. The applicable version of this standard is defined in the XML specification [XML].
[NAMESPACES]
Namespaces in XML; Bray, Hollander, Layman eds, World Wide Web Consortium Recommendation; http://www.w3.org/TR/1999/REC-xml-names-19990114.
[PICS]
PICS Label Distribution Label Syntax and Communication Protocols, Version 1.1, W3C Recommendation 31-October-96; http://www.w3.org/TR/REC-PICS-labels.
[RDFSchema]
Resource Description Framework (RDF) Schemas; Brickley, Guha, Layman eds., World Wide Web Consortium Working Draft; http://www.w3.org/TR/1998/WD-rdf-schema
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels; S. Bradner, March 1997; RFC2119.
[Unicode]
The Unicode Standard. The applicable version of this standard is the version defined by the XML specification [XML].
[URI]
Uniform Resource Identifiers (URI): Generic Syntax; Berners-Lee, Fielding, Masinter, Internet Draft Standard August, 1998; RFC2396.
[XML]
Extensible Markup Language (XML) 1.0; World Wide Web Consortium Recommendation; http://www.w3.org/TR/REC-xml.
[XMLinHTML]
XML in HTML Meeting Report; Connolly, Wood eds.; World Wide Web Consortium Note; http://www.w3.org/TR/NOTE-xh.
Sono stati fatte alcune modifiche tipografiche dopo che è stata pubblicata la Proposta di Raccomandazione. Gli errata conosciuti nella versione precedente a partire dall'ora di pubblicazione sono stati corretti. E' stata fatta anche una piccola modifica chiarificatrice al paragrafo finale della Sezione 6.
Ora Lassila ora.lassila@research.nokia.com
Ralph R. Swick swick@w3.org
Ultima modifica 24/02/1999 14:45:07