Elaborato Erra Ernesto N46000493

Transcript

Elaborato Erra Ernesto N46000493
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Elaborato finale in Basi di Dati
SPARQL: Simple Protocol and RDF Query Language
Anno Accademico 2011/12
Candidato:
Ernesto Erra
matr. N46000493
Indice
Introduzione
4
Capitolo 1. Il web semantico
5
1.1
1.2
I problemi della semantica nel web
Architettura del web semantico
7
9
Capitolo 2. Ontologie: concetti fondamentali
12
Capitolo 3. SPARQL: caratteristiche del linguaggio
15
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
Triple patterns matching
Sintassi di base
Graph patterns e filtraggio
Ricerca per opzioni e alternative
Negazione
Associazione
Aggregazioni
Sub-query e manipolazione del risultato
Query forms
16
18
19
21
22
23
24
26
27
Conclusioni
Bibliografia e Sitografia
29
30
III
SPARQL: Simple Protocol and RDF Query Language
Introduzione
Quest’elaborato inizia affrontando il problema del web semantico (Capitolo 1).
L'idea del Web Semantico nasce dalla necessità di estendere l'attuale web in modo da
favorire lo scambio di informazioni oltre che tra esseri umani anche tra programmi per
computer, tramite una rappresentazione che anche questi ultimi siano in grado di utilizzare
e, in un certo modo, di comprendere. Grazie a questa nuova concezione, la connessione fra
i testi e le parole va al di là del legame sintattico, ma si basa soprattutto sul significato dei
documenti pubblicati e sulla possibilità di metterli in relazione fra loro mediante
parole-chiave che "sostengono" il testo scritto.
Un passo fondamentale per arrivare al web semantico è la realizzazione di un modello
ontologico (Capitolo 2) in grado di descrivere le relazioni concettuali tra i dati e la
conoscenza dietro le informazioni.
L’ultima parte dell’elaborato è anche il suo cuore: SPARQL (Capitolo 3).
SPARQL è un elemento chiave del web semantico e consente di estrarre informazioni
dalle basi di conoscenza distribuite sul web. In quest’elaborato è affrontato in maniera
dettagliato il linguaggio.
4
SPARQL: Simple Protocol and RDF Query Language
Capitolo 1
Il web semantico
Il Web è ancora molto giovane, e la sua storia è in costante evoluzione. Nel 1989 l’inglese
Timothy John Berners-Lee ideò, assieme al belga Robert Cailliau, un sistema per
pubblicare e correlare tra di loro contenuti (per la maggior parte testi documentali), dove
qualunque individuo potesse aggiungere ulteriori contenuti al sistema, come anche
eventuali correlazioni tra questi nuovi contenuti a quanto già pubblicato. È la prima idea di
sistema ipertestuale. Questa è la nascita del Web, una vera e propria rete di informazioni,
che negli anni successivi si è diffusa sempre di più in tutto il mondo grazie alla
connessione esistente tra le macchine che Internet ha contribuito a creare.
Il Web ideato da Tim Berners-Lee era dunque una raccolta di contenuti, una specie di
grande biblioteca, caratterizzata però da:
 relazioni tra le informazioni (i collegamenti ipertestuali tra le pagine)
 una distribuzione universale delle informazioni (ovvero una diffusione mondiale, di
cui ha potuto godere grazie a Internet in breve tempo)
 una universale partecipazione ai contenuti del sistema, e dunque a una globale
