Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria – Sede di Modena Corso di Laurea in Ingegneria Informatica – Nuovo Ordinamento Realizzazione di una interfaccia Web per la progettazione di uno schema ER e la sua traduzione in RDF Relatore: Prof. Sonia Bergamaschi Candidato: Mattia Bonacorsi Anno Accademico 2003-2004 Scopo e strumenti Scopo: creazione pagine Web dinamiche per la progettazione concettuale di database con il formalismo grafico del modello ER e loro traduzione nello standard W3c RDF Tecnologie Utilizzate: ASP.NET, adottato per lo sviluppo della applicazione, utilizza una emulazione di modello ad eventi in sostituzione del modello lineare di ASP RDF: (Resource Description Framework) è un linguaggio per la descrizione delle informazioni su Web. RDF è stato creato per produrre informazioni che devono essere elaborate, insieme al loro significato da un agente software Strumenti Utilizzati: Visual Studio .NET Internet Information Service 5.0 ASP.NET Benefici di ASP.NET rispetto ad ASP Separazione del codice che implementa la logica dal codice per la presentazione delle informazioni Modello di programmazione basato sugli eventi Più funzioni integrate. Non è più necessario accedere esplicitamente alle variabili modulo ma è sufficiente aggiungere runat=“server” al modulo e a ogni suo elemento Miglioramento della interfaccia grafica per creare pagine: è possibile disegnare elementi con un semplice drag-and-drop Debug reale. Con Visual Studio .NET si può esaminare passo passo il codice ASP.NET Round Trip Analizziamo la divisione di lavoro di un form in una pagina Web Il browser presenta il form all’utente L’utente interagisce con il form L’iterazione dell’utente con i componenti server causano un invio della pagina al server Il server elabora la pagina inviata e la restituisce al browser Il browser presenta nuovamente il form all’utente Visto che le pagine Web sono ricreate ogni volta che sono spedite al server, le informazioni associate alla pagina devono essere, in qualche modo, salvate e ricaricate ad ogni round trip. Le modalità per realizzare ciò sono: Modalità che memorizzano le informazioni nel client o nella pagina: View State, Campi Nascosti, Cookies, Query String Modalità che memorizzano le informazioni nel server: Variabili Applicazione, Variabili Sessione, Supporto Database RDF è un linguaggio per la descrizione delle risorse Web La pagina http://www.example.org/index.html è stata creata il 16 agosto 1999 Dichiarazione RDF <?xml version=“1.0”?> <rdf:RDF xmlns:rdf=“http://www.w3.org/1999/02/22-rdf-syntax-ns#” xmlns:exterms=“http://www.example.org/terms/”> <rdf:Description rdf:about=“http://www.example.org/index.html”> <exterms:creation-date>August 16, 1999</exterms:creation-date> </rdf:Description> </rdf:RDF> Codice RDF/XML Grafo RDF http://www.example.org/index.html http://www.example.org/terms/creation-date 16 agosto 1999 Terna RDF RDF Schema RDF Schema fornisce gli strumenti necessari per creare un vocabolario RDF. Un vocabolario RDF descrive le classi e le proprietà utilizzate nell’applicazione RDF Schema definisce delle classi e delle proprietà che sono contenuti nel vocabolario dei termini di W3c (rdf:type, rdfs:Class …) Sulla base di questo vocabolario è possibile definire nuovi vocabolari che definiscono le classi e le proprietà necessarie per l’applicazione; le proprietà sono definite in termini di dominio e di range Ex:MotorVehicle rdf:type rdfs:Class Ex:weightInKg rdf:type rdf:Property Ex:weigthInKg rdfs:domain ex:MotorVehicle Ex:weigthInKg rdfs:range xsd:integer <?xml version=“1.0”?> <!DOCTYPE rdf:RDF [<!ENTITY xsd “http://www.w3.org/2001/XMLSchema#”>]> <rdf:RDF xmlns:rdf=“http://www.w3.org/1999/02/22-rdf-syntax-ns#” xmlns:rdfs=“http://www.w2.org/2000/01/rdf-schema#” xmlns:exterms=“http://www.example.org/terms/”> <rdfs:Class rdf:ID=“MotorVehicle”/> <rdfs:Property rdf:ID=“weigth”> <rdfs:domain rdf:resource=“#MotorVehicle”/> <rdfs:range rdf:resource=“&xsd;integer”/> </rdf:Property> </rdf:RDF> Due applicazioni realizzate una applicazione per la progettazione concettuale di database attraverso interfacce Web grafiche che permette il disegno di schemi ER <?xml version="1.0"?> <! DOCTYPE rdf:RDF [<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">]> <rdf:RDF xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns# xmlns:er="http://localhost/TESI/RDF/Vocabulary/" xmlns:dt="http://localhost/TESI/RDF/Datatype/" xml:base="http://localhost/TESI/RDF"> <rdf:description rdf:about="#Persona"> … Un applicazione permette la traduzione degli schemi disegnati in codice RDF/XML Pagina Web per il disegno di schemi ER Per disegnare gli oggetti grafici sono state create delle classi ed è stato ereditato il metodo Render, comune a tutti i controlli, che viene richiamato ad ogni round trip e permette di generare il codice HTML corrispondente all’elemento L’interfaccia grafica realizzata permette di disegnare schemi ER selezionando gli elementi da disegnare dalla barra in alto e posizionandoli nel disegno Per mantenere i controlli disegnati in precedenza, essi sono stati inseriti in una variabile sessione, dato che il meccanismo view state non funziona per le collezioni di oggetti. Gli oggetti inseriti nella variabile sessione vengono ricaricati all’interno della pagina ad ogni round trip public void SalvaComponenti() { Control[] cl = new Control[Panel1.Controls.Count]; Panel1.Controls.CopyTo(cl,0); Session["Controls"] = cl; } Procedura per salvare i componenti public void CaricaComponenti() { if (Session["Controls"]!=null) { Control[] cc = (Control[])Session["Controls"]; foreach(Control c in cc) { if ((c as Control)!=null) { if (c.GetType().ToString().IndexOf("LibreriaDiClassi")>=0) Panel1.Controls.Add(c); } } } } Procedura per caricare i componenti Dichiarazione di nuovi tipi di dato RDF Per poter creare un vocabolario RDF degli elementi utilizzati dall’applicazione è necessario definire nuovi tipi di dato RDF mette a disposizione tre modalità, che possono essere combinate tra loro per definire nuovi tipi di dato: Derivazione con restrizione Lista Derivazione per unione Gerarchia dei tipi di dato definiti in RDF Schema <xsd:simpleType name="maxCard"> <xsd:union> <xsd:simpleType> <xsd:restriction base="xsd:positiveInteger"/> </xsd:simpleType> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="N"/> <xsd:enumeration value="n"/> </xsd:restriction> </xsd:simpleType> </xsd:union> </xsd:simpleType> Esempio di dichiarazione di un nuovo tipo di dato Creazione di un vocabolario RDF per la descrizione di schemi ER Per la traduzione di uno schema ER in RDF è necessario creare un vocabolario che contenga tutti gli elementi che possono essere disegnati. Oltre agli elementi, il vocabolario deve contenere tutte le definizioni delle proprietà di questi elementi. A questo proposito: Il metodo di definizione delle proprietà di RDF, in termini di dominio e range, ha portato alla creazione di una gerarchia degli elementi che compongono uno schema ER In RDFS è permesso definire classi che ereditano direttamente da più di una classe Elemento Attributo ElementoConCardinalità ElementoConAttributi AttributoMultiplo Entità Associazione AssociazioneBinaria AttributoComposto AssociazioneNaria Partecipazione ElementoDiGeneralizzazione Generalizzazione Subset Gerarchia degli elementi all’interno del vocabolario RDF Traduzione dello schema ER disegnato in RDF La pagina Web dinamica per la traduzione dello schema ER disegnato in codice RDF/XML: Pagina per la traduzione in RDF public void AggiungiRiga(int tab, string text) { for(int i=0;i<tab;i++) txtRDF.Text= txtRDF.Text+"\t"; txtRDF.Text= txtRDF.Text+text+"\n"; } Procedura Aggiungi Riga Legge la variabile sessione che contiene tutti gli oggetti che rappresentano gli elementi disegnati e riceve tramite query string un parametro che indica se tradurre le informazioni di posizionamento Scorre più volte la collezione di oggetti traducendo ogni volta una tipologia di elementi, le sue proprietà e gli elementi in esso contenuti Per produrre un frammento di codice si serve della funzione AggiungiRiga passandogli il testo da visualizzare Conclusioni e lavoro futuro Il lavoro svolto ha portato alla realizzazione di un’applicazione Web che permette il disegno di schemi ER che: Permette di disegnare tutti e 9 gli elementi che compongono uno schema Effettua numerosi controlli sui dati immessi dall’utente e sul posizionamento degli elementi e traduce gli schemi disegnati in RDF Includendo o meno le informazioni di posizionamento Presentando, nell’ultimo capitolo della tesi, una bibliografia ragionata su RDF che riassume dove trovare risorse utili su questo nuovo standard Possibili sviluppi dell’applicazione sono: Il recupero di uno schema ER disegnato in precedenza partendo dal codice RDF/XML con le informazioni di posizionamento che aveva generato Modifica e Cancellazione degli elementi disegnati Eliminazione di vincoli grafici che non permettono, ad esempio, di poter creare una qualsiasi identificazione esterna Controlli complessi sugli elementi dello schema come, ad esempio, il controllo che lo schema sia connesso