SPARQL: Simple Protocol and RDF Query Language

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "SPARQL: Simple Protocol and RDF Query Language"

Transcript

1 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. N

2

3 Indice Introduzione 4 Capitolo 1. Il web semantico I problemi della semantica nel web Architettura del web semantico 9 Capitolo 2. Ontologie: concetti fondamentali 12 Capitolo 3. SPARQL: caratteristiche del linguaggio 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 27 Conclusioni 29 Bibliografia e Sitografia 30 III

4 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

5 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

6 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 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

7 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

8 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

9 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 Figura Architettura del web semantico 9

10 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

11 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 Figura 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

12 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

13 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

14 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

15 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 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

16 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 cd: < :Permutation cd:autore "Amon Tobin". :Bricolage cd:autore "Amon Tobin". :Amber cd:autore "Autechre". :Amber cd:anno Le asserzioni sono espresse in concise sequenze soggetto-predicato-oggetto e delimitate da un punto 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

17 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: < SELECT?titolo?autore?anno FROM < 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 " È 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"

18 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 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

19 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

20 In una stringa query SPARQL, un gruppo di graph pattern è delimitato dalle parentesi graffe {}. Ad esempio PREFIX foaf: < 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: < SELECT?titolo?anno FROM < 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 cd: < SELECT?titolo?autore FROM < WHERE {?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

21 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: < SELECT?titolo?autore?anno FROM < 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

22 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: < 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" "Bob" <mailto:bob@work.example> < 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: < SELECT?titolo?autore?anno FROM < 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

23 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 : < PREFIX foaf: < 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

24 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 dc: < PREFIX 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: < < < 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

25 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 : < :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 : < 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 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. totalprice 21 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

26 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

27 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 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

28 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 foaf: < _:a foaf:name "Alice". _:a foaf:mbox <mailto:alice@example.org>. la query PREFIX foaf: < PREFIX vcard: < CONSTRUCT { < vcard:fn?name } WHERE {?x foaf:name?name } produce in uscita le proprietà vcard: < < 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

29 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

30 Bibliografia e Sitografia [1] 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: del LC3 Laboratorio pubblico-privato di ricerca sul tema della Comunicazione delle Conoscenze Culturali [5] SPARQL [6] Web semantico [7] Ontologia [8] Web Semantico: una facile introduzione [9] W3C Working Draft 05 January 2012, SPARQL 1.1 Query Language [10] rdf.shtml#turtle, Interrogare l'rdf con SPARQL [11] Antonio Picariello, Verso il Web Semantico, dalle slide del corso di Sistemi Multimediali

CORSO I.F.T.S. "TECNICHE PER LA PROGETTAZIONE E LA GESTIONE DI DATABASE DISPENSE DIDATTICHE. MODULO di DATABASE SEMANTICI Ing.

CORSO I.F.T.S. TECNICHE PER LA PROGETTAZIONE E LA GESTIONE DI DATABASE DISPENSE DIDATTICHE. MODULO di DATABASE SEMANTICI Ing. CORSO I.F.T.S. "TECNICHE PER LA PROGETTAZIONE E LA GESTIONE DI DATABASE Matricola 2014LA0033 DISPENSE DIDATTICHE MODULO di DATABASE SEMANTICI Ing. Simone Menabeni Lezione del 08/10/2014 1 SPARQL Simone

Dettagli

Structured Query Language

Structured Query Language IL LINGUAGGIO SQL Structured Query Language Contiene sia il DDL sia il DML, quindi consente di: Definire e creare il database Effettuare l inserimento, la cancellazione, l aggiornamento dei record di un

Dettagli

QL (Query Language) Alice Pavarani

QL (Query Language) Alice Pavarani QL (Query Language) Alice Pavarani QL Query Language Linguaggio di interrogazione dei dati, permette di: Interrogare la base di dati per estrarre informazioni Elaborare i dati Il risultato di un interrogazione

Dettagli

Semantic Web. Obiettivi a lungo termine del W3C

Semantic Web. Obiettivi a lungo termine del W3C Obiettivi a lungo termine del W3C Universal Access: Rendere il Web accessibile a tutti, promuovendo tecnologie che tengano conto delle notevoli differenze culturali, di formazione, di capacità, di risorse

Dettagli

LEZIONE BASI DI DATI I 22/10/2008 XML

LEZIONE BASI DI DATI I 22/10/2008 XML LEZIONE BASI DI DATI I 22/10/2008 XML Il linguaggio XML (Extended Markup Language) è uno standard per la strutturazione dei dati sul web. A differenza di html, che è utilizzato per formattare documenti

Dettagli

RDF. Resource Description Framework

RDF. Resource Description Framework RDF Resource Description Framework 1 Sommario 1) Cos è l RDF RDF Model and Syntax RDF Schema 2) Il data model RDF definizione di risorsa, proprietà e statement esempio 1 esempio 2 2 3) Combinazione RDF