crescita dell’insieme e alla condivisione gratuita delle informazioni
Grazie all’idea di due uomini si è passati da Internet, vista come una rete di macchine, al
Web, vista come una rete di informazioni espresse in pagine; eppure Tim Berners-Lee
sognava di realizzare una rete di informazioni espresse in concetti.
5
SPARQL: Simple Protocol and RDF Query Language
Così questi due sognatori, dopo i primi dieci anni di vita del Web, cominciarono a lavorare
al Web Semantico più o meno agli inizi del 2001. L’idea era di costruire una rete di
informazioni che fosse più espressiva del semplice collegamento ipertestuale: ogni dato e
ogni parola sarebbe stata associata alle informazioni su ciò che quella parola esprimeva.
Pensiamo alla parola Pesca. Può assumere una molteplicità di significati. Con pesca
possiamo intendere il frutto oppure il verbo pescare. In pratica, abbiamo una parola, ma ci
manca il significato. Occorreva assegnare ad ogni singola informazione uno schema che
ne spiegasse il ruolo e il senso all’interno di una frase.
Ma fare in modo che una macchina abbia gli strumenti per comprendere e capire (o meglio
possedere) il senso di una parola è un lungo e complesso lavoro: ci sono tutta una serie di
informazioni che un lettore umano comprende in maniera naturale, ma che per ovvi motivi
una macchina ignora, che bisogna correlare al testo. Queste sono le meta-informazioni.
Sono necessari degli strumenti che in modo semi-automatico e indipendente dalla lingua
sono in grado di comprendere il senso della parola. Per tutto questo occorre del tempo.
Nel frattempo, il Web stava iniziando a modificarsi e ad assumere particolari
caratteristiche per conto suo e qualcuno cominciò a parlare di Web 2.0: un Web dove
l’accento è posto sulla condivisione delle informazioni e sulla correlazione tra le persone.
Wikipedia è un’enciclopedia dove chiunque può scrivere o correggere una voce; le
piattaforme di blogging permettono a chiunque di scrivere ciò di cui sanno o desiderano
parlare; Facebook è uno strumento con cui chiunque può mantenere intatti i rapporti
interpersonali che ha istituito nel mondo reale. La parola chiave del Web 2.0 è ‘Chiunque’.
La definizione del Web 2.0 non è mai stata accettata da Tim Berners-Lee perché a suo
avviso il Web è nato esattamente con questi scopi.
Tuttavia anche Tim Berners-Lee dovette adeguarsi alla fortuna di quell’etichetta: decise
così che il suo Web Semantico sarebbe stato il Web 3.0.
6
SPARQL: Simple Protocol and RDF Query Language
1.1 I problemi della semantica nel web
L’uso tipico del web è la ricerca e l’uso di informazioni. Alle informazioni sul web si
accede o tramite parole chiave digitate dall’utente (l’efficacia dipende dagli algoritmi usati
dai motori di ricerca) o dalle voci di una barra di navigazione (l’efficacia dipende da chi
ha organizzato e programmato i contenuti del sito).
Un motore di ricerca è un sistema automatico che analizza un insieme di dati, spesso da
esso stesso raccolti, e restituisce un indice dei contenuti disponibili classificandoli in base
a formule statistico-matematiche che ne indichino il grado di rilevanza data una
determinata chiave di ricerca. I motori di ricerca basati su parole chiave sono gli strumenti
principali dei sistemi web. Molto dipende dal potere evocativo della parola chiave. Nel
caso di navigazione attraverso parole chiave, può sorgere il problema dell’ambiguità: ad
esempio la parola albero può avere più significati a seconda che la materia di interesse sia
l’informatica, la botanica, o la nautica. Il problema dei motori di ricerca é costituito
dall’enorme quantità di informazioni, a volte completamente inutile, che i motori
restituiscono e ciò nonostante i continui miglioramenti delle tecniche di indicizzazione e
ricerca. Il problema più grande é che il significato del contenuto del web non é accessibile
alla macchina. É molto difficile per una macchina distinguere frasi semantiche. Sono
possibili due approcci. Il primo è l’approccio di elaborazione testi, basato su tecniche di
intelligenza artificiale e linguistica computazionale. Il secondo approccio è rendere la
rappresentazione del web in modo più comprensibile alla macchina: il web semantico.
La semantica (dal greco sémeìon, segno) è quella parte della linguistica che studia il
significato delle parole, degli insiemi delle parole, delle frasi e dei testi. In generale, la
semantica è ciò che mette in relazione le espressioni linguistiche con quello che il
contenuto di tali espressioni "vuole dire". Implica un processo di interpretazione.
7
SPARQL: Simple Protocol and RDF Query Language
Con il termine web semantico si intende la trasformazione del World Wide Web in un
ambiente dove i documenti pubblicati (pagine HTML, file, immagini, e così via) siano
associati ad informazioni e dati (metadati) che ne specifichino il contesto semantico in un
formato adatto all'interrogazione e l'interpretazione e, più in generale, all'elaborazione
automatica.
Con l'interpretazione del contenuto dei documenti che il Web semantico propone, saranno
possibili un’interpretazione più significativa del contenuto dei documenti stessi e ricerche
molto più evolute delle attuali, basate sulla presenza nel documento di parole chiave, e
altre operazioni specialistiche come la costruzione di reti di relazioni e connessioni tra
documenti secondo logiche più elaborate del semplice collegamento ipertestuale.
Il web semantico è circa due cose. Si tratta di formati comuni per l'integrazione e la
combinazione dei dati tratti da fonti diverse, a differenza del web originale che è
concentrato soprattutto sull'interscambio di documenti. Si tratta anche di linguaggio per
descrivere come i dati si riferiscono agli oggetti del mondo reale. Questo permette a una
persona, o una macchina, di iniziare in un unico database, per poi passare attraverso una
serie infinita di basi di dati che sono collegati non attraverso fili, ma attraverso un
significato comune.
Il primo passo per mettere le macchine in grado di operare in maniera più efficiente sono
dei documenti ben strutturati corredati da metadati. I metadati sono dati che descrivono
altri dati, ed esprimono parte di quello che c’è da sapere su un certo insieme di dati, e ciò
che da tale conoscenza è possibile inferire mediante regole di ragionamento. Questo
significa che il web semantico intende recuperare tutta la tradizione della ricerca in
intelligenza artificiale che va sotto il nome di rappresentazione della conoscenza,
focalizzandola tuttavia su un nuovo obiettivo molto ben delimitato e preciso. Lo strumento
tecnico elaborato per esprimere i metadati nel web semantico sono dei linguaggi di
annotazione o di marcatori costruiti a partire da XML, come RDF.
8
SPARQL: Simple Protocol and RDF Query Language
1.2 Architettura del web semantico
Le macchine devono essere in grado di ragionare sui dati. Per rendere i dati processabili,
abbiamo bisogno di:
 identificatori non ambigui che permettano anche una associazione tra i dati e gli
oggetti del mondo reale;
 un modello comune per i dati in modo da accedere, connettere e descrivere tali
oggetti;
 un linguaggio per accedere a questo modello dei dati;
 un vocabolario comune;
 una logica per il ragionamento.
Il web semantico ha l’obiettivo di rispondere a queste esigenze, attraverso una estensione
dell’attuale web, fornendo una infrastruttura per l’integrazione dei dati sul web. Gli
strumenti adottati sono URI (gli identificatori non ambigui), RDF (modello comune di
dati), SPARQL (linguaggio per accedere al modello), RDFS e OWL (vocabolario comune)
e OWL e RULES (la logica).
Lo sviluppo del web semantico procede a livelli, con l’obiettivo di ottenere consenso su
piccoli passi. I livelli del web semantico sono mostrati in figura 1.2.1.
Figura 1.2.1 Architettura del web semantico
9
SPARQL: Simple Protocol and RDF Query Language
Le URI (Uniform Resource Identifier) sono le fondamenta del web semantico. Difatti,
viene richiesto di identificare ogni cosa in modo univoco per mezzo di una stringa di
caratteri nello spazio globale delle URI.
XML (eXtensible Markup Language) è un linguaggio di marcatori che ci permette di
strutturare i documenti Web con un vocabolario definito dall’utente. Il linguaggio XML
permette di definire dei tag, ossia delle etichette che commentano porzioni di pagina.
L’uso di questi tag non permette di esplicitarne una semantica.
L’RDF (Resource Data Freamwork) è il modello base per i dati che permette di scrivere
frasi su oggetti web, cioè sulle risorse, e ha una sintassi basata su XML. L’RDF è lo
strumento base proposto da W3C per la codifica, lo scambio e il riutilizzo di metadati
strutturati e consente l'interoperabilità tra applicazioni che si scambiano informazioni sul
web.
Interoperabilità
significa
non
solo
l’abilità
di
programmi
progettati
indipendentemente e implementati su piattaforme diverse di scambiarsi dati, ma
soprattutto di cooperare tra di loro sulla base di una comprensione del significato dei dati
oggetto di scambio. L’RFD è costituito da due componenti: RDF modello e sintassi, che
espone la struttura del modello RDF e descrive una possibile sintassi; RDF Schema, che
espone la sintassi per definire schemi e vocabolari per i metadati. L’RDF schema mette a
disposizione delle primitive per organizzare gli oggetti web in gerarchie, utilizzando la
loro descrizione RDF.
L'OWL (Ontology Web Language) è un linguaggio di marcatori per rappresentare
esplicitamente il significato e la semantica di termini con vocabolari e relazioni tra gli
stessi. Esistono varie versioni del linguaggio, che differiscono molto tra di loro. Lo scopo
di OWL è descrivere delle basi di conoscenze, effettuare delle deduzioni su di esse e
integrarle con i contenuti delle pagine web. L’OWL è un linguaggio che permette di
esprimere relazioni complesse fra risorse.
10
SPARQL: Simple Protocol and RDF Query Language
Il modello dei dati di RDF si basa su tre principi chiave:
 qualunque cosa può essere identificata da un URI;
 minima potenza, cioè utilizzare il linguaggio meno espressivo per definire
