
Modello di dati standard che permette di rappresentare, descrivere, e pubblicare i dati sul Web in un formato accessibile e interpretabile dalle macchine tramite l'utilizzo di triple soggetto-predicato-oggetto.

Un'asserzione informativa riguardante una risorsa che si articola in:
Neuromante, scritto da William Gibson (una persona) e pubblicato nel 1984, è un libro di 271 pagine e di genere cyberpunk (un genere).
Individuiamo classi, entità, attributi e relazioni.
Le triple RDF sono rappresentabili in nodi e archi di un grafo:


Ricordiamoci che in RDF le risorse e le proprietà devono essere identificate univocamente tramite URI.
Inventiamoci un URI come base per il nostro modello (http://example.org/dhdmch) e identifichiamo classi e proprietà:

I dati (le istanze, ovvero le entità, come Neuromante e William Gibson), se vogliamo che siano LOD e se scegliamo RDF come strumento di modellazione, devono avere i propri URI.
Inventiamoci un URI per i nostri dati: http://example.org/data.
Non useremo questo URI per cyberpunk, che invece manterrà l’URI del modello.

Ciò che può essere l’oggetto di una tripla RDF e che abbiamo chiamato “valore” (testuale, numerico, temporale, ecc.).
In altre parole, i valori degli attributi.
Due tipi:
"271"), e al massimo possono avere un tag linguistico reso combinando la stringa con @ e il valore di una lingua espressa seguendo lo standard ISO 639-1 (es. "Stringa in italiano"@it);^ e l’URI che identifica quel datatype (es. "271"^^http://www.w3.org/2001/XMLSchema#integer).RDF non dà regole vere e proprie su come scrivere, ma esistono convenzioni.
Esempio:
CamelCase (es. DigitizationProcess, hasCreator);Cosa notate?
http://example.org/dhdmch (URI “del modello”)
http://example.org/dhdmch/Book (URI della classe Book del modello)
http://example.org/dhdmch (URI del modello)
http://example.org/dhdmch/Book (URI della classe Book del modello)
Inizia con un separatore (di solito un / o un #).
http://example.org/dhdmch/Book (URI della classe Book del modello)
Dice cosa fare, ma non dice:
Una tripla in Turtle è scritta sequenziando soggetto, predicato e oggetto uno dopo l’altro e separati da uno spazio.
Una tripla finisce sempre con un punto.
[SOGGETTO][PREDICATO][OGGETTO].
Esempio: Neuromante è un libro diventa
<http://example.org/data/neuromancer> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://example.org/dhdmch/Book>
Turtle permette di usare prefissi per accorciare gli URI degli elementi (sostituendo la base offerta dai rispettivi modelli) e rendere le triple più leggibili.
@prefix prefisso: <uri/del/modello/con/separatore/> .
@prefix dhdmch: <http://example.org/dhdmch/> .
@prefix ex: <http://example.org/data/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
...
I prefissi ci permettono di evitare di dover ripetere l’URI completo ogni volta.
@prefix dhdmch: <http://example.org/dhdmch/> .
@prefix ex: <http://example.org/data/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>
ex:neuromante rdf:type dhdmch:Book .
Per il resto, non è altro che una sequenza di triple.
Se ci dovessero essere URI completi, vanno racchiusi tra caporali.
@prefix dhdmch: <http://example.org/dhdmch/> .
@prefix ex: <http://example.org/data/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
ex:neuromante rdf:type dhdmch:Book .
ex:neuromante dhdmch:publicationDate "1984"^^xsd:gYear .
ex:neuromante dhdmch:genre dhdmch:cyberpunk .
ex:neuromante dhdmch:creator ex:william-gibson .
ex:neuromante dhdmch:pages "271"^^xsd:integer .
ex:william-gibson rdf:type dhdmch:Person .
Se abbiamo più triple con lo stesso soggetto, possiamo utilizzare una sintassi più elegante, con una prima tripla che esprime il soggetto e tutte le altre indentate sotto la prima che sottointendono il soggetto.
Ogni tripla che non è l’ultima finisce con il punto e virgola.
@prefix dhdmch: <http://example.org/dhdmch/> .
@prefix ex: <http://example.org/data/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
ex:neuromante rdf:type dhdmch:Book ;
dhdmch:publicationDate "1984"^^xsd:gYear ;
dhdmch:genre dhdmch:cyberpunk ;
dhdmch:creator ex:william-gibson ;
dhdmch:pages "271"^^xsd:integer .
ex:william-gibson rdf:type dhdmch:Person .
In un certo senso, abbiamo già riutilizzato dei modelli esistenti (es. per xsd:gYear o rdf:type).
Il nostro dhdmch è in sostanza la reinvenzione della ruota: esistono già molteplici modelli in grado di descrivere libri (e il dominio bibliografico in senso lato).
Anche la classe Persona e il valore controllato di cyberpunk, probabilmente, esistono già.
A patto di rispettare le costrizioni logiche dei modelli esistenti che intendiamo riutilizzare, li possiamo combinare per fare una descrizione interoperabile dei dati diminuendo drasticamente lo sforzo di creazione e favorendo l’interoperabilità dei dati.
Alcuni modelli:
dhdmch:Book diventa http://purl.org/spar/fabio/Book (abbreviato in fabio:Book);dhdmch:publicationDate diventa http://prismstandard.org/namespaces/basic/2.0/publicationDate (abbreviato in prism:publicationDate);dhdmch:genre diventa http://purl.org/dc/terms/type (abbreviato in dct:type);dhdmch:cyberpunk diventa http://id.loc.gov/authorities/subjects/sh2012000080 (abbreviato in lcsh:sh2012000080);dhdmch:creator diventa http://purl.org/dc/terms/creator (abbreviato in dct:creator);dhdmch:pages diventa http://purl.org/spar/fabio/hasPageCount (abbreviato in fabio:hasPageCount);dhdmch:Person diventa http://xmlns.com/foaf/0.1/Person (abbreviato in foaf:Person).@prefix ex: <http://example.org/data/> .
@prefix fabio: <http://purl.org/spar/fabio/> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix prism: <http://prismstandard.org/namespaces/basic/2.0/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix lcsh: <http://id.loc.gov/authorities/subjects/> .
ex:neuromancer rdf:type fabio:Book ;
prism:publicationDate "1984" ;
dct:genre lcsh:sh2012000080 ;
dct:creator ex:william-gibson ;
fabio:hasPageCount "271" .
ex:william-gibson a foaf:Person .

Alcune di questi metadati (es. dcho_id, dcho_title, dcho_publication_date) si riferiscono all’ oggetto digitale (ovvero la rappresentazione dell’oggetto fisico, creata sul sito).
Altri (es. cho_title, cho_author, cho_description) si riferiscono all’oggetto fisico, l’opera reale che viene descritta.
tutorial > data > rdf > README.md > Fonti > Selezione dei dati);tutorial > doc > img > draft-model.png).dct);schema);foaf);aat).[ID].ttl, dove [ID] è l’identificativo dell’opera;tutorial, nella cartella data > rdf, e fate un pull request.