Dettagli

Argomenti XML JSON. Linguaggi per la definizione e lo scambio di dati strutturati, semi-strutturati, non strutturati. XML Data Model JSON

Argomenti XML JSON. Linguaggi per la definizione e lo scambio di dati strutturati, semi-strutturati, non strutturati. XML Data Model JSON XML JSON Argomenti 2 Linguaggi per la definizione e lo scambio di dati strutturati, semi-strutturati, non strutturati XML Data Model JSON 3 XML XML extensible Markup Language 4 Modello di dati XML Nato

Dettagli

SQL: le funzioni di aggregazione

SQL: le funzioni di aggregazione SQL: le funzioni di aggregazione funzioni predefinite che agiscono sui valori contenuti in insiemi di righe della tabella: Conteggi Somme Medie Massimi, minimi Funzione Count La funzione COUNT conta il

Dettagli

Tutorial: come scrivere query SPARQL semplici

Tutorial: come scrivere query SPARQL semplici Tutorial: come scrivere query SPARQL semplici In questo tutorial vedremo come costruire una nuova query SPARQL a partire dalla documentazione fornita in questa sezione. Acronimi della guida in linea e

Dettagli

Caratteristiche dei linguaggi per Database

Caratteristiche dei linguaggi per Database IL LINGUAGGIO Caratteristiche dei linguaggi per Database I linguaggi per basi di dati relazionali possiedono i comandi per: definizione del data base; manipolazione dei dati; associazione tra tabelle diverse;

Dettagli

JSON for Linked Data JSON-LD

JSON for Linked Data JSON-LD JSON for Linked Data JSON-LD Giuseppe Santaniello Giuseppe Pietravalle Web Semantico A.A. 2015/2016 Linked Data Insiemi di dati interconnessi sul Web Esempio: DBpedia DBpedia contiene i dati di Wikipedia

Dettagli

IL LINGUAGGIO SQL LE BASI

IL LINGUAGGIO SQL LE BASI IL LINGUAGGIO SQL LE BASI DB DI RIFERIMENTO PER GLI ESEMPI 2 ESPRESSIONI NELLA CLAUSOLA SELECT La SELECT list può contenere non solo attributi, ma anche espressioni: Le espressioni possono comprendere

Dettagli

Il modello RDF. Pasquale Savino ISTI-CNR. Biblioteche Digitali Metadati

Il modello RDF. Pasquale Savino ISTI-CNR. Biblioteche Digitali Metadati Il modello RDF 1 Introduzione al modello RDF [1/6] RDF (Resource Description Framework) è un modello di riferimento per descrivere metadati a supporto del riuso e dello scambio tra applicazioni diverse

Dettagli

SPARQL. Dott.sa Vincenza Anna Leano Basi di Dati II mod. B Prof. F. Cutugno A.A. 2010/2011

SPARQL. Dott.sa Vincenza Anna Leano Basi di Dati II mod. B Prof. F. Cutugno A.A. 2010/2011 SPARQL Dott.sa Vincenza Anna Leano vincenzaanna.leano@unina.it Basi di Dati II mod. B Prof. F. Cutugno A.A. 2010/2011 ESEMPIO Concetto: urn:isbn:9788845290053 dc:author dc:title http://authors.com/#tolkien

Dettagli

