il sistema momis il progetto momis (mediator environment for multiple information sources) consiste...

Post on 01-May-2015

227 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Il sistema MOMIS

Il progetto MOMIS (Mediator EnvirOnment for Multiple Information Sources) consiste nella realizzazione di un sistema intelligente di integrazione e interrogazione di informazioni da sorgenti di dati strutturati e semistrutturati.

In particolare:

• si è adottato un approccio di integrazione delle sorgenti semantico e virtuale

• l’interrogazione viene effettuata sulla vista integrata. Il query manager provvede automaticamente a generare delle query locali, a inviarle alle sorgenti e a integrare i risultati

L’architettura di MOMIS

Il wrapper

Costituisce l’interfaccia tra il mediatore e la sorgente: ad ogni sorgente corrisponde un determinato wrapper e ogni wrapper è progettato esclusivamente per una tipologia di sorgenti.

Ogni wrapper ha due compiti:

• in fase di integrazione deve fornire la descrizione della sorgente da integrare nel linguaggio ODLI3

• in fase di query processing traduce la query ricevuta dal mediatore (espressa nel linguaggio comune di interrogazione OQLI3) in una interrogazione nel query language specifico della sorgente. Deve inoltre esportare i dati ricevuti in risposta, presentandoli al mediatore attraverso il modello comune di dati utilizzato dal sistema.

Le sorgenti XML

Extensible Markup Language (XML1.0) è una W3C Recommendation 10-February-1998. Si pensa possa diventare un formato universale di scambio dati nel Web

XML ha una visione orientata ai dati

L’utente può definire i tag come preferisce (per quello che riguarda il nome e il numero) La struttura del documento è ad albero e può essere dotata di elementi innestati a qualsiasi livello di profonditàIl documento può contenere una rappresentazione opzionale della propria grammatica, la DTD

DTD - esempio<!ELEMENT University (Person)*><!ELEMENT Person (first_name, last_name, email, Status)><!ATTLIST Person Code ID #REQUIRED><!ELEMENT Status (Student | Professor)><!ELEMENT Student (year, Course*, homeaddress, rank)><!ATTLIST Student StudentId ID #REQUIRED tutor CDATA #REQUIRED><!ELEMENT Professor (ptitle, Division, rank)><!ATTLIST Professor Prof_code ID #REQUIRED Office_phone CDATA #IMPLIED><!ELEMENT Division (Location, fund, employeenr)><!ATTLIST Division description CDATA #REQUIRED sector CDATA #REQUIRED><!ELEMENT Location (city, street, number, county)><!ATTLIST Location code_location CDATA #IMPLIED><!ELEMENT Course (name,room)><!ATTLIST Course taughtby IDREF #REQUIRED><!ELEMENT first_name (#PCDATA)><!ELEMENT last_name (#PCDATA)><!ELEMENT email (#PCDATA)><!ELEMENT year (#PCDATA)><!ELEMENT rank (#PCDATA)>[…]

I dati semistrutturati

I dati semistrutturati sono quei dati dotati di una struttura irregolare, scarsamente definibile a priori e, anche se conosciuta, soggetta a cambiamenti frequenti e senza scadenze preordinate.

Il modello OEM (Object Exchange Model) è uno dei modelli più utilizzati per rappresentare i dati semistrutturati.

I dati sono visti come collezioni di oggetti che possono assumere un valore atomico o un valore complesso.

MOMIS - dati semistrutturati

Anche il sistema MOMIS si basa su una rappresentazione OEM per rappresentare sorgenti semistrutturate.

In particolare si definisce:

Oggetto semistrutturato: Un oggetto semistrutturato, indicato con so, è una tripla nella forma <id, label, value> dove :

• id è l’identificatore dell’oggetto

• label è una stringa che descrive ciò che l’oggetto rappresenta

• value è il valore dell’oggetto che può essere atomico o complesso

Object pattern: Dato un insieme di oggetti setl definito sulla sorgente semistrutturata S. L’object pattern dell’insieme setl è una coppia nella forma <l,A>,

dove l è l’etichetta degli oggetti correlati all’insieme set l , ed A= label (so’) tale

che esiste almento un oggetto so appartenente a setl con so so’

XML vs. OEM

A livello di struttura

concetto di ordine

A livello di dato mancanza di “tipizzazione” del dato

concetto di attributo concetto di riferimento concetto di link

XML-Schema

EsempioModello OEM-like

<!ELEMENT University (Person)*><!ELEMENT Person

