Il Sistema MOMIS Il progetto MOMIS (Mediator EnvirOnment for Multiple Information Sources) consiste nella realizzazione di un sistema intelligente d’integrazione ed interrogazione di informazioni da sorgenti di dati strutturati e semistrutturati. L'architettura di MOMIS Obiettivi Gli obiettivi di questa tesi sono stati due: Analisi Critica dell’evoluzione del Web: Semantic Web Momis nel Web Semantico Sviluppo del traduttore della conoscenza di Momis in un formato condivisibile da sistemi a Mediatore esterni usando le nuove specifiche del w3c (XML-Schema, RDF e RDF-Schema). Web Semantico Processare automaticamente le informazioni scambiate. Ampio uso di agenti. Link suggeriti: www.ontoknowledge.org/oil www.daml.org www.w3.org/2001/sw www.agentlink.org Uso degli Agenti • Prescrizione. • Convenzione. • Distanza. • Valutazione. • Compatibilità. http://www.scientificamerican.com/2001/0501berners-lee.html Componenti del Web Semantico XML: Garantisce l'interoperabilità sintattica RDF(Resource Description Framework): Supporto all'interoperabilità semantica, attraverso la descrizione di metadati. Un’ontologia: “documento che definisce le relazioni esistenti tra termini distinti.” Architettura del Web Semantico Quello che il web Semantico ha bisogno é un linguaggio per formalizzare una semantica e ragionare con le informazioni che si vogliono condividere. Queste necessità vanno a definire un nuovo livello nell'architettura del Web: il livello logico. Livello Logico Molte le proposte per occupare tale livello, tra queste: OIL( Ontology Inference Layer) DAML+OIL (DARPA Agent Markup Language) che definiscono, in sostanza, un linguaggio d'alto livello per esprimere la semantica dei concetti che si vogliono condividere e si appoggiano ad una logica descrittiva per poter ragionare con i dati. Comunque fino a quando non si arriverà all'uso di un'unica logica descrittiva il supporto che linguaggi di questo tipo potranno dare sarà parziale in quanto si limiterà la capacità di ragionare alle applicazioni in grado di capire la particolare logica descrittiva utilizzata. MOMIS nel Web Semantico Nel Web Semantico la definizione di un’ontologia rappresenta l’obiettivo finale per far sì che le informazioni condivise siano elaborabili automaticamente, in MOMIS la definizione di un’ontologia é solamente il punto di partenza del processo d’integrazione. MOMIS presenta problematiche che vanno oltre a quelle del Web Semantico, anche se l’esigenza di fondo é la stessa: garantire l’interoperabilità sintattica e semantica di ciò che si vuole condividere. Livello Logico: OLCD Livello Schema: ODLI3 /XML-Schema + RDF-Schema/RDF Livello Dati: XML ODLI3 Supporto di sorgenti strutturate (database relazionali, ad oggetti e file system) e semistrutturate. regole d'integrità (if then rule), definite sia sugli schemi locali che riferite allo schema globale. regole di mediazione, o mapping rule, utilizzate per specificare il legame fra concetti globali e locali. Traduzione automatica e trasparente all'utente delle descrizioni nella DL OLCD per poter eseguire il controllo di consistenza e l'ottimizzazione semantica delle query. body alternativi di una classe tramite l'operatore di union relazioni terminologiche, che permettono di specificare relazioni di sinonimia (SYN), ipernimia (BT), iponomia (NT) e relazione associativa (RT) tra due tipi. XML-Schema • • XML linguaggio per trasferire testo XML linguaggio per trasferire dati XML-Schema Vs DTD I DTD hanno una sintassi particolare diversa da XML, così da dover creare strumenti appositi per la validazione. I DTD non distinguono tra nome del tag e tipo del tag, ed hanno solo due tipi: complesso (cioè strutturato) e semplice (cioè CDATA o #PCDATA). XML Schema, invece, fornisce un set complesso di tipi, a cui i tag e il loro contenuto debbono aderire. XML-Schema ha un approccio object-oriented, permettendo di ampliare i tipi disponibili e di estenderne e precisarne le proprietà. XML Schema é scritto in XML, permettendo l'uso di applicazioni XML per la verifica della validità dei dati espressi. Esempi XML-Schema <simpleType name="bodytemp"> <restriction base="decimal"> <minInclusive value="36.5"/> <maxInclusive value="44.0"/> </restriction> </simpleType> <simpleType name="healthbodytemp"> <restriction base="bodytemp"> <maxInclusive value="37.0"/> </restriction> </simpleType> RDF RDF è un linguaggio per descrivere delle risorse. Per far ciò XML è troppo flessibile. Ad esempio ci sono molti modi, in XML, per indicare che una macchina è di colore rosso: <car color="red" /> <car> <color>red</color> </car> <car color="#cc" /> <color id="cc" shade="red" /> RDF sfrutta la convenzione degli URI " RDF è aperto; é immediato aggiungere nuove proprietà. " RDF-Schema RDF-Schema serve per definire il vocabolario delle risorse e delle proprietà usate in un particolare contesto. • Definendo Classi per le modellare i concetti che si vogliono descrivere • Definendo Proprietà per descrivere le caratteristiche dei concetti modellati. Esempio RDF <rdf:RDF> <rdf:Description about="http://www.auto.com/#redcar"> <rdf:type resource=“schema.rdf#Car”> <s:color>Red</s:color> </rdf:Description> </rdf:RDF> Esempio RDF-Schema <rdf:RDF xml:lang="en" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> <rdfs:Class rdf:ID=“Car"> <rdfs:comment>A vehicle with 4 wheels.</rdfs:comment> <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/03/example/classes#Vehicle"/> </rdfs:Class> <rdf:Property ID=“color"> <rdfs:comment>Color of a Car</rdfs:comment> <rdfs:range rdf:resource="http://www.w3.org/2000/03/example/classes#Literal"/> <rdfs:domain rdf:resource="#Car"/> </rdf:Property> </rdf:RDF> XML-Schema & RDF-Schema XML-Schema e RDF(S) nascono entrambi per facilitare la condivisione delle informazioni sul web, ma hanno caratteristiche complementari: XML-Schema fornisce una serie di primitive per vincolare la struttura di un documento, definire il numero di occorrenze e il tipo dei dati; mentre non fà altrettanto per quanto riguarda le primitive per specificare la semantica. RDF-Schema fornisce alcune primitive per definire la semantica dei concetti espressi: Class,Property, subclassOf, subpropertyOf, type ecc..; ma non fà altrettanto per quanto riguarda la struttura del documento. Collegamento XML-Schema e RDF-Schema Attualmente non esiste un meccanismo per la combinazione di RDF(S) e XMLSchema, di conseguenza bisogna cercare di ingegnarsi in qualche modo. Una possibilità è data dal meccanismo degli openAttrs previsto nelle specifiche di XML-Schema il quale permette di utilizzare nella definizione di uno schema attributi provenienti da namespace esterni. <complexType name="PersonType" meta:interface="interfaces.rdf#Person"> ODLi3 Vs XML-Schema XML-Schema fornisce il supporto alle relazioni fondamentali di ODLi3: Part - Of: Attraverso elementi locali o riferimenti ad elementi globali. Kind - Of: XML-Schema ha il concetto di tipo del tag attraverso l'attributo type Is - a: A livello di documento istanza indicando esplicitamente il tipo del tag. In generale XML-Schema riesce a fornire un supporto pieno ai concetti di ODLi3: Chiavi : <key> e <unique> Foreign Key: <keyRef> Ereditarietà: <extension base=”....”> NO ereditarietà multipla !!!!!! Tipi ODLi3 Documenti RDF(S) Il documento XML-Schema é accompagnato da un documento RDF-Schema ed un documento RDF nell’ottica di preservare la semantica del risultato dell’integrazione. Questi due documenti si basano sui concetti definiti in un terzo documento del quale possiamo vedere qui una rappresentazione grafica Esempio di Traduzione 1-5 interface Course ( source object Univers extent Courses key (course_name) ) { attribute string course_name; attribute Professor taught_by;} union Course_1 { attribute string course_name; attribute string course_description; attribute Professor taught_by; }; Esempio di Traduzione 2-5 <group name="bodyCourse1"> <sequence> <element name="course_name" type="string"/> <element name="taught_by" type="momis:ProfessorType" xsi:nillable="true"/> </sequence> </group> <group name="bodyCourse2"> <sequence> <element name="course_name" type="string"/> <element name="course_description" type="string"/> <element name="taught_by" type="momis:ProfessorType" xsi:nillable="true"/> </sequence> </group> Esempio di Traduzione 3-5 <complexType name="CourseType" meta:interface="http://sparc20.ing.unimo.it/interfaces.rdf#Course"> <choice> <group ref="momis:bodyCourse1"/> <group ref="momis:bodyCourse2"/> </choice> <attribute name="persistent" type="boolean" use="default" value="true"/> <attribute name="view" type="boolean" use="default" value="false"/> </complexType> Esempio di Traduzione 4-5 <element name="Course" type="momis:CourseType"> <key name="Coursepk"> <selector xpath="child::*"/> <field xpath="course_name"/> </key> </element> Esempio di Traduzione 5-5 RDF-Schema: <rdfs:Class rdf:ID="Course"> <rdfs:subclassOf rdf:resource="momis_schema#Interface"/> </rdfs:Class> RDF: <s:Course rdf:ID="Course"> <m:source m:tipo="object" rdf:value="Univers"/> <m:extent>Courses</m:extent> <m:olcd dc:description=" " rdf:value="^ [ course_desc : string , course_name : string , taught_by : Professor , course_name0 : string , taught_by0 : Professor ] "/> </s:Course> Il Software Il software è stato realizzato utilizzando il linguaggio Java. In particolare sono state sviluppate circa 6000 righe di codice commentato. Sono state utilizzate le API JAXP1.1 della SUN (Java Api for Xml Parsing), in particolare le classi dei package SAX (Simple Api for Xml) e XSLT (XML Style Sheet Translation) il cui uso congiunto permette di convertire una generica struttura dati in XML. Modifica parser ODLI3 Creazione SAXSource Sviluppo Trasformer XSLT Conclusioni Il traduttore realizzato cerca di sfruttare al meglio le potenzialità di RDF, a mio avviso si dovranno seguire le evoluzioni di tale standard in quanto promette di cambiare il modo di condividere le informazioni in rete. Concludo accenando a XQUERY l'ultima proposta in merito ad un query language per XML, studiata in questa tesi, che offre il supporto ai tipi di dato di XML-Schema; durante il lavoro di questa tesi si è sviluppato un parser che effettua il controllo sintattico di una query formulata in tale linguaggio, non si è andati oltre in quanto le specifiche al momento di sviluppo del parser erano a livello di Working Draft.