Spécification interface Web pour descriptions botaniques

$Header$

Les données

Télécharger le fichier XML: flora_text.xml.zip (2 132 665 octets). Les données au plus haut niveau sont ainsi:
XPath
Donnée

/table/tr/td[1]
taxon_id

clé pour le nom d'espèce (voir Flora of China) ; A FAIRE: j'ai ça dans une autre table.
/table/tr/td[2] publication_id clé pour la référence à la publication (article, livre, ...)
/table/tr/td[3] category_id spécifie le type de contenu, ici =12021 pour description botanique
/table/tr/td[4] content la description botanique XML-isée

note

Spécification

En attendant d'avoir des données correspondant à un modèle sémantique solide, nous allons exploiter la structure existante dans les flores, en terme d'Organes ayant une suite de propriétés textuelles "brutes". On souhaite faire des requêtes à la Google étendues du genre:

family:Rosaceae basal_leaves:glabrous petals:5,yellow spine: edible
Le serveur Web traduira ceci en une requête XPath sur la base XML tenant compte de la structure du document XML:
//species[ .//family="Rosaceae"]
              [contains( .//leaf/basal, "glabrous")]
              [contains( .//petals, "five")]
              [contains( .//petals, "yellow")]
              [ .//spine ]
              [contains( .,"edible") ]
Pour comprendre la structure des descriptions botaniques et comment elles ont été "XML-isées", voir "syntaxic processing" et "UML diagrams". Grâce à cette implémentation, le serveur Web retournera une page comprenant:

Problèmes

Design

Let's switch to English here; I'll translate the beginning when I'll have time.

Objects

The most important object is obviously the Query, with two properties: the "Google" style query,

family:Rosaceae basal_leaves:glabrous petals:5,yellow

and the XPath query (adapted to the actual structure of the XML data) :

//species[family="Rosaceae"]
[contains( leaf/basal, "glabrous")]
[contains( petals, "five")]
[contains( petals, "yellow")]

In fact a Query is an aggregation of one or more Criterium objects; in this example we have four (petals have two criteria). In turn a Criterium essentially connects an Organ and a plain Word. The Word is possibly connected to a Property (e.g. yellow with color ).

This is the query aspect. Now for the result aspect, a Query is associated with a set of Species, and a set of Families, both satisfying the Query.

Criterium class diagram in SVG - Criterium class diagram in PNG (Poseidon/ArgoUML source file) :

Criterium class diagram

Note: the results for the Query is the intersection of the results for all the Criterium objects.

Now for the user interaction package, we have:

Software tools

We will use an XML database compliant with the XML:DB standard. At least two free products exist: namely -;) eXist, and apache.org/xindice . We need a linguistic tool to try to associate a Word with a Property . I allready used WordNet to prepare the XML data set, so it just natural to continue using it.