SPARQL: Simple Protocol and RDF Query Language
|
|
- Ambrogio Pagano
- 7 anni fa
- Visualizzazioni
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 Matricola 2014LA0033 DISPENSE DIDATTICHE MODULO di DATABASE SEMANTICI Ing. Simone Menabeni Lezione del 08/10/2014 1 SPARQL Simone
DettagliStructured 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
DettagliQL (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
DettagliSemantic 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
DettagliLEZIONE 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
DettagliRDF. 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
DettagliArgomenti 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
DettagliSQL: 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
DettagliTutorial: 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
DettagliCaratteristiche 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;
DettagliJSON 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
DettagliIL 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
DettagliIl 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
DettagliSPARQL. 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
DettagliSelect 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
DettagliSQL. 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
DettagliSQL 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
DettagliAlgoritmo. 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
DettagliLinguaggi, 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
DettagliComunicazione 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
DettagliUML 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
DettagliLez. 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
DettagliLez. 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
DettagliVariabili 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
DettagliSISTEMI 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
DettagliLezioni 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
DettagliIntroduzione 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
DettagliLinguaggi 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
DettagliInterrogare 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 è
DettagliSQL 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
DettagliOperatori 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
DettagliFondamenti 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
DettagliSQL - 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
DettagliSQL: 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
DettagliMicrosoft 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
DettagliPRODOTTO 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,
DettagliSistemi 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
DettagliRicorsione 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
DettagliCominciamo 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>
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
DettagliManuale 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...
DettagliTecnologie 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 =
DettagliSQL - 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
DettagliSQL. 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
DettagliManuale 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,
DettagliModelli 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
DettagliCorso 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
DettagliSQL. 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
DettagliGestione 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
DettagliProgrammazione. 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
DettagliMODULO 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
DettagliBasi 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
DettagliIntroduzione 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
DettagliSISTEMI 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
DettagliInterrogazioni 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]
DettagliSommario 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,
DettagliStructured. 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
DettagliINTRODUZIONE 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
DettagliInterrogazioni 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
DettagliINTRODUZIONE 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
DettagliCAPITOLO 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
DettagliIntroduzione. 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
DettagliAdeguamento 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
DettagliCaratteristiche 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
DettagliLaboratorio 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
DettagliCorso 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
DettagliQueries 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
DettagliVariabili 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
DettagliV. 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
DettagliLaboratorio 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
DettagliFogli 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
DettagliE 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
DettagliLinguaggi, 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,
DettagliEUROPEAN 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
DettagliCONCETTI 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
DettagliPIL 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:
DettagliD 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
DettagliProgrammazione 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
DettagliSPARQL 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
DettagliLinguaggio 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
DettagliCorso 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
DettagliIl 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
DettagliBasi 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
DettagliFondamenti 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
DettagliWWW = 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
DettagliIntroduzione 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
DettagliLaboratorio 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
DettagliSommario 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,
DettagliFoglio 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
DettagliIl 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
DettagliLINGUAGGI 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
DettagliElementi 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
DettagliCorso 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
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
DettagliProgramma 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
DettagliSistemi 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
Dettagli9 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 è
DettagliPRINCIPI 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
DettagliLaboratorio 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