Skip to topic | Skip to bottom
Home

TechWeb08
TechWeb08.GruppoLTW14_DS_docr1.15 - 23 Jun 2008 - 12:27 - MicheleFerrazzanotopic end

Start of topic | Skip to actions

TECWEB - AA 2007/2008 - GRUPPO 14 - Documentazione del Data Source

Introintroduzione

Catalogo in formato xml di questo Data Source: http://ltw0813.web.cs.unibo.it/ds.xml

Introduzione

La logica alla base della gestione del Data Source è piuttosto semplice come è stato indicato e consigliato dai docenti.

Banalmente il nostro Data Source gestisce solo documenti xml, senza ricorrere ad alcun genere di database. Segue che l'unico linguaggio utilizzato per effettuare interrogazioni è XPath 1.0.

TUTTI i documenti che transitano per i due script fondamentali (salva.php5 e query.php5) vengono SEMPRE validati prima di essere utilizzati, generando eventualmente gli opportuni errori. Ne segue che chiunque utilizzi il nostro Data Source ha la garanzia di correttezza se rispetta il protocollo (è possibile fare delle verifiche con i link che si trovano nel seguito).

Salvataggio

L'URL dello script atto a salvare schede è http://ltw0813.web.cs.unibo.it/cgi-bin/DS/salva.php5

Non c'è nessun comportamento particolare da segnalare se non che ricevuta una scheda valida questa viene salvata, altrimenti viene ritornato un messaggio di errore.

Il caso di salvataggio può essere distinto in:

  • salvataggio di un nuovo work: in tal caso viene assegnato nel DS il valore di widentifier e settato il valore di esource, ma viene anche assegnato il valore di eidentifier;
  • salvataggio di un expression di un work esistente: viene assegnato il valore di eidentifier.

L'assegnazione di tale valore è basato su un contatore mantenuto nell'attributo valore dell'elemento indice che è la radice del documento xml che, come si evince dal nome dell'elemento radice, funge da indice dei documenti. Lo schema dell'indice è disonibile presso l'URL http://ltw0813.web.cs.unibo.it/DS/indiceSchema.xsd. Nell'indice sono semplicemente contenuti tutti i metadati delle schede salvate.

I valori di widentifier sono del tipo http://ltw0813.web.cs.unibo.it/DS/risorse/2x+1, mentre i valori di eidentifier sono del tipo http://ltw0813.web.cs.unibo.it/DS/risorse/2x+2.xml (con x che parte da 0). Gli eidentifier corrispondono alla locazione effettiva del documento. I widentifier sono dei valori che non trovano riscontro in alcun file fisico (l'unica cosa che si può dedurre è che il file +1.xml contiene la prima expression, ma di fatto non è stata mai utilizzata questa deduzione).

Query

L'URL dello script atto a rispondere a richieste di query è http://ltw0813.web.cs.unibo.it/cgi-bin/DS/query.php5

In particolare (come indicato nel protocollo) un errore 400 è generato nel caso in cui fosse richiesta una query:

  • senza parametri (provare a cliccare qui per verificare),
  • con almeno un parametro errato (provare qui).

La richiesta corretta invece produce una response con una lista di metadati (provare qui per ottenere l'intero contenuto del DS).

L'unica nota da segnalare riguarda la ricerca per wildcard: nel protocollo viene richiesta l'implementazione della wildcard *. Il nostro data source permette anche ricerche con la wildcard -. Ricerche senza wildcard sono da considerarsi come ricerche con wildcard * prima e dopo (pippo in realtà è *pippo*).

La ricerca di più parole non è disciplinata in alcun modo nel protocollo. Il nostro data source mette in OR tutte le parole (lo scopo è fare in modo di tornare più risultati possibili ma comunque diversi e non ambigui).

Quindi facendo degli esempi per riepilogare (prendo folksonomia come esempio):

  • folksonomia[0]=* : in questo caso non effettua alcun filtro e torna tutto;
  • folskonomia[0]=pi* : match con pippo , campione , pi ...;
  • folksonomia[0]=p*pp* : match con pppo , pirata , pippo, ippopotamo ...;
  • folksonomia[0]=tito libe: match con partito delle libertà, libero, titolo ...

In più è stata implementata la wildcard -, per cui sarà possibile ricercare ad esempio:

  • folksonomia[0]=-pippo : tutte le schede in cui non compare come folksonomia pippo

Le due wildcard possono essere combinate, per cui:

  • folksonomia[0]=-* : non verrà restituito alcun risultato perchè esclude tutto;
  • folskonomia[0]=-pi* : verranno scartate le schede che ad esempio hanno pippo , campione , capi ...;
  • folksonomia[0]=-p*pp* : verranno scartate le schede che hanno pppo , pirata , pippo, ippopotamo ...;
  • folksonomia[0]=-tito libe: verranno scartate le schede che hanno partito delle libertà, libero, titolo ....
  • folksonomia[0]=-p*ippo : l'asterisco non è wildcard, dunque cercherà tutte le schede eccetto quelle in cui compare esattamente p*ppo.

Intelligenza delle query

E' stata data una piccola intelligenza alla ricerca, o meglio la possibilità all'utente di sbagliare: la ricerca viene fatta senza considerare l'ultima lettera, in modo tale da gestire quasi tutti i plurali (ad esempio, cercando partito, si fa una ricerca su partit per cui vengono presi partito, partiti, partitoni...)

Altre note

Nelle situazioni in cui occorre ritornare errore, i due script oltre a settare opportunamente l'header http con il codice di errore, ritornano un frammento xml contenente codice e descrizione. Tali frammenti sono tutti recuperati dal file system che conserva diversi file, uno per ogni tipo di errore. Anche in questo caso le schede sono validate e semplicemente restituite, quindi non creano problemi a coloro i quali le manipolano.

Collegamenti

Pagine personali e diari personali dei componenti

Altri collegamenti di servizio


to top

You are here: TechWeb08 > GruppiDelCorso > GruppoLTW14 > GruppoLTW14_DS_doc

to top

Copyright © Fabio Vitali 2020 Last update of GruppoLTW14_DS_doc on 23 Jun 2008 - 12:27 by MicheleFerrazzano