qualunque cosa;
 qualunque cosa può dire qualunque cosa su qualunque cosa.
Qualunque cosa descritta da RDF è detta risorsa. Principalmente una risorsa è reperibile
sul web, ma RDF può descrivere anche risorse che non si trovano direttamente sul web.
Ogni risorsa è identificata da un URI. Il modello di dati RDF è formato da risorse,
proprietà e valori. Le proprietà sono delle relazioni che legano tra loro risorse e valori, e
sono anch'esse identificate da URI. Un valore, invece, è un tipo di dato primitivo, che può
essere una stringa contenente l'URI di una risorsa.
L'unità base per rappresentare un'informazione in RDF è lo statement. Uno statement è
una tripla del tipo (soggetto-predicato-oggetto), dove il soggetto è una risorsa, il predicato
è una proprietà e l'oggetto è un valore, e quindi anche un URI che punta ad un'altra risorsa.
Uno statement può essere rappresentato mediante un grafo come in figura 1.2.2.
Figura 2.2.2 Statemet RDF
In questo modo, RDF è un grafico dei dati diretto provvisto di etichette per la
rappresentazione delle informazioni nel web. Il modello dei dati RDF permette di definire
un modello semplice per descrivere le relazioni tra le risorse, in termini di proprietà
identificate da un nome e relativi valori. Tuttavia, il modello dei dati RDF non fornisce
nessun meccanismo per dichiarare queste proprietà, né per definire le relazioni tra queste
proprietà ed altre risorse. Tale compito è delegato a RDF Schema. In RDF Schema ogni
predicato è in relazione con altri predicati e permette di dichiarare l'esistenza di proprietà
di un concetto, che permettano di esprimere con metodo sistematico affermazioni simili su
risorse simili. RDF Schema permette di definire nuovi tipi di classe. Inoltre specificando il
concetto di classe e sottoclasse, consente di definire gerarchie di classi. In RDF si possono
rappresentare le risorse come istanze di classi e definire sottoclassi e tipi.
11
SPARQL: Simple Protocol and RDF Query Language
Capitolo 2
Ontologie: concetti fondamentali
L’ontologia è lo studio della natura dell’essere. Il termine deriva dal greco e significa
letteralmente discorso sull’essere. L’ontologia è la branca della metafisica avente lo scopo
di identificare le cose esistenti e come descriverle.
È uno di quei termini di cui l’informatica si è appropriata, modificandone il significato
originario: si parla infatti di una ontologia, non di Ontologia.
Secondo la definizione di Tom Gruber, una ontologia costituisce una descrizione esplicita
e formale di una concettualizzazione condivisibile.
Stando a questa definizione, in informatica, il termine ontologia si riferisce specificamente
ad un tentativo di formulare una concettualizzazione esaustiva e rigorosa nell'ambito di un
dato dominio. Si tratta generalmente di una struttura dati gerarchica che contiene tutte le
entità rilevanti, le relazioni esistenti fra di esse, le regole, gli assiomi ed i vincoli specifici
del dominio. Tale struttura viene normalmente formalizzata per mezzo di linguaggi
semantici che devono rispondere alle leggi della logica formale, ed è per questo che si usa
il termine di ontologia formale. Una ontologia descrive dunque formalmente il dominio di
un discorso. Tipiche ontologie consistono in una lista finita di termini e nelle relazioni tra
questi termini. Un termine denota un concetto, o meglio una classe di oggetti, nel dominio
di interesse. Nel contesto del web, una ontologia permette allora una comprensione
condivisa del dominio stesso.
12
SPARQL: Simple Protocol and RDF Query Language
Il termine ontologia formale è entrato in uso nel campo dell'intelligenza artificiale e della
rappresentazione della conoscenza, per descrivere il modo in cui diversi schemi vengono
combinati in una struttura dati contenente tutte le entità rilevanti e le loro relazioni in un
dominio. I programmi informatici possono usare l'ontologia per una notevole varietà di
scopi, tra cui il ragionamento induttivo, la classificazione, e svariate tecniche per la
risoluzione di problemi.
Tipicamente, le ontologie informatiche sono strettamente legate a vocabolari controllati,
cioè a repertori di concetti classificati in un'ontologia fondamentale, in base al quale tutto
il resto deve essere descritto (entro il modello utilizzato). Un vocabolario è una lista di
termini, esplicitamente enumerati, in cui tutti i termini devono avere un’unica definizione
e non essere ambigui.
Abbiamo le seguenti definizioni:
 Ontologia: insieme di tecnologie per la modellazione di conoscenza.
 Modello ontologico: modello che definisce in modo esplicito le relazioni e la
semantica delle entità di un dominio.
 Linguaggio ontologico: linguaggio per la descrizione di un modello ontologico
Un modello Ontologico si compone di classi, attributi, relazioni ed individui; un modello
ontologico, come si nota dalla figura 2.1, è simile ad un modello ad oggetti.
Figura 2.1 Modello ontologico
13
SPARQL: Simple Protocol and RDF Query Language
Le classi sono insiemi, collezioni o tipi di oggetti. Gli attributi sono proprietà,
caratteristiche o parametri che gli oggetti possono avere e condividere. Le relazioni sono
modi in cui gli oggetti possono essere messi in relazione gli uni con gli altri. Gli individui
sono istanze del modello, sono gli elementi di base. Le relazioni tra classi includono:
gerarchie tra classi; proprietà; restrizioni di valori; statement di disgiunzione; specifiche di
relazioni logiche tra oggetti. In particolare si individuano due principali tipi di relazione:
sussunzione e meronimia. La relazione di sussunzione è usata per creare una gerarchia, o
un grafo aciclico, di classi; è una relazione del tipo ‘è una superclassi di’. La relazione di
meronimia serve a descrivere come i concetti si combinano insieme per formarne di nuovi;
è una relazione del tipo ‘è parte di’.
Esistono molti tipi di modelli ontologici, e si distinguono in:
 Fundation Ontology: modello ontologico relativo a quei concetti che si possono
applicare a domini diversi;
 Domain Ontology: modello che descrive i concetti di un dominio specifico;
 Specialized Ontology: estensione di un Domain Ontology con scopi molto specifici.
