Proposer un contenu Identifiant Identifiant Mot de passe Mot de passe Connexion

Proposer un contenu Identifiant Identifiant Mot de passe Mot de passe Connexion automatique Se connecter Pas de compte ? S'inscrire ! DÉPÊCHES | JOURNAUX | LIENS | FORUMS | WIKI | RÉDACTION Rechercher # j'ai pas tout saisi. Posté par domble (page perso) le 04/09/17 à 00:19. Évalué à 6. Salut, Le sujet de l'article est vraiment sympa, c'est quelque chose que je ne connais pas du tout. par contre après avoir lu et relu, j'ai cette sensation de lire quelque chose de génial mais de pas comprendre de quoi il s'agit vraiment. Du coup bravo pour l'article, qui va me conduire à quelques heures de recherche sur le web pour essayer d'en savoir plus. Par contre je sais pas si c'est moi qui suis à la ramasse sur un sujet connu ou pas. -- «Un peuple qui élit des corrompus, des rénégats, des imposteurs, des voleurs et des traîtres n’est pas victime! Il est complice» — G Orwell [^] # Re: j'ai pas tout saisi. Posté par YBoy360 le 04/09/17 à 06:56. Évalué à 4. Qu'est-ce que tu n'as pas compris? Pour avoir lu toute la doc sur Nepomuk, le desktop sémantique, et même avoir fait un plugin Firefox s'interfaçant avec Nepomuk (en 2010), je peux t'assurer que c'est très clair, par rapport à ce que j'ai dû ingurgiter comme doc. [^] # Re: j'ai pas tout saisi. Posté par djano le 18/09/17 à 10:43. Évalué à 5. Moi aussi j'ai trouvé ça très bien exposé et facile à comprendre. Rattaché les explications à la POO m'a beaucoup aidé. Je te rejoins à propos des articles classiques sur RDF et OWL qui ne convainquent que les convaincus. Ils sont difficiles à lire et vendent très mal ce qu'ils présentent. Merci pour cette dépêche accessible au développeur habitué à la POO. [^] # Re: j'ai pas tout saisi. Posté par xavier philippon le 04/09/17 à 07:17. Évalué à 3. Comme pour la POO donnée en exemple dans l'article. Il faut rencontrer des cas concrets et pratiquer pour vraiment comprendre. [^] # Re: j'ai pas tout saisi. Posté par Jiba (page perso) le 04/09/17 à 08:42. Évalué à 8. Je confirme que ce n'est pas évident à saisir. J'ai moi aussi eu du mal au début… C'est un peu comme lorsqu'on commence la programmation objet alors qu'on a fait que de la programmation impérative sans objet avant : c'est une logique différente. J'ai essayé de faire de mon mieux pour illustrer ça clairement dans l'article, mais c'est sûrement perfectible. On considère souvent qu'il y a 2 manières de définir une classe : par intention et par extension. Par extension, c'est la méthode usuelle en POO : on indique pour chaque instance quelle est sa classe. Par intention, c'est la méthode privilégiée dans les ontologies : on donne une définition des propriétés de la classe, et ensuite la machine se débrouille pour attribuer les classes aux instances. Je ne sais pas si c'est plus clair dit comme ça ? [^] # Re: j'ai pas tout saisi. Posté par riri le breton (page perso) le 04/09/17 à 11:26. Évalué à 1. En tout cas, cette dernière phrase moi m'a éclairé. Elle aurait mérité d'être dans l'article, en résumé de la section parlant des concepts. [^] # Re: j'ai pas tout saisi. Posté par feth (page perso) le 04/09/17 à 11:38. Évalué à 3. Voire… dans l'intro. [^] # Re: j'ai pas tout saisi. Posté par Thomas Douillard le 04/09/17 à 11:43. Évalué à 4. La clé, c’est qu’on parle de raisonnement et pas de « programmation » au sens traditionnel. Il y a un genre de « sémantique » aussi chez les universitaires quand on parle de programmation, Sémantique des langages de programmation W. Mais c’est différent, on parle de « c’est quoi un programme qui fait ce qu’on lui demande » ou « que fait un programme ». Il s’agit de spécifier, dans un langage « autre » comme un langage logique mathématique les propriétés du programme qu’on veut écrire, de vérifier que notre programme fait bien ce qu’on avait l’intention de lui faire faire. Ici c’est différent, on parle avant tout de donner des propriétés des données et des structures de données qui permettent de raisonner, de lui brancher un moteur de raisonnement logique type prolog W qui permettent de vérifier, à terme, si notre jeu de données est propre. Par exemple en partant de la définition d’un logiciel libre, on peut détecter si un logiciel dans nos données est marqué à la fois comme libre et comme non redistribuable. Une telle erreur détectée par le moteur de raisonnement indique soit qu’on a un problème dans nos données soit qu’on a un problème dans notre ontologie. Pour faire le lien avec le monde des langage de programmation, on peut imaginer qu’une fonction buguée fasse un traitement sur les donnés qui renvoie parfois un logiciel à la fois libre et non redistribuable. On dit que cette fonction « casse l’invariant » dans la méthode B W par exemple. L’invariant étant une proprété logique que douvent tout le temps (enfin « atomiquement » on va dire, au cours d’une opération on est autorisé à le casser) respecter les données. Pr exemple, qeu le nombre de ticket vendu doit ètre inférieur au nombre de place disponibles. Si tu lance le moteur d’inférence après un tel cas de figure, tu auras détecté un bug du programme (ou de l’ontologie encore une fois). J’ai l’impression que d’une certaine manière ici brancher une ontologie OWL sur un programme python est le moyen de brancher un tel invariant sur python, donc de définir certaines propriétés de la sémantique attendue du programme. [^] # Re: j'ai pas tout saisi. Posté par Hotshot92 le 06/09/17 à 14:03. Évalué à 4. Un MOOC sur France Université Numérique aborde le sujet : Web sémantique et Web de données # Avec des exemples plus concrets Posté par Dylann le 04/09/17 à 15:07. Évalué à 2. Je n'avais effectivement pas bien compris, mais l'exemple de la doc Owlready + le fichier OWL d'exemple utilisé + une visualisation de l'exemple clarifient bien la chose. Merci pour l'article ! Ça me sera sans doute utile pour un projet perso :). # Idée de projet inutile Posté par feth (page perso) le 04/09/17 à 15:41. Évalué à 2. (parfaitement indispensable, sans doute) Réécrire la grammaire Python en OWL. grammaire [^] # Re: Idée de projet inutile Posté par Thomas Douillard le 04/09/17 à 16:00. Évalué à 3. Si tu réécris la sémantique en OWL en plus de la grammaire (mais du coup on a juste besoin de réécrire l’AST) ptete que ça peut devenir intéressant question raisonnement ;) Ptete qu’on risque de tomber sur des problèmes de décidabilité par contre : https://www.cs.ox.ac.uk/boris.motik/pubs/motik07metamodeling-journal.pdf # Quelques retours sur le code Posté par G.bleu (page perso) le 04/09/17 à 17:44. Évalué à 6. Bravo pour l'article, je ne connaissais pas du tout ce type de programmation, maintenant ma curiosité a été piquée ;-) Aurais-tu des exemples de d'application non triviaux dans lesquels ce type de programmation fonctionne bien ? Sinon j'ai parcouru rapidement le code et j'ai quelques conseils : Ton module utilise java sous le capot. Il serait bien d'en parler dans le READEME (ce n'est vraiment pas une dépendance anodine) et même de permettre à l'utilisateur de configurer quel java utiliser (via variable d'env par exemple). Il aurait été mieux de créer un répertoire owlready dans ton repo contenant le code python, l'avantage étant que la racine du repo est beaucoup moins fournie donc plus lisible, ainsi que le fait de pouvoir utiliser ton module sans avoir à l'installer en se étant dans le répertoire du projet. Ton répertoire test n'utilise pas de framework de test, je te conseil pytest qui est absolument génial (tu créé un fichier commençant par test_ , tu mets des fonctions commençant par test_ qui font des assert et tu lances le tout avec avec py.test , c'est brillant de simplicité et extrêmement puissant). L'avantage étant que tu auras des rapport sur tes tests beaucoup plus précis et que tu pourras être beaucoup plus expressif dans tes tests (fixtures, setup/teardown, modules tiers etc.) De même je te conseils d'utiliser travis qui te permettra de faire de l'intégration continue (d'autant plus importante si tu cherches à avoir des contributeurs externes) La PEP8 n'est pas respecté, vu que c'est le standard ça rend tout de suite le code moins lisible. Il y a des outils comme autopep8 qui te permettent de mettre en forme ta base de code automatiquement, et flake8 en linter pour faire de la PEP8 sans y penser ;-) Les import * sont à proscrire (allez, à la rigueur on peut les utiliser dans le __init__.py quand celui-ci se contente de definir l'api exposée), ça rend le code beaucoup plus complexe quand on ne le connait pas, d'autant plus quand on le consulte en ligne et qu'on ne peut pas faire des greps dans le projet :'-( Mettre plusieurs commandes sur une uploads/Litterature/ owlready-un-module-python-pour-manipuler-les-ontologies-owl.pdf

  • 13
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager