Explication et indication de diagnostic
Bonsoir,
Désirant réaliser un outil de diagnostic dans un domaine particulier je souhaiterais avoir quelques informations pour que je puisse mieux comprendre certains aspects pour la réalisation.
Ce projet s'installe dans le domaine du web sémantique du fait que la base de connaissances soit le web et que la recherche doit posséder un sens pour retourner un résultat correct.
Je m'explique, à partir de certains mots-clefs recueillis par mon programme que je souhaiterais développer en langage C ou C++ (est ce possible? avec l'utilisation de librairies) celui ci doit rechercher les résultats correspondants sur le web ce qui implique une analyse pour conserver les résultats pertinents et les stocker dans un fichier texte.
Pour exemple, si le programme concerne le domaine médicale et que les maux sont "vomissement, fièvre, rougeur" (mots cléfs de recherche pour la requête), le programme devra chercher les maladies possible avec ces maux et stocker dans le fichier texte les réponses trouvés sous forme de résumé ou de lien ("paludisme...").
J'aurai donc besoin de votre aide pour la mise en place du projet, les informations nécessaires, logiciels, langages de programmation pour réaliser cela.
D'après mes recherches, il est possible d'utiliser une librairie en C (LibCurl) ou alors l'utilisation d'ontologie avec le moteur de recherche sémantique Corese mais cette alternative me semble plus complexe et je ne sais pas s'il est possible de coupler ça avec le langage C.
Merci d'avance et bonne soirée
Prérequis technologiques d'un projet pour le Web Sémantique
Bonjour Jérém08
D'ordre général, on pourrait répondre "oui" à l'ensemble des questions que vous posées. L'inconnu, c'est le temps dont vous disposez pour réaliser le projet. De la façon dont l'énoncé est formulé, la réalisation de ce projet se compterait en année/personne. Certains choix technologiques pourraient sans doutes raccourcir le délais.
Il est aussi important de s'avoir que le projet du web sémantique regroupe un ensemble de technologies qui sont à divers niveaux de maturité. En d'autre termes, c'est un domaine de recherche très actif et en mouvance. D'ailleurs, l'énoncé que vous émettez est une partie des multiples domaines de recherches du web sémantique. Plus particulièrement, vous touchez au domaine de la construction automatique d'ontologies à partir des données du Web.
Concernant les aspects technologiques de votre question. D'abord, il faudrait envisager de faire le projet en Java. Il existe des outils, ou des interfaces qui permettent le développement d'application en C/C++, mais la majorité des outils associés au web sémantique sont développés en Java. (ici, j'émets une opinion personnelle, il ne faut surtout pas envisager faire ce type de projet avec les outils de Microsoft)
Pour un projet de cette envergure, vous devez répondre à plusieurs questions:
a) qu'elle est le langage ontologique à utiliser ?
b) quel est l'éditeur à choisir pour éditer l'ontologie ?
c) qu'elles sont les technologies qui permettent d'interfacer mon code aux ontologies ?
d) comment puis-je opérationnaliser l'ontologie ?
LANGAGE ONTOLOGIQUE
Le principal langage de modélisation utilisé pour le web sémantique est le Web Ontology Language normalisé par le W3C. (Pour plus d'infos, voir http://fr.wikipedia.org/wiki/Web_Ontology_Language et http://www.w3.org/2004/OWL/). Il en existe d'autres qui sont efficaces, mais ils sont soit propriétaires, soit peu matures.
Sur le site de développez, vous trouverez plusieurs ouvrages de référence sur la modélisation ontologique.
ÉDITEUR
Pour éditer une ontologie OWL ça prend un éditeur. À ma connaissance, les trois principaux éditeurs d'ontologies sont les suivants:
1- Protégé, produit OpenSource de la faculté de médecine de l'Univerité Stanford (http://protege.stanford.edu/)
2- TopBraid Composer, produit commercial de TopQuadrant (http://www.topquadrant.com/)
3- NeOn toolkit, Produit OpenSource issu du projet européen de recherche sur les applications sémantiques (http://www.neon-project.org/)
Opinion: Protégé est un incontournable dans le domaine. TopBraid a l'avantage d'être orienté résultat puisqu'il vient du domaine commercial. NéOn est très intéressant pour la recherche sur les ontologies.
API DE PROGRAMMATION
Après le choix de l'éditeur vient le choix de l'API qui permettra la communication entre votre programme informatique et les ontologies. Ici, deux choix s'offrent à vous: Jena (http://jena.apache.org/), projet Apache pour la construction d'un cadre logiciel pour la construction d'applications pour le web sémantique. L'autre choix est le Protégé-OWL API (http://protege.stanford.edu/overview/protege-owl.html) comprenant l'ensemble des bibliothèques Java utilisé pour la construction de l'éditeur Protégé.
Personnellement, je préfère le Protégé-OWL que je trouve très bien intégré à la manipulation de fichiers OWL et la manipulation des raisonneurs (prochain sujet) que je considère défaillant dans Jena... Mais sur ce point, ce site regorge de personnes beaucoup plus informées que moi qui pourront compléter ce commentaire.
OPÉRATIONNALISER L'ONTOLOGIE
Maitenant, un sujet important des ontologies est son opérationnalisation (On veut qu'elle fasse quoi et comment ?). On peu vouloir réaliser des requêtes à la SQL. Dans ce cas, on utilise le SPARQL comme langage de requête. On peut aussi vouloir faire des inférences logiques du style syllogisme: si A implique B, et que B implique C, alors A implique C. Il existe une panoplie de moteurs d'inférence (Pellet, Racer, FaCT++ (Pour le C+), KAON2.. etc, voir http://www.cs.man.ac.uk/~sattler/reasoners.html pour plus de détails). On peut aussi vouloir opérationnaliser l'ontologie avec des règles du stype: SI antécédents ALORS conclusions. Protégé et Topbraid offrent des solutions qui permettent de produire des ontologies dans cette perspective.
CONCLUSION
Voilà!, cette réponse pourrait être davantage élaborée et sur plusieurs points elle mériterait d'être nuancée. Cependant je pense qu'elle couvre l'ensemble des sujets nécessaires à la réalisation de votre projet.
Bonne chance et n'hésitez pas à communiquer avec moi pour plus d'informations.
:pc:
Proposition de plan de travail
Le type de problèmes que vous souhaitez traiter (tel que défini dans la première question) m’amènent à formuler quelques questions-réponses :
- Est-ce que vous sauverez du temps pour produire un prototype en utilisant les ontologies plutôt que les technologies que vous maitrisez déjà ? J’en doute.
- Est-ce qu’un prototype construit avec les ontologies produira une bonne preuve de concept pour la réalisation d’un projet dont la forme ressemble à l’énoncé que vous avez émis ? Sans l’ombre d’un doute.
Il y a donc une optimisation à réaliser entre rapidité de réalisation et qualité de la preuve de concept. Vous avez donc un choix à faire.
Si vous choisissez quand même d’aller de l’avant avec une solution à base d’ontologies, voici le plan de travail que je vous propose :
1-faire une distinction entre environnement de développement (ED) et environnement client (EC).
Pour la construction du prototype, vous devrez vivre en tant que développeur, dans un environnement où vous devrez faire appel à plusieurs outils. En revanche, il existe une solution pour construire un environnement client qui soit intégré « Eclipse est la solution »
2- Si vous avez un certain budget pour votre projet je vous suggère de faire l’acquisition de TobBraid Composer (TBC) « au moins le standard edition »
Voici pourquoi. D’abord TBC est une réelle application Eclipse dont les plug-ins sont agrégés autour d’un noyau OSGi, « ce que n’est pas Protégé 4 qui est construit aussi dans Eclipse mais qui en revanche (hélas) utilise un mécanisme d’agrégation de plugin propriétaire à l’Université Stanford».
3- Construire l’architecture de l’environnement client (EC).
Je construirais l’EC autour de TopBraidComposer « FREE EDITION ». En plus d’être gratuit, cet environnement permet d’éditer des ontologies, faire des inférences simples et il est possible d’enrichir ses fonctionnalités en greffant des plug-in Eclipse que vous aurez conçus
4- Construire l’architecture de l’environnement développeur (ED)
Le but de l’ED est de vous permettre de développer des plug-ins Eclipse à base d’ontologies que vous grefferez au EC. Il y a cependant un problème. TBC étant commercial est un environnement fermé. Vous n’avez pas accès directement au code et à certaines fonctionnalités intéressantes de Protégé. Une de ces fonctionnalités, par exemple, est la génération de code Java pour la manipulation d’une ontologie de domaine. Protégé offre aussi d’autres avantages que vous ne pourrez négliger dans une implantation ultérieure.
5- Construire vos fonctionnalités et les intégrer dans l’EC
Voici grosso modo la liste de ce qu’il faut faire ainsi que les compétences à acquérir :
a) vous devez vous familiariser avec la construction de plug-in eclipse (c’est impératif… et ça demande beauuuuuucoup d’investissement en temps.)
b) Télécharger Protégé 3.4.8 et son code source
c) Faire un plug-in Eclipse de code source de protégé
d) Intégrer le plug-in de Protégé dans l’EC et dans l’ED
e) Construire votre ontologie de domaine dans Protégé ou dans TBC
f) Pour une ontologie de domaine que vous aurez construite, générer le code Java à partir de Protégé
g) Importer le code dans l’ED et en faire un plug-in que vous pourrez intégrer dans l’EC
h) Construire l’application cliente qui manipule l’ontologie de domaine et l’intégrer dans l’EC
6- Conclusion
J’ai moi-même utilisé ce plan de travail pour la réalisation d’un outil de construction d’ontologies à partir d’une représentation graphique et semi-formelle (OntoCASE "accronyme d'Ontology CASE Tool" accessible par Google). Et le plan fonctionne.
Bon voilà, espérant que cette proposition de plan de travail pourra vous aider dans votre projet.
A+