Resource Description Framework (RDF): differenze tra le versioni
(Creata pagina con "Su internet enormi quantità di documenti di testo sono collegate tra loro attraverso l'utilizzo di ''hyperlinks:'' essendo puro testo, questo pone delle difficoltà per, uomo o macchina, estrarre delle informazioni salienti, dei '''fatti'''. RDF è un formato che genera quello che viene chiamato un database a grafo , che è una modalità diversa per la persistenza dei dati, differenziandosi dai classici database relazionali o i formati JSON o XML. Questo tipo di d...") |
Nessun oggetto della modifica |
||
Riga 15: | Riga 15: | ||
Le frecce nel diagramma precendent si chiamano '''proprietà,''' spesso vengono chiamate '''predicati.''' | Le frecce nel diagramma precendent si chiamano '''proprietà,''' spesso vengono chiamate '''predicati.''' | ||
=== RDF Data Model === | |||
Un Data Model, in '''[[Resource Description Framework (RDF)]],''' ovvero la codifica W3C per la codifica e lo scambio di metadati strutturati, è la '''rappresentazione di un'entità o di un dominio.''' | |||
Il modello di dati di RDF è formato da tre entità: | |||
* '''Risorse:''' qualsiasi cosa descritta viene chiamata risorsa, e identificata da un URI (Uniform Resource Identifier) | |||
* '''Proprietà:''' sono delle relazioni che legano tra loro risorse e risorse, o risorse e valori. Anch'esse sono identificate da un URI | |||
* '''Valori:''' sono dei dati primitivi, come un valore intero o una stringa che contiene l'URI di una risorsa | |||
Lo '''statement,''' o affermazione, è una '''tripla''' di tipo Soggetto – Predicato – Oggetto, dove: | |||
* il '''soggetto''' è una risorsa | |||
* il '''predicato''' è una proprietà | |||
* l''''oggetto''' è un valore, o anche un URI che punta ad un'altra risorsa | |||
Questo modello di dati è astratto e non specifica nessun meccanismo o formato per dichiarare le entità, questo è il compito dell'RDF Schema. | |||
==== Esempio di Data Model ==== | |||
Immaginiamo di voler rappresentare informazioni riguardanti un libro all'interno di una biblioteca digitale. In questo caso, il libro sarà la nostra "risorsa" principale. | |||
* '''Risorsa (Soggetto):''' Un libro specifico identificato dall'URI <code><nowiki>http://biblioteca.esempio/libri/ISBN1234567890</nowiki></code> | |||
* '''Proprietà (Predicato):''' Alcune proprietà comuni che potremmo voler descrivere per un libro includono: | |||
** <code><nowiki>http://purl.org/dc/elements/1.1/title</nowiki></code> per il titolo del libro | |||
** <code><nowiki>http://purl.org/dc/elements/1.1/creator</nowiki></code> per l'autore del libro | |||
** <code><nowiki>http://purl.org/dc/elements/1.1/publishedDate</nowiki></code> per la data di pubblicazione | |||
** <code><nowiki>http://purl.org/dc/elements/1.1/language</nowiki></code> per la lingua del testo | |||
* '''Valori (Oggetto):''' Per ciascuna delle proprietà sopra elencate, assegneremo un valore corrispondente. Ad esempio: | |||
** Per il titolo: "Le avventure di Pinocchio" (una stringa) | |||
** Per l'autore: "Carlo Collodi" (una stringa) | |||
** Per la data di pubblicazione: "1883" (un valore intero o una stringa, a seconda della rappresentazione scelta) | |||
** Per la lingua: "Italiano" (una stringa) | |||
Quindi, per rappresentare queste informazioni in RDF, creeremmo le seguenti '''triple''': | |||
# (<code><nowiki>http://biblioteca.esempio/libri/ISBN1234567890</nowiki></code>, <code><nowiki>http://purl.org/dc/elements/1.1/title</nowiki></code>, "Le avventure di Pinocchio") | |||
# (<code><nowiki>http://biblioteca.esempio/libri/ISBN1234567890</nowiki></code>, <code><nowiki>http://purl.org/dc/elements/1.1/creator</nowiki></code>, "Carlo Collodi") | |||
# (<code><nowiki>http://biblioteca.esempio/libri/ISBN1234567890</nowiki></code>, <code><nowiki>http://purl.org/dc/elements/1.1/publishedDate</nowiki></code>, "1883") | |||
# (<code><nowiki>http://biblioteca.esempio/libri/ISBN1234567890</nowiki></code>, <code><nowiki>http://purl.org/dc/elements/1.1/language</nowiki></code>, "Italiano") | |||
Il modello RDF è rappresentabile da un '''grafo orientato''' i cui nodi sono '''risorse o valori''', e i cui archi sono le '''proprietà'''. | |||
Qui sotto si trova un esempio di RDF, nel formato XML: | |||
<rdf:RDF | |||
xmlns:rdf="<nowiki>http://www.w3.org/1999/02/22-rdf-syntax-ns#</nowiki>" | |||
xmlns:feature="<nowiki>https://www.linkeddatatools.com/clothing-features#</nowiki>"> | |||
<rdf:Description rdf:about="<nowiki>https://www.linkeddatatools.com/clothes#t-shirt</nowiki>"> | |||
<feature:size>12</feature:size> | |||
<feature:color rdf:resource="<nowiki>https://www.linkeddatatools.com/colors#white</nowiki>"/> | |||
</rdf:Description> | |||
</rdf:RDF> | |||
La parte del tag <rdf:Description></rdf:Description> e di ciò che vi è incluso è la '''tripla RDF''', visualizzata nell'immagine in basso: | |||
[[File:Rdf-grapher.png|senza_cornice|600x600px]] | |||
=== Ontologie === | |||
Le ontologie permettono di definire '''relazioni tra entità''' all'interno di un '''vocabolario predefinito'''. Questo ha numerosi vantaggi tra i quali quello di permettere un interscambio dei dati nel momento in cui due fonti si rifanno a una stessa ontologia di base. | |||
=== RDF Schema e OWL === | |||
I dati RDF possono essere scritti utilizzando due sintassi: RDFS e OWL. | |||
Un esempio di OWL è il seguente: | |||
<rdf:RDF | |||
xmlns:rdf="<nowiki>http://www.w3.org/1999/02/22-rdf-syntax-ns#</nowiki>" | |||
xmlns:rdfs="<nowiki>http://www.w3.org/2000/01/rdf-schema#</nowiki>" | |||
xmlns:owl="<nowiki>http://www.w3.org/2002/07/owl#</nowiki>" | |||
xmlns:dc="<nowiki>http://purl.org/dc/elements/1.1/</nowiki>"> | |||
<!-- OWL Header Example --> | |||
<owl:Ontology rdf:about="<nowiki>https://www.linkeddatatools.com/plants</nowiki>"> | |||
<dc:title>The LinkedDataTools.com Example Plant Ontology</dc:title> | |||
<dc:description>An example ontology written for the LinkedDataTools.com RDFS & OWL introduction tutorial</dc:description> | |||
</owl:Ontology> | |||
<!-- OWL Class Definition Example --> | |||
<owl:Class rdf:about="<nowiki>https://www.linkeddatatools.com/plants#planttype</nowiki>"> | |||
<rdfs:label>The plant type</rdfs:label> | |||
<rdfs:comment>The class of plant types.</rdfs:comment> | |||
</owl:Class> | |||
</rdf:RDF> | |||
La differenza principale con RDF è che OWL sta effettivamente specificando i '''metadati''', cioè l'<nowiki/>'''ontologia''', e non le reali istanze delle classi. Da notare che stiamo definendo l'ontologia in RDF, cioè l''''ontologia stessa è un documento RDF'''. | |||
E' interessante notare che sulla linea 5 si stabilisce che il namespace '''dc''' è importato dai Dublin Core Metadata Initiative, il namespace owl da http://www.w3.org/2002/07/owl. | |||
=== RDF === | |||
=== Link === | === Link === | ||
https://www.linkeddatatools.com/introducing-rdf/ | https://www.linkeddatatools.com/introducing-rdf/ |
Versione delle 18:08, 11 mar 2024
Su internet enormi quantità di documenti di testo sono collegate tra loro attraverso l'utilizzo di hyperlinks: essendo puro testo, questo pone delle difficoltà per, uomo o macchina, estrarre delle informazioni salienti, dei fatti.
RDF è un formato che genera quello che viene chiamato un database a grafo , che è una modalità diversa per la persistenza dei dati, differenziandosi dai classici database relazionali o i formati JSON o XML. Questo tipo di databse è quello che è alla base del web semantico.
Un esempio di grafo è quello che può essere descritto dalle seguenti tre affermazioni:
- Bengie è un cane
- Bonnie è un gatto
- Bengie e Bonnie sono amici
Le frecce nel diagramma precendent si chiamano proprietà, spesso vengono chiamate predicati.
RDF Data Model
Un Data Model, in Resource Description Framework (RDF), ovvero la codifica W3C per la codifica e lo scambio di metadati strutturati, è la rappresentazione di un'entità o di un dominio.
Il modello di dati di RDF è formato da tre entità:
- Risorse: qualsiasi cosa descritta viene chiamata risorsa, e identificata da un URI (Uniform Resource Identifier)
- Proprietà: sono delle relazioni che legano tra loro risorse e risorse, o risorse e valori. Anch'esse sono identificate da un URI
- Valori: sono dei dati primitivi, come un valore intero o una stringa che contiene l'URI di una risorsa
Lo statement, o affermazione, è una tripla di tipo Soggetto – Predicato – Oggetto, dove:
- il soggetto è una risorsa
- il predicato è una proprietà
- l'oggetto è un valore, o anche un URI che punta ad un'altra risorsa
Questo modello di dati è astratto e non specifica nessun meccanismo o formato per dichiarare le entità, questo è il compito dell'RDF Schema.
Esempio di Data Model
Immaginiamo di voler rappresentare informazioni riguardanti un libro all'interno di una biblioteca digitale. In questo caso, il libro sarà la nostra "risorsa" principale.
- Risorsa (Soggetto): Un libro specifico identificato dall'URI
http://biblioteca.esempio/libri/ISBN1234567890
- Proprietà (Predicato): Alcune proprietà comuni che potremmo voler descrivere per un libro includono:
http://purl.org/dc/elements/1.1/title
per il titolo del librohttp://purl.org/dc/elements/1.1/creator
per l'autore del librohttp://purl.org/dc/elements/1.1/publishedDate
per la data di pubblicazionehttp://purl.org/dc/elements/1.1/language
per la lingua del testo
- Valori (Oggetto): Per ciascuna delle proprietà sopra elencate, assegneremo un valore corrispondente. Ad esempio:
- Per il titolo: "Le avventure di Pinocchio" (una stringa)
- Per l'autore: "Carlo Collodi" (una stringa)
- Per la data di pubblicazione: "1883" (un valore intero o una stringa, a seconda della rappresentazione scelta)
- Per la lingua: "Italiano" (una stringa)
Quindi, per rappresentare queste informazioni in RDF, creeremmo le seguenti triple:
- (
http://biblioteca.esempio/libri/ISBN1234567890
,http://purl.org/dc/elements/1.1/title
, "Le avventure di Pinocchio") - (
http://biblioteca.esempio/libri/ISBN1234567890
,http://purl.org/dc/elements/1.1/creator
, "Carlo Collodi") - (
http://biblioteca.esempio/libri/ISBN1234567890
,http://purl.org/dc/elements/1.1/publishedDate
, "1883") - (
http://biblioteca.esempio/libri/ISBN1234567890
,http://purl.org/dc/elements/1.1/language
, "Italiano")
Il modello RDF è rappresentabile da un grafo orientato i cui nodi sono risorse o valori, e i cui archi sono le proprietà.
Qui sotto si trova un esempio di RDF, nel formato XML:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:feature="https://www.linkeddatatools.com/clothing-features#"> <rdf:Description rdf:about="https://www.linkeddatatools.com/clothes#t-shirt"> <feature:size>12</feature:size> <feature:color rdf:resource="https://www.linkeddatatools.com/colors#white"/> </rdf:Description> </rdf:RDF>
La parte del tag <rdf:Description></rdf:Description> e di ciò che vi è incluso è la tripla RDF, visualizzata nell'immagine in basso:
Ontologie
Le ontologie permettono di definire relazioni tra entità all'interno di un vocabolario predefinito. Questo ha numerosi vantaggi tra i quali quello di permettere un interscambio dei dati nel momento in cui due fonti si rifanno a una stessa ontologia di base.
RDF Schema e OWL
I dati RDF possono essere scritti utilizzando due sintassi: RDFS e OWL.
Un esempio di OWL è il seguente:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <owl:Ontology rdf:about="https://www.linkeddatatools.com/plants"> <dc:title>The LinkedDataTools.com Example Plant Ontology</dc:title> <dc:description>An example ontology written for the LinkedDataTools.com RDFS & OWL introduction tutorial</dc:description> </owl:Ontology> <owl:Class rdf:about="https://www.linkeddatatools.com/plants#planttype"> <rdfs:label>The plant type</rdfs:label> <rdfs:comment>The class of plant types.</rdfs:comment> </owl:Class> </rdf:RDF>
La differenza principale con RDF è che OWL sta effettivamente specificando i metadati, cioè l'ontologia, e non le reali istanze delle classi. Da notare che stiamo definendo l'ontologia in RDF, cioè l'ontologia stessa è un documento RDF.
E' interessante notare che sulla linea 5 si stabilisce che il namespace dc è importato dai Dublin Core Metadata Initiative, il namespace owl da http://www.w3.org/2002/07/owl.