XML RDF
Esempio di documento RDF
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:si="https://www.w3schools.com/rdf/">
<rdf:Description rdf:about="https://www.w3schools.com">
<si:title>W3Schools</si:title>
<si:author>Jan Egil Refsnes</si:author>
</rdf:Description>
</rdf:RDF>
Cos'è l'RDF?
- RDF sta per R esource D escription F ramework
- RDF è un framework per descrivere le risorse sul web
- RDF è progettato per essere letto e compreso dai computer
- RDF non è progettato per essere mostrato alle persone
- RDF è scritto in XML
- RDF fa parte della Semantic Web Activity del W3C
- RDF è una raccomandazione del W3C del 10 febbraio 2004
RDF - Esempi di utilizzo
- Descrivere le proprietà degli articoli per l'acquisto, come prezzo e disponibilità
- Descrivere gli orari degli eventi web
- Descrivere informazioni sulle pagine web (contenuto, autore, data di creazione e modifica)
- Descrivere il contenuto e la valutazione per le immagini web
- Descrivere i contenuti per i motori di ricerca
- Descrivere le biblioteche elettroniche
RDF è progettato per essere letto dai computer
RDF è stato progettato per fornire un modo comune per descrivere le informazioni in modo che possano essere lette e comprese dalle applicazioni del computer.
Le descrizioni RDF non sono progettate per essere visualizzate sul Web.
RDF è scritto in XML
I documenti RDF sono scritti in XML. Il linguaggio XML utilizzato da RDF è chiamato RDF/XML.
Utilizzando XML, le informazioni RDF possono essere facilmente scambiate tra diversi tipi di computer che utilizzano diversi tipi di sistemi operativi e linguaggi applicativi.
RDF e "Il Web semantico"
Il linguaggio RDF fa parte della Semantic Web Activity del W3C. La "Semantic Web Vision" del W3C è un futuro in cui:
- Le informazioni web hanno un significato esatto
- Le informazioni Web possono essere comprese ed elaborate dai computer
- I computer possono integrare le informazioni dal web
RDF utilizza identificatori Web (URI) per identificare le risorse.
RDF descrive le risorse con proprietà e valori di proprietà.
Risorsa RDF, proprietà e valore della proprietà
RDF identifica le cose utilizzando identificatori Web (URI) e descrive le risorse con proprietà e valori di proprietà.
Spiegazione del valore della risorsa, della proprietà e della proprietà:
- Una risorsa è tutto ciò che può avere un URI, come "https://www.w3schools.com/rdf"
- Una proprietà è una risorsa che ha un nome, ad esempio "autore" o "homepage"
- Un valore di una proprietà è il valore di una proprietà, come "Jan Egil Refsnes" o "https://www.w3schools.com" (notare che un valore di una proprietà può essere un'altra risorsa)
Il seguente documento RDF potrebbe descrivere la risorsa "https://www.w3schools.com/rdf":
<?xml version="1.0"?>
<RDF>
<Description about="https://www.w3schools.com/rdf">
<author>Jan Egil Refsnes</author>
<homepage>https://www.w3schools.com</homepage>
</Description>
</RDF>
L'esempio sopra è semplificato. Gli spazi dei nomi sono omessi.
Dichiarazioni RDF
La combinazione di un valore di Risorsa, Proprietà e Proprietà forma una Dichiarazione (nota come soggetto, predicato e oggetto di una Dichiarazione).
Diamo un'occhiata ad alcune affermazioni di esempio per capire meglio:
Dichiarazione: "L'autore di https://www.w3schools.com/rdf è Jan Egil Refsnes".
- L'oggetto della dichiarazione di cui sopra è: https://www.w3schools.com/rdf
- Il predicato è: autore
- L'oggetto è: Jan Egil Refsnes
Dichiarazione: "La homepage di https://www.w3schools.com/rdf è https://www.w3schools.com".
- L'oggetto della dichiarazione di cui sopra è: https://www.w3schools.com/rdf
- Il predicato è: homepage
- L'oggetto è: https://www.w3schools.com
Esempio RDF
Ecco due record da un elenco di CD:
Title | Artist | Country | Company | Price | Year |
---|---|---|---|---|---|
Empire Burlesque | Bob Dylan | USA | Columbia | 10.90 | 1985 |
Hide your heart | Bonnie Tyler | UK | CBS Records | 9.90 | 1988 |
Di seguito alcune righe di un documento RDF:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
<cd:artist>Bob Dylan</cd:artist>
<cd:country>USA</cd:country>
<cd:company>Columbia</cd:company>
<cd:price>10.90</cd:price>
<cd:year>1985</cd:year>
</rdf:Description>
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Hide your heart">
<cd:artist>Bonnie Tyler</cd:artist>
<cd:country>UK</cd:country>
<cd:company>CBS Records</cd:company>
<cd:price>9.90</cd:price>
<cd:year>1988</cd:year>
</rdf:Description>
.
.
.
</rdf:RDF>
La prima riga del documento RDF è la dichiarazione XML. La dichiarazione XML è seguita dall'elemento radice dei documenti RDF: <rdf:RDF> .
Lo spazio dei nomi xmlns:rdf specifica che gli elementi con il prefisso rdf provengono dallo spazio dei nomi "http://www.w3.org/1999/02/22-rdf-syntax-ns#".
Lo spazio dei nomi xmlns:cd specifica che gli elementi con il prefisso cd provengono dallo spazio dei nomi "http://www.recshop.fake/cd#".
L' elemento <rdf:Description> contiene la descrizione della risorsa identificata dall'attributo rdf:about .
Gli elementi: <cd:artista>, <cd:paese>, <cd:azienda>, ecc. sono proprietà della risorsa.
Validatore in linea RDF
Il servizio di convalida RDF del W3C è utile durante l'apprendimento di RDF. Qui puoi sperimentare con i file RDF.
Il validatore RDF online analizza il tuo documento RDF, controlla la tua sintassi e genera viste tabulari e grafiche del tuo documento RDF.
Copia e incolla l'esempio seguente nel validatore RDF del W3C:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:si="https://www.w3schools.com/rdf/">
<rdf:Description rdf:about="https://www.w3schools.com">
<si:title>W3Schools.com</si:title>
<si:author>Jan Egil Refsnes</si:author>
</rdf:Description>
</rdf:RDF>
Quando analizzi l'esempio sopra, il risultato sarà simile a questo .
Elementi RDF
Gli elementi principali di RDF sono l'elemento radice, <RDF>, e l'elemento <Description>, che identifica una risorsa.
L'elemento <rdf:RDF>
<rdf:RDF> è l'elemento radice di un documento RDF. Definisce il documento XML come un documento RDF. Contiene anche un riferimento allo spazio dei nomi RDF:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
...Description goes here...
</rdf:RDF>
L'elemento <rdf:Descrizione>
L'elemento <rdf:Description> identifica una risorsa con l'attributo about.
L'elemento <rdf:Description> contiene elementi che descrivono la risorsa:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
<cd:artist>Bob Dylan</cd:artist>
<cd:country>USA</cd:country>
<cd:company>Columbia</cd:company>
<cd:price>10.90</cd:price>
<cd:year>1985</cd:year>
</rdf:Description>
</rdf:RDF>
Gli elementi, artista, paese, azienda, prezzo e anno, sono definiti nello spazio dei nomi http://www.recshop.fake/cd#. Questo spazio dei nomi è esterno a RDF (e non fa parte di RDF). RDF definisce solo il framework. Gli elementi, artista, paese, azienda, prezzo e anno, devono essere definiti da qualcun altro (azienda, organizzazione, persona, ecc.).
Proprietà come attributi
Gli elementi della proprietà possono anche essere definiti come attributi (anziché elementi):
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque"
cd:artist="Bob Dylan" cd:country="USA"
cd:company="Columbia" cd:price="10.90"
cd:year="1985" />
</rdf:RDF>
Proprietà come risorse
Gli elementi della proprietà possono anche essere definiti come risorse:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
<cd:artist rdf:resource="http://www.recshop.fake/cd/dylan" />
...
...
</rdf:Description>
</rdf:RDF>
Nell'esempio sopra, l'artista della proprietà non ha un valore, ma un riferimento a una risorsa contenente informazioni sull'artista.
Contenitori CDR
I contenitori RDF sono usati per descrivere un gruppo di cose.
I seguenti elementi RDF vengono utilizzati per descrivere i gruppi: <Bag>, <Seq> e <Alt>.
L'elemento <rdf:Bag>
L'elemento <rdf:Bag> viene utilizzato per descrivere un elenco di valori che non devono necessariamente trovarsi in un ordine specifico.
L'elemento <rdf:Bag> può contenere valori duplicati.
Esempio
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
<cd:artist>
<rdf:Bag>
<rdf:li>John</rdf:li>
<rdf:li>Paul</rdf:li>
<rdf:li>George</rdf:li>
<rdf:li>Ringo</rdf:li>
</rdf:Bag>
</cd:artist>
</rdf:Description>
</rdf:RDF>
L'elemento <rdf:Seq>
L'elemento <rdf:Seq> viene utilizzato per descrivere un elenco ordinato di valori (ad esempio, in ordine alfabetico).
L'elemento <rdf:Seq> può contenere valori duplicati.
Esempio
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
<cd:artist>
<rdf:Seq>
<rdf:li>George</rdf:li>
<rdf:li>John</rdf:li>
<rdf:li>Paul</rdf:li>
<rdf:li>Ringo</rdf:li>
</rdf:Seq>
</cd:artist>
</rdf:Description>
</rdf:RDF>
L'elemento <rdf:Alt>
L'elemento <rdf:Alt> viene utilizzato per descrivere un elenco di valori alternativi (l'utente può selezionare solo uno dei valori).
Esempio
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
<cd:format>
<rdf:Alt>
<rdf:li>CD</rdf:li>
<rdf:li>Record</rdf:li>
<rdf:li>Tape</rdf:li>
</rdf:Alt>
</cd:format>
</rdf:Description>
</rdf:RDF>
Termini RDF
Negli esempi precedenti abbiamo parlato di "lista di valori" quando descriviamo gli elementi del contenitore. In RDF queste "liste di valori" sono chiamate membri.
Quindi, abbiamo quanto segue:
- Un contenitore è una risorsa che contiene cose
- Le cose contenute sono chiamate membri (non elenco di valori)
Collezioni RDF
Le raccolte RDF descrivono i gruppi che possono contenere SOLO i membri specificati.
L'attributo rdf:parseType="Collezione".
Come visto nel capitolo precedente, un contenitore dice che le risorse che lo contengono sono membri - non dice che altri membri non sono ammessi.
Le raccolte RDF vengono utilizzate per descrivere i gruppi che possono contenere SOLO i membri specificati.
Una raccolta è descritta dall'attributo rdf:parseType="Collection".
Esempio
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://recshop.fake/cd#">
<rdf:Description
rdf:about="http://recshop.fake/cd/Beatles">
<cd:artist rdf:parseType="Collection">
<rdf:Description rdf:about="http://recshop.fake/cd/Beatles/George"/>
<rdf:Description rdf:about="http://recshop.fake/cd/Beatles/John"/>
<rdf:Description rdf:about="http://recshop.fake/cd/Beatles/Paul"/>
<rdf:Description rdf:about="http://recshop.fake/cd/Beatles/Ringo"/>
</cd:artist>
</rdf:Description>
</rdf:RDF>
Schema RDF e classi di applicazione
RDF Schema (RDFS) è un'estensione di RDF.
RDF descrive le risorse con classi, proprietà e valori.
Inoltre, RDF necessita anche di un modo per definire classi e proprietà specifiche dell'applicazione. Le classi e le proprietà specifiche dell'applicazione devono essere definite utilizzando le estensioni di RDF.
Una di queste estensioni è RDF Schema.
Schema RDF (RDFS)
Lo schema RDF non fornisce classi e proprietà specifiche dell'applicazione.
Invece, lo schema RDF fornisce il framework per descrivere le classi e le proprietà specifiche dell'applicazione.
Classes in RDF Schema are much like classes in object oriented programming languages. This allows resources to be defined as instances of classes, and subclasses of classes.
RDFS Example
The following example demonstrates some of the RDFS facilities:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.animals.fake/animals#">
<rdf:Description rdf:ID="animal">
<rdf:type
rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</rdf:Description>
<rdf:Description rdf:ID="horse">
<rdf:type
rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
<rdfs:subClassOf rdf:resource="#animal"/>
</rdf:Description>
</rdf:RDF>
In the example above, the resource "horse" is a subclass of the class "animal".
Example Abbreviated
Since an RDFS class is an RDF resource we can abbreviate the example above by using rdfs:Class instead of rdf:Description, and drop the rdf:type information:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.animals.fake/animals#">
<rdfs:Class rdf:ID="animal" />
<rdfs:Class rdf:ID="horse">
<rdfs:subClassOf rdf:resource="#animal"/>
</rdfs:Class>
</rdf:RDF>
That's it!
The Dublin Core
The Dublin Core Metadata Initiative (DCMI) has created some predefined properties for describing documents.
RDF is metadata (data about data). RDF is used to describe information resources.
The Dublin Core is a set of predefined properties for describing documents.
The first Dublin Core properties were defined at the Metadata Workshop in Dublin, Ohio in 1995 and is currently maintained by the Dublin Core Metadata Initiative.
Property | Definition |
---|---|
Contributor | An entity responsible for making contributions to the content of the resource |
Coverage | The extent or scope of the content of the resource |
Creator | An entity primarily responsible for making the content of the resource |
Format | The physical or digital manifestation of the resource |
Date | A date of an event in the lifecycle of the resource |
Description | An account of the content of the resource |
Identifier | An unambiguous reference to the resource within a given context |
Language | A language of the intellectual content of the resource |
Publisher | An entity responsible for making the resource available |
Relation | A reference to a related resource |
Rights | Information about rights held in and over the resource |
Source | A Reference to a resource from which the present resource is derived |
Subject | A topic of the content of the resource |
Title | A name given to the resource |
Type | The nature or genre of the content of the resource |
A quick look at the table above indicates that RDF is ideal for representing Dublin Core information.
RDF Example
The following example demonstrates the use of some of the Dublin Core properties in an RDF document:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc= "http://purl.org/dc/elements/1.1/">
<rdf:Description rdf:about="https://www.w3schools.com">
<dc:description>W3Schools - Free tutorials</dc:description>
<dc:publisher>Refsnes Data as</dc:publisher>
<dc:date>2008-09-01</dc:date>
<dc:type>Web Development</dc:type>
<dc:format>text/html</dc:format>
<dc:language>en</dc:language>
</rdf:Description>
</rdf:RDF>
RDF Reference
The RDF namespace (xmlns:rdf) is: http://www.w3.org/1999/02/22-rdf-syntax-ns#
The RDFS namespace (xmlns:rdfs ) is: http://www.w3.org/2000/01/rdf-schema#
The recommended file extension for RDF files is .rdf. However, the extension .xml is often used to provide compatibility with old xml parsers.
The MIME type should be "application/rdf+xml".
RDFS / RDF Classes
Element | Class of | Subclass of |
---|---|---|
rdfs:Class | All classes | |
rdfs:Datatype | Data types | Class |
rdfs:Resource | All resources | Class |
rdfs:Container | Containers | Resource |
rdfs:Literal | Literal values (text and numbers) | Resource |
rdf:List | Lists | Resource |
rdf:Property | Properties | Resource |
rdf:Statement | Statements | Resource |
rdf:Alt | Containers of alternatives | Container |
rdf:Bag | Unordered containers | Container |
rdf:Seq | Ordered containers | Container |
rdfs:ContainerMembershipProperty | Container membership properties | Property |
rdf:XMLLiteral | XML literal values | Literal |
RDFS / RDF Properties
Element | Domain | Range | Description |
---|---|---|---|
rdfs:domain | Property | Class | The domain of the resource |
rdfs:range | Property | Class | The range of the resource |
rdfs:subPropertyOf | Property | Property | The property is a sub property of a property |
rdfs:subClassOf | Class | Class | The resource is a subclass of a class |
rdfs:comment | Resource | Literal | The human readable description of the resource |
rdfs:label | Resource | Literal | The human readable label (name) of the resource |
rdfs:isDefinedBy | Resource | Resource | The definition of the resource |
rdfs:seeAlso | Resource | Resource | The additional information about the resource |
rdfs:member | Resource | Resource | The member of the resource |
rdf:first | List | Resource | |
rdf:rest | List | List | |
rdf:subject | Statement | Resource | The subject of the resource in an RDF Statement |
rdf:predicate | Statement | Resource | The predicate of the resource in an RDF Statement |
rdf:object | Statement | Resource | The object of the resource in an RDF Statement |
rdf:value | Resource | Resource | The property used for values |
rdf:type | Resource | Class | The resource is an instance of a class |
RDF Attributes
Attribute | Description |
---|---|
rdf:about | Defines the resource being described |
rdf:Description | Container for the description of a resource |
rdf:resource | Defines a resource to identify a property |
rdf:datatype | Defines the data type of an element |
rdf:ID | Defines the ID of an element |
rdf:li | Defines a list |
rdf:_n | Defines a node |
rdf:nodeID | Defines the ID of an element node |
rdf:parseType | Defines how an element should be parsed |
rdf:RDF | The root of an RDF document |
xml:base | Defines the XML base |
xml:lang | Defines the language of the element content |