Select From Where...

Select From Where... Select From Where... SELECT Le colonne che saranno mostrate e in che ordine. Calcoli su colonne FROM La tabella o le tabelle usate dall interrogazione WHERE Condizione che deve essere soddisfatta dalle

Dettagli

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto SQL Università degli Studi di Salerno Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto A.A. 2005/2006 Select La forma di select cui siamo arrivati

Dettagli

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi: SQL e linguaggi di programmazione L interazione con l ambiente SQL può avvenire in 3 modi: in modo interattivo col server attraverso interfacce o linguaggi ad hoc legati a particolari DBMS attraverso i

Dettagli

Algoritmo. Calcolabilità

Algoritmo. Calcolabilità Algoritmo In altri termini, l algoritmo può essere definito come la descrizione di un procedimento che ha le seguenti proprietà: deve essere esplicita e non ambigua per l interlocutore cui è destinata

Dettagli

Linguaggi, Traduttori e le Basi della Programmazione

Linguaggi, Traduttori e le Basi della Programmazione Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi

Dettagli

Comunicazione Digitale

Comunicazione Digitale Comunicazione Digitale Schema didattico di riferimento 1 1. Internet e le reti locali 1. Qual è la storia della rete Internet dagli albori ai giorni nostri 2. I tipi di rete, come si organizzano e agglomerano

Dettagli

UML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13

UML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13 UML Introduzione a UML Linguaggio di Modellazione Unificato Corso di Ingegneria del Software Anno Accademico 2012/13 1 Che cosa è UML? UML (Unified Modeling Language) è un linguaggio grafico per: specificare

Dettagli

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Lez. 5 La Programmazione. Prof. Salvatore CUOMO Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente

Dettagli

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Lez. 8 La Programmazione Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Dott. Pasquale De Michele Dott. Raffaele Farina Dipartimento di Matematica e Applicazioni Università di Napoli

Dettagli

Variabili e assegnazione

Variabili e assegnazione Corso di Laurea Ingegneria Civile Fondamenti di Informatica Variabili e assegnazione Carla Limongelli Marzo 2009 Variabili e assegnazione 1 Contenuti Variabili a ab e assegnazionea e Variabili e aree di

Dettagli

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA 3. Panoramica su SQL Prof. Mauro Giacomini Sommario Introduzione Istruzione SELECT Tipi di Join Subquery Comandi DML Creazione delle tabelle Introduzione

Dettagli

Lezioni di Laboratorio sui Data Base

Lezioni di Laboratorio sui Data Base Lezioni di Laboratorio sui Data Base Informatica per l'impresa Docente Tutor: Dott. Gianluigi Roveda OBIETTIVO: Rivedere come attività di laboratorio le query di tipo select scritte in SQL ma con le variazioni

Dettagli

Introduzione alla Programmazione Logica ed al linguaggio PROLOG

Introduzione alla Programmazione Logica ed al linguaggio PROLOG Introduzione alla Programmazione Logica ed al linguaggio PROLOG Esercitazioni per il corso di Logica ed Intelligenza Artificiale a.a. 2014/15 Paolo Tomeo http://sisinflab.poliba.it/tomeo Programmazione

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione Linguaggi di Programmazione Programmazione. Insieme delle attività e tecniche svolte per creare un programma (codice sorgente) da far eseguire ad un computer. Che lingua comprende

Dettagli

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor Contesto didattico Il seguente materiale didattico è

Dettagli

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013) SQL quick reference piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013) I tipi dei dati di SQL sono: delimitatori delle costanti: TEXT(n) stringa di caratteri

Dettagli

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento Operatori aggregati In algebra relazionale le espressioni vengono valutate sulle singole tuple in successione. Talvolta però possono essere necessarie informazioni derivabili dall esame di tutte le tuple

Dettagli

Fondamenti di Informatica e Programmazione

Fondamenti di Informatica e Programmazione Fondamenti di Informatica e Programmazione Prof. G ianni D Angelo Email: giadangelo@unisa.it A. A. 2018/19 Dati e Basi di Dati 1/4 I dati sono importanti poiché costituiscono una risorsa aziendale La loro