(first_name, last_name, email, Status)><!ATTLIST Person Code ID #REQUIRED><!ELEMENT Status (Student | Professor)><!ELEMENT Student

(year, Course*, homeaddress, rank)><!ATTLIST Student StudentId ID #REQUIRED tutor CDATA #REQUIRED><!ELEMENT Professor (ptitle, Division, rank)><!ATTLIST Professor Prof_code ID #REQUIRED Office_phone CDATA #IMPLIED> […]

Query languages

Analisi dei query language esistenti sulla base:

1) Desiderata per un query language

2) XML Query Requirements: working draft 31 January 2000 del W3C

• XML-QL• LOREL• XSL

• XQL• XML-GL• WEBL

• caratteristiche generali• modello dati• funzionalità del linguaggio

XML-QL

WHERE <University>

<Person>

<first_name>$fn

</first_name>

</Person>

</University>

CONSTRUCT <result>$fn</result>

XML-GL

Il traduttore DTD-ODLI3

La traduzione di elementi critici

• Gestione degli attributi

• Chiavi primarie, esterne, candidate

• Tipi di dato

• Strutture dati

• Composizione di strutture

Il traduttore DTD-ODLI3

L’algoritmo di traduzione

1. Parsing della DTD

2. Determinazione delle chiavi

3. Traduzione del documento

A) Individuazione della DTD

B) Risoluzione delle entità e delle sezioni condizionali

C) Risoluzione di contenuti innestati

Interazione attraverso un’interfaccia grafica con l’utente per la scelta delle chiavi

Traduzione seguendo le regole di conversione individuate

Il traduttore DTD-ODLI3

Le regole di traduzione

Elementi di tipo semplice

Il traduttore DTD-ODLI3

Le regole di traduzione

Elementi di tipo complesso

Il traduttore DTD-ODLI3

Le regole di traduzione

Attributi

Il traduttore DTD-ODLI3

Le regole di traduzione

Occorrenze

Il software

Il software è stato realizzato utilizzando il linguaggio java. In particolare sono state sviluppate circa 5500 righe di codice commentato.

Sono state utilizzate le classi java javax.swing.text.html.parser, che nonostante siano state progettate per operare con HTML possono essere utili anche in questo contesto

DTD - esempio<!ELEMENT University (Person)*><!ELEMENT Person (first_name, last_name, email, Status)><!ATTLIST Person Code ID #REQUIRED><!ELEMENT Status (Student | Professor)><!ELEMENT Student (year, Course*, homeaddress, rank)><!ATTLIST Student StudentId ID #REQUIRED tutor CDATA #REQUIRED><!ELEMENT Professor (ptitle, Division, rank)><!ATTLIST Professor Prof_code ID #REQUIRED Office_phone CDATA #IMPLIED><!ELEMENT Division (Location, fund, employeenr)><!ATTLIST Division description CDATA #REQUIRED sector CDATA #REQUIRED><!ELEMENT Location (city, street, number, county)><!ATTLIST Location code_location CDATA #IMPLIED><!ELEMENT Course (name,room)><!ATTLIST Course taughtby IDREF #REQUIRED><!ELEMENT first_name (#PCDATA)><!ELEMENT last_name (#PCDATA)><!ELEMENT email (#PCDATA)><!ELEMENT year (#PCDATA)><!ELEMENT rank (#PCDATA)>[…]

interface university(source semistructured univers_xmlextent university ){

attribute set<person> person ;

};

interface person(source semistructured univers_xmlextent person key (person_code)){

attribute string person_code ; attribute string first_name ; attribute string last_name ; attribute string email ; attribute status status ;

};

interface status(source semistructured univers_xmlextent status ){

attribute student student ;

} union status1 {

attribute professor professor ;

};

ODLI3 - traduzione

interface student(source semistructured univers_xmlextent student key (student_studentid)candidate_key cK0 (student_tutor)){

attribute string student_studentid ;

attribute string student_tutor ; attribute string year ; attribute set<course> course ; attribute string homeaddress ; attribute string rank ;

};

interface professor(source semistructured univers_xmlextent professor key (professor_prof_code)){

attribute string professor_prof_code ;

attribute string professor_office_phone ?;

attribute string ptitle ; attribute division division ; attribute string rank ;

};

ODLI3 - traduzione

Conclusioni

• Attraverso questo wrapper si permette al sistema MOMIS di interagire con sorgenti semistrutturate

• Occorre attendere la standardizzazione di un query language per avere un wrapper completo

top related