Le operazioni tipiche che si effettuano su un modello ontologico sono:
 costruire un modello ontologico estendendone uno esistente;
 eseguire il mapping tra i concetti di un modello ontologico con quelli di un altro;
 unire in un unico modello le informazioni provenienti da sorgenti diverse.
Le informazioni sulle relazioni sono codificate nel tesauro da utilizzare per abilitare la
ricerca semantica nel motore di ricerca documentale. Il termine tesauro indica una
collezione di termini priva di definizioni, che hanno in comune fra loro degli aspetti sul
significato. Una tassonomia è una collezione di termini di un vocabolario controllato
organizzati in una struttura gerarchica attraverso relazioni di specializzazione. Un tesauro
è una rete di termini di un vocabolario controllato. Questo significa che un tesauro adopera
relazioni associative in aggiunta a quelle di specializzazione. Le informazioni rilevanti
estratte dal dominio sono o concetti o relazioni semantiche tra essi. Possono essere
codificate nel tesauro in base alle specifiche definite o da OWL e RDF.
14
SPARQL: Simple Protocol and RDF Query Language
Capitolo 3
SPARQL: caratteristiche del linguaggio
SPARQL (acronimo di: Simple Protocol and RDF Query Language) è un linguaggio di
interrogazione per Resource Description Framework (RDF) reso standard dal Data Access
Working Group, gruppo di lavoro del consorzio W3C, che lo ha reso raccomandazione
ufficiale il 15 gennaio 2008.
SPARQL è un elemento chiave del web semantico e consente di estrarre informazioni
dalle basi di conoscenza distribuite sul web. RDF descrive i concetti e le relazioni su di
essi attraverso l'introduzione di triple (soggetto-predicato-oggetto); se tali triple hanno
degli elementi in comune emerge un grafo di conoscenza. SPARQL non fa altro che
ricercare dei sotto-grafi corrispondenti alla richiesta dell'utente che effettua la query.
L'elemento chiave di RDF sono le URI, che identificano le risorse in maniera univoca e
consentendo a chi usa SPARQL di scrivere query ben definite e non ambigue.
L'elaborazione in SPARQL avviene introducendo due informazioni: il grafo dei dati
(presente sul Web) e il grafo di query (descritto attraverso triple dall'utente). L'output può
essere di più tipi, ma principalmente si utilizzano interrogazioni di tipo esistenziale (esiste
o meno il sotto-grafo ricercato?) o tabellare (elencami i risultati possibili).
SPARQL può essere usato per esprimere query attraverso varie fonte di dati, se i dati sono
memorizzati in modo nativo come RDF o visualizzati come RDF attraverso middleware.
15
SPARQL: Simple Protocol and RDF Query Language
SPARQL contiene funzionalità per l'esecuzione di query su pattern graph obbligatori e
facoltativi con le loro congiunzioni e disgiunzioni. SPARQL supporta anche l’esecuzione
di query attraverso un grafico sorgente RDF. I risultati delle query SPARQL possono
essere gruppi di risultati o grafici RDF.
SPARQL adotta la sintassi Turtle, un'estensione di N-Triple, alternativa estremamente
sintetica e intuitiva al tradizionale RDF/XML. Si considerino le seguenti triple RDF:
@prefix cd: <http://example.org/cd/>
@prefix: <http://example.org/esempio/>
:Permutation cd:autore "Amon Tobin".
:Bricolage cd:autore "Amon Tobin".
:Amber cd:autore "Autechre".
:Amber cd:anno 1994.
Le asserzioni sono espresse in concise sequenze soggetto-predicato-oggetto e delimitate da
un punto fermo. @prefix introduce prefissi e namespace; i due punti senza prefisso
(seconda riga) definiscono il namespace di default. Gli URI sono inclusi tra parentesi
angolari. I letterali di tipo stringa sono contrassegnati da virgolette.
Da un punto di vista sintattico, SPARQL può ricordare SQL (Structured Query Language),
il linguaggio per interrogare basi di dati, anche sei due modelli di rappresentazione
sottostanti presentano notevoli differenze. Un database relazionale è caratterizzato da
record organizzati in tabelle e il processo di identificazione degli oggetti informativi
memorizzati tramite record avviene tramite le primary e foreign key. In RDF, ogni risorsa
è identificata da un URI. Più grafi RDF possono essere connessi in un unico grafo e
l’insieme delle informazioni circa una risorsa può essere recuperato tramite un
meccanismo di unificazione sulle URI.
3.1 Triple patterns matching
Le query SPARQL si basano sul meccanismo del "pattern matching" e in particolare su un
costrutto, il "triple pattern". I triple patterns sono come triple RDF, salvo che ciascun
16
SPARQL: Simple Protocol and RDF Query Language
soggetto del predicato, e oggetto può essere una variabile. In questo modo, i triple pattern
forniscono un modello flessibile per la ricerca di corrispondenze. Ad esempio nella tripla
?titolo cd:autore ?autore.
in luogo del soggetto e dell'oggetto sono previste due variabili, contrassegnate con un
punto
interrogativo.
Le
variabili
fungono
in
un
certo
senso
da
incognite
dell'interrogazione; cd:autore funge invece da costante: le triple RDF che trovano
riscontro nel modello assoceranno i propri termini alle variabili corrispondenti.
La maggior parte delle forme di query SPARQL contengono una serie di triple patterns
chiamato basic graph pattern. Un basic graph pattern corrisponde a un sottografo dei dati
RDF quando i termini RDF di tale sottografo possono essere sostituiti con delle variabili.
Per chiarire, ecco una semplice query di selezione SPARQL:
PREFIX cd: <http://example.org/cd/>
SELECT ?titolo ?autore ?anno
FROM <http://cd.com/listacd.ttl>
WHERE {?titolo cd:autore ?autore.
?titolo cd:anno ?anno .
}
L'analogia con SQL è lampante:
PREFIX dichiara prefissi e namespace.
SELECT definisce le variabili di ricerca da prendere in considerazione nel risultato
(nell'esempio: titolo, autore e anno).
FROM specifica il set di dati su cui dovrà operare la query (si suppone che le triple siano
immagazzinate presso l'indirizzo fittizio "http://cd.com/listacd.ttl").
È inoltre possibile ricorrere a clausole FROM NAMED e alla parola chiave GRAPH per
specificare più insiemi di dati.
La clausola WHERE, infine, definisce il criterio di selezione specificando tra parentesi
graffe uno o più "triple patterns" separati da punto fermo.
Applicando la query all’insieme di triple del precedente esempio, si ottiene il risultato:
titolo
autore anno
"Amber" "Autechre" 1994
17
SPARQL: Simple Protocol and RDF Query Language
Il collegamento (binding) tra variabili e termini reperiti corrispondenti (in questo caso, un
termine per ciascuna variabile) è reso in forma di tabella come un rapporto campo-valore:
le righe rappresentano i singoli risultati, le intestazioni di cella rappresentano le variabili
definite nella clausola SELECT, le celle i termini associati alle variabili.
Le IRI sono una generalizzazione di URI e sono compatibili con URI e URL. L'insieme
dei termini RDF include riferimenti URI, mentre i termini SPARQL includono IRI.
La parola chiave PREFIX associa un'etichetta prefisso con un IRI. Un nome prefisso è
composto da un'etichetta prefisso e da una parte locale, separati da due punti ":". Un nome
prefisso è mappato a un IRI concatenando l’IRI associato al prefisso e la parte locale.
L'etichetta prefisso o la parte locale può essere vuota. Si noti che i nomi locali SPARQL
consentono di iniziare con delle cifre e caratteri non alfanumerici (mediante escape
backslash), a differenza dei nomi locali XML, che invece non lo permettono.
3.2 Sintassi di base
La sintassi generale per letterali è una stringa (racchiusa tra virgolette doppie, "...", o
singoli apici, '...'), con o un tag di lingua opzionale (introdotto da @) o un tipo di dati IRI
opzionale o un nome prefisso (introdotto dal ^ ^).
Per comodità, i numeri interi possono essere scritti direttamente (cioè senza le virgolette e
senza un esplicito tipo di dati IRI) e vengono interpretati come valori letterali di tipo
xsd:integer; i numeri decimali con il '.' nel numero, ma con nessun esponente, sono
interpretati come xsd:decimal; e i numeri con esponenti sono interpretati come
xsd:double. I valori di tipo xsd:boolean sono scritti come true o false.
Per facilitare la scrittura di valori letterali che contengono virgolette o che sono lunghe e
contengono caratteri di nuova riga, SPARQL permette di inserire tali caratteri
racchiudendoli in tre singoli apici.
18
SPARQL: Simple Protocol and RDF Query Language
Una variabile di query viene contrassegnata con l'uso di una "?" o "$", il "?" o "$" non fa
parte del nome della variabile. In una query, $abc e ?abc identificano la stessa variabile.
I nodi vuoti nei pattern grafici agiscono da variabili. I nodi vuoti sono indicati come
"_:abc", o nella forma abbreviata "[]". Un nodo vuoto viene utilizzato in maniera
univoca per formare il triple pattern. Un nodo vuoto con etichetta viene utilizzato come
oggetto di tutte le coppie predicato-oggetto contenute. Il nodo vuoto creato può essere
utilizzato anche in altri triple pattern nelle posizioni soggetto e oggetto. Ad esempio, le
forme [ :p "v" ] e [] :p "v" allocano un nodo vuoto univoco e nell’espressione
[ :p "v" ] :q "w" viene utilizzato come soggetto in un triple pattern, mentre
nell’espressione :x :q [ :p "v" ] viene utilizzato come oggetto del triple pattern.
I triple pattern con un soggetto comune possono essere scritti in modo che il soggetto sia
scritto solo una volta e viene utilizzato al posto di più triple pattern utilizzando la
notazione ";", come ad esempio ?x foaf:name ?name ; foaf:mbox ?mbox. Se invece i
triple pattern condividono sia il soggetto che il predicato, allora gli oggetti possono essere
separati da una “,”, come ad esempio ?x foaf:nick "Alice" , "Alice_".
Le RDF collection possono essere scritte nei triple pattern utilizzando la sintassi
"(elemento1 elemento2 ...)". Sono assegnati triple pattern con nodi vuoti quando vengono
utilizzati elementi nella collection, come ad esempio (1 ?x 3 4). Il nodo vuoto alla testa
della collection può essere utilizzato come soggetto o oggetto in altri triple patterns. I nodi
vuoti assegnati a una sintassi di una collection non occorrono in altre parti della query.
3.3 Graph patterns e filtraggio
I basic graph pattern sono insiemi di triple pattern. Lo SPARQL graph pattern matching è
definito in termini di combinazione dei risultati della corrispondenza dei basic graph
patterns. Una sequenza di triple pattern, con filtri opzionali, comprende un unico modello
grafico di base. Qualsiasi altro graph pattern termina con un basic graph pattern.
19
SPARQL: Simple Protocol and RDF Query Language
In una stringa query SPARQL, un gruppo di graph pattern è delimitato dalle parentesi
graffe {}. Ad esempio
PREFIX foaf:
<http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox
WHERE {
?x foaf:name ?name .
?x foaf:mbox ?mbox .
}
Il pattern di gruppo {} corrisponde a qualsiasi grafo (compreso il grafo vuoto) con una
soluzione che non vincola le variabili. Per esempio
SELECT ?x
WHERE {}
corrisponde a una soluzione in cui la variabile x non è vincolata.
Un vincolo, espresso dalla parola chiave FILTER, è una restrizione delle soluzioni su tutto
il gruppo in cui il filtro appare. È dunque possibile porre restrizioni sui valori da associare
alle variabili. Un esempio di applicazione del filtraggio con FILTER è il codice
PREFIX cd: <http://example.org/cd/>
SELECT ?titolo ?anno
FROM <http://cd.com/listacd.ttl>
WHERE {?titolo cd:anno ?anno.
FILTER (?anno > 2000).
}
Sono messi a disposizione diversi operatori specifici del linguaggio: tra questi, in
particolare abbiamo regexp, valido corrispettivo dei criteri di ricerca LIKE dell'SQL che
permette di adoperare espressioni regolari per il matching dei letterali. Si consideri:
PREFIX
SELECT
FROM
WHERE
cd: <http://example.org/cd/>
?titolo ?autore
<http://cd.com/listacd.ttl>
{ ?titolo cd:autore ?autore .
FILTER regex(?autore, “^au”, “i”)
}
Il filtro seleziona, senza riguardo per maiuscole o minuscole, solo gli autori che iniziano
per "au". Otteniamo il risultato:
titolo
autore
"Amber" "Autechre"
20
SPARQL: Simple Protocol and RDF Query Language
3.4 Ricerca per opzioni e alternative
I basic graph patterns consentono alle applicazioni di effettuare query in cui l’intera query
pattern deve corrispondere alla possibile soluzione. Per ogni soluzione di una query
contenente solo gruppi di graph pattern con almeno un basic graph pattern, ogni variabile è
associata ad un termine RDF nella soluzione. Tuttavia, strutture regolari e complete non
possono essere assunte in tutti i grafici RDF.
Tutte le query viste finora hanno catturato esclusivamente le triple dotate di tutti i termini
richiesti, escludendo le triple che possedevano soltanto alcuni termini. È utile poter
disporre di query che permettono l’aggiunta di informazioni alla soluzione nel caso in cui
tale informazione è disponibile, ma senza rifiutare una soluzione perché una parte del
query pattern non corrisponde. Questi servizi sono offerti da associazioni opzionali: se la
parte opzionale non corrisponde, anche se non crea un binding, quantomeno non elimina la
soluzione. Le parti opzionali del graph pattern possono essere specificate sintatticamente
con la parola chiave OPTIONAL applicato ad un graph pattern. È possibile formulare le
query in modo più elastico, prevedendo l'eventuale assenza di alcuni termini.
PREFIX cd: <http://example.org/cd/>
SELECT ?titolo ?autore ?anno
FROM <http://cd.com/listacd.ttl>
WHERE {?titolo cd:autore ?autore.
OPTIONAL {?titolo cd:anno ?anno}
}
Nell'esempio, il secondo pattern è dichiarato opzionale: l'informazione è aggiunta al
risultato solo se disponibile, altrimenti le variabili compariranno prive di valore
(unbound). Il risultato della query:
titolo
autore
anno
"Permutation" "Amon Tobin"
"Bricolage" "Amon Tobin"
"Amber"
"Autechre"
1994
Le risorse sprovviste della proprietà anno sono mostrate ugualmente e le celle dei valori
mancanti sono lasciate vuote.
21
SPARQL: Simple Protocol and RDF Query Language
I graph pattern vengono definiti in modo ricorsivo. Un graph pattern può avere zero o più
graph pattern opzionali, e qualsiasi parte di un query pattern può avere un componente
opzionale. Nell’esempio seguente ci sono due graph pattern opzionali.
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox ?hpage
WHERE { ?x foaf:name ?name .
OPTIONAL { ?x foaf:mbox ?mbox } .
OPTIONAL { ?x foaf:homepage ?hpage }
}
con un output del tipo
name
Mbox
hpage
"Alice"
<http://work.example.org/alice/>
"Bob" <mailto:[email protected]>
SPARQL fornisce un mezzo di combinazione di graph pattern in modo che si possa
trovare una corrispondenza tra diversi graph pattern alternativi. Questi pattern alternativi
sono sintatticamente specificati con la parola chiave UNION. Questo è un altro modo per
assicurare una certa elasticità nel reperimento dei dati. Consideriamo l’esempio
PREFIX cd: <http://example.org/cd/>
SELECT ?titolo ?autore ?anno
FROM <http://cd.com/listacd.ttl>
WHERE{
{?titolo cd:autore ?autore}
UNION
{?titolo cd:anno ?anno}
}
La parola chiave UNION esprime un OR logico: la query non si limita pertanto alle triple
che soddisfano entrambi i triple patterns, ma cattura sia quelli che soddisfano il primo, sia
quelli che soddisfano il secondo.
3.5 Negazione
Il linguaggio di query SPARQL incorpora due tipi di negazione, una basata sul filtraggio
dei risultati a seconda che un graph pattern trova o non trova una corrispondenza nel
contesto delle soluzioni filtrate, e l'altra basata sulla eliminazione delle soluzioni relative
ad un altro pattern.
22
SPARQL: Simple Protocol and RDF Query Language
La negazione del filtraggio delle soluzioni di una query viene fatto all'interno di
un'espressione FILTER con NOT EXISTS e EXISTS. Si noti che le regole di filtraggio si
applicano a tutto il gruppo in cui il filtro appare.
L’espressione NOT EXISTS del filtro verifica se un graph pattern non corrisponde
all’insieme dei dati dei valori delle variabili nel gruppo di graph pattern in cui opera il
filtro. Esso non genera altre associazioni di binding.
È prevista anche una espressione EXISTS del filtro. In questo caso si verifica se il pattern
può essere trovato nei dati; esso non genera altre associazioni.
L'altro stile di negazione disponibile in SPARQL è MINUS che valuta entrambi gli
argomenti e quindi calcola le soluzioni nel lato sinistro che non sono compatibili con le
soluzioni sul lato destro. Un esempio di codice che utilizza MINUS è
PREFIX :
<http://example/>
PREFIX foaf:
<http://xmlns.com/foaf/0.1/>
SELECT DISTINCT ?s
WHERE {
?s ?p ?o . MINUS { ?s foaf:givenName "Bob" .}
}
3.6 Associazione
Il valore di un'espressione può essere aggiunto ad una soluzione di mapping associando ad
una nuova variabile il valore dell'espressione, che è un termine RDF. In SPARQL, questa
associazione all'interno di una soluzione di una query non cambia mai. Questa variabile
può quindi essere utilizzata nella query e può anche essere restituita nei risultati.
Tre forme di sintassi permettono questo: la parola chiave BIND, le espressioni nella
clausola SELECT e le espressioni nella clausola GROUP BY. La forma di assegnazione è
(espressione AS ?var). Se la valutazione dell'espressione genera un errore, la variabile
rimane non associata a tale soluzione. I dati possono anche essere direttamente inclusi in
una query attraverso la clausola BINDINGS.
23
SPARQL: Simple Protocol and RDF Query Language
La forma BIND consente l’assegnazione di un valore a una variabile in un gruppo di graph
pattern. L’uso di BIND è un elemento separatore di gruppi di graph pattern e termina
qualsiasi basic graph pattern. Un esempio di codice che usa BIND è
PREFIX
PREFIX
dc:
ns:
<http://purl.org/dc/elements/1.1/>
<http://example.org/ns#>
SELECT ?title ?price
{ ?x ns:price ?p .
?x ns:discount ?discount
BIND (?p*(1-?discount) AS ?price)
FILTER(?price < 20)
?x dc:title ?title .
}
Una clausola BINDINGS in una query fornisce una sequenza di soluzioni non ordinata che
si combina con i risultati valutati dalla query da un'operazione di join. Può essere
utilizzato da un'applicazione per fornire requisiti specifici sui risultati della query e anche
dalle implementazioni del SPARQL query engine che forniscono query con la parola
chiave SERVICE per inviare più di un vincolo di query a un servizio di query remoto.
PREFIX dc:
PREFIX :
PREFIX ns:
<http://purl.org/dc/elements/1.1/>
<http://example.org/book/>
<http://example.org/ns#>
SELECT ?book ?title ?price
{
?book dc:title ?title ;
ns:price ?price .
}
BINDINGS ?book {
(:book1)
}
3.7 Aggregazioni
Gli aggregati applicano espressioni su gruppi di soluzioni. Per impostazione predefinita,
un insieme di soluzioni è costituito da un singolo gruppo, che contiene tutte le soluzioni.
Il raggruppamento può essere impostato con la sintassi GROUP BY. Gli aggregati definiti
in SPARQL sono COUNT, SUM, MIN, MAX, AVG, GROUP_CONCAT e SAMPLE.
Gli aggregati sono utilizzati quando si desidera visualizzare il risultato di una query
24
SPARQL: Simple Protocol and RDF Query Language
calcolato su un gruppo di soluzioni, piuttosto che su una singola soluzione. Ad esempio, il
valore massimo assunto da una particolare variabile, invece di ogni singolo valore.
Consideriamo i dati
@prefix : <http://books.example/> .
:org1 :affiliates :auth1, :auth2 .
:auth1 :writesBook :book1, :book2 .
:book1 :price 9 .
:book2 :price 5 .
:auth2 :writesBook :book3 .
:book3 :price 7 .
:org2 :affiliates :auth3 .
:auth3 :writesBook :book4 .
:book4 :price 7 .
e la query
PREFIX : <http://books.example/>
SELECT (SUM(?lprice) AS ?totalPrice)
WHERE {
?org :affiliates ?auth .
?auth :writesBook ?book .
?book :price ?lprice .
}
GROUP BY ?org
HAVING (SUM(?lprice) > 10)
con il risultato
totalPrice
21
Questo esempio mostra due caratteristiche degli aggregati: GROUP BY, che raggruppa le
soluzioni della query secondo una o più espressioni (in questo caso ?org), e HAVING,
che è analogo all’espressione FILTER, ma opera su raggruppamenti di soluzioni, piuttosto
che su singole soluzioni.
L'esempio è prodotto da soluzioni di raggruppamento in base alla espressione GROUP BY
(vale a dire tutte le soluzioni dove ?org assume un particolare valore all'interno dello
stesso gruppo), e la valutazione della funzione SUM su tale gruppo. I gruppi vengono
filtrati dall'espressione HAVING, che rimuove tutti i gruppi che hanno il valore
SUM(?lprice) non maggiore di 10.
Per calcolare valori aggregati di una soluzione, la soluzione è prima divisa in uno o più
gruppi, e il valore aggregato viene calcolato per ciascun gruppo. Se gli aggregati sono
25
SPARQL: Simple Protocol and RDF Query Language
utilizzati nelle clausole SELECT, HAVING o ORDER BY ma il termine GROUP BY non
è usato, allora questo è considerato come un unico gruppo implicito, a cui appartengono
tutte le soluzioni.
All'interno delle clausole GROUP BY la parola chiave AS per gli alias può essere
utilizzata; ad esempio GROUP BY (x? + ?y AS ?z) è equivalente a {...BIND (x? + ?y
AS
?z)}
GROUP
BY
?z. Va notato che come per le funzioni, le espressioni di
aggregazione devono essere alias (in modo simile alla clausola BIND, utilizzando la
parola chiave AS) per proiettarli su query o sub-query. Nell'esempio questo viene fatto
usando la variabile ?TotalPrice. È un errore per gli aggregati proiettare variabili con un
nome già utilizzato in altre proiezioni aggregate, o nella clausola WHERE.
Nella query di aggregazione e nelle sub-query, le variabili che compaiono nel query
pattern, ma che non compaiono nella clausola GROUP BY, possono essere solo proiettati
o utilizzati in espressioni di selezione se sono aggregati. L'aggregato SAMPLE può essere
utilizzato per questo scopo.
3.8 Sub-query e manipolazione del risultato
Le sub-query sono un modo per inserire delle query SPARQL in altre query, al fine di
raggiungere risultati che non possono essere conseguiti diversamente, come ad esempio la
limitazione del numero dei risultati di alcuni sotto espressioni nella query. A causa della
natura bottom-up di valutazione delle query SPARQL, le sub-query vengono valutate
logicamente prima, ed i risultati sono proiettati fino alla query esterna. Si noti che solo le
variabili proiettate fuori dalle sub-query fino alla query più esterna saranno visibili.
Normalmente una sequenza di soluzioni fornite da una query SPARQL prevede la
possibilità di mostrare soluzioni duplicate. Come in SQL, è possibile escludere dal
risultato i valori duplicati mediante la parola chiave DISTINCT, ad esempio:
SELECT DISTINCT ?titolo ?autore
26
SPARQL: Simple Protocol and RDF Query Language
Altri costrutti supportati da SPARQL per la manipolazione del risultato sono:
ORDER BY DESC(?autore)
OFFSET 10
LIMIT 10
L'espressione ORDER BY imposta l'ordine dei risultati della query: i risultati verranno
presentati in ordine crescente se è utilizzata la clausola ASC o nessuna clausola, o in
ordine decrescente se è utilizzata la clausola DESC (come nell’esempio basato sulla
variabile ?autore).
OFFSET fa in modo che le soluzioni generate iniziano dopo il numero di soluzioni
specificate; in pratica permette di saltare un certo numero di risultati, escludendo, stando
all'esempio, i primi 10. Un OFFSET di 0 non ha alcun effetto.
LIMIT pone un limite superiore al numero dei risultati che vengono restituiti, limitandoli,
secondo quanto indicato nell'esempio, ai soli primi 10.
3.9 Query forms
SPARQL ha quattro query forms. Queste query forms utilizzano le soluzioni di pattern
matching per formare un insieme di risultati o grafi RDF. Le query forms sono:
 SELECT: restituisce tutti, o un sottoinsieme, delle variabili vincolate a un query
pattern match;
 CONSTRUCT: restituisce un grafo RDF costruito sostituendo le variabili in un
insieme di triple pattern;
 ASK: restituisce un valore booleano che indica se è stata trovata una corrispondenza
al query pattern oppure no;
 DESCRIBE: restituisce un grafo RDF che descrive le risorse trovate.
La query form CONSTRUCT restituisce un singolo grafo RDF specificato da un graph
template. Il risultato è un grafo RDF formato prendendo ogni soluzione della query nella
sequenza di soluzioni, sostituendole alle variabili nel graph template, e combinando le
27
SPARQL: Simple Protocol and RDF Query Language
triple in un unico grafo RDF. Se una qualsiasi istanziazione produce una tripla contenente
una variabile unbound o un costrutto RDF illegale, come un letterale nella posizione
soggetto o predicato, allora la tripla non è inclusa nel grafo RDF di output. Il graph
template può contenere triple senza variabili (note come ground triples o triple esplicite), e
questi appaiono anche nel grafo RDF restituito in uscita dalla forma query CONSTRUCT.
Ad esempio, con i dati di partenza
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
_:a
foaf:name
"Alice" .
_:a
foaf:mbox
<mailto:[email protected]> .
la query
PREFIX foaf:
<http://xmlns.com/foaf/0.1/>
PREFIX vcard:
<http://www.w3.org/2001/vcard-rdf/3.0#>
CONSTRUCT
{ <http://example.org/person#Alice> vcard:FN ?name }
WHERE
{ ?x foaf:name ?name }
produce in uscita le proprietà vcard
@prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> .
<http://example.org/person#Alice> vcard:FN "Alice" .
Le applicazioni possono utilizzare la form ASK per testare se un query pattern ha una
soluzione oppure no. Nessuna informazione è restituita dalle possibili soluzioni della
query, dice solo se una soluzione esiste oppure no. Restituisce o false o true.
La form DESCRIBE restituisce un unico grafo RDF come risultato contenente i dati
relativi alle risorse RDF. Il query pattern viene utilizzato per creare un insieme di risultati.
La forma DESCRIBE prende ciascuna delle risorse individuate in una soluzione, insieme a
tutte le risorse nominate direttamente dall'IRI, e assembla un unico grafo RDF prendendo
una "descrizione", che può provenire da qualsiasi informazione disponibile, compreso il
Dataset RDF. La sintassi DESCRBE * è una abbreviazione che descrive tutte le variabili
in una query.
28
SPARQL: Simple Protocol and RDF Query Language
Conclusioni
SPARQL consente di interrogare modelli RDF e OWL sfruttando le relazioni semantiche
rappresentate nel modello ed ha i requisiti necessari per diventare il linguaggio di query
standard del Web Semantico. Soddisfa pienamente i requisiti di un buon linguaggio di
interrogazione, ma non la proprietà safety (è verificata quando una query corretta
restituisce un insieme finito di risultati). Infatti, una ricerca potrebbe generare un numero
indefinito di risultati oppure richiedere un eccessivo uso della memoria a causa dei modelli
di definizioni caricati o della loro complessità. Pertanto l’accuratezza della risposta
potrebbe non essere adeguata.
Per il resto, possiamo dire che SPARQL è un ottimo linguaggio, dato che il problema della
safety è comune praticamente a tutti i linguaggi. Infatti, è stato scelto dal W3C proprio per
la sua completezza, espressività e semplicità d’uso, nonché per l’esecuzione di query
remote come Web Service o richieste/risposte HTTP.
Le caratteristiche che più lo contraddistinguono rispetto ad altri linguaggi sono: possibilità
di esprimere pattern opzionali; eseguire query in cui il matching viene effettuato
sull’unione di pattern; trasformazione dei dati da fonti eterogenee, con possibilità di
specificare i grafi e diversi documenti RDF; possibilità di specificare i predicati come
variabili all’interno dei pattern, consentendo operazioni di path searching per grafi RDF ed
ontologie.
29
Bibliografia e Sitografia
[1]
http://sicapisce.wordpress.com/2009/06/08/il-web-semantico/,
“Come siamo arrivati al Web Semantico.”
[2]
Valeriano Sandrucci, “Introduzione alle Ontologie”, dalle slide per Eventi e
convegni organizzati dall'ITTIG 2007
[3]
Armando Stellato, “Linguaggi di Interrogazione per il Web Semantico”, dalle slide
del corso Gestione dei Dati e della conoscenza 2010
[4]
Beniamino Di Martino, “Stato dell’arte ed analisi delle metodologie, dei linguaggi
standard e degli engines per il querying semantico”, dal Technical Report: 2.4.6 del
LC3 – Laboratorio pubblico-privato di ricerca sul tema della Comunicazione delle
Conoscenze Culturali
[5]
http://it.wikipedia.org/wiki/SPARQL, “SPARQL”
[6]
http://it.wikipedia.org/wiki/Web_semantico, “Web semantico”
[7]
http://it.wikipedia.org/wiki/Ontologia, “Ontologia”
[8]
http://paoloratto.blogspot.it/2010/01/web-semantico-una-facile-introduzione.html,
“Web Semantico: una facile introduzione”
[9]
http://www.w3.org/TR/2012/WD-sparql11-query-20120105/,
W3C Working Draft 05 January 2012, “SPARQL 1.1 Query Language”
[10] http://lau.csi.it/realizzare/accessibilita/linguaggi_programmazione/SPARQL/
rdf.shtml#turtle, “Interrogare l'RDF con SPARQL”
[11] Antonio Picariello, “Verso il Web Semantico”, dalle slide del corso di Sistemi
Multimediali 2012
30

Documenti analoghi

per PC

per PC • SPARQL (acronimo di: Simple Protocol and RDF Query Language) è un linguaggio di interrogazione per RDF reso standard dal Data Access Working Group, gruppo di lavoro del consorzio W3C, che lo ha r...

Dettagli

RDF Triple Store: Virtuoso - Corso di Laurea in Ingegneria Informatica

RDF Triple Store: Virtuoso - Corso di Laurea in Ingegneria Informatica possibile, vuol dire che in un modo o nell' altro, anche i rispettivi linguaggi di interrogazione godono di una proprietà isomorca, ovvero di una corrispondenza 1:1 l' uno con l' altro. Tuttavia u...

Dettagli

VIRTUOSO DB:CARATTERISTICHE

VIRTUOSO DB:CARATTERISTICHE come succede tra essere umani. Il loro obiettivo è quello di creare sistemi d'information retrieval capaci di estrarre e indicizzare i concetti più significativi dei testi in modo da rendere le ric...

Dettagli

RDF Triple Store: Sesame - Corso di Laurea in Ingegneria Informatica

RDF Triple Store: Sesame - Corso di Laurea in Ingegneria Informatica per arrivare al livello delle ontologie (denominazione [22] formale di tipi , proprietà e di interrelazioni tra le varie entità di un particolare dominio del discorso), che si occupa di conciliare ...

Dettagli

laurea magistrale in ingegneria del cinema e dei mezzi di - e-Lite

laurea magistrale in ingegneria del cinema e dei mezzi di - e-Lite quest’ultimo in un ambiente in cui i documenti, come le pagine html, le immagini, i file, etc.,

Dettagli