Dettagli

SQL - Sottointerrogazioni correlate

SQL - Sottointerrogazioni correlate SQL - Sottointerrogazioni correlate negli esempi visti ogni subquery viene eseguita una volta per tutte ed il valore (o insieme di valori) è usato nella clausola WHERE della query esterna è possibile definire

Dettagli

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma SQL: Structured Query Language 1 SQL:Componenti Principali Data Manipulation Language (DML): interrogazioni, inserimenti, cancellazioni, modifiche Data Definition Language (DDL): creazione, cancellazione

Dettagli

Microsoft Access. Nozioni di base. Contatti: Dott.ssa Silvia Bonfanti

Microsoft Access. Nozioni di base. Contatti: Dott.ssa Silvia Bonfanti Microsoft Access Nozioni di base Contatti: Dott.ssa Silvia Bonfanti silvia.bonfanti@unibg.it Introduzione In questa lezione vedremo lo strumento Microsoft Access ed impareremo come realizzare con esso

Dettagli

PRODOTTO CARTESIANO Caso Generale

PRODOTTO CARTESIANO Caso Generale PRODOTTO CARTESIANO Caso Generale Vincoli di integrità dei dati Un database non deve solamente memorizzare i dati, ma garantire che i dati memorizzati siano corretti; se i dati sono imprecisi o incoerenti,

Dettagli

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2017/2018 1 Sesta parte Interrogazione di una

Dettagli

Ricorsione in SQL-99

Ricorsione in SQL-99 Ricorsione in SQL-99 Introduzione In SQL2 non è possibile definire interrogazioni che facciano uso della ricorsione Esempio Voli(lineaAerea, da, a, parte, arriva) non è possibile esprimere l interrogazione

Dettagli

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono l algoritmo Cominciamo ad analizzare la

Dettagli

<Nome Tabella>.<attributo>

<Nome Tabella>.<attributo> Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : SQL (2) Tabelle mult., variabili, aggreg, group Prof. Alberto

Dettagli

Manuale Comandi SQL SQL. Sito per esercitarsi (on line) SQL

Manuale Comandi SQL SQL. Sito per esercitarsi (on line) SQL Manuale Comandi SQL Sito per esercitarsi (on line)... 1 SQL... 1 Convenzioni e simboli usati... 2 Query Language... 2 Comando Select... 2 Order By:... 3 Sintassi generale:... 3 Ordinamanto su PIU campi...

Dettagli

Tecnologie Web T URI e URL

Tecnologie Web T URI e URL Tecnologie Web T URI e URL Home Page del corso: http://www-db.disi.unibo.it/courses/tw/ Versione elettronica: 1.02.URI.pdf Versione elettronica: 1.02.URI-2p.pdf 1 URL: problematiche fondamentali WWW =

Dettagli

SQL - Structured Query Language

SQL - Structured Query Language SQL - Structured Query Language Lab 05 Alessandro Lori Università di Pisa 27 Aprile 2012 Riepilogo esercitazione precedente Operatori insiemistici (UNION, INTERSECT, EXCEPT) Riepilogo esercitazione precedente

Dettagli

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative SQL SQL Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative l utente specifica quale informazione è di suo interesse, ma non come estrarla dai dati Le interrogazioni vengono

Dettagli

Manuale SQL. Manuale SQL - 1 -

Manuale SQL. Manuale SQL - 1 - Manuale SQL - 1 - Istruzioni DDL Creazione di una tabella : CREATE TABLE Il comando CREATE TABLE consente di definire una tabella del database specificandone le colonne, con il tipo di dati ad esse associate,

Dettagli

Modelli di recupero. Modello di recupero booleano

Modelli di recupero. Modello di recupero booleano Modelli di recupero L obiettivo è recuperare i documenti che sono verosimilmente rilevanti all interrogazione. Vi sono vari modelli di recupero, che possono essere suddivisi in due grandi famiglie: exact

Dettagli

Corso di. Basi di Dati I. 9. Esercitazioni in SQL: Check, asserzioni, viste

