Modulo3 Linguaggi: RDF UNIVERSITA’ DI CAMERINO Corso di laurea in Informatica (classe 23/S) Barbara Re barbara.re@unicam.it Anno Accademico 2007-08
Agenda RDF – overview RDF – costrutti del linguaggio
I linguaggi per la rappresentazione della conoscenza Si utilizzano logiche descrittive intese come una famiglia di formalismi utilizzati per rappresentare la conoscenza in un dominio di applicazione detto mondo Più recentemente le logiche descrittive sono state utilizzate come formalismo di base per lo sviluppo degli standard promossi dalla Semantic Web initiative group del W3C
Linguaggi di rappresentazione
Linguaggi I linguaggi forniscono meccanismi base che possono essere usati per rappresentare la semantica delle informazioni necessarie per il Semantic Web XML RDF RDF(S) OWL … OWL ANNOTAZIONE INTEGRAZIONE INFERENZA RDF(S) RDF XML
Formal Languages Il grado di formalità dei linguaggi ontologici cambia sostanzialmente Tanto più si è formali tanto più il linguaggio è suscettibile di “processamento” automatico La semantica formale fornisce una interpretazione non ambigua delle descrizioni
RDF RDF sta per Resource Description Framework E’ una raccomandazione W3C http://www.w3.org/RDF RDF è un formalismo grafico (+ sintassi xml + semantica) Per rappresentare metadati Per rappresentare la semantica delle informazioni in modalità accessibili dalla macchina Fornisce un semplice data model basato su triple
RDF: come possibile approccio all’interoperabilità strutturale RDF si propone come un’hub da usare per gestire i costrutti strutturali al posto di numerose integrazioni ad hoc Source: Tim Berners Lee http://www.w3.org/2002/Talks/09-lcs-sweb-tbl/Overview.html
RDF – modello di dati RDF mette a disposizione un modello di dati semplice <soggetto, predicato, oggetto> <Barbara, ha collega, Francesco> Può essere rappresentato come grafo … e molto flessibile si possono codificare
Che cos’è RDF RDF Come HTML, permette di creare dei link tra risorse pubblicati sul Web Al contrario dei comuni ipertesti i link di RDF Possono essere etichettati, al fine di indicare esplicitamente la relazione che intercorre tra gli oggetti Si riferiscono a oggetti tipizzati, nel senso che RDF standardizza la modalità con cui si assegna un significato alla risorsa
RDF: un esempio guida Il modello RDF rende disponibile un meccanismo per descrivere in modo machine- processable risorse Web, ad esempio, pagine Web Esempio Immaginiamo di voler tener traccia del fatto che qualcuno di nome Mario Rossi ha creato una certa pagina Web (http://www.example.org/index.html) Se dovessimo descrivere questo fatto in linguaggio naturale potremmo utilizzare una semplice frase:
La terminologia In RDF per identificare La frase si usa il termine stantment La parte che identifica ciò di cui la frase parla si usa soggetto La parte che identifica la proprietà del soggetto che la frase specifica si usa predicato La parte che identifica il valore assegnato dalla frase alla proprietà si usa oggetto
Machine processability (1) Delle frasi in linguaggio naturale possono servire uomini per comunicare, ma lo scopo di RDF è rendere queste frasi “machine-processable” Per rendere frasi simili a quelle precedenti machine processable occorre degli identificativi “machine-processable” che permettano di identificare il soggetto, l’oggetto e il predicato in una frase senza nessuna possibilità di confusione con un altro identificativo simile usato da qualcun altro sul Web un formato “machine-processable” per rappresentare e scambiare le frasi tra macchine
Machine processability (2) Il web di oggi dispone di entrambi i meccanismi gli Uniform Resource Identifier (URI) rendono disponibile un modo per identificare qualunque cosa di cui si voglia parlare in uno statement RDF Extensible Markup Language (XML) è il formato ideale per rappresentare e scambiare degli statement RDF
Machine processability Il web di oggi dispone di entrambi i meccanismi gli Uniform Resource Identifier (URI) rendono disponibile un modo per identificare qualunque cosa di cui si voglia parlare in uno statement RDF Extensible Markup Language (XML) è il formato ideale per rappresentare e scambiare degli statement RDF
Tutto deve avere un URI Per scrivere Occorre assegnare un URI a tutte (o quasi) le parti sottolineate della frase Nello stantment RDF di esempio: Il soggetto è già un URI Il valore (l’oggetto) “Mario Rossi” potrebbe essere identificato dall’URI URN:org:example:staffid:85740 Per il predicato “autore” si può utilizzre l’URI http://purl.org/dc/element/1.1/creator
Tutto deve avere un URI Risultato
Predicati come URI http://purl.org/dc/elements/1.1/Creator Etichetta Creatore Definizione Un'entità che ha la responsabilità principale della produzione del contenuto della risorsa Descrizione Esempi di Creator includono una persona, un'organizzazione o un servizio. In particolare, il nome di un Creator dovrebbe essere usato per indicare l'entità
Uso dei namespace E’ possibile abbreviare le URI facendo uso dei prefissi dei namespace di XML Esempio Lo stantment Introducendo i seguenti prefissi per i tre namespace diventa
Oggetti come URI (1) Ci sono molti vantaggi nell’utilizzare gli URI come semplice modalità di identificazione Invece di Identificare l’autore come la stringa “Mario Rossi” Si può usare l’URI sid:85740 In questo caso Possiamo essere più precisi nella nostra idenficazione dell’autore della pagina Non è una stringa “Mario Rossi” o qualcuna delle migliaia di persone che si chiamano “Mario Rossi” Ma in particolare “Mario Rossi” è associato all’URI
Oggetti come URI (2) Dal momento che l’autore della pagina ha un URI, è a tutti gli effetti una risorsa, e possiamo descriverla ulteriormente assegnandogli, ad esempio, il nome, l’eta, …
Quasi tutto deve avere un URI Il soggetto e il predicato di ogni stantment devono essere delle risorse, quindi devono avere un URI L’oggetto può anche essere un valore La terminologia di RDF utilizza il termine Letterale (litteral)
Tipizzare le risorse Per tipizzare una risorsa si usa la proprietà rdf:type
Machine processability Il web di oggi dispone di entrambi i meccanismi gli Uniform Resource Identifier (URI) rendono disponibile un modo per identificare qualunque cosa di cui si voglia parlare in uno statement RDF Extensible Markup Language (XML) è il formato ideale per rappresentare e scambiare degli statement RDF
Sintassi XML di RDF L’idea di base prevede un elemento XML per ogni nodo (soggetto e oggetto) e arco (predicato)
Sintassi XML di RDF Una possibile abbreviazione prevede l’uso dell’attributo rdf:resource nei poperty element
Sintassi XML di RDF Altri stantment Si possono serializzare Sempre di seguito Nel caso in cui si descriva l’oggetto del primo anche innestandoli
Sintassi XML di RDF Risorse tipizzate
Sintassi XML di RDF <rdf:Description rdf:about=“ex:index.html”> <dc:creator rdf:resource=“sid:85740”/> <rdf:type rdf:resource=“ex:pagina_web”/> </rdf:Description> <rdf:Description rdf:about=“sid:85740”> <foaf:email rdf:resource=“mailto:mrossi@example.org”> <rdf:type rdf:resource=“ex:impiegato”> -------------------------------------------------------------------------------------------------------- <dc:creator> </dc:creator> <rdf:type rdf:resource=“ex:pagina_web”>
RDF - <rdf:Description rdf:about=“ex:index.html”> <dc:creator rdf:resource=“sid:85740”/> <rdf:type rdf:resource=“ex:pagina_web”/> </rdf:Description> <rdf:Description rdf:about=“sid:85740”> <foaf:email rdf:resource=“mailto:mrossi@example.org”> <rdf:type rdf:resource=“ex:impiegato”> ---------------------------------------------------------------------------------------------------------------------------------------------------------- <dc:creator> </dc:creator> <rdf:type rdf:resource=“ex:pagina_web”>
Attenzione i letterali <rdf:Description rdf:about=“ex:index.html”> <dc:creator> Mario Rossi </dc:creator> </rdf:Description>
Documento RDF completo <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:s="http://description.org/schema/"> <rdf:Description about="http://www.w3.org/Home/Lassila"> <s:Creator>Ora Lassila</s:Creator> </rdf:Description> </rdf:RDF>
Sintassi N-Triple di RDF La sintassi XML di RDF È utile per far leva sui numerosi tool già sviluppati per XML Ma non è semplice distinguere i vari stantment e in particolare isolare soggetto, predicato e oggetto Per scopi didattici, o in generale quando occorre leggere RDF, si può utilizzare la sintassi N-Triple Ogni statment si scrive come una tripla
Sintassi N-Triple di RDF: esempio Es. l’esempio guida in N-triple Fissando i prefissi La tripla diventa
Alcuni vocabolari
RDF come Hub RDF può essere utilizzato come “Hub” Abilita un buon grado di interoperabilità strutturale Ovvero i vari sistemi informativi, che condividono lo stesso modello RDF, possono scegliere indipendentemente il formato più adatto all’informazione che intendono scambiare È molto semplice fondere (merge) modelli RDF Ovvero non ci sono ostacoli nel combinare informazione preveniente da sistemi differenti (quindi anche in formati diversi), purchè questi condividano lo stesso modello RDF
Esempio di interoperabilità strutturale otttenuta via RDF
Esempio di interoperabilità strutturale otttenuta via RDF
Esempio di interoperabilità strutturale otttenuta via RDF
Esempio di fusione (merge)
Esempio di fusione (merge)
Esempio di fusione (merge)
Protegè http://protege.stanford.edu/
Ci sono domande?
Qualche dettaglio in più!
[1] RDF ::= ['<rdf:RDF>'] description* ['</rdf:RDF>'] RDF: Sintassi di serializzazione di base [1] RDF ::= ['<rdf:RDF>'] description* ['</rdf:RDF>'] [2] description ::= '<rdf:Description' idAboutAttr? '>' propertyElt* '</rdf:Description>' [3] idAboutAttr ::= idAttr | aboutAttr [4] aboutAttr ::= 'about="' URI-reference '"' [5] idAttr ::= 'ID="' IDsymbol '"' [6] propertyElt ::='<' propName '>' value '</' propName '>' | '<' propName resourceAttr '/>' [7] propName ::= Qname [8] value ::= description | string [9] resourceAttr ::= 'resource="' URI-reference '"' [10] Qname ::= [ NSprefix ':' ] name [11] URI-reference ::= string, interpreted per [URI] [12] IDsymbol ::= (any legal XML name symbol) [13] name ::= (any legal XML name symbol) [14] NSprefix ::= (any legal XML namespace prefix) [15] string ::= (any XML text, with "<", ">", and "&" escaped)
Elemento RDF L'elemento RDF è un semplice involucro che delimita i confini in un documento XML entro cui il contenuto è esplicitamente da intendere mappabile in una istanza di modello di dati RDF L'elemento RDF è opzionale se il contenuto può essere riconosciuto come RDF dal contesto dell'applicazione
Elemento Description Raramente una singola asserzione RDF compare isolata; più comunemente diverse proprietà di una risorsa saranno date insieme La sintassi XML di RDF è stata progettata per compiere questo facilmente raggruppando le molteplici asserzioni riguardanti la stessa risorsa all'interno di un elemento Description L'elemento Description indica, tramite l'attributo about, la risorsa alla quale si applicano tutte le asserzioni Se la risorsa non esiste ancora (ovvero, non ha ancora un identificatore), allora l'elemento Description può fornire l'identificatore della risorsa usando un attributo ID
Description e propertyElt L'attributo ID indica la creazione di una nuova risorsa e l'attributo about si riferisce ad una risorsa esistente In Description è possibile specificare o ID o about, ma non entrambi contemporaneamente nello stesso elemento I valori per ogni attributo ID non devono apparire in più di un attributo ID all'interno del singolo documento Un elemento Description può contenere più di un elemento propertyElt con lo stesso nome di proprietà Ciascuno di questi propertyElt aggiunge un arco al grafo L'interpretazione di questo grafo è definita da chi progetta lo schema
propertyElt All'interno di un propertyElt, l'attributo resource specifica che un'altra risorsa è il valore di questa proprietà l'oggetto della asserzione, piuttosto che un letterale è un'altra risorsa identificata da un URI L'identificatore di risorsa dell'oggetto è ottenuto risolvendo il riferimento-URI dell'attributo resource in modo analogo a quanto indicato sopra per l'attributo about
Contenitori Spesso è necessario riferirsi ad una collezione di risorse Per esempio per dire che un'opera è stata creata da più di una persona, o per elencare gli studenti di un corso, o i moduli di un pacchetto software Si usano i contenitori RDF Bag Sequence Alternative
Bag Lista non ordinata di risorse o letterali Si usano per dichiarare che una proprietà ha valori multipli e che l'ordine con cui questi valori sono inseriti non ha alcun significato Il contenitore bag potrebbe essere usato per fornire una lista di numeri di sezioni dove l'ordine di elaborazione di queste sezioni non è importante Sono ammessi valori duplicati
Sequence Lista ordinata di risorse o letterali Il contenitore Sequence si usa per dichiarare che una proprietà ha valori multipli e che l'ordine dei valori è significativo Il contenitore Sequence potrebbe essere usato, per esempio, per conservare un ordine alfabetico dei valori Sono ammessi valori duplicati
Alternative Una lista di risorse o letterali che rappresentano delle alternative al valore (singolo) di una proprietà Il contenitore Alternative potrebbe essere impiegato per indicare traduzioni in altre lingue del titolo di un'opera per fornire una lista di siti Internet mirror nei quali è reperibile la risorsa Un'applicazione che usa una proprietà il cui valore è un raccolta di tipo Alternative sa di poter selezionare uno fra gli oggetti presenti nella lista
Collezione di risorse Per rappresentare una collezione di risorse, RDF adopera una risorsa aggiuntiva che identifica la collezione specifica Questa risorsa deve essere dichiarata Per formulare questa dichiarazione si utilizza la proprietà type La relazione di appartenenza fra questa risorsa-contenitore e le risorse che fanno parte della collezione è definita attraverso un insieme di proprietà espressamente definite per questo scopo Queste proprietà di appartenenza sono indicate semplicemente con "_1", "_2", "_3", etc. Le risorse contenitore possono anche avere altre proprietà, oltre alla proprietà di appartenenza e alla proprietà tipo
Esempio: Bag Gli studenti del corso 6.001 sono Amy, Tim, John, Mary, e Sue
Esempio: alternative Il codice sorgente per X11 può essere trovato a ftp.x.org, ftp.cs.purdue.edu, o ftp.eu.net
… esempi Gli studenti del corso 6.001 sono Amy, Tim, John, Mary, e Sue. <rdf:RDF> <rdf:Description about="http://mycollege.edu/courses/6.001"> <s:students> <rdf:Bag> <rdf:li resource="http://mycollege.edu/students/Amy"/> <rdf:li resource="http://mycollege.edu/students/Tim"/> <rdf:li resource="http://mycollege.edu/students/John"/> <rdf:li resource="http://mycollege.edu/students/Mary"/> <rdf:li resource="http://mycollege.edu/students/Sue"/> </rdf:Bag> </s:students> </rdf:Description> </rdf:RDF> Nota che RDF/XML usa l'elemento li per evitare di dover numerare esplicitamente ciascun componente L'elemento li assegna - se necessario - le proprietà _1, _2, etc Il nome dell'elemento li è stato scelto per richiamare il termine "list item" di HTML
… esempi Il codice sorgente per X11 può essere trovato a ftp.x.org, ftp.cs.purdue.edu, o ftp.eu.net <rdf:RDF> <rdf:Description about="http://x.org/packages/X11"> <s:DistributionSite> <rdf:Alt> <rdf:li resource="ftp://ftp.x.org"/> <rdf:li resource="ftp://ftp.cs.purdue.edu"/> <rdf:li resource="ftp://ftp.eu.net"/> </rdf:Alt> </s:DistributionSite> </rdf:Description> </rdf:RDF>
Contenitori versus proprietà ripetute Una risorsa può avere asserzioni multiple con lo stesso predicato Ciò non equivale ad avere una singola asserzione il cui oggetto sia un contenitore con molti componenti La scelta sul sistema da adottare in ogni circostanza particolare è in parte fatta dalle persone che progettano lo schema e in parte dalle persone che scrivono le specifiche asserzioni RDF
Esempio: proprietà ripetute Consideriamo, ad esempio, la relazione fra una scrittrice e le sue pubblicazioni Sue ha scritto "Anthology of Time", "Zoological Reasoning", "Gravitational Reflections" Non viene dichiarata nessuna relazione tra le pubblicazioni, se non quella che sono tutte state scritte dalla stessa persona
Esempio: meglio Bug Il comitato composto da Fred, Wilma, e Dino ha approvato la risoluzione Afferma che i tre membri del comitato, considerati come un unico insieme, hanno votato in una certa maniera Non si afferma, ovvero, necessariamente che ciascun membro del comitato ha votato a favore della risoluzione Sarebbe scorretto modellare questa proposizione con tre separate asserzioni "approvedBy", una per ciascuno dei membri del comitato, quindi come tre voti individuali di approvazione Piuttosto, è meglio modellare come una singola asserzione di "approvedBy" il cui oggetto è un contenitore Bag che ha come componenti le tre identità dei membri del comitato
Graficamente La scelta su quale rappresentazione adoperare, Bag o ripetizione di proprietà, è fatta da colui che crea i metadati dopo aver considerato lo schema
Asserzioni su asserzioni Oltre che per creare asserzioni su risorse Web, RDF può essere usato per fare asserzioni su altre asserzioni RDF Ci riferiremo a queste come asserzioni di ordine maggiore Per fare un asserzione su un'altra asserzione, in effetti abbiamo la necessità di costruire un modello dell'asserzione originale questo modello è una nuova risorsa alla quale possiamo aggiungere altre proprietà
Costruzione di un modello di asserzioni Le asserzioni sono fatte su risorse Un modello di un'asserzione è la risorsa di cui abbiamo bisogno per poter fare nuove asserzioni (asserzioni di ordine maggiore) sull'asserzione modellata
Modello di asserzioni: esempi Per esempio, consideriamo la frase Ora Lassila è il creatore della risorsa http://www.w3.org/Home/Lassila. RDF considererebbe questa frase come un fatto Se, invece, scriviamo la frase Ralph Swick dice che Ora Lassila è il creatore della risorsa http://www.w3.org/Home/Lassila. Non abbiamo detto nulla della risorsa http://www.w3.org/Home/Lassila, ma abbiamo espresso un fatto circa un'asserzione fatta da Ralph Per esprimere questo fatto a RDF, dobbiamo modellare l'asserzione originale come una risorsa con quattro proprietà Questo processo è formalmente chiamato reificazione nella comunità della Rappresentazione della Conoscenza Un modello di un'asserzione è detto asserzione reificata
Proprietà per asserzioni Per modellare asserzioni RDF definisce le seguenti proprietà Soggetto Predicato Oggetto Tipo
Soggetto e predicato La proprietà soggetto identifica la risorsa che viene descritta dall'asserzione modellata il valore della proprietà soggetto è la risorsa su cui è stata fatta l'asserzione originale (nel nostro esempio, http://www.w3.org/Home/Lassila) La proprietà predicato identifica il valore della proprietà nella asserzione modellata il valore della proprietà predicato è una risorsa che rappresenta la specifica proprietà nell'asserzione originale (nel nostro esempio, creatore)
Oggetto e tipo La proprietà oggetto identifica il valore della proprietà nell'asserzione modellata Il valore della proprietà oggetto è l'oggetto nell'asserzione originale (nel nostro esempio, "Ora Lassila") Il valore della proprietà tipo descrive il tipo della nuova risorsa Tutte le asserzioni reificate sono istanze di RDF:Statement; ovvero, hanno una proprietà tipo il cui oggetto è RDF:Statement La proprietà tipo è usata anche più generalmente per dichiarare il tipo di una qualsiasi risorsa
Asserzioni RDF Una nuova risorsa con queste quattro proprietà rappresenta l'asserzione originale e può essere usata come oggetto di altre asserzioni può avere asserzioni addizionali fatte su essa La risorsa con queste quattro proprietà non è una sostituzione dell'asserzione originale, è un modello dell'asserzione Un'asserzione e la sua corrispondente asserzione reificata esistono indipendentemente in un grafo RDF ed entrambi possono essere presenti senza l'altra Si dice che il grafo RDF contiene il fatto dato nell'asserzione se e solo se l'asserzione è presente nel grafo, senza preoccuparsi della presenza della corrispondente asserzione reificata
Esempio… Ralph Swick dice che Ora Lassila è il creatore della Risorsa http://www.w3.org/Home/Lassila
Ci sono domande?