Corso di. Basi di Dati I. 9. Esercitazioni in SQL: Check, asserzioni, viste Corso di Basi di Dati 9. Esercitazioni in SQL: Check, asserzioni, viste A.A. 2016 2017 Check Come abbiamo visto, SQL permette di specificare vincoli sugli attributi e le tabelle attraverso il comando check

Dettagli

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto SQL Università degli Studi di Salerno Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto A.A. 2007/2008 Interrogazioni con raggruppamento E possibile

Dettagli

Gestione dei valori nulli

Gestione dei valori nulli Gestione dei valori nulli La gestione dei valori nulli, a seconda dell implementazione, avviene attraverso una logica a due valori come in SQL-89, o a tre valori (vero, falso, unknown) come in SQL-2. In

Dettagli

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica Programmazione Dipartimento di Matematica Ing. Cristiano Gregnanin Corso di laurea in Matematica 29 febbraio 2016 1 / 28 Linguaggi 2 / 28 Linguaggi 3 / 28 Linguaggi di alto livello Si basano su una macchina

Dettagli

MODULO 5 - USO DELLE BASI DI DATI 2 FINALITÁ

MODULO 5 - USO DELLE BASI DI DATI 2 FINALITÁ PATENTE EUROPEA DEL COMPUTER 5.0 MODULO 5 Database (Microsoft Access 2007) Parte 3 A cura di Mimmo Corrado Gennaio 2012 MODULO 5 - USO DELLE BASI DI DATI 2 FINALITÁ Il Modulo 5, richiede che il candidato

Dettagli

Basi di dati - Laboratorio

Basi di dati - Laboratorio Basi di dati - Laboratorio Corso di Laurea in Bioinformatica Docente: Barbara Oliboni Lezione 4 Contenuto della lezione Interrogazioni SQL Join interni ed esterni Uso di variabili tupla o ALIAS Interrogazioni

Dettagli

Introduzione al Semantic Web

Introduzione al Semantic Web Corso di Laurea Specialistica in Ingegneria Informatica Corso di Linguaggi e Tecnologie Web A. A. 2011 - Introduzione al Semantic Web Eufemia TINELLI Dal Web al Semantic Web: Motivazioni Il Web dovrebbe

Dettagli

SISTEMI OPERATIVI, RETI, INTERNET

SISTEMI OPERATIVI, RETI, INTERNET Competenze e Unità didattica formativa capitalizzabile 4.1 SISTEMI OPERATIVI, RETI, INTERNET Comprendere il significato dell'evoluzione dei sistemi operativi. Comprendere che cosa fa un sistema operativo

Dettagli

Interrogazioni di tipo insiemistico. Select. Interrogazioni di tipo insiemistico. Interrogazioni nidificate

Interrogazioni di tipo insiemistico. Select. Interrogazioni di tipo insiemistico. Interrogazioni nidificate Select La sintassi di select cui siamo arrivati dopo le estensioni viste è quindi: SelectSQL ::= select ListaAttributiOEspressioni from ListaTabelle [ where CondizioniSemplici ] [ group by ListaAttributiDiRaggruppamento]

Dettagli

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio (1) Linguaggio (2)

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio (1) Linguaggio (2) Sommario Linguaggi, messaggi e comunicazione Traduzione di programmi Interpreti e compilatori Introduzione al processo di compilazione 1 2 Linguaggio (1) Linguaggio (2) Insieme di sequenze di simboli,

Dettagli

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati Basi di Dati Matteo Longhi Structured Query Language Introduzione Standard creato nel 1976 da IBM Aggiornato (versione 2 nel 1992 (ANSI X3.135 e ISO 9075 Consente di: DDL: definire la struttura del DB

Dettagli

INTRODUZIONE AI DBMS. Inoltre i fogli elettronici. Mentre sono poco adatti per operazioni di. Prof. Alberto Postiglione

INTRODUZIONE AI DBMS. Inoltre i fogli elettronici. Mentre sono poco adatti per operazioni di. Prof. Alberto Postiglione Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : Introduzione alla Gestione dei Dati Prof. Alberto Postiglione

Dettagli

Interrogazioni complesse. SQL avanzato 1

Interrogazioni complesse. SQL avanzato 1 Interrogazioni complesse SQL avanzato Classificazione delle interrogazioni complesse Query con ordinamento Query con aggregazione Query con raggruppamento Query binarie Query annidate SQL avanzato 2 Esempio

Dettagli

INTRODUZIONE AI DBMS

INTRODUZIONE AI DBMS Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : Introduzione alla Gestione dei Dati Prof. Alberto Postiglione

Dettagli

CAPITOLO V. DATABASE: Il modello relazionale

CAPITOLO V. DATABASE: Il modello relazionale CAPITOLO V DATABASE: Il modello relazionale Il modello relazionale offre una rappresentazione matematica dei dati basata sul concetto di relazione normalizzata. I principi del modello relazionale furono

Dettagli

Introduzione. Ricorsione in SQL-99. Esempio. Idea di base. Esempio (continua) SQL-99 - comando WITH

Introduzione. Ricorsione in SQL-99. Esempio. Idea di base. Esempio (continua) SQL-99 - comando WITH icorsione in SQL99 Introduzione In SQL2 non è possibile definire interrogazioni che facciano uso della ricorsione Voli(lineaAerea, da, a, parte, arriva) non è possibile esprimere l interrogazione che ritrova

Dettagli

Adeguamento template fatture elettroniche per dispositivi medici

Adeguamento template fatture elettroniche per dispositivi medici Adeguamento template fatture elettroniche per dispositivi medici Nell esempio sotto riportato sono stati configurati gli attributi estesi per memorizzare i dati relativi ai DM: Codice Tipo Codice Valore

Dettagli

Caratteristiche di un linguaggio ad alto livello

Caratteristiche di un linguaggio ad alto livello Caratteristiche di un linguaggio ad alto livello Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano Cagnoni Il problema

Dettagli

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Programmi Un elaboratore riceve dei dati in ingresso, li elabora secondo una sequenza predefinita di operazioni e infine restituisce il risultato sotto forma

Dettagli

Queries su più tabelle

Queries su più tabelle Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : SQL (2) Tabelle mult., variabili, aggreg, group Prof. Alberto

Dettagli

Variabili e input/ Alessandra Giordani Lunedì 18 marzo

Variabili e input/ Alessandra Giordani Lunedì 18 marzo Variabili e input/ output da tastiera Alessandra Giordani agiordani@disi.unitn.it Lunedì 18 marzo 2013 http://disi.unitn.it/~agiordani/ Es. compilazione helloworld.c 2 Variabili e valori Una variabile

Dettagli

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/ Modelli di Base Dati 8 L aggregazione e il raggruppamento in SQL a.a. 2001/2002 8.1 SQL: le funzioni di aggregazione 8.2 funzioni predefinite che agiscono sui valori contenuti in insiemi di righe della

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algebra di Boole Stefano Cagnoni Algebra di Boole L algebra

Dettagli

Fogli Elettronici. Idoneità Informatica Prof. Mauro Gaspari

Fogli Elettronici. Idoneità Informatica Prof. Mauro Gaspari Fogli Elettronici Idoneità Informatica Prof. Mauro Gaspari Cosa è un foglio elettronico. Strumento per raccogliere dati organizzati in tabelle e farci delle operazioni: Le celle contengono numeri o altri

Dettagli

E possibile ordinare le righe del risultato di una interrogazione attraverso la clausola order by, a chiusura di una interrogazione.

E possibile ordinare le righe del risultato di una interrogazione attraverso la clausola order by, a chiusura di una interrogazione. Ordinamento E possibile ordinare le righe del risultato di una interrogazione attraverso la clausola order by, a chiusura di una interrogazione. order by AttrdiOrdinamento [asc desc] {, AttrdiOrdinamento

Dettagli

Linguaggi, messaggi e comunicazione Traduzione di programmi Interpreti e compilatori Introduzione al processo di compilazione

Linguaggi, messaggi e comunicazione Traduzione di programmi Interpreti e compilatori Introduzione al processo di compilazione Sommario Linguaggi, messaggi e comunicazione Traduzione di programmi Interpreti e compilatori Introduzione al processo di compilazione 1 2 Linguaggio (1) Linguaggio (2) Insieme di sequenze di simboli,

Dettagli

EUROPEAN COMPUTER DRIVING LICENCE SYLLABUS VERSIONE 5.0

EUROPEAN COMPUTER DRIVING LICENCE SYLLABUS VERSIONE 5.0 Pagina I EUROPEAN COMPUTER DRIVING LICENCE SYLLABUS VERSIONE 5.0 Modulo 5 Uso delle basi di dati Il seguente Syllabus è relativo al Modulo 5, Uso delle basi di dati, e fornisce i fondamenti per il test

Dettagli

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI Introduzione alle basi di dati (2) 2 Modelli dei dati, schemi e istanze (1) Nell approccio con basi di dati è fondamentale avere un certo livello di

Dettagli

PIL Percorsi di Inserimento Lavorativo

PIL Percorsi di Inserimento Lavorativo PIL - 2008 Percorsi di Inserimento Lavorativo Basi di Dati - Lezione 2 Il Modello Relazionale Il modello relazionale rappresenta il database come un insieme di relazioni. Ogni RELAZIONE è una tabella con:

Dettagli

D B M G Il linguaggio HTML

D B M G Il linguaggio HTML Programmazione Web Il linguaggio HTML Il linguaggio HTML Concetti di base Le interfacce utente in HTML I form Le tabelle Il passaggio dei parametri contenuti nei form @2011 Politecnico di Torino 1 Concetti

Dettagli

Programmazione Web D B M G. Il linguaggio HTML

Programmazione Web D B M G. Il linguaggio HTML Programmazione Web Il linguaggio HTML Il linguaggio HTML Concetti di base Le interfacce utente in HTML I form Le tabelle Il passaggio dei parametri contenuti nei form HTML: HyperText Markup Language Standard

Dettagli

SPARQL Injection attacking the triple store

SPARQL Injection attacking the triple store SPARQL Injection attacking the triple store Simone Onofri Luca Napolitano -Italy Day2012 Rome, 23 November 2012 Copyright 2008 - The Foundation Permission is granted to copy, distribute and/or modify this

Dettagli

Linguaggio SQL seconda parte

Linguaggio SQL seconda parte Linguaggio SQL seconda parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright Istituto Italiano Edizioni Atlas Le condizioni di ricerca 2 Le condizioni di ricerca Usate nelle

Dettagli

Corso di Access. Prerequisiti. Modulo L2 A (Access) Le query

Corso di Access. Prerequisiti. Modulo L2 A (Access) Le query Corso di Access Modulo L2 A (Access) 2.3.1 Le query 1 Prerequisiti Concetto di database relazionale Utilizzo elementare del computer Concetti fondamentali di basi di dati Interrogazione di un DB 2 1 Introduzione

Dettagli

Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Il linguaggio C I linguaggi di programmazione ad alto livello sono linguaggi formali ( sintassi e semantica formalmente definite) però sono compatti e comprensibili. Le tipologie di linguaggi sono: procedurali

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 4 Raffaella Gentilini 1 / 46 Sommario 1 Join di Tabelle Join Naturale Theta Join Join Esterno 2 3 Funzioni d aggregazione La Clausola GROUP BY La Clausola HAVING

Dettagli

Fondamenti di Informatica A. A / 1 9

Fondamenti di Informatica A. A / 1 9 Fondamenti di Informatica Introduzione ai DBMS ed al Modello E -R Prof. Marco Lombardi A. A. 2 0 1 8 / 1 9 Dati e Basi di Dati 1/4 I dati sono importanti poiché costituiscono una risorsa aziendale La loro

Dettagli

WWW = URL + HTTP + HTML

WWW = URL + HTTP + HTML Tecnologie Web T URI e URL Home Page del corso: http://www-db.disi.unibo.it/courses/tw/ Versione elettronica: 1.02.URI.pdf Versione elettronica: 1.02.URI-2p.pdf 2p.pdf 1 URL: problematiche fondamentali

Dettagli

Introduzione alla programmazione. Alice Pavarani

Introduzione alla programmazione. Alice Pavarani Introduzione alla programmazione Alice Pavarani Il linguaggio C Creato da Dennis Ritchie nel 1972 presso i Bell Laboratories Linguaggio di programmazione procedurale, strutturato Linguaggio ad alto livello

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algebra di Boole Stefano Cagnoni Algebra di Boole L algebra

Dettagli

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio. Messaggio

Sommario Linguaggi, messaggi e comunicazione. Introduzione ai Linguaggi di Programmazione. Linguaggio. Messaggio Sommario Linguaggi, messaggi e comunicazione Traduzione di programmi Interpreti e compilatori Introduzione al processo di compilazione 1 2 Linguaggio Messaggio Insieme di sequenze di simboli, le parole,

Dettagli

Foglio Elettronico Lezione 1

Foglio Elettronico Lezione 1 - Introduzione - Celle e riferimenti - Formule - Approfondimenti - Funzioni logiche Sommario Introduzione - Foglio elettronico o foglio di calcolo - Cos'è? Strumento per raccogliere dati organizzati in

Dettagli

Il progetto Open Data in Trentino

Il progetto Open Data in Trentino Il progetto Open Data in Trentino TSM, 4 luglio 2014 info@dati.trentino.it Cosa sono gli Open data? Una definizione Un dato è aperto se chiunque è libero di usarlo, riusarlo e redistribuirlo, soggetti

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello AN - 1995 Linguaggi di alto livello AN - 1995 Evoluzione dei

Dettagli

Elementi di programmazione

Elementi di programmazione Elementi di programmazione L E Z I O N I P E R I C O R S I D I I N F O R M A T I C A D E L L I C E O S C I E N T I F I C O O P Z I O N E S C I E N Z E A P P L I C A T E P R O F. D O M E N I C O L O R U

Dettagli

Corso di Programmazione Dati e Istruzioni. Comunicazione dell algoritmo all elaboratore. Programmazione. Dott. Pasquale Lops

Corso di Programmazione Dati e Istruzioni. Comunicazione dell algoritmo all elaboratore. Programmazione. Dott. Pasquale Lops Materiale didattico preparato dal dott. Stefano Ferilli Corso di Programmazione Dati e Istruzioni Dott. Pasquale Lops lops@di.uniba.it Corso di Programmazione - DIB 1/28 Comunicazione dell algoritmo all

Dettagli

@2011 Politecnico di Torino 1

@2011 Politecnico di Torino 1 Concetti di base Programmazione Web Il linguaggio HTML HTML consente di annotare un testo per contrassegnare le parti che lo compongono Le annotazioni sono realizzate tramite i "tag" Visualizzare documenti

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

Sistemi di Elaborazione dell informazione II. Corso di Laurea Specialistica in Ingegneria Telematica II anno 4 CFU Università Kore Enna A.A.

Sistemi di Elaborazione dell informazione II. Corso di Laurea Specialistica in Ingegneria Telematica II anno 4 CFU Università Kore Enna A.A. Sistemi di Elaborazione dell informazione II Corso di Laurea Specialistica in Ingegneria Telematica II anno 4 CFU Università Kore Enna A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu

Dettagli

9 Calcolo dei sequenti LC p

9 Calcolo dei sequenti LC p 9 Calcolo dei sequenti LC p In questa sezione mostriamo un metodo più elegante, semplice e soprattutto AUTOMATICO per mostrare se una proposizione è valida o meno e soddisfacibile o meno. Tale metodo è

Dettagli

PRINCIPI DI INFORMATICA CORSO DI LAUREA IN SCIENZE BIOLOGICHE

PRINCIPI DI INFORMATICA CORSO DI LAUREA IN SCIENZE BIOLOGICHE PRINCIPI DI INFORMATICA CORSO DI LAUREA IN SCIENZE BIOLOGICHE Gennaro Cordasco e Rosario De Chiara {cordasco,dechiara}@dia.unisa.it Dipartimento di Informatica ed Applicazioni R.M. Capocelli Laboratorio

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano Cagnoni Il problema

Dettagli