Bloc - note informatique
© 2003-2008 Jean-Marc Vanel

e-mail: Envoyer vos commentaires - IRC channel #websemantique #eulergui - Ma page d'accueil - Table des matières

Dernière mise à jour:

Il y a aussi mon bloc-note non informatique . 01 39 55 58 16
Parfois je dis les choses ici en Français, et parfois là-bas en Anglais.
This is my blog; sometimes I say things in english there, and sometimes in French here.

Utilisation de l'Intelligence Artificielle pour le développement logiciel : le nouveau paradigme

Le projet Déductions - présentation


j'ai un CD Fedora 15 qui marche parfaitement sur mon ordi de bureau, mais sur un portable HP 4310s , le démarrage reste scotché sur le message HP "press the escape key for startup menu" ;

<jmvanel> bien sûr je suis allé voir le BIOS plusieurs fois ...

<jmvanel> et le CD n'arrête pas de tourner ...

<jmvanel> ça peut durer un nuit ...

2011-06-12

Je considère l'utilisation de Drools Fusion:

http://docs.jboss.org/drools/release/5.2.0.CR1/drools-fusion-docs/html_single/index.html#d0e23

Questions Jason

Jason est un projet séduisant, avec ses nombreux exemples et son environnement jEdit.

J'apprécie que cela s'inscrive dans une recherche mûre, avec des démonstrations de preuve. Mais ça n'en fait pas automatiquement un outil

Cela dit, voici des Questions et remarques:

2011-06-10

EulerGUI: "rétracter" les appels Java

Je refléchis à un mécanisme pour "rétracter" les appels Java; par exemple un ajout dans une collection peut être rétracté par un appel correspondant à remove.

Mais a--t-on besoin de ça ; puisque la mémoire RETE implémente déjà l'assertion et la rétractation logique.

On pourrait utiliser ceci pour tirer les conséquences hors de la mémoire RETE :

3.3.3.2.2. Live Querries

http://downloads.jboss.com/drools/docs/5.1.1.34858.FINAL/drools-expert/html_single/index.html#d0e1436

Lectures sur ActionSpeak(L) et Jason

Il serait intéresant de verbaliser les plans ActionSpeak(L) .

Gestion_des_connaissances

http://fr.wikipedia.org/wiki/Gestion_des_connaissances

je vais lire, mais je me positionne en opposition à ce courant .

beaucoup de voeux pieux, pas assez de formalisation de la connaissance, ni de liaison avec le génie logiciel;

en partique cela aboutit à créer des bases de documents bureautiques plus ou moins bien indexées

il y a maintenant des wiki sémantiques

2011-06-09

La société croule sous la complexité

Nous, c'est à dire la société, croulons sous la complexité. Confrontés à une relative urgence, même des raisonnements simples ne sont pas à l'oeuvre dans les médias et les autorités.

Regardez l'affaire des colibacilles allemands. Cela a déjà coûté des millions en légumes invendus (qui paiera exactement on ne sait pas, mais ce n'est pas le sujet).

Or tout cela était facile à prévoir. Cependant personne dans les médias n'a expliqué comment se prémunir par des mesures simples: lavage, cuisson. Par conséquent, le public n'achète pas, par principe de précaution.

Tout se passe comme si la complexité engendrait une irresponsabilité généralisée, puisqu'on ne sait pas à quelle institution chaque problème revient.

Mais j'en viens à mon sujet: On est presque à un niveau où un système expert peut prévoir les conséquences, et peut-être même suggérer des remèdes. Ici pas besoin de modèle probabiliste, un modèle logique avec un producteur et un consommateur doit s suffire.

Une esquisse des règles :


<jmvanel> Il y a du monde ce soir ! je cherche toujours des testeurs pour EulerGUI ;

<jmvanel> l'utilisabilité a augmenté : cache N3 , fixes

<jmvanel> on peut par exemple ouvrir un ensemble de documents et les (re)voir en N3 même si l'Internet est coupé .

http://www.semweb.pro/

http://linuxfr.org/users/montaigne/journaux/des-paradigmes-alternatifs

2011-05-27

Je travaille sur une présentation "connaissances_DL_CNL_règles" .

2011-05-23

Représentation des connaissances avec Anglais contrôlé, ontologies et règles

En préambule:

Qu'est ce que la connaissance?

Cela recouvre plusieurs choses:

1. - l'expertise : exemple "un béton contient des granulats et un ciment"

2. - les algorithmes et formules : exemple "formule pour le vieillisement d'un béton"

3. - les données : exemple "base de données sur les ciments disponibles"

4. - documents bureautiques classés par sujets et multi-critères

Notre sujet sera : 1-2-3.

Plan proposé

Soucis Ubuntu

Avec Ubuntu 10.10, J'ai voulu faciliter la vie de mon épouse en ouvrant directement la session sur son compte; mais la barre de menu gnome a disparu, et de plus je ne sais pas comment avoir la main au démarrage pour changer ce réglage ...

Pour avoir la main quand la barre de menu gnome a disparu, il suffit de taper Alt-F2 pour avoir un lanceur qui perlet lancer un shell (interpréteur de commandes) ou n'importe quoi .

Pour la barre de menu gnome qui a disparu avec Ubuntu 10.10 , j'ai détruit ~/.gconf* et ~/.gnome2* .

Depuis une semaine, j'ai un ralentissement dans les réponses de la souris et du clavier. J'ai essayé de désinstaller compiz.

2011-05-21

Bonsoir ; que faire quand , avec 11.04 , les bordures des fenêtres disparaissent ?

<Spaceeman> siffler ?

<jmvanel> est-ce un bug connu ?

<Spaceeman> Peut-être...

<Spaceeman> http://forum.ubuntu-fr.org/viewtopic.php?id=195769

<jmvanel> metacity --replace : ça le fait !!!!

<jmvanel> merci Spaceeman

<jmvanel> un bug qui a la vie dure !

2011-05-11

Installé gkrellm sur Ubuntu

Warning: the required module sbs is not currently installed
on your system. If it is built into the kernel then it's OK.
Otherwise, check http://www.lm-sensors.org/wiki/Devices for
driver availability.
To load everything that is needed, add this to /etc/modules:
#----cut here----
# Chip drivers
it87
max6650
#----cut here----
If you have some drivers built into your kernel, the list above will
contain too many modules. Skip the appropriate ones!
Do you want to add these lines automatically to /etc/modules? (yes/NO)yes
Successful!
Monitoring programs won't work until the needed modules are
loaded. You may want to run 'service module-init-tools start'
to load them.
Unloading i2c-dev... OK
Unloading cpuid... OK
jmv-desktop: ~/src/eulergui_new/ % gvim /etc/modules

j'y suis arrivé ! après avoir passé sensors-detect , avec yes sur tout , il a fallu parcourir http://www.lm-sensors.org/wiki/Devices pour trouver le module adapté à mon chip , l'ajouter dans /etc/modules , et un coup de sudo service module-init-tools start .

du coup je vois que j'ai temp3 à 89 , et fan2 et 3 à zéro .

Il est temps de faire de la maintenance !!!

2011-05-09

Bonjour

J'ai un problème avec une vieille appli. , Amaya ( dernière version 2009 ) , avec Ubuntu 11.04 . La barre de menus n'est plus là avec Gnome ( "Ubuntu classique" ) , mais apparaît avec Unity quand la souris passe dans le bandeau .

Ma question c'est : y aurait-il sous Gnome avec Ubuntu 11.04 un moyen de lancer ce genre d'application pour faire apparaître la barre de menu ?

j'ai fait

UBUNTU_MENUPROXY= amaya &

ça marche !!!

cf http://www.webupd8.org/2011/03/disable-appmenu-global-menu-in-ubuntu.html

2011-05-07

On se dit naïvement que si la JVM surveille les graphes de données pour faire du ramasse miettes, elle pourrait aussi surveiller les graphes de dépendence entre threads. Il y a moins de threads à surveiller que d'objets :) .

2011-05-05

http://jduchess.org/duchess-france/blog/rejoignez-nous-a-lavant-jug-de-mai/

2011-04-27

Cache Internet, boucle infinie

J'ai en ce moment une boucle infinie, avec le cache N3 Internet.

Je me dis qu'il faut distinguer soigneusement les méthodes qui font juste le travail inconditionnellement ( privées ou protected ) , et celles qui décident s'il faut faire le travail ou renvoyer un cache ( publiques ) ?

2011-04-21

Application des gestion des contacts

Significant classes in ontology

CalendarEntry <|--- Visit, TelephoneCall, Encounter

EMail

EmployeeTitle, Company <|--- ITServices

properties : followUp

Contact <|--- Partner, Customer, Technical, Advisor (possible or actual), Candidate

Expectancy <|--- Contract, Partnership

Offer <|--- Training, Coaching, KnowledgeEngineering, Development

Rules

If no followUp after 3 days, propose an action.

If a new mail to the same person if not a followup of a preceding mail, propose to set the followup relation.

Déductions présentation décideur

cf plaquette Déductions

cf site JMV

coût des changements de technologie, de fonctionalité.

Déductions présentation développeur

Le paradoxe de l'IA : elle revient à la mode via les robots, mais dans le développement logiciel, on freine .

Pourquoi ? Les informaticiens se prennent eux mêmes au piège de la complexité qu'il créent.

Les utilisations possibles du cadriciel:

Idées fortes:

spécifications

2011-04-03

EulerGUI : tests : on crée dynamiquement des projets dans l'IHM

Je me bats avec des tests !

Il n'y avait pas des tests où on crée dynamiquement des projets dans l'IHM ...

En gros, ça marche , mais ça interagit vilainement avec le cache de bases de règles ;

étant donné que le projet non sauvé s'appelle toujours euler_project.xml.n3p ,

il est caché toujours sous ce nom :-(

La solution c'est de jamais mettre en cache un projet non sauvé et donc non nommé .

2011-03-31

Inscrit au DDD User Group Paris

https://groups.google.com/group/dddugparis?hl=fr

Inscrit:

http://www.mix-it.fr/speakers

2011-03-24

Présentation INRIA

difference / resemblance with CHR

- declarations nécessaires en CHR

- RDF == prédicats binaires

- statut variables différent

- simplication, propagation explicits en CHR

- théories claires en CHR

processeur chaînage avant (Drools) et arrière (Euler)

2011-03-14

Il serait bon d'avoir des vocabulaires RDF pour les choses communes en gestion: clients ,commandes, factures, livraisons, fournitures, tâches, ...

2011-03-13

tout ce qui tourne autour de IndexedParserNodeData

<lcpvrr> c'est carrémént ultra moche

<lcpvrr> plus moyen de faire tourner plusieurs parsers en //

<lcpvrr> pas thread safe

http://web-and-philosophy.org/atelier-philosophie-et-ingenierie-ic-2011/

#existdb

http://www.systematic-paris-region.org/fr/membres/deductions

http://www.semanticdesktop.org/ontologies/nmo/

http://fr.wikipedia.org/wiki/Liste_des_versions_d%27Ubuntu#Ubuntu_10.10_.28Maverick_Meerkat.29

un article sur maven3

la mise à jour est sensée etre simple

http://java.dzone.com/articles/upgrading-maven-3

la doc est là : https://cwiki.apache.org/MAVEN/maven-3x-compatibility-notes.html

http://www.startinparis.com/

http://www.startinparis.com/2011/02/start-in-paris/demi-finalistes-sip-7-votes/

http://www.xul.fr/

2011-02-14

Inscrit:

3e anniversaire du Paris JUG (28/02/2011)

Le thème cette année sera Siffler en travaillant

2011-02-10

Nous sommes un apporteur de technologies; cela peut se concrétiser par des prestations pour des clients communs: un partenariat technologique, des formations, etc.

2011-02-07

http://fr.wikipedia.org/wiki/Distance_de_Levenshtein

Applications exemples avec le cadriciel Déductions

http://groups.google.com/group/deductions-fr/browse_thread/thread/c44219e0c94a9852

Extraits:

Le nouveau mapping N3-Java , voir:

https://eulergui.svn.sourceforge.net/svnroot/eulergui/branches/refactoring/eulergui/examples/

Du point de vue des règles N3 mélangeant triplets métier et triplets Java, le principe ne change pas, mais dans les détails la compatibilité avec les règles existantes pour formulaires Swingne peut pas être maintenue.

Les appels de méthodes Java se font en direct, et non pas après une (re)traduction globale de la WorkingMemory en JavaScript.

5. séparer les données en différents fichiers dans un projet

EulerGUI: ontologie, règles métiers, règles applicatives;

je propose de créer cela dans deux répertoires wines/ et contacts/ ici :

https://eulergui.svn.sourceforge.net/svnroot/eulergui/branches/refact...

chaque répertoire contiendra:

model.n3 , rules-bizz.n3 , rules-app.n3 , contraints.n3 , java.n3 ;

project.n3p.n3 ; src/main/java/

Une sémantique simple pour l'interaction utilisateur

Voici un exemple d'utilisation de app:log. On suppose qu'on est dans le membre de droite d'une règle (le conséquent); ainsi une variable comme ?CONTACT qui n'existe pas dans le membre de gauche de la règle (l'antécédent) correspond à une création d'un nouvel identifiant.

@prefix app: <http://eulergui.sf.net/ontology/application.owl.n3#>.
:myApp app:log [ "Ajout d'un nouveau contact"@fr ?CONTACT ].
?CONTACT a :Contact.

Voici un exemple d'utilisation pour app:statistics , qui affiche le nombre de contacts dans la base de connaissance :

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#> .
{ _:d e:findall( ?CONTACT { ?CONTACT a :Contact } ?CONTACTS ).
   ?CONTACTS math:memberCount ?NB_CONTACT.
} => {

  ?S a app:statistics.
  ?S rdfs:label "Nombre de contacts: "@fr .
  ?S app:information ?NB_CONTACT .
}. 

Le rdfs:label agit comme une clé qui va permettre à une régle d'infrastructure de mettre à jour les app:statistics.

Quand aux opérations CRUD, elles se font grâce aux prédicats décrits ici :

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html%23EulerGUI

Transactions utillisateur

Je propose de modéliser de manière déclarative une interaction utilisateur avec les concepts de transaction et de champ. Une transaction est une liste de champs. Un champ de saisie est une entrée de donnée de la part de l'utilisateur. Un champ est associé à un sujet et à une propriété au sens OWL / RDF.

Il y a quatre sortes de champs pour les deux sortes de propriétés au sens OWL ( propriétés "objet" et propriétés "datatype" ): champ ajout, champ modification, champ destruction, et champ création. On entend par là , ajout, modification, ou destruction d'un triplet RDF, et création d'un d'un nouvel identifiant avec son type. Les champs modification et destruction comportent en plus un objet au sens RDF.

Par exemple un champ ajout correspond à l'ajout d'un identifiant d'article dans une commande commerciale. Un champ création correspond à la création d'un compte bancaire nouveau pour faire ensuite des virements dessus.

Quand on crée une transaction via une règle, on a toutes les possibilités du language N3 pour ajouter des conditions supplémentaires. Par exemple pour l'ajout d'un identifiant d'article dans une commande commerciale, on peut se restreindre à des catégories correspondant aux intérêts de d'utilisateur, ou à ses commandes passées.

Il ne reste plus qu'à créer des implémentations pour ce language pour l'interaction utilisateur, grâce à des règles mixtes métier - Java. On peut envisager plusieurs implémentations: Swing, GWT, SWT, dialogue en ligne de commande, etc.

Pour commencer, il faut écrire ce petit vocabulaire en N3. On va le mettre dans le projet Déductions dans owl/user_interaction.owl.n3

Mélanger triplets métiers et appels Java

Ayant quelques règles métiers et applicatives, on peut aller plus loin, et ajouter des règles mélangeant triplets métiers et appels Java. L'exemple simple (sans règles) est:

java_gen.n3p<http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/ex...>

Un exemple avec règles est :

http://eulergui.svn.sourceforge.net/viewvc/eulergui/branches/refactor...

Après, pour appeler l'API EulerGUI, ça se passe comme ça :

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/ht...

Il ne reste plus qu'à écrire un petit main() qui lance la base de connaissance, la peuple avec un ou quelques objets Java, et s'arrange pour que chaque fois que l'utilisateur ou le monde extérieur agit, alors fireAllRules() est appelé.

Je pense que ça sera plus simple , et tout aussi instructif, de commencer par une application en ligne de commande, ou bien une application mixte, où l'affichage est graphique, et les commandes en ligne de commande.

2011-01-06

http://fr.wikipedia.org/wiki/Ch%C3%A2telet_%28m%C3%A9tro_de_Paris%29

Links from RZ

http://www.delicious.com/oesxyl

http://www.slideshare.net/onlyjiny/inference-on-the-semantic-web

http://www.webducate.net/qfd/qfd.html

http://en.wikipedia.org/wiki/Quality_function_deployment

http://cmap.ihmc.us/Publications/ResearchPapers/TheoryCmaps/TheoryUnderlyingConceptMaps.htm

http://librdf.org/rasqal/

Links for RZ: Linux package management

http://www.mandrivalinux-online.org/articles/articles-25-85+acceder-a-la-documentation-des-logiciels-avec-doc4.php

http://www.slideshare.net/slauriere/mandriva-smart-desktop-scribo-colab

UPMI Unified Package Metadata Initiative http://code.google.com/p/upmi/

Déductions présentation

"informatique humaniste" en ce sens qu'il faut mettre en avant ce que est humain dans un projet: les besoins, spécifications, modèles et règles de gestion, et la technique technicienne est une intendance qui suit, grâce justement à des règles de gestion spécifiques aux choix technologiques.

Voeux 2011 - partenaires

Tous mes vœux de santé et de succès pour cette année 2011 !

En 2010 j'ai fondé la société de services Déductions (SARL enregistrée au RCS de Versailles).

Sa mission est d'aider les entreprises à formaliser et valoriser les spécifications, modèles et règles de gestion.

Pour cela nous nous appuyons sur les techniques Langage Naturel formel, Web Sémantique, moteurs à base de règles, Logiciel Libre.

2011-01-04

Stages EulerGUI

2011-01-03

De la bonne manière de poser les questions

http://www.gnurou.org/writing/smartquestionsfr

http://jduchess.org/duchess-france/blog/brms-les-produits-existants-ilog-et-drools-paris-jug-partie-2/

Les règles métier, c'est la matière brute pour un système d'information géré rationellement. Cela recouvre les règles de gestion telles que "si le client remplit telles conditions, alors il a tel bonus". Mais il y a plus !

Grâce au technologies du Web Sémantique du World Wide Web Consortium (W3C) il existe un cadre unifié dans lequel acueillir ce qui autrefois était disparate:

2011-01-02

Réflexions avec Luc sur son moteur RETE

Que pensez vous d'une premisse qui est vraie quand un fait est rétracté, cette fonctionalité m'arrangerait pour mon pb de findall

l'assertion du fait X mettrait à jour la liste par ajout, et la retractation de X la mettrait à jour par suppression. dans tous les cas l'anceinne liste et supprimé et une nouvelle mise à jour créé

ceci est basé sur une notion de liste immuable

cela rentre aussi dans la logique programmation fonctionnelle

?X value ?V
result valueList ?L   : always true, existing ?L else ?L is nil by default, do not implies conclusion
?LV listFirst ?V      : always true
?LV listRest nil      : always true
?LL listFirst ?L      : always true
?LL listRest ?LL2     : always true
?LL2 listFirst ?LV    : always true
?LL2 listRest nil     : always true
?LL listAppend ?LR    # list append builtin
=>
result valueList ?LR  : replace all previous ( result valueList *)

retracted ?X value ?V
result valueList ?L   : always true, existing ?L else ?L is nil by default, do not implies conclusion
?LV listFirst ?V      : always true
?LV listRest nil      : always true
?LV listRemove ?LR    # list append builtin
=>
result valueList ?LR  : replace all previous ( result valueList *)


result list ?L
?L mathSum ?S         # sum buitin
=>
result sum ?S

2010-12-22

Livraison EulerGUI 1.7

7 mois écoulé depuis la précédente release !

c presque comme un bébé !

Parinux conférence : SEEKS, la recherche libre collaborative

mar., 14 décembre, 19:15 – 20:45

http://reasoner4j.sourceforge.net/

Regardé les les salons sur :

http://chat.jabberfr.org/

Le lien xmpp:programmation@chat.jabberfr.org?join ne marche pas dans empathy, mais j'ai pu me connecter avec ces 2 identifiants:

programmation - chat.jabberfr.org

http://doc.ubuntu-fr.org/jabber

http://prevert.upmf-grenoble.fr/Prog/Java/CoursJava/expressionsRegulieres.html

2010-12-11

BTS (AB) travaille dans l'équipe rdb2rdf du W3C.

2010-12-07

Stages étudiants

Voir "Stagiaires pour les projets Déductions et EulerGUI"

Problème de routage avec SFR

Quelle est la procédure à suivre quand le réseau SFR a un problème ???

J'ai besoin de ce site pour travailler !!!

Il faut que SFR fasse quelque chose, manifestement leurs tables de routage ont des trous .

Il n'y a jamais eu ce genre de problème avant .

Ici on voit que ça se perd dans la nature :

% traceroute www.sourceforge.net
traceroute to www.sourceforge.net (216.34.181.60), 30 hops max, 60 byte packets
1 boxsfr.sfr (192.168.1.1) 0.763 ms 1.226 ms 1.686 ms
2 * * *
3 1.241.70-86.rev.gaoland.net (86.70.241.1) 44.674 ms 46.476 ms 48.121 ms
4 1.246.103-84.rev.gaoland.net (84.103.246.1) 49.582 ms 50.883 ms 52.353 ms
5 206.178.96-84.rev.gaoland.net (84.96.178.206) 54.426 ms 56.461 ms 57.526 ms
6 214.178.96-84.rev.gaoland.net (84.96.178.214) 59.378 ms * *
7 * * V4070.th21-co-1.n9uf.net (62.39.148.97) 41.672 ms
8 * * *
9 * * *

Publié sur

http://www.justneuf.com/forum/topic/120994-un-site-americain-inaccessible-sourceforgenet/

2010-12-06

Cet am je suis obligé de revoir les bases de comment j'utilise Drools ...

En fait , fausse alerte!

3.3.3.1.1. Insertion

Unité d'exécution [AWT-EventQueue-0] (Suspendue)
EqualityKeyComparator.hashCodeOf(Object) ligne : 50
ObjectHashMap.get(Object) ligne : 100
TruthMaintenanceSystem.get(Object) ligne : 153
ReteooStatefulSession(AbstractWorkingMemory).insert(Object, boolean, boolean, Rule, Activation) ligne : 1008
ReteooStatefulSession(AbstractWorkingMemory).insert(Object) ligne : 917
N3SourcetoDrools.setRuleBase(RuleBase) ligne : 875
N3toDroolsUpdater.setRuleBase(RuleBase) ligne : 160
Project.compiledRulebaseLoadedFromCache(String) ligne : 635
Project.translateN32Drools(boolean) ligne : 772
Project.prepareDrools(boolean) ligne : 753
Project.doRunDrools(boolean) ligne : 709
Project.runDroolsTriples(boolean) ligne : 667
RunDroolsAction.actionPerformed(ActionEvent) ligne : 48
JToolBar$1(AbstractButton).fireActionPerformed(ActionEvent) ligne : 1995

Questions/réponses sur EulerGUI : passage effectif à logicalInsert

2010-12-03

> En recherche de partenaires SSII, dans le scénario où je suis

> sous-traitant, j'aide le client final à définir son modèle et ses

> règles métier, en OWL + règles SWRL , et je peux générer les modèles

> dans un format qui convient ( EMF, classes POJO, XML, ... ) .

>

> Vis à vis de mes prospects, PME innovantes qui écrivent des logiciels

> spécifiques, avec la même pile technologique, je les aide à mettre en

> place un fond de modèles métier maison, des transformeurs adaptés à

> leurs plateformes familières, et un environnement de développement

> dédié.


Représentation des connaissances : exprimer maximum, sommation

[ Collé grâce à TinyMCE, qui transforme du HTML en XHTML ]

Le contexte est qu'on a un cadriciel (framework) basé sur le langage N3, plus des extensions.

Maintenant Il s'agit d'exprimer d'une manière déclarative des règles métiers comme :
- M1 est le maximum d'un ensemble de nombres défini par une expression logique;
- S1 est la somme d'un ensemble de nombres défini par une expression logique;
- etc pour d'autres fonction génériques accumulatrices: minimum , comptage,

On a les prédicats en N3 pour ça, respectivement :
- e:findall calqué sur Prolog pour créer un ensemble défini par une expression logique
- e:max
- math:sum
- e:min, math:memberCount

Par exemple:

{  ?V a :Vehicule.
 _:d findall ( ?R { ?V :hasWheels ?W } ?LIST ).
 ?LIST math:memberCount 2 .
} => {
 ?V a :Bicycle .
}.

A noter que <=> n'est pas dans la syntaxe N3 .
Mais, même si on ajoute l'implication inverse, et qu'on ensemence la Base de Connaissance avec:
:myBicycle a :Bicycle .

il n'y a pas moyen de récupérer les 2 roues anonymes qui doivent exister.
Du moins pas avec les processeurs N3 que nous avons.
C'est plutôt un travail pour les raisonneurs en Logique de Description.
Et encore, il n'est pas sûr que Hermit ou Pellet aient les API pour lister ce qui doit exister.

Aussi, je vois bien qu'on a vite fait de tomber sur un infini potentiel, comme avec ceci:
"Tout homme a un parent qui est un homme."

Quels sont les cas d'utilisation de ça ?
- un programme qui dessine le vélo
- un programme de gestion d'approvisionnement ("procurement") qui aide à lister ce qui existe et à commander ce qui manque
- variante plus générale : générer un formulaire de saisie qui pilote la saisie des propriétés des objets logiquement existants
- etc

Ce qui est sûr , c'est que les variantes de ls résolution classique à la Robinson 1965, comme dans prover9, sont mal adaptées à exhiber les existentiels.
La "logique cohérente" [1] parait bien; elle est utilisée dans les processeur N3 Euler de Jos De Roo.

Il semble que DLV ait un formalisme intéressant, à la Prolog :
http://www.dlvsystem.com/dlvsystem/html/DLV_User_Manual.html#AEN814
Ce n'est pas Open Source, mais ça parait intéressant.

CONCLUSION

En fait, N3 n'est pas idéal comme langage de représentation des connaissances, mais ça peut aller.
Le problème, c'est surtout d'avoir d'autres moteurs que RETE ( Drools ) , ou semi-logique pas très documenté comme Euler [2] . Et on peut toujours traduire N3 en d'autres langages comme on le fait déjà pour Drools.

Je vais demander sur la liste ATTEMPTO ( ATTEMPTO Controled English ) ce qu'il y a comme possibilité pour exprimer  maximum, sommation, etc.

Un langage comme CHR qui simplifie les contraintes pourrait être utilisé pour trier les objets qui existent logiquement (les 2 roues), et ceux qui sont explicitement affirmés. En fait (communication personnelle de de P. Van Weert de JCHR), Drools semble avoir les mêmes possibilités que CHR.

Il n'empêche qu'on besoin de plus de moteurs d'inférence :
- prenant en compte les existentiels et fournissant les associations des variables
- ayant une phase en chainage arrière pour accéder aux bases de données au cours ou avant l'inférence

Voilà , les pistes sont bienvenues !

------------------------------

--

[1] logique cohérente ( rien à voir avec la société  http://www.coherentlogic.com/ )
see the last chapter of 

http://folli.loria.fr/cds/2006/courses/Bezem.Nivelle.IntroductionToAutomatedReasoning.pdf

Automating Coherent Logic

Coherent logic

Guarded Coherent Logic Domains

Implementation of a Coherent Logic Prover for Isabelle

Instance-Based Hyper-Tableaux for Coherent Logic


Automating Coherent Logic :: UiB 15 Jan 2010 ... Automating Coherent Logic (ACL) is a NFR funded research project initiated by the University of Bergen and the University of Oslo in ...

Regular Categories and Coherent Logi

[2] Euler http://eulersharp.sourceforge.net/FAQ

2010-12-01

Ordinateur arrêté brusquement

19.460524] EDAC amd64: This node reports that Memory ECC is currently disabled, set F3x44[22] (0000:00:18.3).

[ 19.460533] EDAC amd64: ECC disabled in the BIOS or no ECC capability, module will not load.

[ 19.460535] Either enable ECC checking or force module loading by setting 'ecc_enable_override'.

[ 19.460536] (Note that use of the override may cause unknown side effects.)

[ 19.460553] amd64_edac: probe of 0000:00:18.2 failed with error -22

...q

[ 20.310198] r8169: eth0: link up

[ 20.862505] hda-intel: azx_get_response timeout, switching to polling mode: last cmd=0x000f0000

[ 21.872499] hda-intel: Codec #0 probe error; disabling it...

[ 22.922509] hda_intel: azx_get_response timeout, switching to single_cmd mode: last cmd=0x000f0000

[ 24.559914] hda-intel: Invalid position buffer, using LPIB read method instead.

[ 24.559950] hda-intel: IRQ timing workaround is activated for card #2. Suggest a bigger bdl_pos_adj.

2010-11-30

Raisonnement équationnel, ontologies

D'après Miké,

pour le raisonnement équationnel, l'état de l'art c'est toujours ceci

www.lsi.upc.edu/~albert/papers/handbook.ps.gz

c est un peu dur à lire (meme pour les spécialistes)

ces techniques sont utilisées pour raisonner sur les ontologies dans

http://kaon2.semanticweb.org/

peut être ailleurs aussi .

2010-11-29

http://www.openstreetmap.org/?lat=48.84745&lon=2.13466&zoom=15&layers=M


Un truc important dont je n'ai pas parlé , à part de construire des applications générées, est de sortir 100% de la logique métier de la partie codée en impératif (Java/Scala/Python etc) . La logique métier est beaucoup mieux exprimée en Logique de Description (OWL) augmentée de règles logiques. Une des raisons est que l'appartenance à une classe ne doit pas être figée comme en Java et compagnie, mais doit changer durant le cycle de vie de l'objet (exemple: une personne chômeur devient employé quand elle a un travail). Une autre raison est qu'ainsi la séparation est nette entre la logique métier et le code d'infrastructure qui manipule des objets informatiques ( IHM,stockage, réseau ). Il y a aussi les raisons mises en avant par les tenants des moteurs de règles: les règles sont plus faciles à gérer en collaboration ou directement par les experts métier.

2010-11-27

Conversation avec Miké R.

MIT CSAIL s'intéressent à N3

ludique (Ehrenfeucht, Fraïssé)

équationel de Nash ?

Sénizergues, Aguion

la thèse de MR: méthode de superposition pour raisonnement équationnel avec égalité

besoin de pointeurs sur l'état de l'art en inférence FOL, algorithmique

Essai de requêtes SPARQL fédérées

Essai de requêtes fédérées avec ARQ 2.8.6 : ça ne semble pas marcher.

com.hp.hpl.jena.query.QueryParseException: Lexical error at line 9, column 10. Encountered: " " (32), after : "SERVICE"

Formation web sémantique

MONTRER

FAIT

A FAIRE

2010-11-24

SELECT ?c ?p WHERE { ?c ?p 'Boston'@en }

SELECT ?c ?p WHERE { ?c ?p "Lyon"@en }

SELECT * WHERE { :Lyon ?p ?v }

http://www.loria.fr/~rusi/

Je découvre des choses en préparant la formation :

Regardez comment l'URI pour Boston http://dbpedia.org/resource/Boston , lancée dans un navigateur, vous redirige vers une page montrant toutes les propriétés de Boston : http://dbpedia.org/page/Boston .

On peut aussi en bas de la page télécharger les données en N3, ce qui équivaut à la requête

?S dbpedia:Boston ?V .

Et l'URLN3 est http://dbpedia.org/data/Boston.n3

http://dbpedia.org/About

http://www.w3.org/2003/Talks/0520-www-tf1-a1-primer/slide3-0.html

http://www.w3.org/2000/10/swap/Primer

http://peccatte.karefil.com/software/Metadata.htm#RDF

http://www.inrialpes.fr/exmo/teaching/swc/

2010-11-23

NLM

http://dtd.nlm.nih.gov/faq.html

http://www.nlm.nih.gov/bsd/sample_records_avail.html

Formation web sémantique

voir

Resources formation Web Sémantique

Notes formation web sémantique

Notes formation web sémantique


LES OBJECTIFS :

Acquérir une vue d'ensemble sur les techniques et la vision du Web Sémantique.

Le web sémantique consiste à décrire les ressources du web, et en fait n'importe quelles données et concepts, avec des langages formels qui permettent la mise en œuvre de raisonnements sûrs (car basés sur des mécanismes d'inférence logique) à des fins d'indexation, interrogation, etc. Pour aboutir à ce Web Sémantique l'organisme de standardisation des langages du web, le W3C (World Wide Web Consortium), propose les nouvelles technologies RDF, SPARQL, OWL, etc.

Suivant les connaissances des stagiaires, on insistera davantage sur la comparaison avec certaines autres formes de modélisation et de stockage: SQL, UML et langages Orientés Objet, XML.

LES PARTICIPANTS :

Administrateurs de données, chefs de projet, Web designers et toute personne concernée par le Web Sémantique.

LES PRE-REQUIS :

Connaissances des concepts fondamentaux du Web

LA DUREE :

2 jours

LES MOYENS :

Formation en vos locaux, sur votre matériel. Accès à Internet; Java 6 installé.

LE PROGRAMME :

• Introduction au Web Sémantique: les choses ont des propriétés

• Rappel sur les URI

• RDF, un langage simple pour le Web Sémantique : graphe d'objets, formats N3, Turtle, et N-Triples

• le langage de requêtes SPARQL, les bases de données RDF disponibles sur le Web (Linked Data, Web of Data)

• RDF Schema, notion de vocabulaire (taxonomies de classes et de propriétés servant à décrire les ressources du web),

• inférence logique avec RDF Schema

• publier ses données avec le Web Sémantique

• OWL, un langage de modélisation pour le web sémantique : Logique de Description, inférences (satisfiabilité, subsomption,...)

• trouver données et ontologies sur le Web

• ontologies les plus utilisées

• langages et moteurs de règles

2010-11-22

Réutiliser ma non tropo

Figurez vous que je suis allé trop loin dans le sens de réutiliser des trucs, en l'occurence jEdit ;

J'ai cherché qq'chose pour surveiller des fichiers sur disque même s'il ne sont pas ouverts dans jEdit ;

He bien d'abord il n'y a rien dans jEdit, et ensuite c'était plutôt simple à implémenter ( j'avais déjà fait la surveillance d'un URL ) , il n'y avait plus qu'à lancer un Thread avec un sleep raisonnable qui lance un évènement n3Changed qui existait déjà dans EulerGUI, et voilà !

+ simple, + de fonctionalités !

2010-11-21

Soirée Moteurs de Règles (09/11/2010)

http://www.parisjug.org/xwiki/bin/view/Meeting/20101109

Essais de requêtes DBPedia par SPARQL

requeter-le-contenu-de-wikipedia-avec-sparql

Ceci marche :

select distinct ?Concept where {[] a ?Concept}

mais pas ceci :

42000 Error The estimated execution time 4453 (sec) exceeds the limit of 1500 (sec).
SPARQL query:
SELECT DISTINCT ?p WHERE { [] ?p ?o} 

2010-11-20

On voudrait pouvoir écrire des transformation de graphes directement en Anglais Contrôlé, puis les exécuter en passant par N3.

Si l' entrée ou sortie est en XML, on peut utiliser Gloze pour la conversion XML <--> RDF.

L'informatique en français

snapshot --> instantané

backtracking --> retour arrière

D'après les Québécois : http://granddictionaire.com/

2010-11-15

EulerGUI: feuille de route

autres tâches

Recherche de collaborations scientifiques

J'ai commencé une société de services basée à Versailles, Déductions.

Nous proposons des services et des outils de développement visant à

automatiser les développements logiciels par une approche déclarative

fondée sur les règles et modèles métiers, ainsi que sur une

manipulation sémantique des resources logicielles existantes.

Nous construisons une pile technologique Open Source originale, basée

sur RDF/N3, OWL, Drools (moteur RETE Open Source), Langages Naturels

Contrôlés.

Il existe de nombreuses autres techniques que nous étudions, comme

CHR, Grammatical Framework, le langage Mercury.

Notre approche est de développer aussi peu que possible, d'intégrer

les meilleurs ingrédients, de façon aussi déclarative et indépendante

de toute plate-forme que possible, dans le respect de saines pratiques

de génie logiciel.

Nous sommes à la recherche :

- de jeunes scientifiques et développeurs; j'espère que vous avez des

anciens élèves à me recommander

- de conseillers scientifiques

- de collaboration via des thèses ou stages

- de collaboration pédagogique, par l'utilisation de notre

environnement graphique EulerGUI Open Source pour le Web Sémantique et

les règles

Il peut y avoir un partenariat et échange d'expériences.

Le développement logiciel c'est un métier que les chercheurs ne

connaissent pas forcément, nous pouvons les assister pour les bonnes

pratiques de développement, notamment sur les aspects architecture,

tests, processus de développement, modèles de conception, outils et

bibliothèques, gestion de communauté Open Source, choix de composants

logiciels Open Source.

D'autre part, avoir des utilisateurs industriels en production peut

être précieux pour des chercheurs: retour d'expérience, rapports de

bugs, idées de fonctionalités. Dans ce domaine, une petite entreprise

de logiciel comme la notre sera toujours plus motivée pour

l'innovation que des grandes entreprises bien établies sur leur

technologies.

Les thèmes de recherche

Première chose, nous devons améliorer la conception actuelle et la mise en œuvre du moteur Java + N3, basé sur Drools, avec N3 comme langage de règles, ce qui est une combinaison unique de Web sémantique, moteur de règles, et de la plate-forme Java.Dans l'implémentation existante, le traducteur N3 vers Drools est une architecture simpliste qui crache des chaînes au fil de l'eau. Il nous faut quelque chose comme une technique de compilation pilotée par des règles. Et nous aimerions également générer des règles Jena, du code Mercury, Scala, des règles CHR, etc. J'ai pensé à utiliser des règles de transformation en N3 pour le N3 en entrée, et GF (GrammaticalFramework) pour la sortie de la chaîne finale.


Deuxième chose, nous devons concevoir et mettre en œuvre un moteur en chaînage arrière pour l'interrogation des bases de données SPARQL en présence de règles métier en N3. Il va générer une grosse requête SPARQL par accumulation récursive des critères, substitution des variables liées, changement de nom des variables si nécessaire. Je pense que pour ce point 2, les capacités de CHR pour gérer les variables libres peuvent être utilisées.

Un autre approche pour gérer des gros volumes de données consiste à coupler le moteur RETE Drools avec une solution de persistance Java native, comme JoaFIP.

Un autre thème concerne la génération des interfaces utilisateur à

partir des spécifications de haut niveau, comprenant des ontologies

OWL, des règles métiers en N3 ou SWRL, et d'autres spécifications

déclaratives pour l'interaction utilisateur.

Lié à cela, une base de règles embarquée permettrait d'exploiter

l'historique des actions de l'utilisateur pour déduire ses intentions,

et proposer des actions appropriées ( paradigme du bon serviteur ).

Enfin, nous voulons appliquer les techniques d'inférence pour une

manipulation sémantique des ressources logicielles existantes: deviner

les séquences d'appel à partir d'exemples de code, annoter

sémantiquement les bibliothèques, classes et méthodes, générer code de

jointure à partir des annotations sémantiques ( Modularité

intelligente ) .

2010-11-08

EulerGUI : avancement et snapshot

Tout est à peu près d'équerre avec cette révision :

COMMITED revision 1895.

- Enhance IOManager.getLocalCache() : in all cases except local N3

source, initializes the Local Cache File object; only for non local N3 source fills the Local Cache File

- change accordingly class XMLExport

BUILD SUCCESSFUL

[INFO] Total time: 22 minutes 39 seconds

Je vais mettre en ligne un snapshot d'ici 1/2h.


Maintenant on va pouvoir avancer sur la réactualisation de tout ce qu'il faut quand une source N3 est modifiée par un éditeur interne ou externe sur un fichier RDF ou OWL (typiquement Protégé) ou XML, ou

même un éditeur externe sur un fichier N3 .

Ce qui marche pour l'instant, c'est, quand un éditeur interne jEdit est ouvert sur un fichier OWL+SWRL, et que ce fichier est modifié sur le disque, l'évènement dans jEdit est transmis, et via N3Source.update(), les traductions N3 et SWRL sont mises à jour.

L'évènement dans jEdit est transmis via une nouvelle méthode dans ProjectListener :

public void n3SourceChanged( Project project, N3Source n3 );

Tâches immédiates: réactualisation quand une source N3 est modifiée, etc

Ce qu'il faudrait, c'est que ça marche sans qu'un éditeur interne jEdit soit ouvert.

==> envoyé un mail à la liste <jedit-devel@lists.sourceforge.net>

Je voudrais aussi, de préférence avant la release :

Il faudrait aussi:

2010-11-07

EulerGUI : API de la classe N3Source

Envoyé à la liste "Déductions et EulerGUI en Français"

On a besoin de la bonne sémantique pour les sources N3, en adéquation avec les besoins applicatifs.

Ce n'est pas tout à fait le cas actuellement.

Initialement il n'y avait que des fichiers N3.

Maintenant les aspects suivants doivent être pris en compte:

Lors de l'ouverture du projet, ou lors de réactualisations (update) :

Les besoins applicatifs, c'est de pouvoir montrer dans l'éditeur:

On aussi besoin :

L'API de N3Source:

/** @return name of an N3 File, either the original source, or
else a download or a translation from other format; */
public String getFileName()

/** @return a File corresponding to the Original Source, never
translated, but downloaded if the source is a non-file URL */
File getOriginalSource()

/** The "location" is the absolute location where the original data
stream is available. */
public URL getLocation()

NOTES:

Qu'en dites vous ?


En fait on n'a pas besoin de getOriginalSource() , c'est getLocation() qui joue ce role.

Dans le cas d'une source non locale non N3, getLocalN3() renvoyait une copie de la Source originelle. On a supprimé ça dans IOManager.getLocalCache().

En fait, dans ce cas d'une source non locale, on n'a pas besoin d'une copie de la Source originelle. En effet, les différents outils peuvent se débrouiller avec un URL: editeur jEdit, moteurs d'inférence, traducteurs de SPARQL vers N3.

Cela a créé des problèmes dans les tests :

eulergui.gui.TestEulerGUITooltip

eulergui.gui.TestImportSwrl

deductions.runtime.TestRulesForUserEvents

eulergui.gui.TestGenericGuiGenerationInsertLogical

n3_project.helpers.TestDroolsQuery

eulergui.gui.TestSwingGeneration

eulergui.gui.TestFacebookSearch

eulergui.gui.TestGenericGuiGeneration

eulergui.gui.TestEulerGUIOutputs

J'ai alors rétabli ceci ligne 167 dans IOManager.getLocalCache() :

  copy(location.openStream(), new FileOutputStream(localCacheFile));

Comme le montre le test TestEulerGUITooltip, dans le cas d'une source N3 non locale, le cache renvoyé par getLocalCache() est utilisé.

Dans le cas d'une source RDF, SPARQL ou XML, le cache renvoyé par getLocalCache() contient comme il faut la traduction locale en N3. Dans le cas d'une source XML, le cache renvoyé par getLocalCache() contient aussi la traduction locale en N3. Mais au moins en un endroit, une copie de la Source originelle était attendue, comme le montre le test TestEulerGUIOutputs (corrigé dans XMLExport ).

2010-11-06

Prolog pour résoudre un problème algébrique

Cette solution exploite l'aspect déclaratif de Prolog:

solution :-
  chiffre(A), chiffre(B), chiffre(C), chiffre(D),
  resolu(A,B,C,D) .

chiffre(X) :-
  member( X, [1,2,3,4,5,6,7,8,9] ).

resolu(A,B,C,D) :-
  0 is A*B -C-D,
  0 is A+B -C*D,
  write([A,B,C,D]).

Le calcul se fait très rapidement:

?- solution.
[1, 5, 2, 3]
true ;
[1, 5, 3, 2]
true ;
[2, 2, 2, 2]
true ;
[2, 3, 1, 5]
true ;
[2, 3, 5, 1]
true ;
[3, 2, 1, 5]
true ;
[3, 2, 5, 1]
true ;
[5, 1, 2, 3]
true ;
[5, 1, 3, 2]
true ;
false.

2010-11-02

miroir Maven en France

Antelink a lancé depuis quelques semaines un miroir Maven en France à l'adresse suivante : http://maven.antelink.com/index.html

Je suis toujours en alerte si vous rencontrez des problèmes autour de l'utilisation du miroir donc n'hésitez pas à faire remonter les dysfonctionnements ou les améliorations que nos équipes pourraient apporter.

Pour info, l'article publié annonçant le lancement du miroir Maven : http://www.antelink.com/blog/entry/new_maven_mirror_in_france

2010-10-30

Notes formation web sémantique

2010-10-24

Essai du prouveur de théorèmes Prover9

Je teste les outils FOL .

J'essaye de démontrer que , si tous les humans ont un parent, alors ils ont un grand-parent ...

Pas si simple ...

lcpvrr@gmail.com: et cela sans tenir compte de l'évolution génétique

J'utilise 2 outils, Prover9 et Mace4; le 1er essaye de démontrer, le deuxième trouve un contre-exemple quand c'est faux .

- 19:52 -

Les règles sont :

parent(x,p) & parent(p,gp) & x!=gp
-> grandparent(x, gp).

parent(x,p) -> x!=p .
grandparent(x,p) -> x!=p .
parent(x,p) -> - parent(p,x).
- parent(x,x).

human(x) -> exists p ( parent(x,p) & human(p) ).

La chose à prouver est :

human(x) -> exists gp grandparent(x,gp).

( - désigne la négation ) ) He bien il me trouve un contre-exemple :

parent(0,1). parent(1,2). parent(2,0).

lcpvrr@gmail.com: et oui il faut exclure addam et ève !

lcpvrr@gmail.com: étrange

mais logique !

- 19:57 -

c'est un exemple où 0 n'a pas de grandparent; ce serait 2, mais on voit bien que cette famille n'est pas normale.

pour le problème de parent je vois deux choses :

- il doit exister au moins un humain sans parent, parent de tous les autres (mon allusion adam et eve)

- il y a aussi une notion de génération, un humain ne peut être parent d'un humain de la génération d'avant

- 09:58 -

J'ai essayé le point 2, en définissant un prédicat ancestor comme la cloture transitive de parent ,

puis en posant - ancestor(x,x).

Mais en fait il me manquait les bonnes parenthèses après all x ...

maintenant ceci marche parfaitement :

all x all p all gp (
  parent(x,p) & parent(p,gp)
    -> grandparent(x, gp)
).

all x (
  human(x) -> exists p ( parent(x,p) & human(p) ) ).

avec le but

human(x) -> exists gp grandparent(x,gp).

Prover9 est un bon outil; il y a une petite IHM ; c'est même installable via Ubuntu .

2010-10-22

Le côté fastidieux du développement.

développeur outils intelligent mieux qu'eclipse

déclaratif

décider alternatives

arbre binaire

Red Black Tree

RAD - W4

ergonome

transformation de modèle

http://www.philippe-fournier-viger.com/description_logics/introduction_logiques_de_description.php

Voir "Plan de développement à moyen terme"

2010-10-21

RDFa

En suivant http://fr.wikipedia.org/wiki/RDFa , je me suis amusé à ajouter du RDFa dans mon blog Anglais; ce n'était pas possible ici parce que ça n'est pas du XHTML . Amaya aide un peu, parce qu'il "comprend" la DTD xhtml-rdfa-1.dtd .

2010-10-20

Publié sur FB et LinkedIn

Notes formation web sémantique

laboratoire web sémantique

http://www.lri.fr/theme.de.recherche.php?thm=46

http://www.lri.fr/seminaires_en.php

Ceci est actuellement rare, mais certaines entreprises comme Mission Critical IT ont un objectif similaire, bien que non Open-Source.

cours Web Sémantique

https://moodle.polymtl.ca/course/view.php?id=30

http://leszed.ed-productions.com/tout-sur-le-web-semantique-l-accessibilite-et-sur-le-pdf/

http://www.inrialpes.fr/exmo/teaching/swc/

thésaurus

Vu dans strategie-d-architecture/architecture-et-concepts-du-web-semantique chez clever-age.com

QUELLE ARCHITECTURE POUR LE WEB SÉMANTIQUE

Au-delà de la simple émission de méta-données au sein de pages, de nouveaux genres d’agents logiciels apparaissent sur Internet. Quels services vont-ils apporter ? Comment vont-ils collaborer ?

Une architecture distribuée ?

La notion d’agent

Présentation de l’architecture globale

Présentation des composantes logicielles nécessaires à l’utilisation et à la "participation" au Web Sémantique

Crawler, Index, Méta-base, Service, Raisonneur...

Présentation des techniques employées par chacune de ces briques

Identification des différences, s’il y en a, avec les méthodes traditionnelles

Ce dont nous disposons actuellement ?

ONTOLOGIES ET FONDATIONS LOGIQUES

Faits explicites et implicites

LE FAIT ET SON CONTEXTE

Annotations embarquées ou entrepôts de métadonnées ?

Qui est l’énonceur d’un fait ? De quand date cette information ?... Notion de réification

Le problème de la personnalité et de l’ambiguïté en résultant

Un réseau basé sur la confiance

L’utilisation des signatures digitales

CRÉER SON ONTOLOGIE

Pouvoir raisonner sur les informations collectées est des plus importants. Les relier à nos informations l’est tout autant. Quelles sont les difficultés pour créer les ontologies métiers nécessaires à nos entreprises ?

La méthodologie de modélisation d’une ontologie. Le périmètre d’une ontologie

Classe et instance ? La séparation des aspects appliquée à la conception d’ontologies

Quels outils pour créer une ontologie ?

Quels outils pour annoter des ressources ?

2010-10-19

Ubuntu démarre pas: résolu

udevadm trigger is not permitted while udev is unconfigured

sudo update-initramfs -u -k all

http://wiki.linux-aide.org/index.php?n=Logiciels.Radios

Pour un champ création associé à une propriétés "objet" au sens OWL, il y a une problématique particulière. Veut-on se lier à un identifiant existant (du bon type), ou peut-on créer un nouvel identifiant

2010-10-18

Déductions et EulerGUI en Français

Déductions et EulerGUI en Français : 16 membres !

Applications exemples

Une des choses qui manquent dans le projet ce sont des applications métier construites avec le cadriciel (framework).

Voici quelques conseils pour en construire :

http://groups.google.com/group/deductions-fr/browse_thread/thread/c44219e0c94a9852#

2010-10-16

http://www.inf.unibz.it/~calvanese/

http://www.rr-conference.org/RR2010/


FOAF+SSL Simple Login Page

Not Logged In

SSL Client Certificate: detected!

Client Certificate Public Key detected! (HEX):

Modulus : D95D687F953153D5E9872119D0A6F20D33B8524D61A9DB0DC62AEC4C0112CA9825AD08C9ABD706AAE1E7B1B6F81135695BB2E5F13A2C6A0C2681B788FE76711670418139D4C895B5EE2018D7D5A52E86E071DFC6B4C860EBFBA6DAA83E55902CD1B48BD918AAA589832865C673979736E4B1DCC40C2BE86979D53C7ED9A87B7899CA19C6B4F8983B4B2095354A9DE90AEADFFC7CB19DEC416DC645D45DCE1308BF752D326DA09F932E292A2D37DF2DD5194E382F6C2892B4337877821BF001786371583A785FB947790ED4D5E6D5E186CA53ABE114C4ED4ABDB86DBE3CE31C3D649F5EF3C618ED845BFA4558091708D05B81438A956728D04936D04F2D8DFB05

Exponent : 65537

Subject Alt Name (FOAF Profile): detected!: http://foaf.me/jmvanel#me

FOAF Remote Public Key found in http://foaf.me/jmvanel#me:

Modulus : C264F8EDBC2162E49B779F82AA52DFE4C3AA44E3CD42660D41CE1F5BAA7FDABB8EF7CA9E43F845B666FF238770CADBE36C87B729BCF4EE50B38D3317DF36ADF1934ABBD62B56A7E672F500C8DE4280A29102447729DE332E4F62C3CEDE04075E509F4B3C4B555C310C5E35EA049CA641E7F737AB8569D1F4384B51A9580F461C9CA481DB9E44B7039F4647237D4A87B02923582FEF06EE41ACF67E66439B219223D0F755BCFF7F17D434438E42099D14488DD61F764F31A41D8E6A3806D594D9833CDEDA146774ECBB9868BD92509A8BC34D041EA94E107A6FF649B8297D3A303662DB47001278A21688C1FF9D1C1755D7D2098A080A4BDC8367A8687C1BD7B3

Exponent : 65537

http://code.google.com/p/chromium/wiki/LinuxCertManagement


Reto Bachmann , projet Clerezza

http://java.dzone.com/articles/clerezza-apache-project

http://wiki.apache.org/incubator/ClerezzaProposal


A FAIRE

2010-10-17

Kaarel est rentré

Kaarel, l'auteur de ACE View est rentré de son tour du monde.

Il a mis à jour ACE View par rapport à Protégé 4.1

Clerezza, Reto

Hier à PHILOWEB 2010, j'ai rencontré Reto Bachmann, un développeur d'un projet de CMS RDF, Clerezza ;

Il pourrait utiliser EG comme moteur de règles.

Il pourra aussi me conseiller sur OSGi, qu'il utilise avec Maven.

2010-10-15

Resources formation Web Sémantique

2010-10-14

A FAIRE

questions à Conan sur noyau Drools

2010-10-11

Envoyé un courriel sur la liste "Déductions et EulerGUI en Français":

bientôt EulerGUI 1.7

2010-10-06

Pas encore ouvert:

http://www.parisjug.org/xwiki/bin/view/Meeting/20101012

J'organise un buffet à 19h30 à Versailles avec les développeurs Franciliens intéressés par le projet Déduction .

Il y aura une courte présentation sur l'état des lieux et les perspectives, suivi d'une discussion.

Je propose ces dates:

- 11 octobre, 14, 18, 20

2010-09-30

udevadm not permitted while udev unconfigured

Voici ce qu'on a dit le 15 :

I think this bug should be marked as Critical as it's definitely impossible for a non-geek person to solve it on his(er) own which makes their computer completely unusable until an Ubuntu expert with a boot CD is found.

Les experts (et moi) sont dessus; ça va s'arranger !

https://bugs.launchpad.net/ubuntu/+source/devmapper/+bug/358654

2010-09-26

Mercury, Scala, Groovy

J'apprends en parallèle Mercury et Scala.

Je veux aussi progresser en CHR et apprendre GF (grammatical Framework);

J'ai fait un galop d'essai avec Groovy, grâce à un Canadien Mathieu qui a écrit une dizaine de lignes pour récupérer un mot de passe Subversion sur son dépot local :

http://blog.mycila.com/2010/04/subversion-password-recovery.html

J'ai passé une partie du we à arranger la branche refactoring pour une release .

2010-09-25

Complété le "Plan de développement à moyen terme" pour EulerGUI.

A FAIRE

2010-09-23

Une chose utilie est de formaliser les règles métier ...

installer le plugin Scala IDE

J'ai pris un un eclipse 3.6 tout neuf.

Régressions dans la branche refactoring de EulerGUI

- problème de listener avec fichiers OWL ou N3 :

En ouvrant avec le bouton à la chouette, examples/car_ace.owl , à partir d'un projet non vide par exemple examples/koala.n3p), les sources N3 apparaissent en double dans l'IHM.

Par contre, à partir d'un projet vide ça marche bien

Même chose en ouvrant un fichier N3.

PAS REPRODUIT!

- le panneau texte inférieur après lancement d'un moteur d'inférence : remplissage OK (simple JTextXXX), mais pas d'ascenseur

- deux menus aide quand on ouvre un projet à partir de Fichier / ouvrir projet (local)

2010-09-18

assert x > 0 : "x doit être supérieur à 0";

Modèles d'affaires

Rien que les règles métiers serait une source d'affaires suffisante, comme le montre Silvie.

Il y a aussi une place à prendre comme conseil en outils avancés: moteurs d'inférences, outils linguistiques, ...

Il y a beaucoup de jeunes diplomés en IA qui ne trouvent pas de travail dans leur domaine.

Il faudrait un Swoogle pour les règles en CNL.

Industriels à l'affut des nouveautés.

Finance

reporting : outil avec langage naturel

requêteur et transformeur pour le source Java

Plan de développement à moyen terme

Compétence langage de règles

Compétence OO Java

Récentes écoles d'été: CHR, CNL

CHR

CNL

2010-09-16

Synchroniser fichiers du portable vers le fixe

L'incantation pour synchroniser du portable vers le fixe :

d=jmv@192.168.1.165:/home/jmv
rsync -avz $d/jmvanel.free.fr/{notes-informatiques.html,computer-notes_2008.html,Block-note.html,\
images,presentations,ontology,hypervert,ramatuelle} \
  ~/jmvanel.free.fr/
rsync -avz $d/bizz ~/bizz 
rsync -avz $d/ ~/{journal.txt,donnees.txt} 
rsync -avz $d/administratif/ ~/administratif/ 
rsync -avz $d/presentations/ ~/presentations

2010-09-10

Je pars demain en Sicile :

CNL 2010

http://staff.um.edu.mt/mros1/cnl2010/

http://www.wikicfp.com/cfp/servlet/event.showcfp?eventid=9489&copyownerid=320

GOING OUT

From Paris Beauvais(BVA) to Trapani(Sicily)(TPS)

Sat, 11/September/2010 Flight 8642 Depart BVA at 0950 and arrive TPS at 1215

COMING BACK

From Trapani(Sicily)(TPS) to Paris Beauvais (BVA)

Thu, 16/September/2010 Flight 8641 Depart TPS at 0700 and arrive BVA at 0925

2010-09-07

EulerGUI : sauver le projet en N3

Dans ApplicationKB , ça ne peut pas marcher:

public void saveAsN3(File n3OutputFile, URL projetURI) throws IOException {
List<ITriple> l = tripleStore.searchBySubject(projetURI.toString());

Car dans la KB on a:

<file:/monfic.n3> * * .

et on y cherche :

<file:/mon_nouveau_fic.n3> * * .

Il faudrait insérer dans la KB

<> * * .

au lieu de

<file:/monfic.n3> * * .

<> signifie le document courant

2010-09-01

TODO [Euler-2010-09-03]

moteurs Prolog en Java: demander à Bart Demoen

2010-08-29

Y a-t-il des outils Libres pour la reconnaissance de la parole?

Est-ce qu'une rule base Drools est clonable? Si oui , on peut cloner la KB Swing en cache, ajouter les quelques règles métiers, les faits, et lancer le formulaire. On peut même faire ça systématiquement au lancement de Droools. Cela revient à pré-remplir le projet avec la KB Swing.

Formations Déductions

A FAIRE: mail à Pat Chappel, JY Brunel, Michel VDB, Josef Dworzecki

FAIT mail à Jos, François Fages,

2010-08-28

Dans ApplicationKB , ça ne peut pas marcher:

public void saveAsN3(File n3OutputFile, URL projetURI) throws IOException {

List<ITriple> l = tripleStore.searchBySubject(projetURI.toString());

EulerGUI: régression dans la branche refactoring

NOT fixed: Save As

Le problème est que XMLEncoder fait un clone du Java bean avant de sauver pour de bon. Donc lors du clonage de ProjectLegacy le membre project est perdu.

Cette architecture avec ProjectLegacy pour la compatibilité ascendante est fragile.

Il aurait fallu tout simplement renommer la classe Project originelle, et créer une classe Java bean Project simple (sans délégation cachée) pour sauvergarde/restitution sous le nom originel. Ainsi on n'aurait pas eu les changements dans le XML.

Je laisse ça de côté jusqu'à mon retour dans une semaine.

Thread [AWT-EventQueue-0] (Suspended (exception MalformedURLException))
URL.<init>(URL, String, URLStreamHandler) line: 567
URL.<init>(URL, String) line: 464
Project.addN3Query(N3Source) line: 357
Project.setN3Query(N3Source) line: 347
ProjectLegacy.setN3Query(N3Source) line: 73
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
Trampoline.invoke(Method, Object, Object[]) line: 37
GeneratedMethodAccessor5.invoke(Object, Object[]) line: not available
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
MethodUtil.invoke(Method, Object, Object[]) line: 244
Statement.invokeInternal() line: 239
Statement.access$000(Statement) line: 39
Statement$2.run() line: 140
AccessController.doPrivileged(PrivilegedExceptionAction<T>, AccessControlContext) line: not available [native method]
Statement.invoke() line: 137
Statement.execute() line: 128
XMLEncoder(Encoder).writeStatement(Statement) line: 253
XMLEncoder.writeStatement(Statement) line: 331
DefaultPersistenceDelegate.invokeStatement(Object, String, Object[], Encoder) line: 235
DefaultPersistenceDelegate.doProperty(Class, PropertyDescriptor, Object, Object, Encoder) line: 229
DefaultPersistenceDelegate.initBean(Class, Object, Object, Encoder) line: 247
DefaultPersistenceDelegate.initialize(Class<?>, Object, Object, Encoder) line: 395
DefaultPersistenceDelegate(PersistenceDelegate).writeObject(Object, Encoder) line: 100
XMLEncoder(Encoder).writeObject(Object) line: 54
XMLEncoder.writeObject(Object) line: 257
XMLEncoder(Encoder).writeExpression(Expression) line: 279
XMLEncoder.writeExpression(Expression) line: 372
DefaultPersistenceDelegate(PersistenceDelegate).writeObject(Object, Encoder) line: 97
XMLEncoder(Encoder).writeObject(Object) line: 54
XMLEncoder.writeObject(Object) line: 257
XMLEncoder(Encoder).writeObject1(Object) line: 206
XMLEncoder(Encoder).cloneStatement(Statement) line: 219
XMLEncoder(Encoder).writeStatement(Statement) line: 250
XMLEncoder.writeStatement(Statement) line: 331
XMLEncoder.writeObject(Object) line: 260
Project.save(Project) line: 1091
Project.saveAs(Project, File) line: 1113
ProjectFileManagement$4.actionPerformed(ActionEvent) line: 131
JMenu$1(AbstractButton).fireActionPerformed(ActionEvent) line: 1995
AbstractButton$Handler.actionPerformed(ActionEvent) line: 2318
DefaultButtonModel.fireActionPerformed(ActionEvent) line: 387
DefaultButtonModel.setPressed(boolean) line: 242
JMenu$1(AbstractButton).doClick(int) line: 357
BasicMenuItemUI.doClick(MenuSelectionManager) line: 1223
BasicMenuItemUI$Handler.mouseReleased(MouseEvent) line: 1264
JMenu$1(Component).processMouseEvent(MouseEvent) line: 6267
JMenu$1(JComponent).processMouseEvent(MouseEvent) line: 3267
JMenu$1(Component).processEvent(AWTEvent) line: 6032
JMenu$1(Container).processEvent(AWTEvent) line: 2041
JMenu$1(Component).dispatchEventImpl(AWTEvent) line: 4630
JMenu$1(Container).dispatchEventImpl(AWTEvent) line: 2099
JMenu$1(Component).dispatchEvent(AWTEvent) line: 4460
LightweightDispatcher.retargetMouseEvent(Component, int, MouseEvent) line: 4577
LightweightDispatcher.processMouseEvent(MouseEvent) line: 4238
LightweightDispatcher.dispatchEvent(AWTEvent) line: 4168
ProjectGUI(Container).dispatchEventImpl(AWTEvent) line: 2085
ProjectGUI(Window).dispatchEventImpl(AWTEvent) line: 2478
ProjectGUI(Component).dispatchEvent(AWTEvent) line: 4460
EventQueue.dispatchEvent(AWTEvent) line: 599
EventDispatchThread.pumpOneEventForFilters(int) line: 269
EventDispatchThread.pumpEventsForFilter(int, Conditional, EventFilter) line: 184
EventDispatchThread.pumpEventsForHierarchy(int, Conditional, Component) line: 174
EventDispatchThread.pumpEvents(int, Conditional) line: 169
EventDispatchThread.pumpEvents(Conditional) line: 161
EventDispatchThread.run() line: 122

Conferences, etc

http://www.paris-web.fr/

http://www2010.org/www/

http://www.iw3c2.org/conferences/

2012

WWW2012: The Twenty-first International WWW Conference

Date: April 16 - 20, 2012

Venue: Lyon, France

2011

WWW2011: The Twentieth International WWW Conference

Date: March 28 - April 1, 2011

Program Chairs: Krithi Ramamritham, Sowmyanarayanan Sadagopan

Venue: Hyderabad, India

semtech http://semtech2010.semanticuniverse.com/ http://www.eswc2011.org/

eswc http://www.eswc2010.org/

boite jena andy seaborne http://www.epimorphics.com/web/

http://www.talis.com/platform/

2010-08-27

A FAIRE : voir

project.setIndexer( new ProjectsIndexer() );

très lent

2010-08-24

Argumentaire pour le project Déductions

travailler et fabriquer au pays.

Audi

Nous ne voulons pas nous substituer à vos experts du métier ni à vos informaticiens, mais les aider à travailler mieux ensemble.

Dans le meilleur des cas, vos modèles métier sont inscrits dans des classes métiers et Java ou autre langage. Même dans ce meilleur cas, une modélisation en logique de de description et règles est plus expressive.

2010-08-22

Une implémentation joafip de JPA.

Quel est l'intérêt d'une implémentation joafip de JPA? He bien le mode automatique où la mémoire est libérée au fur et à mesure. Et pour moi comme pour tout le monde , c'est bien de pouvoir essayer plusieurs stockages sans changer l'appli.

Pour la libération automatique de la mémoire il faut utiliser une ExclusiveDataAcessSession de joafip, avec auto save activé, mais ce n'est pas transactionnel.

Mais je ne pense pas que Drools utilise de rollback .

2010-08-21

http://www.freelance-info.fr/

Bases de données OO

En parallèle de ce que fait Luc avec JPA, Je regarde les bases de données OO + JPA .

Au passage je tombe sur ce solide projet universitaire allemand :

ConceptBase - A Database System for Metamodeling and Method Engineering

DataNucleus parait un cadriciel flexible autour de JPA, permettant un stockage sur tout ce qui bouge :).

En fait le point de départ a été la liste de logiciels ici : wikipedia.org Java_Persistence_API

Dans DataNucleus ils mentionnent NeoDatis ODB et db4o .

Essayé Malice de J. Pitrat

Après avoir compilé tout avec :

gcc -O2 *.c -rdynamic -ldl -o malice

on peut lancer le moteur d'inférence:

% ./malice
YOU CAN ALWAYS TYPE F FOR CHOOSING ANOTHER FAMILY OR P FOR CHOOSING ANOTHER 
PROBLEM OR . FOR STOPPING THE SESSION.
IF YOU TYPE ? AFTER THE NAME OF A FAMILY, I ALSO LIST ITS FORMULATION.
IF YOU TYPE ? AFTER THE NAME OF A PROBLEM, I ALSO LIST ITS DATA.
 
CHOOSE A PROBLEM FAMILY AMONG: [&EULER,&KRYPT,&INSANITY,&KRYPTUN,&KRMUL,
&SUDOKU,&ROOKSTOUR,&ARROWS,&GOLOMBRULER,&LANGFORDSNUMBER,&AUTOREF,&KAKURO,
&LOGIGRAPH,&QGROUP,&CUBETOTAL,&ALLINTERVAL,&STEINER,&SOCCERTABLE]
! &EULER
CHOOSE A PARTICULAR PROBLEM OF THE &EULER FAMILY AMONG: [`QUATRE`,`CINQ`,
`SIX`,`SEPT`,`HUIT`,`DIX`,`GISIX`,`GISEPT`,`GIHUIT`,`GIDIX`,`INCHUIT`,
`INCDIX`,`CINQUANTEUN`,`CHUIT`,`HUITF`,`CENTUN`,`NEUFT`]
! SIX
 ...
  21.3.F{32}=28 ET[F{32}#19,F{32}#21] 22.F{28}=32*
 17.3.F{35}=24 ET[F{35}#27,F{35}#22] 18.F{24}=35*
 
I USED MY EFFICIENT METHOD, I FOUND 9862 SOLUTIONS IN 15 SECONDS FOR THE 
   &EULER SIX PROBLEM, AND I DEVELOPED A TREE WITH 13547 LEAVES.

Commentaires:

Les plus:

Autres remarques:

Apparement MALICE garde trace du source en language ALICE qui a servi à le générer.

Décés de Jean-Louis LAURIÈRE, l'auteur d'ALICE en 1975 avec une thèse dirigée par J. Pitrat:

Ce qui est remarquable dans la page des publications de Pitrat, c'est qu'il n'a pratiquement pas de publications dans des journaux hors de son université. Apparemment il a consacré tout son temps aux thèses.

Cette petite note donne un point de vue nuancé sur lui :

http://tunes.org/wiki/jacques_20pitrat.html

2010-08-20

Partir de rien avec Maven

Maintenant mon expertise Ant s'est tranférée sur écrire un pom.xml aproprié à ce qu'on veut, et ensuite je fais mvn eclipse:eclipse ,

ce qui crée le projet eclipse.

Par exemple là vous pourriez déclarer une dépendance à openjpa, c'est à peu près tout

cf http://mvnrepository.com/artifact/org.apache.geronimo.plugins/openjpa/2.2

vous mettez ce tag <dependency> dans un pom.xml vierge , et vogue ( pas la galère ). Le pom.xml vierge c'est juste ça :

<project xmlns="http://maven.apache.org/POM/4.0.0"      
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  http://maven.apache.org/maven-v4_0_0.xsd" >
  <dependencies>
  </dependencies>
</project>

et après vous faites :

mvn eclipse:eclipse -Declipse.downloadSources=true

et par la même occasion vous téléchargez tous les sources récursivement , accessibles dans eclipse

2010-08-08

A FAIRE sur mon portable, pour les vacances:

Tâches prévues:

rsync : synchroniser du fixe vers le portable

l'incantation pour synchroniser du fixe vers le portable :

d=jmv@192.168.1.68:/home/jmv
rsync -avz ~/doc $d/doc
rsync -avz ~/doc-pub $d/doc-pub
rsync -avz \
  ~/jmvanel.free.fr/{notes-informatiques.html,computer-notes_2008.html,Block-note.html,\
images,presentations,ontology,hypervert,ramatuelle} \
  $d/jmvanel.free.fr/
rsync -avz ~/bizz $d/
rsync -avz ~/{journal.txt,donnees.txt} $d/
rsync -avz ~/administratif/ $d/administratif/
rsync -avz ~/presentations/ $d/presentations/

2010-08-04

EulerGUI: embarquer un noyau Maven ?

Avec mon application EulerGUI, j'ai un téléchargement de + de 30Mo , et j'envisage d' ajouter encore des dépendances ; je pense à embarquer un noyau Maven pour charger les dépendances au fur et à mesure des besoins, comme Maven lui-même. Je devine qu'il faut, au démarrage de chaque fonctionnalité, un appel pour charger si nécessaire les dépendances de cette fonctionnalité. A part ça, y a -t-il d'autres choses à développer ?

2010-08-03

groupe Déductions et EulerGUI en Français : 13 membres

http://web-and-philosophy.org/programme/fr/

Caches Internet et Java pour EulerGUI

J'étais sur le point de développer un cache; je pense maintenant utiliser un cache Internet comme Smart Cache (en Java) ou Squid.

Les projets EulerGUI, et l'application elle-même, comprennent des ressources (modèles et règles) qui viennent d'Internet, et que je mets à jour de temps à autre; cela permet de distribuer des projets et une application qui évoluent sans ré-installer ou re-télécharger. Donc un cache Internet permettrait d'accélérer l'ouverture de l'application et des projets.

Après des essais de codage à la main, je vois que la complexité des en-têtes HTTP (par exemple Last-Modified n'est pas toujours présent) fait que c'est un projet à part entière. Et heureusement Smart Cache le fait en 200 ko et quelques. Je vais donc essayer Smart Cache dans un processus indépendant, et configurer EulerGUI pour utiliser le proxy Smart Cache (voir How do I set the proxy to be used by the JVM ). Et si ça convient, je pourrais l'intégrer à EulerGUI. A noter que Smart Cache ne semble pas exister sur Maven : query=Smart+Cache.

Mais ce n'est qu'une partie du plan, car je dois aussi cacher les règles une fois compilées par Drools (la compilation prend typiquement 1 à 5 s ). Je pense alors cacher les règles une fois compilées par un autre cache genre OSCache, ou alors développer un cache très simple. OSCache existe sur Maven : opensymphony/oscache/2.4 .

2010-08-02

JPA

J'ai regardé JPA dernièrement, à cause de Luc, développeur de EulerGUI, et surtout de JoaFip, une persistance Java native. Je lui ai conseillé d'implémenter JPA, pour pouvoir toucher plus de monde.

Je suis en train d'étendre le traducteur Drools pour gérer les objets Java d'une façon compatible à la fois avec Drools et N3, et si possible en gardant la même syntaxe et sémantique N3.


J'ai trouvé une incantation Maven pour tout installer EulerGUI en une ligne :

mvn scm:bootstrap \
-DconnectionUrl=scm:svn:http://eulergui.svn.sourceforge.net/svnroot/eulergui/trunk/eulergui \
-Dgoals=install

Mercury + OWL + SWRL

J'ai commencé à jouer avec Mercury sous l'influence de Michel Van Den Buschen, le fondateur de Mission-Critical IT. Ils ont toute une infrastructure basée sur Mercury , OWL et SWRL:

http://www.missioncriticalit.com/pdfs/rules-challenge-2009.pdf

Ca ressemble à ce que je fais avec OWL, Drools, Java et la logique N3.

Hélas ils ne sont pas Open Source.

Il ont un moteur en chaînage arrière.

En OSS, il y a Prova : http://www.prova.ws/index.html?page=documentation.php

Il faut que je l'essaye.

2010-08-01

Interface utilisateur stupide

Encore un exemple! C'est tellement fréquent que tout le monde le tolère. Ici c'est sur http://france.meteofrance.com/ :

16°C (Ressentie 16°C)

Pour ceux qui n'auraient pas compris, la température ressentie ne nous intéresse que si elle est différente de celle mesurée.

2010-07-30

Systèmes_de_gestion_de_contenu avec RDF

Des systèmes_de_gestion_de_contenu, il y en a tant !

http://fr.wikipedia.org/wiki/Liste_de_systèmes_de_gestion_de_contenu

Un CMS basé sur RDF ?

http://www.lespetitescases.net/un-cms-base-sur-rdf-y

http://rhizome.liminalzone.org/

Rhizome est un Système de gestion de contenu de type wiki et système de distribution qui expose l'ensemble du site - contenu, la structure et métadonnées en tant que RDF modifiable.

Celui-ci est basé sur Fuxi et Python:

http://copia.posterous.com/semanticdb-a-cms-methodology-for-the-enterpri

En fait ce que je voudrais c'est un système qui utilise une base SPARQL: donc la recherche est:

"Content management" system +SPARQL java

Je suis tombé sur cet article qui met en perspective JPA et RDF :

http://www.semanticuniverse.com/articles-empire-where-rdf-sparql-meet-java-persistence-api.html

Empire est une implémentation de l'API de Java Persistence (JPA) pour RDF et le Web sémantique. Au lieu d'une autre mise en oeuvre à l'aide de bases de données relationnelles, Empire met en œuvre JPA pour RDF et SPARQL,

http://www.jpox.org/docs/1_2/jpa_orm/cascading.html

http://blog.athico.com/2009/03/drools-50-cr1-new-and-noteworthy.html

2010-07-27

Offre de ma société Déductions pour les partenaires

2010-07-24

Drools & EulerGUI

Avec Drools, suite à l'introduction de insertLogical, et aux bons conseils sur l'IRC Drools, je simplifie la traduction N3 ==> Drools.

La génération de formulaires ne marche pas encore avec insertLogical, mais j'ai bon espoir.

Et à ce moment, le formulaire pourra disparaitre automatiquement si l'object est détruit :) .

2010-07-17

L'esprit du projet Déductions - un programme d'étude

publié sur le groupe deductions-fr

2010-07-16

webperf-user-group/evenements/21-juillet-2010

mercredi 21 juillet sur Paris pour une soirée d'échanges à propos des performances web. Il s'agit d'une réunion informelle où tout le monde est le bienvenu quel que soit son rôle ou sa connaissance du sujet.

A partir de 19h un apéritif vous attend pour accueillir tout le monde. Vous aurez l'occasion de rencontrer et discuter avec d'autres passionnés ou professionnels de la performance web.

Je me demande si ça a un avantage de faire un générateur Scala pour Mercury. Puisque Scala est un langage fonctionnel, cela peut réduire le fossé sémantique. D'autre part,

Devoirs de vacances : Mercury

Puisque sur la liste on me dit qu'on a fait un moteur SWRL en chaînage arrière en deux jours, je devrais pouvoir faire quelque chose aussi.

Je pense faire d'abord une version Prolog, puis mercurifier cela.

Je peux aussi bien écrire un processeur N3 que SWRL. Je pourrais réutiliser la syntaxe DCG de Euler/Eye et/ou son PCL (Prolog Coherent Logic). Dans le deux cas N3 et SWRL, il faudra ces types: ruleBase, rule ...

:- module ruleBase.
:- interface.
:- import_module term.
:- import_module list.

:- type ruleBase == list(rule1).
:- type rule1 ---> rule(antecedent :: rulePart, consequent :: rulePart).
:- type rulePart ---> term ; list(term). % ??

Ca compile; "rule" semble être un mot-clé. Réutiliser term est peut-être un peu trop général.

mmc --make ruleBase.mh

Maintenant il y a deux options: ou compiler toutes les règles, ou les interpréter.

Il y a un mot-clé call aussi en Mercury, comme en Prolog:

http://www.mercury.csse.unimelb.edu.au/information/doc-release/mercury_ref/Goals.html#Goals

En fait il faut lire tout le chapitre 8 Higher-order programming.

On peut s'inspirer de "A Couple of Meta-interpreters in Prolog" par Markus Triska.

Autrement, pour me faire la main, je vais prendre un exemple Prolog, comme les relations familiales de "The Art of Prolog", puis mercurifier cela.

2010-07-02

EulerGUI TODO

Comment vérifier la logique d'une base de règles comme swing-rules3 ?

Comment traiter :

:objetJavaNonEncoreDeclare javam:m1 "arg" .

Il faut explorer les ontologies traitant des formulaires et de l'interaction homme-machine.

Mercury

Plus j'y pense, plus je vois que Mercury, aussi confidentiel soit-il, est le bon langage tous usages: à la fois OO, fonctionnel strict, logique strict, liaison avec Java et C.

J'ai posé une question à la liste sur comment importer du code Prolog patrimonial. Il y a 3 problèmes: les coupures, les assert et retract, et la génération des déclarations pred, func, mode. Pour les coupures "vertes" , il suffirait que le compilateur Mercury les accepte au niveau syntaxique.

Pour les coupures "rouges", il faudrait faire quelque chose à la main. Je me demande si il est faisable de les détecter automatiquement, au moins dans certains cas. Ou alors s'il existe des standards pour déclarer une coupure "rouge".

Pour la génération des déclarations pred, mode , l'idée est que , puisque le compilateur Mercury peut détecter une incohérence entre la déclaration à la main et l'implémentation du corps, il peut aussi bien proposer une déclaration cohérente avec l'implémentation du corps.


Une idée serait de développer un plugin eclipse qui intègre le compilateur compilé en Java.


Il faudrait demander sur la liste SWI des exemples de moteurs d'inférence simples en Prolog pur: FOL, RETE, etc.

Je pourrais proposer au groupe Scala un exposé sur Mercury.

ça commencerait par un "rappel" sur le Prolog pur, par exemple la famille.

On parlerait peut-être du tabling.

Ensuite on montrerait l'équivalence avec Scala pour les aspects fonctionnels.

On prendrait une présentation standard de Scala, et on traduirait en Mercury.


http://hal.archives-ouvertes.fr/index.php

http://groups.google.fr/group/fr.comp.lang.java/browse_thread/thread/9bedbc70a4d7df57#

Guide pratique sur l'intelligence artificielle et la vie artificielle sous GNU/linux

Version française du GNU/Linux AI and Alife HOWTO

John Eikenberry

http://www.resoo.org/docs/HOWTO_fr/AI-Alife-HOWTO/index.html

2010-06-23

Avantages des moteurs à base de règles

blog de Aurélien Pelletier : Jrules : ajouté un commentaire

Une règle isolée a un sens

Le moteur enchaîne les règles, pas le programmeur

+ efficace que la programmation classique

Capture bien l'expertise métier

Traduisible depuis et vers le langage naturel

Les « systèmes experts « ont fait leurs preuves

Agoranov

Agoranov est un incubateur public qui a pour mission de faciliter la création d’entreprises innovantes liées à la recherche publique.

Agoranov accompagne des projets innovants dans six principaux clusters : Éco-Innovations, Ingénierie & Services, Logiciels d’Entreprises, Médias & Interactions, Réseaux & Internet et Sciences de la Vie.

Agoranov reçoit le soutien du ministère de la Recherche, du FSE, de la Région Ile de France, de la DRIRE et de la Ville de Paris.

http://www.agoranov.com/

Liens: AppEngine, owl2-rl-with-a-rete-rule-engine

Un article intéressant sur AppEngine de Google, en tant qu'hébergeur d'applications Java:

http://bodysplash.fr/tag/Domain%20Driven%20Design

agendadulibre.org/ year=2010 month=6 region= Ile de France

http://www.pubbs.net/201004/web/39221-implementing-owl2-rl-with-a-rete-rule-engine.html

2010-06-18

Réunion MK

PLM, avionique, grand comptes

Frameworks difficiles à maîtriser

A FAIRE : scénario sans prononcer le mot ontologie.

éditeur Wisiwig ipad-eln

  1. PME, développements logiciels spécifiques pour leur usage propre
  2. partenariats avec SSII
  3. scientifique
  4. partenariat avec offreur de services

Questions et réponses de MK:

Atom Feed

François Bancillon

data.gov en France

Projets linguistiques: languageware

UIMA, Gate, link-grammar

INRIA projet MISMUSE, Alain Michard

automate finis StateWalker

2010-06-16

http://www.philippe-fournier-viger.com/description_logics/introduction_logiques_de_description.php

http://www.philippe-fournier-viger.com/logiciels.php

Logique floue avec le moteur Euler

J'ai trouvé un exemple avec le processeur Euler. Jos a implémenté la logique floue (fuzzy logic) suivant la méthode de Elpiniki Papageorgiou .

Voir l'exemple médical:

http://eulersharp.sourceforge.net/2003/03swap/example002P.n3

Les règles:

http://eulersharp.sourceforge.net/2003/03swap/fl-rules.n3

Pour faire tourner ça avec Euler en ligne de commande :

eye --nope --plugin http://eulersharp.sourceforge.net/2006/02swap/fcm-plugin.yap http://eulersharp.sourceforge.net/2003/03swap/example002P.n3 http://eulersharp.sourceforge.net/2003/03swap/fl-rules.n3 --query http://eulersharp.sourceforge.net/2003/03swap/example003Q.n3

(possible aussi avec EulerGUI, modulo une erreur corrigée dans le dernier snapshot).

L'ennui, c'est que ça n'est pas connecté avec ATTEMPTO. Mais si ce modèle probabiliste convient, c'est disponible et opérationnel. Il faudrait alors écrire en logique N3 les règles probabilistes. Le reste pourrait être entré avec ATTEMPTO, et les deux pourraient se mélanger.

2010-06-12

Nouvelles de Déductions: OWL + ACE, chaînage arrière

Je peaufine ma conf. sur OWL + ACE

http://jmvanel.free.fr/presentations/pres-owl-anglais-controle.odp

Suite à un mail de Michel, je m'intéresse aux moteurs en chaînage arrière; en l'occurence Prova, qui vient juste de sortir une version le 10.

2010-06-11

Présentation sur les ontologies OWL et l'Anglais Contrôlé

Jean-Marc Vanel, développeur principal de EulerGUI, organise une présentation gratuite sur le thème des ontologies OWL et de l'utilisation de l'Anglais Contrôlé, avec démonstration d'outils libres, le lundi 14 juin de 19h à 20h30 à Paris 9ème.

Si vous êtes intéressés par la modélisation (UML, SQL, EMF, DSL, etc ...) , le développement piloté par les modèles (MDA - MDE ), le Web Sémantique, l'intelligence Artificielle et la Logique Formelle, les moteurs à base de règles (Drools, JRules) cette soirée vous plaira.

Autres dates: 22, 29 juin.

Pour s'inscrire, envoyer un courriel à jeanmarc.vanel@gmail.com , avec inscription dans le titre, et la date choisie.

Plus de détails sur l'évènement :

http://jmvanel.free.fr/seminaires/seminaires_gratuits.html

2010-06-05

Question sur les lecteurs de musique Linux

Quel lecteur de musique prendra en compte un serveur Apache qui expose une arborescence de répertoires contenant des fichiers de musique ?

2010-06-04

http://www.premier-samedi.org/?p=499

http://www.ossgtp.org/xwiki/bin/view/Main/TousLesMembres

Présentation sur les ontologies OWL et les langages de règles

Jean-Marc Vanel, développeur principal de EulerGUI, organise une présentation gratuite sur le thème des ontologies OWL et des langages de règles, avec démonstration d'outils libres, le mercredi 9 juin de 19h à 20h30 à Paris 9ème .

La conférence JUG d'Alexandre Bertails sur le Web Sémantique avait porté sur l'aspect base de données (essentielles dans l'écosystème qui se crée actuellement). Ici on parlera de comment et pourquoi on peut décrire finement les concepts métiers. Cela s'appelle la Logique de Description, qui est le fruit de 30 ans de recherche en représentation des connaissances.

Si vous êtes intéressés par la modélisation (UML, SQL, EMF, DSL, etc ...) , le développement piloté par les modèles (MDA - MDE ), le Web Sémantique, l'intelligence Artificielle et la Logique Formelle, les moteurs à base de règles (Drools, JRules) cette soirée vous plaira.

Pour ceux qui sont déjà venus à mes précédentes présentations, on parlera moins des Logiciels Libres que nous développons (qui ont néanmoins gagné en maturité), et plus des technologies sous-jacentes. Il s'avère qu'on peut passer par un langage humain mais formel (Anglais seulement pour l'instant) pour spécifier des modèles métiers. Cela aide beaucoup à comprendre les formalismes du Web Sémantique (OWL), et les autres.

Autres dates: 14, 22, 29 juin.

Pour s'inscrire, envoyer un courriel à jeanmarc.vanel@gmail.com , avec inscription dans le titre, et la date choisie.

Plus de détails sur l'évènement :

http://jmvanel.free.fr/seminaires/seminaires_gratuits.html

Les outils:

[1] EulerGUI est une plaque tournante autour du langage N3, Open Source, en Java, qui embarque 4 moteurs pour la logique N3, et qui peut importer du RDF, RDFS, OWL, UML, eCore XMI, du code binaire Java, et convertir du XML de base et des XML Schema. Il peut exporter les formats du Web Sémantique, plus XML de base et JavaScript simple. C'est aussi un moteur de système experts; il a une API qui permet d'ajouter un système expert à n'importe quelle application. Les objets Java pouvant être référencés par le système expert, des règles métiers ou génériques peuvent déclencher des appels de méthode. C'est en fait une nouvelle façon de développer, centrée sur les règles et modèles métiers, analogue à l'approche MDA (Model Driven), mais plus simple à mettre en oeuvre, et réutilisant les standards du W3C (RDF, OWL, N3).

[2] Le projet compagnon est Déductions, qui inclut des règles N3 pour générer des formulaires, convertir UML en OWL, etc. Le framework est capable de générer à l'exécution en quelques millisecondes un formulaire à partir du modèle OWL, ce qui ouvre pas mal de portes.

[3] Protégé, Ace View

[4] bibliothèques: Jena, Pellet, RDFLib, ...

[5] logiciels serveurs (SPARQL query language) : Virtuoso, Sesame, TDB, SDB

[6] logiciels sur le poste de travail : Nepomuk

[7] moteur de recherches Web Sémantique: watson , swoogle ,

[8] serveurs publics : SPARQL Endpoints actuellement actifs , http://dbpedia.org/ , sindice

Séminaire Logique de descriptions et OWL, avec l'Anglais simplifié

http://www.w3.org/TR/2008/WD-owl2-mapping-to-rdf-20080411/

Notions de base: objets, propriétés, valeurs

Objets (== noms propres)

France is a country .

p:F1 is a n:flower.

p:X is something.

Propriétés, valeurs

Comment affecter des propriétés dans ACE View: il suffit d'utiliser un verbe: exemples:

I311 has-as-departure Toulouse .

I311 has-as-arrival Paris .

Paris belongs-to France .

Toulouse belongs-to France .

p:F1's color is blue.

Paraphrase

F1 is a flower.

A color of F1 is blue.

Classes a priori

p:Flossie is a cow.

Propriétés: existence de valeur

Propriétés: type des valeur

Classes définies par description

Every town belongs-to one country .

Classes par description

------------------------

A l'occasion de l'intégration de ACE View, j'ai écrit un traducteur de SWRL vers logique N3, écrit en N3, qui permet d'importer dans notre EulerGUI un fichier OWL+SWRL.

2010-06-01

A FAIRE : adhérer :

http://aful.org/professionnels/

Relu mon Questionnaire sur les pratiques de développement logiciel; c'est pas mal :

http://jmvanel.free.fr/offre_services/questionnaire.html

2010-05-27

ssh -X dorota@192.168.1.77

ssh -X 192.168.0.102

http://planete.websemantique.org/

Notes présentation Cassandra No-SQL

Cassandra, vient de FaceBook, 2007, 2008

in prod : FB , twitter, Reddit, Digg

Dynamo --------> partie distribuée

Big table -----> un noeud

optimisé pour écriture

key space ~ database

column family ~ table

row key

column key---->value

Super column: exemple message entre utilisateurs

on dénormalise si on veut accéder par 2 chemins différents

2010-05-26

http://www.trueknowledge.com/q/lichen

http://blog.e-node.org/tag/zeitgeist/

Une bonne présentation de Alexandre Bertails sur les inconvénients du relationnel par rapport à RDF :

http://www.lespetitescases.net/index308

http://www.scribo.ws/xwiki/bin/view/Main/WebHome

pas mal, ce site de questions réponses : http://www.semanticoverflow.com/questions/235/simple-cli-useable-owl-reasoner

J'ai compris les affaires OpenId ; comme Google est un fournisseur d'identité ( et presque tous les grands sites ) , je peux utiliser mon adresse de profil Google comme OpenId : http://www.google.com/profiles/106137725737026245498

et ça m'a servi pour finir mon inscription sur http://www.semanticoverflow.com/

[PDF] A Conformance Test Suite for the OWL 2 RL/RDF Rules Language and ...

www.webont.org/owled/2009/papers/owled2009_submission_19.pdf

2010-05-18

Notes pour la présentation system@tic

liens avec communautés OSS : Protégé ( traducteur SWRL-->N3 , SWRL->RETE )

plan de recherche : utiliser CHR

le pendant propriétaire : MissionCriticalIT

2010-05-13

http://lacantine.org/

2010-05-11

RETETest : was error in calling N3SourcetoDrools translate()

now the test suite passes

http://librarians.will.phear.org:8890/Rene_Barjavel/

Présentation sur les ontologies OWL et les langages de règles

PROJET

Jean-Marc Vanel, développeur principal de EulerGUI, organise une présentation gratuite, avec démonstration d'outils libres sur le thème des ontologies OWL et les langages de règles, le ?????? juin de 19h à 20h30 à Paris 9éme .

Pour ceux qui sont déjà venus à mes précédentes présentations, on parlera moins des Logiciels Libres que nous développons (qui ont néanmoins gagné en maturité), et plus des technologies sous-jacentes. Il s'avère qu'on peut passer par un langage humain mais formel (Anglais seulement pour l'instant) pour spécifier des modèles métiers. Cela aide beaucoup à comprendre les formalismes du Web Sémantique (OWL), et les autres.

L'évènement s'adresse aux développeurs qui connaissent un peu la modélisation des données.

Pour s'inscrire, envoyer un mail à jeanmarc.vanel@gmail.com .

Plus de détails sur l'évènement :

http://jmvanel.free.fr/seminaires/seminaires_gratuits.html

Les outils:

[1] EulerGUI est une plaque tournante autour du langage N3, Open Source, en Java, qui embarque 4 moteurs pour la logique N3, et qui peut importer du RDF, RDFS, OWL, UML, eCore XMI, du bytecode Java, et convertir du XML de base et des XML Schema. Il peut exporter les formats du Web Sémantique, plus XML de base et JavaScript simple. C'est aussi un moteur de système experts; il a une API qui permet d'ajouter un système expert à n'importe quelle application. Les objets Java pouvant être référencés par le système expert, des règles métiers ou génériques peuvent déclencher des appels de méthode. C'est en fait une nouvelle façon de développer, centrée sur les règles et modèles métiers, analogue à l'approche MDA (Model Driven), mais plus simple à mettre en oeuvre, et réutilisant les standards du W3C (RDF, OWL, N3).

[2] Le projet compagnon est Déductions, qui inclut des règles N3 pour générer des formulaires, convertir UML en OWL, etc. Le framework est capable de générer à l'exécution en quelques millisecondes un formulaire à partir du modèle OWL, ce qui ouvre pas mal de portes.

[3] Protégé, Ace View

[4] bibliothèques: Jena, Pellet, RDFLib, ...

[5] logiciels serveurs (SPARQL query language) : Virtuoso, Sesame, TDB, SDB

[6] logiciels sur le poste de travail : Nepomuk

[7] moteur de recherches Web Sémantique: watson , swoogle ,

[8] serveurs publics : SPARQL Endpoints actuellement actifs , http://dbpedia.org/ , sindice

2010-05-10

Evènements Parisiens, agenda

L'Agenda du Libre

L'agenda des évènements du Logiciel Libre en France

Agenda Conférences JUG+duchess

2010-05-09

Requêtes complexes sur du code binaire Java avec EulerGUI

Merci à Luc Peuvrier pour ses questions qui ont alimenté cet article.

Une petite devinette N3 . Que signifie ce N3 ?

@prefix : <http://simile.mit.edu/2004/09/ontologies/java#> .
@prefix eg: <http://eulergui.sf.net#> .
{
  ?M :hasParameter [ :hasType "urn:java:eulergui.project.Project" ] .
} => {
  eg:answer eg:is ?M .
} .

Le [] est embêtant, pas très naturel ; je le refais sans :

{
  ?M :hasParameter ?P .
  ?P :hasType "urn:java:eulergui.project.Project" .
} => {
  eg:answer eg:is ?M .
} .

Si le sens de "eg:answer eg:is" vous échappe, ça veut juste dire "la réponse est ..." .

Réponse : "trouver toutes les méthodes qui prennent en paramètres des classes Projet" .

Actuellement dans EulerGUI le résultat est du N3 brut:

eg:answer eg:is <urn:java:n3_project.ProjectFileManagement$14--init>.
eg:answer eg:is <urn:java:n3_project.ProjectGUI--init>.
eg:answer eg:is <urn:java:n3_project.ProjectGUI--setProject>.
eg:answer eg:is <urn:java:n3_project.SubProjectsManagement--addButton>.
eg:answer eg:is <urn:java:n3_project.N3SourceFromRDF--init>.
eg:answer eg:is <urn:java:n3_project.N3SourceFromRDF--prepare>.
 ....... etc ...

Cela fait suite à l'ajout de java vers RDF par Olivier Rossel.

C'est intéressant pour de l'analyse de code.

Pour l'instant on a presque tout, à part le corps des méthodes. Donc il n'y a pas de graphe d'appel. Mais pour la relation d'utilisation, comme Olivier est parti d'un outil d'analyse de code, classycle et JDepend, on a des relations d'utilisation précalculées, exemple :

<urn:java:n3_project.ToolsManagement>
  a :Class ;
  dc:title "n3_project.ToolsManagement"@en ;
  :contained <urn:java:n3_project> ;
  :located <file:///tmp/jar/eulergui-1.6-SNAPSHOT.jar> ;
  :uses <urn:java:n3_project.ProjectGUI> ;
  :uses <urn:java:java.lang.InstantiationException> ;
.. etc ...

Avec le prédicat findall de Jos de Roo, hérité du Prolog, on peut rendre la réponse plus compacte:

{ _:d e:findall (
    ?M {
      ?M :hasParameter [ :hasType "urn:java:eulergui.project.Project" ] ;
      :hasReturnType "" .
    }
    ?MLIST ) .
} => {
  eg:answer eg:is ?MLIST .
} .

On a ajouté aussi la condition "le type de retour doit être void".

Ca crée une liste:

eg:answer eg:is (<urn:java:n3_project.ProjectFileManagement$14--init>
<urn:java:n3_project.ProjectGUI--init> <urn:java:n3_project.ProjectGUI--setProject> <urn:java:n3_project.SubProjectsManagement--addButton> <urn:java:n3_project.N3SourceFromRDF--init> 
<urn:java:n3_project.N3SourceFromRDF--init> <urn:java:n3_project.N3SourceFromRDF--init> 
 ...... etc

Je reconnais que la syntaxe de e:findall n'est pas à mettre entre toutes les mains. Le e:findall plus haut se lit : trouver tous les ?M tels que la condition entre {} soit vraie, et on met tous les ?M trouvés dans la variable ?MLIST.

Si vous avez eu besoin d'un truc plus puissant que les outils d'eclipse pour naviguer dans, et comprendre le code d'une l'application que vous avez écrite, EulerGUI peut vous aider. Je ne connais pas d'outils qui fassent ce genre de choses avec eclipse; il doit y en avoir, mais peut-être pas avec un langage de requête commode.

Si on modélise un logiciel Java en N3, toutes les requêtes imaginables sont possibles. Toutefois modéliser n'est pas le mot, disons importer; c'est automatique, on donne un répertoire où il y a des jars.

Une requête en language "plus commode" pourrait être traduite en N3, et le résultat N3 traduit en "réponse plus lisible". Il est vrai qu'actuellement le résultat est du N3 brut. Mais on pourrait le formatter plus joliment, et même en faire une liste d'hyperliens pour l'éditeur intégré jEdit.

Voir Reading a Java classes tree dans le Manuel EulerGUI.

2010-05-05

ProjectFactory----|>Project

Je suis en train d'étendre le traducteur Drools pour mettre directement en mémoire les objets d'infrastructure.

Pour supprimer l'étape de d'instanciation Java .

http://www.pactepme.org/place-de-marche

2010-04-29

Hier soirée bien remplie : d'abord ici: http://sparklingpoint.com/networkg.html , et ensuite là :

http://www.tsfjazz.com/jazzenda.php?id=17044&regi=1#anc1 Ce n'était pas Belmondo à la trompette , mais une jeunette qui ira loin : Airelle Besson.

Mais dans le train j'ai pris des notes sur la conception des prochains développements :

Une jolie coquille de moi : this object would be poetentially visible from the Internet.

2010-04-25

J'ai découvert un truc eclipse : si on double clique sur un fichier dans la fenêtre d'archivage (commit), on a une fenêtre de comparaison entre versions !

2010-04-23

svn diff --diff-cmd /usr/bin/diff -x -bw app_gui-rules2.n3
# => only debug modifs

svn diff --diff-cmd /usr/bin/diff -x -bw generic_gui_projection-rules.n3
287c301
<   ?CLASS rdfs:label ?LABEL_TEXT . # TODO not necessarily present
---
>   # TTTTTTTTTTTTTTT ?CLASS rdfs:label ?LABEL_TEXT . # TODO not necessarily present

[fact 0:1:907843762:-259644983:1:<http://exampleS.com#S> <http://exampleS.com#P> <http://exampleS.com#O> .

current.value

0:1:907843762:-259644983:1:<http://exampleS.com#S> <http://exampleS.com#P> <http://exampleS.com#O> .

11:21:13 [AWT-EventQueue-0] [error] PluginJAR: java.lang.NegativeArraySizeException
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at org.gjt.sp.jedit.jEdit.getViews(jEdit.java:2479)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at console.commando.CommandoToolBar.init(CommandoToolBar.java:56)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at console.ConsolePlugin.start(ConsolePlugin.java:130)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at org.gjt.sp.jedit.PluginJAR.startPlugin(PluginJAR.java:1392)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at org.gjt.sp.jedit.PluginJAR.activatePlugin(PluginJAR.java:753)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at org.gjt.sp.jedit.JARClassLoader._loadClass(JARClassLoader.java:414)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at org.gjt.sp.jedit.JARClassLoader.loadClass(JARClassLoader.java:109)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at java.lang.ClassLoader.loadClass(Unknown Source)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at java.lang.Class.getDeclaredConstructors0(Native Method)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at java.lang.Class.getConstructor0(Unknown Source)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at java.lang.Class.newInstance0(Unknown Source)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at java.lang.Class.newInstance(Unknown Source)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at org.gjt.sp.jedit.PluginJAR.activatePlugin(PluginJAR.java:735)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at org.gjt.sp.jedit.PluginJAR.activatePluginIfNecessary(PluginJAR.java:796)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at org.gjt.sp.jedit.jEdit.main(jEdit.java:483)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at eulergui.gui.view.TextEditor.displayEditor(TextEditor.java:222)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at n3_project.EditorManagement.openJavaEditor(EditorManagement.java:140)
11:21:13 [AWT-EventQueue-0] [error] PluginJAR:  at n3_project.EditorManagement.doOpenEditor(EditorManagement.java:109)

EulerGUI : prépa livraison 1.6

J'ai mis à jour EulerGUI avec ARQ 2.8.3, il faudrait tester un cas SPARQL.

J'ai mis à jour le CHANGELOG.

Il y a une régression mineure: ajouter un N3 ==> 2 lignes de boutons.

Il serait bien de lancer automatiquement le remplissage de la WM ( sans inférence ) pour avoir les tooltip ( 2h max ) , autrement il faudra passer 5mn à expliquer cette limitation dans la doc. C'est aggravé par le fait que des projets "Euler only" , comme deductions/n3_new/model-rules-coherence.n3p, ne compilent pas avec Drools (avec un popup inamical).

J'ai vérifié que les URL donnent bien lieu à des tooltips .

Il serait bien de changer le niveau de log pour les requêtes du tooltip:

INFO: _N3QueryToDroolsQuery.translate(): droolsSource:
query "file:/tmp/result-63595383503245314.n3"
// ---------- N3 rule 0 ----------
/* {
  <http://deductions.sf.net/owl/uml#translatedFromUML>    
  <http://www.w3.org/2000/01/rdf-schema#label> ?DETAIL.
}
 => {
  <http://deductions.sf.net/owl/uml#translatedFromUML>
  <http://www.w3.org/2000/01/rdf-schema#label> ?DETAIL.
}

2010-04-22

EulerGUI : problèmes avec retractFact.n3

jeanmarc. vanel: Compris ce qui ne va pas ici :

jeanmarc. vanel: rule "retractFact.n3 1"

when

$Triple_1 : Triple( subject == "<http://exampleS.com#S>", predicate == "<http://exampleS.com#T>", object == "<http://exampleS.com#U>" )

then

Triple newTriple;

TripleResult newTripleResult;

newTriple = new TripleUser();

newTriple.setSubject( "<http://exampleS.com#S>");

newTriple.setPredicate( "<http://exampleS.com#P>");

newTriple.setObject( "<http://exampleS.com#O>".toString() );

Object t = drools.getWorkingMemory().getFactHandle( newTriple )

;System.out.println( "replaceValue: retract " + t );

if( t != null ) retract( t );

end

jeanmarc. vanel: ça a *l'air* bien , mais en fait le retract( t ) final ne fait rien , car on crée un TripleUser comme objet à rétracter, et c'est un Triple de base qui est dans la KB ;

jeanmarc. vanel: j'avais fait ça à l'époque comme garde - fou, mais ça n'est pas utile ; je l'enlève .

2010-04-18

Fonctionalités EulerGUI : IDE basé sur des règles

jeanmarc. vanel: J'écoute Chuck Berry,

jeanmarc. vanel: téléchargé 9 CD :-)

lcpvrr@gmail.com: c'est mal ;-)

jeanmarc. vanel: surtout c'est mal de la part de Chuck d'avoir si peu composé depuis les années 70 ! Moi je soutiens les musiciens en allant les écouter en concert.

jeanmarc. vanel: Après l'expérience accumulée sur les transfo. SWRL et OWL, je reviens sur "large & complex ontologies and Déduction application generation" ; ça faisait longtemps.

lcpvrr@gmail.com: avez vous un plan pour faire un ide ?

- 10:28 -

jeanmarc. vanel: Et ce matin j'ai eu l'idée de transformer une base de règles pour y ajouter des instructions de trace;

jeanmarc. vanel: ensuite le résultat des traces en N3 pourra être retraité (à voir) en fonctions de certains buts de l'utilisateur,

jeanmarc. vanel: et aussi tout simplement visualisé dans l'éditeur,

jeanmarc. vanel: du genre plus c'est foncé, plus on a passé souvent dans ce triplet.

jeanmarc. vanel: Un des plans pour améliorer l'IDE *existant*

lcpvrr@gmail.com: eulergui ?

jeanmarc. vanel: oui ça se veut un IDE,

jeanmarc. vanel: en tous cas c ce que j'ai écrit sur la page d'ccueil ;-)

jeanmarc. vanel: Olivier est en train d'ajouter les tooltips qui expliquent les prédicats, et la complétion;

lcpvrr@gmail.com: j'ai mal lu ....

- 10:34 -

jeanmarc. vanel: pas grave, mais "faire un ide" , vous pensiez à quoi ?

jeanmarc. vanel: ça m'intéresse.

lcpvrr@gmail.com: un outil pour générer une application par description

jeanmarc. vanel: je voudrais aussi montrer un graphe de dépendances entre règles et aussi fichiers sources,

lcpvrr@gmail.com: voir aussi gérer les évolutions d'une application générées dèjà deployée

jeanmarc. vanel: tel que si R1 a le prédicat P1 dans sa conclusion , et la règle R2 a le prédicat P1 dans son antécédent , alors R2 dépend de R1 ;

jeanmarc. vanel: notez que ça aussi s'implémente par une règle.

jeanmarc. vanel: un outil pour générer une application par description, j'y pense bien sûr;

- 10:41 -

jeanmarc. vanel: pour l'instant la prochaine tâche c'est : "add to the existing class tree an action to start a Déduction form to enter properties for a new instance"

jeanmarc. vanel: autrement bien sûr l'idée simple c'est de faire un formulaire de type déduction pour définir l'appli. à générer.

- 10:48 -

jeanmarc. vanel: mais pour aujourd'hui, je voudrais avancer sur l'exploitation des expressions OWL complexes,

jeanmarc. vanel: du genre:

jeanmarc. vanel: Everything that is a mother of something is a woman.

jeanmarc. vanel: Every old-lady is something whose pet is an animal and that has-as-pet nothing but cats.

jeanmarc. vanel: Everything that is eaten by a sheep is a grass.

jeanmarc. vanel: etc , cf http://attempto.ifi.uzh.ch/aceview/examples/people_pets_nice.ace.txt

jeanmarc. vanel: l'exploitation de ces expressions OWL complexes ça veut dire :

jeanmarc. vanel: 1. les traduire en règles N3 , comme j'ai déjà commencé

jeanmarc. vanel: 2. les traduire en formulaires adaptatifs et visualisation d'instances ( à faire, idées bienvenues )

- 11:00 -

jeanmarc. vanel: il faut aussi intégrer dans EG une petite base de règles qui détecte les propriétés non déclarées mais utilisées dans une règle.

jeanmarc. vanel: bref, on avance sur l'aspect IDE pour règles :-)

jeanmarc. vanel: au fait , avez-vous essyé le nouvel éditeur jEdit dans EG ?

lcpvrr@gmail.com: non

jeanmarc. vanel: c'est le dernier jEdit 4.3.1 , avec tooltip en cas d'erreur ;

jeanmarc. vanel: et toutes les facilités du jEdit normal: fenêtre composites, highlight , coloration syntaxique pour N3 et tout ...

- 11:07 -

jeanmarc. vanel: autrement , au niveau bizz , le plan c'est : ayant mis sur pied une chaîne qui part de modèles en Anglais contrôlé (version formelle de l'anglais courant ) , cela me permettra dès la semaine prochaine d'aller voir des cobayes , et bientôt le client que j'ai en vue .

- 11:13 -

jeanmarc. vanel: au niveau architectural , j'ai déjà un certain nombre de bases de règles intégrées et intégrables dans EG , et ailleurs, mais pas de pattern générique pour faciliter cette intégration .

- 11:21 -

jeanmarc. vanel: il faut quelque chose basé sur des points d'insertion, mais les points d'insertion à la eclipse ne conviennent pas , car les interfaces ne sont pas spécifiées .

jeanmarc. vanel: A propos on va aussi faire un plugin EG pour Protégé .

lcpvrr@gmail.com: du pain sur la planche

jeanmarc. vanel: en effet

Il faudrait avoir une icône spéciale pour la ou les fenêtre jEdit de EG.

2010-04-16

system@tic - pôle logiciel libre

TODO répondre à

http://www.javafr.com/forum/sujet-RECUPERATION-LISTE-ENTITES-ONTOLOGIE_1426629.aspx

LIRE http://linuxfr.org/2010/04/16/26742.html

2010-04-12

Editeur N3 : complétion et tooltip

tâche 3 : N3 Editor : completion and tooltip explaining the properties and classes

Cette méthode dans Project :

public List<ITriple> search( String searchName, Object[] arguments ) {

donne accès à une requête nommée sur la KB utilisateur ( projectGUI.getProject() ).

Il n'est pas nécessaire qu'une inférence ait tourné.

searchName désigne un nom de requête tel qu'elle apparait dans le projet ( e.g. "./truc.n3" ).

Pour tooltip, on ajoutera temporairement avec addN3Search() une requête du genre :

{ <http://predicat_sous_le_curseur>
    rdfs:label ?L ;
    rdfs:comment ?L ;
    rdfs:domain ?D ;
    rdfs:range ?R .
} => {
  http://predicat_sous_le_curseur>
    rdfs:label ?L ;
    rdfs:comment ?L ;
    rdfs:domain ?D ;
    rdfs:range ?R .
} .

Plugin EulerGUI dans Protégé

Je pense qu'on pourrait facilement, en 1h, ajouter EulerGUI tout entier dans une vue Protégé.

Protégé utilise les plugins façon eclipse, mais il utilise Swing, et Felix au lieu d'equinox.

http://protegewiki.stanford.edu/index.php/PluginAnatomy

Mais l'intérêt serait médiocre, car il n'y aurait qu'une cohabitation dans une même fenêtre.

Là où ça commence à être intéressant, c'est quand EulerGUI a accès à l'ontologie courante de Protégé. Pour ça il faut que la lecture et surtout l'interprétation par EulerGUI d'un fichier OWL étendu soit faite. Dans la version plugin de EulerGUI, on enlèvera le début du menu Fichier.

Ajouter une source N3 devra enrichir l'ontologie courante de Protégé.

gens influents et technophiles

trouver des gens influents et technophiles: http://www.journaldunet.com/ , http://www.01net.com/ ,

mots-clé : blog, innovation, technologie, créativité, Web Sémantique, ontologies

Intelligence Artificielle, agents Intelligents, logique, data mining (fouille des données)

cloud computing, architecture, services

bioinformatioque, environnement, renouvelable, énergies, biodiversité

domotique, transports, informatique embarqué

amical pour l'utilisateur (user friendly)

logiciel libre, Open source, communautés

investissements, entrepreneurs, capital risque

trucs: Google: link: site:

Blogs trouvés

http://sciences.blogs.liberation.fr/home/divers/

http://fr.wikipedia.org/wiki/Jean_véronis http://blog.veronis.fr/2010/01/outil-wikio-sources.html


Fichier plugin.xml d'eclipse

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/rweb_pluginxml.html

http://www.philippe-fournier-viger.com/description_logics/introduction_logiques_de_description.php

C'est quand même sympa de voir "auditeur ajouté" dans les logs d'EulerGUI !!!

== listener added

2010-04-03

Micro ;) taches

Il faudrait passer à Euler 2010-04-03 et au nouvel ARQ;

finir la traduction Française, si Paul ne le fait pas.

Quand à moi , ma tâche micro est de valider l'usage de mon microphone ...

Message sur deductions-fr@googlegroups.com

Bonjour

Un mot rapide pour dire les nouvelles fonctionnalités de EulerGUI. L'éditeur pour N3 est maintenant le jEdit complet (4Mo de plus quand même!), avec une coloration syntaxique pour N3 qui existait déjà par Jakub Roztocil.

Olivier et Luc ont mis en place l'association entre la position dans le texte et l'AST de N3 (Abstract Syntax Tree). Cela permettra pas mal de fonctionnalités nouvelles dans l'éditeur N3, par exemple :

On pense même à visualiser l'exécution des règles, par exemple le nombre de fois où une condition a été satisfaite (et 0 est un cas intéressant pour le test de règles).

Traducteur depuis des règles SWRL vers logique N3

Il lance le traducteur sur les fichiers .owl et ajoute les règles N3 traduites au projet [2] . Vous pouvez glisser-déposer ce modèle OWL+SWRL dans EulerGUI :

http://owldl.com/ontologies/dl-safe.owl

On a fait ceci pas seulement pour être plus interopérable avec Protégé, mais surtout pour pouvoir récupérer les modèles construits en quasi-langage naturel avec Ace View [3] .

L'internationalisation est faite, et la localisation Française est en cours. Et il y a un snapshot à l'endroit habituel.

Il a donc matière à faire une livraison cette semaine.

Ceci est un projet Open Source, et je vous invite à nouveau à exprimer vos besoins.

Les demandes de fonctionnalités sont ici (Feature Requests) sont ici :

http://sourceforge.net/tracker/?func=browse&group_id=237733&atid=1104479

Il y en a aussi là :

http://jmvanel.free.fr/computer-notes_2008.html#L93

[1] http://deductions.svn.sourceforge.net/viewvc/deductions/n3_new/model-rules-coherence.n3

[2] http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html#L2219

[3] http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html#L1038

Cordialement

2010-04-02

Mettre à jour le GUI après avoir ajouté la traduction depuis SWRL

Je suis en train créer une classe eulergui.gui.controller.ProjectGUIApdater qui implémente ProjectListener, et qui va mettre à jour le GUI quand les sources et les query changent, conformément au pattern observateur.

La motivation initiale est de mettre à jour le GUI après avoir ajouté la traduction depuis SWRL.

Ca va lancer un train de refactoring, puisque SourceFilesManagement sera à terme simplifié pour ne faire que la mise à jour du "modèle" Project.

ça maaaaaaaaaarche !

J'ouvre dl-safe.owl , et il apparait dans le projet dl-safe.owl.rules.n3 !

2010-03-31

http://www.i-ventive.com/component/page,shop.product_details/flypage,shop.flypage/product_id,516/category_id,104/manufacturer_id,0/option,com_virtuemart/Itemid,36/

Tests in error:

testSimpleURLProject(eulergui.gui.TestJavaEditor)

testURLProject(eulergui.gui.TestJavaEditor)

2010-03-29

nouveau site Français sur le web sémantique

Découvert un nouveau site Français : http://www.websemantique.com/

http://eulersharp.svn.sourceforge.net/viewvc/eulersharp/trunk?view=log

[Jena-devel] Eyeball 2.3 RC 1 mérite d'être testé ...

Réglages jEdit

Installé jEdit 4.3.1 + le plugin highlight; très utile le plugin highlight ! En gros il jaunit toutes les occurences, et montre cela aussi dans la marge globale.

Grâce au plugin highlight, si je mets le curseur sur => , toutes les règles N3 sont indiquées dans la marge de droite.

J'ai coché "word wrap=soft" dans Editing, et middle button dans mouse.

2010-03-28

Euler, traduire du SWRL en N3

Je pousse le processeur de Jos dans ses retranchements. Le but c'est de traduire du SWRL en N3, en particulier celui qui sort de Attempto ACE View. Je viens juste de renvoyer une nouvelle balle à Jos.

Mais aujourd'hui , il fait 200km à vélo ... Donc aujourd'hui je vais travailler sur "la conscience de l'application" .

A propos de JTree je pense à valoriser le JTree produit par Pellet .

Utilisez vous la vue display dans la perspective Debug d'eclipse? La vue display, hyper utile !!!!

Vous avez, dans le contexte du point d'arrêt , toutes les facilités de l'éditeur Java. Vous pouvez évaluer la sélection avec Control-D. Je l'utilise souvent en collant du code depuis ou vers l'éditeur Java .

2010-03-27

L'écueil à éviter avec les IHM intelligentes : http://www.dilbert.com/fast/2008-11-10/

Le détecteur de fuites mémoire pour Java de Luc

Disons qu'en C/C++ (hormis utilisation d'un garbage collector) il n'y a pas de libération automatique de la mémoire allouée.

Le type de fuite mémoire commun à C/C++ et JAVA est la création d'objet sans destruction (déréférencement dans le cas de JAVA), et c'est la seule raison de fuite que je connaisse en JAVA (hormis un garbage collector défaillant !)

Le but de mon outil est de trouver les objects ajoutés en mémoire après un traitement.

Présentation de l'outil:

http://joafip.sourceforge.net/impl/memoryleak/memoryleak.html

2010-03-25

On trouve de tout dans les oeuvres complètes de Dilbert: Dilbert & agilité:

http://www.dilbert.com/fast/2007-11-26/

Annonce EulerGUI 1.5

L'annonce d'hier n'a pas été ignorée : https://sourceforge.net/project/stats/detail.php?group_id=237733&ugn=eulergui&mode=60day&&type=prdownload

Cependant ça ne se reflète pas encore sur la page de téléchargement : https://sourceforge.net/projects/eulergui/files/ deux sulement ce matin.

2010-03-24

Analyseur syntaxique d'EulerGUI tolérant aux erreurs

Continuer après la première erreur de l'analyseur syntaxique d'EulerGUI, ce serait grandiose . Ca pourrait ouvrir des contrats, car tout le monde n'a pas envie d'utiliser des éditeurs graphiques , assez contraignants ( genre éditeur SWRL de Protégé )


C'est impératif de passer les tests

1. régulièrement, par exemple quand vous allez boire un café , etc

2. sur un répertoire indépendant du répertoire de dev.

2010-03-17

Réécrire la traduction de logique N3 vers Drools

J'ai des projets pour réécrire la traduction de logique N3 vers Drools, à l'aide

un moteur en langage N3.

Cela revient à utiliser des règles pour les règles !


L'essence de la politique commerciale du logiciel:

http://www.dilbert.com/fast/2009-03-21/

J'aime celle-là : http://www.dilbert.com/fast/2000-03-19/

Les rapports homme -femme:

http://www.dilbert.com/fast/2001-05-18/

2010-03-16

Transformation de SWRL vers N3 en N3

La base de règle en N3:

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/examples/swrl-n3-rules.n3

Elle prend comme entrée la représentationen RDF/N3 de cette règle SWRL:

Grandchild(?x) , hates(?x, ?y) , sibling(?x, ?y) -> BadChild(?x)

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/examples/dl-safe.owl_small.n3

et produit cette traduction en logique N3:

{_:sk1 a :Grandchild. _:sk1 :sibling _:sk2. _:sk1 :hates _:sk2} =>
{_:sk1 a :BadChild}.

Enfin, presque, il devrait avoir des variables avec point d'interrogation au lieu des

nœuds anonymes.

Ceci est un exemple de règles traitait d'autres règles. Notez que cela ne fonctionne pas avec le moteur Drools/N3, il s'exécute avec le moteur N3 de Jos de Roo en Prolog.

Les variables sont reliées aux règles ainsi:

?RULE :hasVariable ?V .

Voici les prédicats élémentaires, où le suivant fait appel au précédent:

  1. substitution de variable ?V par ?VT dans un triplet ?T
  2. substitution d'une liste de variables ?L dans un triplet ?T
  3. substitution des triplets dans une formule ?F
  4. substitution des triplets dans une paire de formules (?A ?C)

Ceci parait plus performant que l'autre solution où 2. et 3. sont inversées:

  1. substitution de variable ?V dans un triplet ?T
  2. substitution de variable ?V dans une formule ?F
  3. substitution d'une liste de variables ?L dans une formule ?F
  4. substitution d'une liste de variables ?L dans une paire de formules (?A ?C)

Présentations OWL en Français

Une bonne introduction à OWL 1, par F. Lepique de l'EPFL :

http://sewww.epfl.ch/SIC/SA/SPIP/Publications/spip.php?article1182

http://www.lacot.org/public/introduction_a_owl.pdf

http://boita.info.unicaen.fr/plone/ressources/ontologies

Dans la Préface de la traduction Française de OWL, un lexique OWL franco-anglais .

Ace View et SWRL

Les réponses de Kaarel sur Ace View et Attempto, voir la liste Attempto :

http://attempto.ifi.uzh.ch/site/mailinglist/

https://lists.ifi.uzh.ch/pipermail/attempto/2010-March/

particulièrement

https://lists.ifi.uzh.ch/pipermail/attempto/2010-March/000462.html

2010-03-12


http://mavensearch.net/

http://mvnrepository.com/

aucun des 2 ne connait jenabeans ni EulerGUI

d'ailleurs un jour il faudra organiser la copie vers le dépot central Maven .

TODO

2010-03-04

Who's who du Web Sémantique Francophone

Les contacts de Olivier Rossel

Nancy , Hala Skaf

Pierre Antoine Champin, Lyon: a fait un traducteur RDF ==> XML

François Rioult, Caen - pointu

Mathieu D'Aquin, Mr Watson

Alexandre Passant DERI, Irlande, sémantisation des réseaux sociaux

Fabien Gandon, INRIA Sophia

Jérome Euzenak? INRIA Grenoble

Raphaël Troncy, INRIA?

Gautier Poupeau des petites cases

Participants à la conférence Protégé 2009

Olivier Dameron, Université de Rennes

???

Les visiteurs du canal IRC websemantique.org et les inscrits sur ce site

Karl Dubost (Canadien)

evlist

gunt?

Divers

Xavier Lacot, traducteur de la spec. RDF

http://xavier.lacot.org/index_en.html

J.J.SOLARI traducteur de la spec. OWL

http://1id.com/contact/=jj.solari

http://julien.chauveau.online.fr/ : donne des TD sur OWL et Jena

Frédéric Comte, Ph.D student in the RCR team of the Montpellier Laboratory of Computer Science, Robotics, and Microelectronics (LIRMM). http://www.lirmm.fr/~frcomte/

http://www-inf.it-sudparis.eu/cours/middleware/enseignement/projetsEtudiant/0405/OntologiePocketPC.htm

François Rioult, GREYC - CNRS UMR 6072 - Université de Caen Basse-Normandie

Département informatique - Campus Côte de Nacre, F-14032 Caen cedex Tel: +33 (0)2.31.56.73.79 - Fax: +33 (0)2.31.56.73.30 Office: Sciences 3 - 353

email: Francois.Rioult@info.unicaen.fr

Stéphane Lafrance

Séminaires

http://www.lirmm.fr/~semindoc/ Montpellier

EulerGUI: prendre en compte la validation des données (contraintes)

ajouter le nouveau triplet dans la KB, mais avec un statut non donnée utilisateur; lancer les règles; si pas status valide ajouter statut donnée utilisateur.

Note: le statut donnée utilisateur existe déjà, pour distinguer les resources utilisateur des objets d'infrastructure (widgets etc).


punning ?

Note that one should first load the vocabulary countries_base.owl before the ACE text can be parsed.

EulerGUI et étudiants; questionnaire

Nous sommes un éditeur de logiciel Open Source, et en tant que tel, nous sommes très intéressés par l'usage et le retour d'expérience des étudiants sur EulerGUI.

Nous apprécions suggestions, cas d'utilisation et rapports de bogue.

EulerGUI est une plaque tournante pour le Web sémantique, et au-delà (UML, Ecore, XML Schema), avec des règles logiques en N3 pour les requêtes, la transformation de graphe, la validation. Il peut être utilisé tant pour le génie logiciel que pour le raisonnement sur un domaine métier. En complément de Protégé, Pellet et Jena, il peut être utilisé pour l'apprentissage du Web Sémantique et de la conception basée sur des règles.


Premièrement vous avez téléchargé EulerGUI?

Avez-vous essayé la version "snapshot" à http://eulergui.sourceforge.net/tmp/? Si oui quelle révision SCM ; à voir dans Help / About ...

Ecrivez-vous vos ontologies ? Si oui quel éditeur utilisez-vous?

Utilisez-vous des ontologies existantes ? Si oui lesquelles ?

Avez-vous essayé la conversion UML ou XMI ==> N3 ==> OWL ? En auriez-vous besoin ?

Avez-vous essayé la conversion XML de base ==> N3 ? En auriez-vous besoin ?

Vous avez une expérience préalable avec un langage de règles (SWRL, Drools, Jess, JRules, ...)?

Vous avez une expérience préalable avec un langage de motifs (patterns) tel que XSLT, yacc, JavaCC, ANTLR, ... ?

Avez-vous une expérience antérieure avec un langage logique comme Prolog?

Quelles sont les choses les plus agaçantes avec EulerGUI?

Pour le web sémantique, utilisez-vous N3 ou Turtle?

Êtes-vous un développeur Java?

Travaillez-vous sur Windows, Linux ou Mac? Quelle version?

Quelles autres technologies utilisez-vous? Protégé , Jena , autre ?

Y at-il un site ou un rapport sur votre projet? Si non, quel est le site web de votre département de faculté?

Les ontologies, règles et code source que vous écrivez sont -elles disponibles sur Internet ou confidentielles?

2010-02-26

Editeur N3

Il y aura deux façons de travailler:

  1. ayant créé une ontologie, on utilise la complétion pour créer les règles utilisant les propriétés et les classes prédéfinies
  2. on crée des règles utilisant librement des propriétés et des classes, et à partir de là EulerGUI génèrera les déclarations pour ces propriétés et classes

2010-02-21

A VOIR : les participants de http://barcamp.org/SemanticCampParis

Ajouts aux tâches EulerGUI

voir "Les attendus du CDD sur EulerGUI"

2010-02-19

http://www.clubdescreateurs.com/index.php?tg=articles&idx=Print&topics=50&article=650

http://www.fsf.org/licensing/licenses/agpl-3.0.html

Traduction SWRL ==> règles N3

J'ai travaillé, avec l'aide de Jos, sur des règles qui engendrent des règles;

SWRL ==> règles N3 via N3 :-)

eulergui/examples/swrl-n3-rules.n3

Ce n'est pas seulement pour la beauté de la chose; des gens écrivent des règles en SWRL aujourd'hui. Il faut pouvoir les importer .

Et puis l'éditeur SWRL de Protégé n'est pas mal .

Datao

Datao par Olivier Rossel est une agréable interface graphique pour RDF, orientée graphes.

Je devrais essayer datao sur Windows ou Linux 32 bits:

http://jump.to/datao

N3 Logic document by TBL corrected

When I try to save http://www.w3.org/DesignIssues/N3Logic , Amaya saves it in

$HOME/Documents/www.w3.org/DesignIssues/N3Logic.html

I sent a corrected version to TBL.

2010-02-18

Je cherche à trouver qui utilise les technos du Web Sémantique dans des projets de Système d'Information.

J'ai aidé ma fille à faire son TPE : Le projet français dans les énergies renouvelables

Tests EulerGUI

http://deductions.svn.sourceforge.net/viewvc/deductions/n3/ecore.n3p

http://deductions.svn.sourceforge.net/viewvc/deductions/n3/extlibrary.ecore

2010-02-17

LARQ - Free Text Indexing for SPARQL

BPML, BPEL dans EulerGUI

Exit BPML, place à BPEL de Oasis.

fr.wikipedia : Business_Process_Execution_Language

Pour tester, il faudrait avoir quelques instances BPEL.

Je n'ai pas fait les éléments racines, qui seraient nécessaires pour l'export RDF --> BPEL .

2010-02-12

Is there a translator from simple Prolog or Datalog to N3 logic or SWRL ?

For example, for N3 logic this Prolog

daughter(X,Y) :- father(Y,X), female(X).

should be translated into:

{
  ?Y father ?X .
  ?X a female .
} => {
  ?X daughter ?Y .
}.

Séminaire démo de demain

Le programme

A FAIRE

Script demo. :



Installer Nepomuk sur Ubuntu

J'ai installé kubuntu-desktop, et 2 paquetages de nom nepomuk*, mais je ne vois rien venir... En plus sous KDE, mes réglages pour avoir 2 écrans en un seul écran virtuel sont à refaire :) . Je reviens à Gnome pour l'instant .

Alexandre Monnin sur le "tagging sémantique"

Hier exposé intéressant de Alexandre Monnin sur le "tagging sémantique" (en French dans le texte), lié aux folksonomies. J'ai appris plein de choses sur flickr etc.

J'ai entendu parler de RDF 2:

http://www.w3.org/2001/sw/wiki/RDF2Wishlist

pointing to this by Sandro Hawke:

http://decentralyze.com/2009/10/30/rdf-2-wishlist/

Au passage j'ai revu GRDDL: http://www.w3.org/TR/grddl/ : une usine à gaz!

Olivier Rossel a mis son grain de sel sur les attributs rdf: ID sur les propriétés :

En gros vous devez avoir une référence sur ce triplet.

Ce qui est parfaitement disponible en RDF / XML par l'attribut rdf: ID sur les propriétés.

Malheureusement, il n'existe pas d'équivalent dans d'autres dialectes du RDF.

2010-02-11

Les attendus du CDD sur EulerGUI

Je précise qu'il s'agit de travailler en étroite collaboration avec moi; c'est un projet résolument Extreme Programming. Je vais cependant me spécialiser sur la "programmation" à l'aide de règles logiques, et laisser un peu l'aspect Java. Tout n'est pas à faire dans le cadre de cette mission, cela dépendra d'une évaluation plus fine des durées de tâches, et bien sûr des contrats en cours, et des souhaits du prestataire.

D'abord une bonne part de refactoring et de re-architecturation d'EulerGUI.

Q: En bref, je vois que vous demandez un projet de 3 mois; mais il faudrait avant tout définir un cadre de travail avec des objectifs temporels et fonctionnels.

Oui.

Q: Comme je vous l'ai dit, je considère votre projet comme très prometteur et je voudrais pouvoir mieux le cerner.

J'ai bien sûr un wagon de fonctionnalités en vue ( eulergui documentation TODO ) ; pour l'instant il s'agit d'amorcer la pompe ; les priorités sont par rapport: 1. à ce qui paye en terme de démonstration ; 2. au serveur.

Pour le point 1. :

Q: S'il fait le travail, je ne vois pas le souci ;-)

Le souci c'est montrer la cohérence de la démarche, beaucoup y sont sensibles.

Par ailleurs c'est une bonne façon de rentrer au coeur de l'architecture, puisque pour exploiter les données en N3, on va écrire des règles qui traduisent le graphe RDF en graphe d'objets Java (la même technique utilisée dans le génération d'pplications).

Q: je vous comprends, il est toujours difficile de trouver le juste milieu entre un développement pragmatique et l'état de l'art.

Oui, c'est ça , ça a commencé comme une exploration, et maintenant il faut consolider; par exemple les tests il en manque; l'IHM est à peine MVC :-( ...

Toujours point 1. :

Deuxième point, le serveur est le dernier rejeton de la famille ( cf EulerGUI server ) . C'est là que portent les meilleurs espoirs d'affaires à court terme. Comme dit le document précité, L'idée est d'exposer via un serveur REST un projet EulerGUI. Pour respecter les bons principes d'architecture du projet (la Modularité Intelligente ), on s'efforcera de faire cela d'une façon générique, un peu comme on peut exposer une API via WSDL.

2010-02-10

http://www.touilleur-express.fr/a-propos-de-lauteur/

Conférences

Ludique

Alexis Saurin, PPS Paris,

Focalisation en Ludique

http://contraintes.inria.fr/~fages/SEMINAIRE/

http://www.inria.fr/rocquencourt/recherche/les-equipes-de-recherche/CONTRAINTES_page

La Ludique” : une introduction

http://prevert.upmf-grenoble.fr/~alecomte/introlude.pdf

http://fr.wikipedia.org/wiki/Jean-Yves_Girard

http://fr.wikipedia.org/wiki/Logique_linéaire

http://www.inria.fr/rocquencourt/recherche/les-equipes-de-recherche/GALLIUM_page

JUG 2ème aniversaire

Focalisé sur le logiciel Open Source

Reparlé avec Charles, Cédric V.

Mon séminaire le samedi 13

Proposé sur la liste du JUG.

seminaires/seminaires_gratuits

Envoyé mon offre de mission développement Java

J'attends les retours sur ma liste privée; ensuite je l'enverrai au JUG.

Je propose un CDD de trois mois (ou une mission pour un indépendant) pour un développeur expérimenté ou senior.

Si vous connaissez quelqu'un qui peut être intéressé, veuillez lui faire suivre ce courriel.

Le poste est en Île de France, avec possibilité de télétravail partiel.

Il s'agit de travailler sur un projet Open Source qui consiste en outils de développement analogues au MDA (Model Driven Architecture). C'est l'occasion de découvrir la programmation à base de règles, le Web Sémantique, l'Intelligence Artificielle, et pas mal d'autres choses sur un projet novateur déployant des concepts qui sont en train de révolutionner l'informatique.

C'est un projet dans les règles de l'art, avec une documentation, des tests, une feuille de route.

Les perspectives sont vastes, dans les développements spécifiques, la création de sites communautaires, les IHM conviviales, l'automatisation et la cartographie des développements, applications et matériels, la gestion de la connaissance au sens large, etc ...

Au-delà des compétences techniques, on demande d'avoir des idées et de savoir les expliquer, et d'aimer apprendre.

Expérience en :

- Java IHM

- Java serveur Web

- eclipse

- projets Open Source

- projets Extreme Programming

- Subversion

- Maven

- services Web

- design patterns

Des plus, il y en a beaucoup:

- eclipse: développement de plugins, EMF

- moteurs de règles (Ilog, Drools)

- développement de compilateurs

- développement de bases de données

- services Web, SOA

- langages fonctionnels (OCAML, Haskell, Scheme, ML, ERLANG, Scala, etc)

- langages classiques: Python, PHP, Ruby, ...

- programmation logique (Prolog)

- Web Sémantique, RDF, OWL, ...

- bases relationnelles, SQL

- modélisation : UML, MDA, DSL, ...

- XML, XSLT, XQuery

Les projets:

http://eulergui.sourceforge.net/

http://deductions.sourceforge.net/

La vision:

http://jmvanel.free.fr/vision.html

ontosudoku

http://code.google.com/p/ontosudoku/

Les threads java : exposé demain soir par Heinz Kabutz

Hélas je ne pourrais y aller ici :

http://www.zenika.com/conference/java/secret-de-la-concurrence-java-par-heinz-kabutz

puisque je serai là:

http://sparklingpoint.com/networkg.html

Les réunions sparklingPoint sont toujours intéressantes, et en plus là on va parler RDF et Cie ...

2010-02-09

Protégé 4 est assez agréable; mais je viens d'envoyer une suggestion; on verra combien ça prend ...

Evènements Java Paris

http://www.java-freelance.fr/formation/evenements-java-en-fevrier-sur-paris

Accumulation en logique N3

En serrant tous les boulons, ça marche, tant avec Euler qu'avec Drools.

TODO ajouter un article "N3 Design patterns" dans la doc.

{
  ?I a exp:Itinerary .
  ?I exp:distance ?D .
  ?I list:hasNext ?N .
  ?N :totalDistance ?NT .
  (?D ?NT) math:sum ?T .
} => {
  ?I :totalDistance ?T .
} .

{
  ?I a exp:Itinerary .
  ?I exp:distance ?D .
} => {
  ?I :totalDistance ?T .
} .

{
  ?I a exp:Itinerary .
  ?I list:hasNext exp:emptyItinerary .
} => {
  ?I :totalDistance 0.0 .
} .

EulerGUI server

URLs de test:

http://localhost:8080/eulergui_server/n3_query?query-uri=./facebook-search-knows.n3

http://localhost:8080/eulergui_server/n3_query?query-uri=./facebook-search.n3

http://localhost:8080/eulergui_server/n3_query

POST N3 : http://localhost:8080/eulergui_server/n3 ; par exemple :

@prefix <http://jmvanel.free.fr/> .
@prefix foaf: <> <http://xmlns.com/foaf/0.1/> .
: foaf:maker "Jean-Marc Vanel" .

openlibrary.org

Ceci renvoie le RDF (JSON aussi possible) :

http://openlibrary.org/b/OL17315745M.rdf

alors que ceci renvoie le HTML:

http://openlibrary.org/b/OL17315745M

Une IHM client REST java : http://code.google.com/p/rest-client/

C'est assez semblable à ce que fait DbPedia:

http://dbpedia.org/data/Barack_Obama.n3 , alors que la page HTML qui montre les champs est ici :

http://dbpedia.org/page/Barack_Obama

FOAF et les noms

http://xmlns.com/foaf/spec/

Dans FOAF, il y a plusieurs façons de donner le nom : name, firstName, etc. Il faudrait des règles pour ça.

A FAIRE EulerGUI

2010-02-08

http://semantic-mediawiki.org/wiki/Semantic_MediaWiki

EulerGUI serveur / notes de frais

A FAIRE

JRE avec info de debug

En fait pour avoir le JRE avec info de debug, il faut prendre la version beta 7 ici :

http://download.java.net/jdk7/m5/

Bon à savoir!

Tout va bien , j'ai pu debugger le JDK ; déverminer en Français.

Questions: SWRL, Ace View

Si je comprends bien, le plugin SWRL de Protégé 3.4.2 est basé sur un processeur spécifique à Protégé, alors que le plugin SWRL de Protégé 4.0.2 est basé sur Pellet.

Qu'en est-il du projet de faire un processeur SWRL qui s'appuie sur un base de données?

Est-ce que Ace View est bien le plus avancé parmi les outils Attempto ( Ace Wiki, Ace Prolog, ... ), dans l'utilisation des standards OWL et SWRL ?

Une règle à la FaceBook

Je développe un moteur de règles, mais qui pour l'instant travaille en mémoire :( ;

Par exemple une règle à la FaceBook :

Si j'ai deux amis qui ont tous deux Z comme ami, alors Facebook va me faire une proposition d'ami pour Z .

s'écrit en logique N3:

In extenso (s'appuie sur la symétrie de :knows ) :

{
  ?C :current_user true .

  ?C :knows ?X .
  ?C :knows ?Y .

  ?X log:notEqualTo ?Y .

  ?Z :knows ?X .
  ?Z :knows ?Y .
  ?C log:notEqualTo ?Z .
} => {
  ?C :friend_proposition ?Z .
} .

Simplifié à titre pédagogique :

{
  ?C :current_user true .

  ?C :knows ?X .
  ?C :knows ?Y .

  ?X :knows ?Z .
  ?Y :knows ?Z .
} => {
  ?C :friend_proposition ?Z .
} .

Idées

XChat

Je ne sais pas régler le volume sonore.

Je viens de découvrir où sont les conversation enregistrées, en cliquant sur Préferences / bavardage / journalisation / ouvrir le dossier des données :

ls ~/.xchat2/scrollback
chat.freenode.net  FreeNode  GimpNet  irc.codehaus.org

2010-02-07

En tentant de mettre à jour eclipse:

An error occurred while collecting items to be installed
  session context was:(profile=PlatformProfile, phase=org.eclipse.equinox.internal.provisional.p2.engine.phases.Collect, operand=, action=).
  No repository found containing: osgi.bundle,org.eclipse.emf.ocl,1.1.101.v200808291106
  No repository found containing: org.eclipse.update.feature,org.eclipse.emf.ocl,1.1.101.v200808291106-108Z7w3119193_2217
  No repository found containing: osgi.bundle,org.slf4j.extendable,1.4.3

J'ai désactivé au démarrage plusieurs plugins que je n'utilisais pas, Drools et Cie.

2010-02-05

Protégé bugs

Client Web Attempto , ACE 6.5 in a Nutshell

http://www.lespetitescases.net/amusons-nous-avec-rdfa

Virtuoso Open-Source Edition http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/

2010-02-04

A FAIRE EulerGUI :

Drupal + RDF

J'ai cherché avec ces mots-clés

drupal import classes properties

et en 1ère position , il y a ceci qui n'a pas l'air mal : EVOC, qui importe en fait du RDFS, et probablement du OWL :

http://drupal.org/project/evoc

http://drupalcode.org/viewvc/drupal/contributions/modules/evoc/README.txt?view=markup&pathrev=DRUPAL-6--1

Et en + c'est fait par un Français, Stéphane "scor" Corlosquet, mais Irlandais à présent.

http://openspring.net/

Ils importent par défaut un vocabulaire dont je ne me rappelais pas:

http://rdfs.org/sioc/spec/

qui a l'air pas mal.

Le Web Sémantique ... language universel

<jmv> disons que ce n'est pas le courant principal de l'informatique ...

<jmv> Mais je pense que que c'est le language commun dont a besoin .

<jmv> Tout est un URI ( ou un type de base ).

<jmv> On peut donc mettre son grain de sel sur tout.

Idée : utiliser un moteur de règles pour les pare-feux Internet

Héhé , certains fournisseurs commerciaux y ont pensé : "rule engine" firewall Internet

Je travaille sur mon serveur REST qui donne accès à un moteur de règles (EulerGUI serveur), et je me demande ce qui est le mieux comme outil de test : jWebUnit , HttpUnit , peut-être htmlUnit .

http://blog.ait-chaker.com/?p=150 : une page pas mal de juillet 2009 (laissé une question) .

Développe le serveur "EulerGUI", moteur de règles N3

Mis à jour EulerGUI serveur. Au passage proposé Idea #522: adding Table of Contents in the Trac pages

L'état des lieux est suffisant pour la phase d'intégration avec Drupal :) ; maintenant A FAIRE : notes de frais : modèle et règles métier .

COMMIT

In fact there cannot a body in a GET request

Tested

http://localhost:8088/eulergui_server/n3_query?query-uri=./facebook-search.n3

Committed revision 1207

Added necessary stuff to Drools/N3 API, so that the facts parsed from N3 can be inserted into Drools Working Memory , like this :

List<ITriple> facts = project.getTranslator().translate(
new N3Source(n3String) );
project.getTranslator().copyN3factsToDrools( facts );

eulergui_server:

after doing /n3, /n3_query DOES produce the 2 extra triples with foaf2

Committed revision 1206

eulergui_server: now a single dispatcher servlet, plus a TripleStore facade

both N3 search AND entering N3 facts work now

tested with :

http://localhost:8088/eulergui_server/n3_query ; request body: ./facebook-search.n3

http://localhost:8088/eulergui_server/n3 ; request body:

<http://xmlns.com/foaf/0.1/f2> <http://xmlns.com/foaf/0.1/knows> <http://xmlns.com/foaf/0.1/foaf2> .
<http://xmlns.com/foaf/0.1/f1> <http://xmlns.com/foaf/0.1/knows> <http://xmlns.com/foaf/0.1/foaf2> .

2010-02-03

http://cyrille.martraire.com/

http://www.paris-web.fr/2009/-Jeudi-8-octobre-#conf60

http://www.la-grange.net/

Essayé freemind

Un peu décevant, c'est purement arborescent, et une seule sorte de lien (et de noeud). Décidément pas un outil sémantique.

Voir l'image de mon essai "partage de collections botaniques" .

Développe le serveur "EulerGUI", moteur de règles N3

Voilà mon nouveau titre sur gmail; avant c'était:

Améliore le générateur d'IHM Déductions

COMMIT

Committed revision 1205

eulergui_server: N3 search works now in the server

tested with http://localhost:8088/eulergui_server/n3_query ; request body: ./facebook-search.n3

works with EulerGUI jar SCM-Revision: 1204

N3 searches / Drools queries: update the TripleStore API that is used in the Web server

Pour info., voilà comment la recherche N3 se compile dans EulerGUI (IHM); la bidouille se situe là en gras :

Thread [main] (Suspended (breakpoint at line 152 in N3toDroolsUpdater))
N3toDroolsUpdater.translateQuery(N3Source) line: 152
Project.addN3Search(N3Source) line: 252
SourceFilesView.fireEventsToUpdateN3SourceComponents() line: 87
SourceFilesView.makeButtonsPanel() line: 64
ProjectGUI.layoutFrame() line: 207
ProjectGUI.newWindow(Project) line: 139
ProjectGUI.main(String[]) line: 111

Questionnaire pour un contact "Web Sémantique"

Êtes-vous un indépendant ou salarié ?

Êtes vous un développeur?

Un intégrateur?

Travaillez-vous sur Windows, Linux, ou Mac ?

Faites vous des sites Web ou travaillez-vous dans l'infrastructure (serveurs RDF, SOAP, REST etc ) ?

Quelles technologies Web utilisez vous ?

utilisez-vous un framework PHP tel que Drupal, Joomla, etc ?

Utilisez -vous Protégé, ou OWL en général ?

Utilisez -vous une base RDF SPARQL ?

2010-02-02

compare ocaml haskell

http://www.developpez.net/forums/d359372/autres-langages/langages-fonctionnels/comparaison-scheme-ocaml-lisp-prolog/

connaitre son adresse ip externe sous linux:

$ dig +short myip.opendns.com @resolver1.opendns.com

http://groups.google.com/group/deductions-fr : EulerGUI: requêtes nouveau style, serveur

2010-02-01

http://starynkevitch.net/Basile/

Traduction en français des recommandations du W3C http://www.la-grange.net/w3c/

Carnets de de La Grange de Karl Dubost http://www.la-grange.net/

http://www.paris-web.fr/2009 : articles intéressants

EulerGUI serveur / notes de frais

A FAIRE

2010-01-31

Langages fonctionnels

http://fr.wikipedia.org/wiki/Programmation_fonctionnelle

http://www.pps.jussieu.fr/Livres/ora/DA-OCAML/book-ora203.html

A Tour of Scala : http://www.scala-lang.org/node/104

http://merd.sourceforge.net/pixel/language-study/syntax-across-languages-per-language/

http://hackage.haskell.org/package/swish

http://www.ninebynine.org/RDFNotes/Swish/Intro.html

Installer Mercury

http://www.mercury.csse.unimelb.edu.au/download/rotd.html

sh configure
time make -j 3
make -j 3  787,41s user 63,18s system 97% cpu 14:34,36 total

Essayer Haskell

Installé ces packages sur Ubuntu:

sudo apt-get install ghc6 ghc6-doc libghc6-parallel-dev

libghc6-library-dev n'existe pas :(((((((( .

http://www.haskell.org/haskellwiki/Haskell_in_5_steps

http://www.haskell.org/haskellwiki/Learn_Haskell_in_10_minutes

http://learnyouahaskell.com/starting-out

http://www.haskell.org/sitewiki/images/5/5e/GentleFR.pdf

http://www.haskell.org/hoogle/

Avec ghci il faut entrer les expressions avec let sur une seule ligne, cf interactive-evaluation :

let factorial 0 = 1 ; factorial n = n * factorial (n-1)

ou alors comme ceci avec :{

:{
 let factorial 0 = 1 ;
     factorial n = n * factorial (n-1)
:}

Pour avoir la liste des comandes de l'ionterpréteur:

:h

I'm on Ubuntu 9.10, and I don't know the Ubuntu package for library Data.Map

Learn_Haskell_in_10_minutes

import qualified Data.Map as M

http://www.haskell.org/haskellwiki/IRC_channel

#haskell

#haskell.fr

ghc --make -o use_map use_map.hs

Conversion de chaîne en entier:

Prelude> import Char
Prelude Char> digitToInt '3'
3

<jmv_> is there something like -fwarn-all-potential-problems ?

<Peaker> switch() on enums

<Cale> jmv_: hehe

<kmc> jmv_, -Wall

<Cale> jmv_: -Wall

<jmv_> :)

<jmv_> i nkew this one

<kmc> jmv_, but many classes of defect are caught as type errors, anyway

<kmc> which you cannot ignore

<Cale> Consider something like the standard 'map' function

<Cale> map :: (a -> b) -> [a] -> [b]

<Cale> Suppose we write this type signature, and try to define map as follows:

<kmc> unfortunately there's no simple way to get a warning if they're being used

<Cale> map f [] = []

* MissPiggy est parti (Quit: MissPiggy)

<Cale> map f (x:xs) = x : map f xs

* adept est parti (Ping timeout: 246 seconds)

* wu (~wu@77-20-156-82-dynip.superkabel.de) a rejoint #haskell

<JohnnyL> any game companies using haskell for scripting?

<Cale> oops! We forgot to apply f to the first element of the list!

Cale> Sometimes you can even catch infinite loops that way :)

<Cale> You end up with a type which is obviously much too polymorphic

<Cale> because the result never exists.

Ceci est analogue à une définition d'ensemble en math.:

[x*2 | x <- [1..10]]

EulerGUI : nouvel editeur en Java

ProjectGUI.setEulerGUIIcon

jedit.scrollTo( 0, 0);

La syntaxe dépend de l'extension du fichier.

Comment avoir le statut modifé/non modifié dans JEdit-syntax ?

2010-01-28

Communauté websemantique.org

http://www.paris-web.fr/2009/+-Dubost-+

irc://irc.freenode.net/#websemantique

Quand je vois le programme du master "logique Mathématique et fondements de l'informatique" ... Ca me fait envie .

http://www.logique.jussieu.fr/www.dea/Affich.Logique09-10.pdf

http://www.logique.jussieu.fr/www.dea/organisation.php

2010-01-27

Je crois qu'il a une façon de spécifier les choses en J2EE pour pouvoie déployer soit SOAP soit REST ?

JEdit syntax sur Maven:

http://www.mvnbrowser.com/artifacts-search.html?page=1&search=jedit

Grâce à Stéphane T., je découvre freebase:

http://www.freebase.com/docs/data/basic_concepts

2010-01-26

http://localhost/drupal6/install.php?locale=en&profile=default

http://www.liafa.jussieu.fr/web9/manifsem/listmanifannee_fr.php?typecongres=2

http://datao.wordpress.com/

http://www.scub.net/fr/nos-produits/outil-de-veille-collaborative/

http://gblanc.blogs.linagora.com/index.php/post/2009/08/17/2eme-Assises-franco-allemandes-de-lEmbarque-2009

http://sewww.epfl.ch/SIC/SA/SPIP/Publications/spip.php?article1202

La concurrence:

http://www.tenforce.com/

Ajouté EulerGUI ici: http://websemantique.org/TechniquesEtOutilsPourLeDeveloppeur

faviki

Jusqu'à maintenant, je pensais surtout à WordNet pour identifier des concepts. mais maintenant je penserai aussi à Wikipedia.

http://www.faviki.com/pages/welcome/

Cet utilisateur fancophone, Got, a des centres d'intérêts diablement proches des miens:

http://www.faviki.com/person/Got

Mais qui est-ce ?

En fait ça a l'air d'être Gautier Poupeau de lespetitescases.net .

Les nouveautés EulerGUI

Envoyé à la liste deductions-fr .

EulerGUI: requêtes nouveau style

On traduit maintenant les requêtes N3 en tant que requêtes Drools.

On pourra donc avoir autant de requêtes qu'on veut par projet EulerGUI.

Par comparaison, les requêtes N3 aujourd'hui sont traduites par des règles Drools qui ne produisent que des objets de classe TripleResult . C'est à dire que depuis l'origine , je traduis une requête par un ajout d'objets TripleResult , qui ne participent jamais à l'inférence . Avec cette technologie, le retour de résultat était complètement lié au processus d'inférence, et il n'y avait qu'une seule requête par projet. C'est un héritage du processeur Euler en Prolog (toujours présent), qui ne gère pas la "thruth maintenance", appelée session avec état dans Drools. C'est à dire qu'avec Drools, on peut ajouter ou enlever des assertions, et l'ensemble des conséquences des règles est mis à jour après un appel à fireRules() .

Je n' abandonne pas les objets TriplesResult ajoutés aux faits , car il y a un existant qui dépend de ça :( . Mais à terme cela va simplifier les choses, aussi bien pour les formulaires générés que pour le nouveau serveur, et pour l'exportation d'application.

Le serveur EulerGUI

Le serveur EulerGUI marche déjà.

L'idée c'est d'exposer via un serveur REST un projet EulerGUI. Il y aura des services pour:

La sortie sera soit en N-Triples (RDF simplissime à parser), soit en XML via les traducteurs déjà existants dans EulerGUI. Cela pourra donc être du XHTML.

On doit faire une première intégration début février avec un site en Drupal / PHP . Le serveur EulerGUI jouera le rôle d'un système expert.

Le serveur EulerGUI est déjà mis sous Subversion, dans un répertoire indépendant en tant que projet Maven dépendant de EulerGUI, ici :

https://eulergui.svn.sourceforge.net/svnroot/eulergui/trunk/eulergui_server

S'intégrer aux applications existantes

EulerGUI serveur représente une nouvelle façon d'utiliser l'infrastructure; au lieu de générer des applications, on s'intègre aux applications existantes. Une étape prévue est d'ajouter un système expert qui tourne en arrière plan d'EulerGUI lui-même. Quand ceci sera fait, il restera à écrire un chapitre du Manuel pour expliquer comment le faire dans n'importe quelle application, Java pour commencer. Plus tard, suivant les idées de la "Modularité Intelligente", on pourra automatiser l'intégration d'un tel module dans une application existante.

Moteur Drools / N3: exploiter une base RDF

Des réflexions sont en cours sur comment exploiter une base RDF ( alias SPARQL endpoint ). Plusieurs pistes sont possibles:

ACE View; SWRL

C'est foisonnant dans Attempto, le projet Suisse d'anglais pour la logique formelle (anglais contrôlé) . En plus de divers serveurs dont Ace Wiki, il y a aussi ACE View , un éditeur pour ontologies et règles qui est un greffon de Protégé .

Le screencast de 12 minutes.

Ace View est un outil formidable pour entrer, en langage naturel non ambigu, à la fois la définition des classes en OWL, et les règles en SWRL qui complètent les classes. Pour récupérer cela dans l'environnement EulerGUI, il suffira d'écrire un traducteur SWRL ==> logique N3. Cela peut se faire avec les techniques de règles que nous avons déjà appliquées aux traductions UML 2 ==> OWL , eCore ==> OWL, RDFS ==> OWL (voir "Pellet 2.0.1 à partir des sources; règles SWRL").

Pellet 2.0.1 à partir des sources; règles SWRL

mkdir src-all
cd src-all
for f in ../src/pellet-*
  do
    unzip -f $f
    echo $f done =============================
  done

J'essaye la classe RulesExample, avec les règles SWRL suivantes:

GoodChild(?x) -> Child(?x)
BadChild(?x) -> Child(?x)
Grandchild(?x) , hates(?x, ?y) , sibling(?x, ?y) -> BadChild(?x)
parent(?x, ?y) , parent(?z, ?y) , differentFrom(?x, ?z) -> sibling(?x, ?z)

qui sont dans le fichier OWL+SWRL:

http://owldl.com/ontologies/dl-safe.owl

En exécutant RulesExample, la sortie montre que les règles sont appliquées dès que model.prepare() est exécuté :

Cain has sibling(s): Abel

Abel has sibling(s): Cain

Remus has sibling(s): none

Romulus has sibling(s): none

BadChild instances: Cain

Child instances: Cain, Oedipus

Quand j'ouvre cet URL dans Protégé 4, il y a une boîte de message disant "non implémenté" , mais on ne sait pas quoi .

Ensuite, on ne voit pas que Cain est une instances de BadChild.

Quand j'ouvre cet URL dans EulerGUI, il présente ainsi le fragment de RDF qui correspond à la règle "BadChild" :

dl-safe:BadChildRule
      a       swrl:Imp ;
      swrl:body ([ a       swrl:ClassAtom ;
                  swrl:argument1 dl-safe:x ;
                  swrl:classPredicate dl-safe:Grandchild
                ] [ a       swrl:IndividualPropertyAtom ;
                  swrl:argument1 dl-safe:x ;
                  swrl:argument2 dl-safe:y ;
                  swrl:propertyPredicate
                          dl-safe:sibling
                ] [ a       swrl:IndividualPropertyAtom ;
                  swrl:argument1 dl-safe:x ;
                  swrl:argument2 dl-safe:y ;
                  swrl:propertyPredicate
                          dl-safe:hates
                ]) ;
      swrl:head ([ a       swrl:ClassAtom ;
                  swrl:argument1 dl-safe:x ;
                  swrl:classPredicate dl-safe:BadChild
                ]) .

On voit que l'antécédent (la cause) s'appelle body comme en Prolog, et le conséquent s'appelle head.

On doit pouvoir traduire ceci en règles N3 sans trop de mal. La difficulté ce sont les listes.

2010-01-25

Je regarde ma liste de Séminaires des Labo. d'Intelligence Artificielle .

Census of marine life: ocean-biogeographic-information-system-obis : pas de RDF là -dedans !

datao de Oliveir Rossel .

Blogs SemWeb

http://planb.nicecupoftea.org/

http://blogs.sun.com/bblfish/

http://www.ldodds.com/

http://quatuo.blogspot.com/2010/01/scub-launches-quatuo-web-semantic.html

Mes profils FOAF

Mon profil FOAF est visible ici :

http://xml.mfd-consult.dk/foaf/explorer/?foaf=http%3A%2F%2Fjmvanel.free.fr%2Fjmv.rdf

Il a été créé grâce à foaf-a-matic.

Celui-ci serait peut-être plus étoffé, mais le site est inactif:

http://swordfish.rdfweb.org/rweb/who?mbox=mailto:jeanmarc.vanel@gmail.com

Dommage que mon profil RDf sur websemantique.org soit du XML mal formé:

http://websemantique.org/JeanMarcVanel2/userdata

quatuo, Stéphane Traumat

Ce n'est pas traumatisant de lire ça sur la liste Jena (http://tech.groups.yahoo.com/group/jena-dev/message/42738):

Hello,

My name is Stéphane Traumat and i'm the CEO of a french company named Scub.

I send you this email to inform you that we just released a service based on FOAF and Jena : http://www.quatuo.com

This application, developped for the cloud (Google App Engine) does three things :

* Crawl the web to find foaf progiles (thx to "SeeAlso") and store it in our database.

* Allow anyone to make search on our database and view profile in a human readable way.

* Allow any user having a google account to create/manage and publish his foaf profile.

More information about our product : http://quatuo.blogspot.com/2010/01/scub-launches-quatuo-web-semantic.html

2010-01-24

eclipse -vmargs -Xmx800M &
# télécharger tous les sources des dépendances:
mvn eclipse:eclipse -Declipse.downloadSources=true

EulerGUI serveur

Voir ci-dessous "Moteur Drools / N3: exploiter une base RDF" ; mon journal en Anglais : "Trying Joseki from sources" ; "Trying Joseki SPARQL server" .

Voir "A server that wraps EulerGUI" , "Application Web avec moteur d'inférence"

A la place de Project, il faudrait utiliser la class TripleStoreDrools qui implémente ITripleStoreRETE, pour mieux séparer les aspects stockage et Projet.

Au passage, je regarde les interfaces de Jena.

L'interface Model, qui étend ModelCon, ModelGraphInterface, RDFReaderF, RDFWriterF, PrefixMapping, Lock, est énorme pour une interface: plus de 1000 lignes. Il y a en plus l'interface InfModel, pour intégrer des moteurs d'inférence.

A propos, j'ai eu cet échange avec Thorsten Möller :

> You might be interested by our inference engines in N3 logic in

> http://eulergui.sourceforge.net .

Can they be plugged into Jena, that is, accessed via their reasoner API,

cf. [1]? Then it would be quite interesting for us.

-- Thorsten

[1] http://jena.sourceforge.net/inference/index.html

That's a good idea.

2010-01-23

http://doc.ubuntu-fr.org/git

La modularité intelligente

Jamis rêvé de mélanger les fonctionalités de deux logiciels, qui sont pourtant avec deux architectures différentes, voire deux langages différents ? C'est un des buts de la modularité intelligente.

Attempto

ACE View

C'est foisonnant dans Attempto; il y a aussi ACE View , un éditeur pour ontologies et règles qui est un greffon de Protégé .

Le screencast de 12 minutes.

Attempto: RACE versus AceWiki

Le démonstrateur RACE: http://attempto.ifi.uzh.ch/race/

Chaque projet vivant a ses doublons!

QUESTION: comment RACE se compare à Euler(GUI) SWRL de Pellet , etc ?

Installer ConceptNet

sudo apt-get install python-setuptools
sudo easy_install conceptnet

Ca c'est facile; maintenant utiliser ces outils c'est une autre affaire. Par exemple: lancer le serveur Web, extraire un sous-ensemble de la base (peut-être en se donnant un rayon).

2010-01-22

Outils Web Sémantique

http://www.w3.org/2000/04/schema_hack/dtd2xsd.pl

Le script Perl transforme un fichier DTD en un fichier XSD utilisable.


Solving Sudoku with OWL and Pellet :
http://code.google.com/p/< wbr>ontosudoku/

Medical ontologies in the OBO language ( translatable to OWL ) :
http://www.obofoundry.org/
OBO:
http://www.cs.man.ac.uk/~< wbr>horrocks/obo/
http://www.cs.utexas.edu/~< wbr>hamid/research/obo2owl.cgi

Trying OpenCyc OWL Web interface

http://sw.opencyc.org/

This page looks just like an Web page, but look at the page source: it's OWL !

http://sw.opencyc.org/2008/06/< wbr>10/concept/en/Game


Trying Twinkle on DBPedia

Integrate ACE in EulerGUI

I would not be difficult at all to integrate ACE in EulerGUI :

APE is available under the LGPL license, but it can also be used through a REST webservice. For example, an OWL ontology that corresponds to the ACE text

``Every man is a human.''

is given by the URL

http://attempto.ifi.uzh.ch/ws/< wbr>ape/apews.perl?text=Every+man+< wbr>is+a+human.&solo=owlrdf

More details here:

http://attempto.ifi.uzh.ch/< wbr>site/docs/writing_owl_in_ace.< wbr>html

Also:

AceWiki: A Natural and Expressive Semantic Wiki

AceWiki

Un Wiki sémantique

Pas mal la video ! On voit bien qu'il y a Pellet derrière, mais d'une tout autre façon que dans Protégé. On peut définir des règles qui sont implémentées avec SWRL. Y aurait-il plus de capacités que dans ACE ?

Installer AceWiki

Le nouveau site: https://launchpad.net/acewiki

Posé une question sur la liste attempto !!!

locate libjpl.so
/usr/lib/swi-prolog/lib/amd64/libjpl.so

Après avoir lu le README, on peut maintenant lancer l'incantation :

cd ~/src/acewiki-0.3.1
java -Djava.library.path=/usr/lib/swi-prolog/lib/amd64 \
     -jar ~/apps/jetty-runner*.jar webapps.war

http://mirrors.ibiblio.org/pub/mirrors/maven2/org/mortbay/jetty/jetty-runner/7.0.1.v20091125/

On peut maintenant lancer la page:

http://localhost:8080/

avec ce contenu:

Attempto Web Applications

Click here to enter the preditor example.

Click here to enter AceWiki.

Click here to enter the ACE Editor.

I modified the PATH so that ape.exe runs from anywhere.

But , when accessing http://localhost:8080/acewiki/

I got this in the terminal server side:

[FATAL ERROR: Could not open resource database "ape.exe": No such file or directory]

java: symbol lookup error: /usr/lib/swi-prolog/lib/amd64/socket.so: undefined symbol: PL_new_atom

After looking at run_preloaded in the SWI Prolog distribution in :

pl-5.8.3/packages/jpl/examples/java/env.sh

I came with this shell fragment that works for me :

ln -s /home/jmv/src/ape/ape.exe .
eval `swipl -dump-runtime-variables`

export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/$PLARCH:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/$PLARCH/server:$LD_LIBRARY_PATH
export LD_PRELOAD=$PLBASE/lib/$PLARCH/libjpl.so

java -Djava.library.path=$PLBASE/lib/$PLARCH \
     -jar $HOME/apps/jetty-runner*.jar webapps.war &
        

Je découvre le AceWiki sur AceWiki :

http://attempto.ifi.uzh.ch/webapps/acewikiattempto/?showpage=AceWiki

Pour une fois, j'ai trouvé une video instructive:

http://attempto.ifi.uzh.ch/site/docs/screencast_acewiki.mov

Modelica

http://en.wikipedia.org/wiki/Modelica

http://www.jmodelica.org/page/28 : a mix of C, Java, Python for the GUI

Installer OpenModelica depuis les sources

http://www.ida.liu.se/~pelab/modelica/OpenModelica.html a mix of C, Java

sudo aptitude install antlr libantlr-dev
sudo aptitude install libsmlnj-smlnj
sudo aptitude install libreadline5-dev libsoqt4-dev
sudo cp Compiler/runtime/lpsolve/lib/linux/liblpsolve55.so.64-bit \
     /usr/local/lib/liblpsolve55.so
sudo ldconfig /usr/local/lib/liblpsolve55.so

sudo aptitude install ml-lex ml-yacc libsmlnj-smlnj build-essential bison flex
svn co https://openmodelica.ida.liu.se/svn/MetaModelica/trunk mmc
cd mmc
 ./configure
make
sudo make install
cd ../OPENMODELICA_1_5_0_RC1
export ANTLRHOME=/usr/
export CLASSPATH=/usr/share/java/antlr.jar
export QTHOME=/usr/
export RMLHOME=~/src/mmc

2010-01-21

n-triples2kif.pl An RDF processing tool; converts n-triples to KIF ( Knowledge Interchange Format )

perl n-triples2kif.pl <foo.nt > foo.kif

Idées: règles: négociation de contenu, FaceBook+FAOF

La négociation de contenu serait peut-être une bonne appplication d'un moteur de règles.

L'exemple FaceBook serait mieux avec les propriétés de FOAF. On pourrait alors exploiter des bases RDF publiques ou des documents RDF publiés sur Inernet.

Il serait bien d'enregistrer les actions utilisateur dans EulerGUI, ne serait-ce que pour pouvoir rejouer des scénarios.

Il faudrait écrire un exemple de règles RDF vers XML, par exemple:

  1. RDF quelconque vers XHTML
  2. FOAF vers XHTML

1. est difficile en règles N3, car il faut énumérer tous les termes en position de sujet; puis rassembler (match) tous les triplets qui se rapportent au même sujet. Ceci ne donne rien de bon avec le processeur Drools/N3 , et s'arrête sur un nombre maximum d'opérations avec Euler.

@prefix e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>.
@prefix list: <http://www.w3.org/2000/10/swap/list#> .
@prefix html: <http://www.w3.org/1999/xhtml> .
@prefix ded: <http://deductions.sf.net/>.

_:html html:body _:body .

{
_:d e:findall ( ?S { ?S ?P ?O } ?LIST_SUBJECTS ).
  ?SU list:in ?LIST_SUBJECTS .
} => {
  :gen :tuples ?SU .
} .
{
  :gen :tuples ?SU .
  ?SU ?P ?O .
} => {
  _:body html:p (?SU ?P ?O) .
} .

Plugin exec-maven-plugin

J'en ai rêvé, Maven l'a fait!

mvn exec:java

permet de lancer la classe principale du projet.

http://mojo.codehaus.org/exec-maven-plugin/usage.html

EulerGUI serveur

J'ai un environnement à peu près bien pour développer le serveur EulerGUI, qui marche déjà avec projet et requête figées.

Mise sous Subversion

mkdir ../for_svn_import
cp -r pom.xml src/ ../for_svn_import
cd ../for_svn_import
svn import .  --message 'initial import (but already runs on my machine)' https://eulergui.svn.sourceforge.net/svnroot/eulergui/trunk/eulergui_server
Ajout          src
Ajout          src/main
Ajout          src/main/java
Ajout          src/main/java/eulergui
Ajout          src/main/java/eulergui/eulergui_server
Ajout          src/main/java/eulergui/eulergui_server/ServletN3.java
Ajout          src/main/java/eulergui/eulergui_server/ServletN3Query.java
Ajout          src/main/resources
Ajout          src/main/webapp
Ajout          src/main/webapp/index.jsp
Ajout          src/main/webapp/WEB-INF
Ajout          src/main/webapp/WEB-INF/web.xml
Ajout          pom.xml

Révision 1163 propagée. 

Ensuite il faut que le répertoire de travail eclipse courant devienne versionné:

cd ../eulergui_server
rm -r  pom.xml src/
cd ..
svn co https://eulergui.svn.sourceforge.net/svnroot/eulergui/trunk/eulergui_server

VOIR PLUS HAUT <<<<

Pour upload en Français: télédéposer

Pour upload je propose en Français téléinstaller.

Une discussion assez longue:

http://www.commentcamarche.net/forum/affich-1770219-equivalent-francais-du-mot-upload

Je pense que les mots comme "charger", "transmettre" , ne sont pas assez précis et évocateurs.

Le Québéquois "téléverser" non plus.

Je lui préfère télédéposer, déjà suggéré ici, ou téléinstaller.

Dans cet ordre d'idées, "télémettre" serait bien, mais ça a la même prononciation que télémètre.

Dans un genre vulgaire, téléfoutre pourrait marcher, mais ce serait manquer de respect pour le contenu qu'on met en ligne.

Justement, mettre en ligne est une bonne expression.

Il y a une différence sémantique, puisqu'on peut "téléinstaller" un fichier sur un répertoire secret, qui ne sera donc pas en ligne, c'est à dire disponible. Mais 9 fois sur 10, on téléinstalle pour mettre en ligne.

Finalement, télédéposer est bien. Il évoque les dépots, un mot déjà utilisé (même en Anglais) pour les bases de données CVS, Subversion, etc. En plus si le contexte est clair, ça peut s'abréger en déposer.

J'aurais pu dire aussi "surcharger".

plug-in == plugiciel, ou module d'extension , d'après granddictionaire.com .

Plugin Jetty Maven

Essai Jetty 7 sauce eclipse

Finalement le dernier Jetty 7 (à la sauce eclipse) ne marche pas via Maven.

Je fais exactement ce qui est écrit là :

http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin

On n'échappe pas à ceci:

2010-01-21 10:32:07.395:WARN::FAILED ConstraintSecurityHandler@763f1179@: java.lang.IllegalStateException: No LoginService for org.eclipse.jetty.
security.authentication.BasicAuthenticator@243680c1 in ConstraintSecurityHandler@763f1179@
2010-01-21 10:32:07.395:WARN::FAILED SessionHandler@26945b95@: java.lang.IllegalStateException: No LoginService for org.eclipse.jetty.security.au
thentication.BasicAuthenticator@243680c1 in ConstraintSecurityHandler@763f1179@
2010-01-21 10:32:07.395:WARN::Failed startup of context JettyWebAppContext@65957a34@65957a34/,file:/home/jmv/src/eulergui_server/eulergui_server/
src/main/webapp/,file:/home/jmv/src/eulergui_server/eulergui_server/src/main/webapp/
java.lang.IllegalStateException: No LoginService for org.eclipse.jetty.security.authentication.BasicAuthenticator@243680c1 in ConstraintSecurityH
andler@763f1179@
at org.eclipse.jetty.security.authentication.LoginAuthenticator.setConfiguration(LoginAuthenticator.java:34)
at org.eclipse.jetty.security.SecurityHandler.doStart(SecurityHandler.java:335)

et bien sûr mon application Web n'est pas en ligne :(. Ce fil de discussion ne m'a pas donné de solution:

http://archive.codehaus.org/lists/org.codehaus.jetty.user/msg/6BE1FA9D-221F-4242-9B3C-BDAC182D6220@gmail.com

non plus ces pages de référence:

http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin

http://docs.codehaus.org/display/JETTY/Running+Jetty-7.0.x

J'essaye de poser la question sur IRC irc:irc.codehaus.org#jetty

Essai Jetty 6 concluant

C'est l'ancien Jetty 6 qui marche. Via le Plugin Maven pour eclipse, j'ai choisi cette cible, dans "Run configurations / Maven Build / Goals" , et ça marche:

org.mortbay.jetty:maven-jetty-plugin:6.1.22:run

A noter que pom.xml ne dit absolument rien sur Jetty. Il a été généré par le wizard du Plugin Maven pour eclipse, en demendant un projet Web. Il a seulement mes dépendances, et ceci:

 <packaging>war</packaging>

Hélas, sans réglage particulier, la webapp n'est pas rechargée en cas de modifications.

Documentation pour Maven+Jetty+Plugin version 6:

http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin

Avec ceci dans le POM, la webapp est rechargée en cas de modifications:

 <build>
    <plugins>
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <configuration>
          <scanIntervalSeconds>5</scanIntervalSeconds>
        </configuration>
      </plugin>
    </plugins>
</build>

2010-01-20

TODO

présenter mieux mon offre: RDF==espéranto, ingrédients== données, modèles, règles

Ce qui est amusant, c'est que tester et construire EulerGUI prend 2 minutes 43 secondes, y compris pas mal d'accès réseau, alors que "téléinstaller" ces 29 Mo sur Sourceforge prend 1/4 d'heure.

wireless sensor network, rfid, internet of things, zigbee, api?, ni, crossbow xbow

J'ai tellement de plugins eclipse qu'un demande de mise à jour prend un temps fou. C'est scotché sur "Calculating requirements 25%" pendant plusieurs minutes, et finalement ça plante par manque de mémoire (j'ai la mémoire par défaut d'eclipse).

Control-alt-backspace : le ré-activer sous Ubuntu

J'ai eu deux bloquages successifs avec le debugger eclipse :((((( Obligé d'arrêter brutalement la machine.

Perdu pas mal de temps avec ça .

J'étais dans le callback d'un menu déroulant.

Alors j'ai mis des print .

Alors maintenant, je peux à nouveau faire ce bon veux redémarrage du serveur X.

http://logive.wordpress.com/2009/12/17/ctrl-alt-backspace-le-re-activer-sous-ubuntu/

Moteur de recherche RDF Watson

Moteur de recherche RDF: http://kmi-web05.open.ac.uk/WatsonWUI/

http://watson.kmi.open.ac.uk/REST_API.html

curl -H "Accept: application/json" \
  'http://watson.kmi.open.ac.uk/API/semanticcontent/keywords/?q=cat+dog'
wget --output-document=-  "Accept: text/ntriples" \    
  'http://watson.kmi.open.ac.uk/API/semanticcontent/keywords/?q=plant+pe

2010-01-19

Livraison EulerGUI 1.4.1

Ca roule bien maintenant:

DISPLAY=:1 mvn release:prepare
# dans un autre terminal 2:
ssh -t jmvanel,eulergui@shell.sourceforge.net create
# retour au terminal 1
DISPLAY=:1 mvn release:perform
mvn site
mvn site:deploy

Ajouté à la note de version:

Importing non N3 data sources ( RDFS, UML, eCore, XML ) failed on Windows

Annonces: liste personnelle en Français, en Anglais, Protégé users

Utiliser Joseki + TDB: requêtes

Quels sont les functions disponibles ?

Dans la base remplie hier, on peut maintenant utiliser la page de requête http://localhost:2020/sparql.html pour entrer ceci:

CONSTRUCT { ?O ?P ?V }
WHERE {
  ?O ?P ?V.
  FILTER(
    REGEX( ?V , "n" )
  )
}

ce qui est équivalent à :

PREFIX fn: <http://www.w3.org/2005/xpath-functions#>
CONSTRUCT { ?O ?P ?V }
WHERE {
  ?O ?P ?V.
  FILTER(
    fn:matches( ?V , "n" )
  )
}

Via ceci correspond à une requête sur l'URL /sparql avec le paramètre query.

Bien sûr une telle requête SPARQL avec son URL associé peut être incluse dans un projet EulerGUI , voir "SPARQL queries as N3 sources" . Le "endpoint" SPARQL est :

http://localhost:2020/sparql

2010-01-18

http://www.lespetitescases.net/ou-s-amuser-avec-sparql

VendrEDI lettre de Claude Chiaramonti sur les données de l'échange électronique

Un article Quebécois sur SPARQL: http://sewww.epfl.ch/SIC/SA/SPIP/Publications/spip.php?article1202

Utiliser Joseki + TDB: lancer le serveur

cf Configuring Joseki + Pellet + TDB

On va créer une base vierge qui va être remplie via le protocole SPARQL/Update .

On ajoute ceci en gras dans bin/make_classpath :

for jar in "$LIBDIR"/*.jar lib-tdb/*.jar
  do
  # Check for no expansion
  [ -e "$jar" ] || break
  #echo "Path: $jar"
  [ "$CP" != "" ] && CP="${CP}${SEP}"
  CP="${CP}$jar"
done

Si on veut , on peut activer les graphes RDF venant d'ailleurs en changeant la configuration joseki-config-tdb.ttl :

    # Parameters - this processor processes FROM/FROM NAMED
    joseki:allowExplicitDataset       "true"^^xsd:boolean ;
    joseki:allowWebLoading            "true"^^xsd:boolean ;

Ensuite on peut lancer le serveur :

export JOSEKIROOT=$PWD
bin/rdfserver joseki-config-tdb.ttl

Maintenant, on peut peupler la base via le protocole SPARQL/Update : j'envoie une requête POST à l'URL : http://localhost:2020/update/service

avec le contenu:

LOAD <http://aims.fao.org/aos/cwr.owl>

Ca marche !!!!!!! J'ai installé le plugin RESTClient dans Firefox pour envoyer des requêtes HTTP quelconques .

J'ai trouvé ce petit (700ko) OWL via sindice.com en charchant "plants species description petal" . Il n'est pas très intéressant, mais ça va bien pour tester .

On peut aussi charger un fichier local, et pas forcément en RDF/XML :

LOAD <file:///home/jmv/ontologies/foaf.n3>

SUITE PLUS HAUT <<<<<<<<

Possibilités de SPARQL et Joseki

Voir ci-dessous "Moteur Drools / N3: exploiter une base RDF" ; mon journal en Anglais : "Trying Joseki from sources" ; "Trying Joseki SPARQL server" .

Introduction to RDF Query with SPARQL Tutorial - 2005-05-10 w3.org Talks

Configuring Joseki + Pellet + TDB : est-ce que Pellet fait une classification complète avant la première requête ? Je pense. Voici ce qu'on lit dans le README de Joseki 3:

Modèles d'Inférence

----------------

Joseki héberge les modèles fournis par Jena2, y compris les modèles d'inférence: les données peuvent être combinées avec une ontologie OWL ou une description de vocabulaire RDFS pour produire un modèle RDF qui possède à la fois les triplets déclarés et inférés. La requête est ensuite utilisée pour accéder au modèle.

Héhé ! L'intérêt de ça est que si je peux emballer mes processeurs N3 dans l'API Jena qui va bien, je peux les exploiter avec Joseki !!! Hourrahhhhhhhh !!! Quelqu'un m'a déjà suggéré cet emballage, mais je ne voyais pas l'intérêt.

Est-ce qu'on peut ajouter dynamiquement (voire enlever) un graphe nommé dans Joseki? J'ai l'impression que tout est dans la configuration en RDF/N3. Peut-être dans SPARQL/Update submission to W3C. Gagné: voir "4.2 Graph Management". on peut créer et détruire un graphe nommé:

CREATE [ SILENT ] GRAPH <uri>
DROP [ SILENT ] GRAPH <uri>

On peut charger un document dans un graphe nommé:

LOAD <remoteURI> [ INTO <uri> ]

mais l'opération inverse n'est pas possible. En ce sens ça ne marche pas comme XQuery et eXist, car il ne semble pas qu'on ait la traçabilité de de la provenance d'un chargement. Mais c'est un inconvénient mineur.

Est-ce qu'on peut faire une requête SPARQL sur tous les graphes nommés à la fois ? Oui, ceci devrait le faire:

CONSTRUCT { ?s ?p ?o }
  WHERE { GRAPH ?g {
            ?s ?p ?o} }

Voir plus de détails ici: clarification-of-meaning-of-graph-clause-in-sparql-with-no-from-clause .

Messages Joseki dans liste jena-dev:

http://tech.groups.yahoo.com/group/jena-dev/msearch?query=joseki&submit=Search&charset=ISO-8859-1

Moteur Drools / N3: exploiter une base RDF

Il pourrait être bien d'exporter un projet EulerGUI comme une configuration Joseki. Chaque source de données pourrait être stockée dans Joseki. En fait on peut soit générer une configuration Joseki en N3, soit générer des requêtes SPARQL/Update qui vont créer la base à partir d'un serveur vide (ou pas) . Quand on aura les fichiers projet en N3, l'option 1 sera facile à implémenter.

L'exemple de suggestions d'amis à la FaceBook (facebook.n3) est un cas particulier où la règle ne lance pas d'autres règles. Elle pourrait donc être une requête SPARQL, après traduction de N3 en SPARQL. On peut le voir, car le prédicat de la conclusion n'apparait nulle part ailleurs. Si ce n'était pas le cas, ou pourrait ajouter les conclusions à la base RDF, et relancer d'autres règles qui utilisent la conclusion. Et ainsi de suite; c'est probablement ce que fait l'intégration entre le base Jena TDB et Pellet. Est-ce cela qu'on appelle logique stratifiée ?

2010-01-16

Après réunion projets Européens

Je suis tombé sur ceci qui décrit une correspondance (hélas indirecte passant par UML XMI) entre STEP et OWL:

http://www.exff.org/exff_legacy/docs/semweb_step.html

http://machinedesign.com/article/xml-for-the-digital-factory-1108

Engineering eXchange For Free : http://www.exff.org/

J'ai relu mon article sur un environnement de développement collaboratif, collabCode, rétrospectivement c'est pas mal; l'idée du glisser-déposer à partir d'eclipse est bien.

Universal Data Element Framework (UDEF)

Je savais que que X/Open standardise Unix, mais pas qu'il s'est renommé Open Group. Et je ne savais rien sur UDEF (Universal Data Element Framework) et TOGAF (The Open Group Architecture Framework).

The Universal Data Element Framework (UDEF) fournit la base pour créer un vocabulaire contrôlé à l'échelle de l'entreprise. A ce titre, ça m'intéresse. Les catégories de base fournissent une bonne ontologie de haut de niveau pour l'informatique de gestion, et semblent se prêter bien à une écriture en OWL, RDFS, ou UML:

http://www.opengroup.org/udefinfo/defs.htm

Attention, "10. Program" n'est pas un Programme informatique. On trouve ça dans la hiérarchie Product:

p.9 Software.Product     
      a.p.9 Application.Software.Product       
      b.p.9 Network.Software.Product
      c.p.9 System.Software.Product
            a.c.p.9 Operating.System.Software.Product

Les catégories de base en Français:

http://www.opengroup.org/udefinfo/htm/fr_defs.htm

Quelques liens intéressants sur UDEF: http://www.udef.com/

http://www.opengroup.org/udefinfo/ : UDEF en Français; comment s'inscrire pour accéder à la définition en RDF. Hélas pas d'URL publiquement disponible sans inscription. Bon , je m'inscris ... Je télécharge tout :

wget --recursive --level=1 --user jm.vanel \
--password ??? http://www.opengroup.org/udefinfo/dl/dlrdf.htm

Je trouve quand même sur Swoogle une version publiquement accessible :

swoogle.umbc.edu?searchString=udef

Essai OntoViz de Protégé 3.4.2

Il fait une visualisation à la UML qui n'est pas désagréable.

Projet EulerGUI

Tout est arrangé sur Windows; plusieurs projets de tests du projet Déductions ne passaient pas. Je devrais faire une version correctrice 1.4.1 lundi.

Moteur Drools / N3: exploiter une base RDF

Si on pense au cas des règles de suggestions d'amis à la FaceBook (facebook.n3), comment exploiter une base RDF avec plein de gens et de relations d'amitié ?

{
  ?C :current_user true . # couche 0
  ?C :friend ?X .         # couche 1 
  ?C :friend ?Y .         # couche 1

  ?X log:notEqualTo ?Y .

  ?Z :friend ?X .        # couche 2
  ?Z :friend ?Y .        # couche 2

  ?C log:notEqualTo ?Z .

} => {
  ?C :friend_proposition ?Z .
} .

En se basant sur une analyse de la règle, on peut pré-remplir le moteur de règles (MR) avec des couches successives d'objets, en espérant qu'on n'explose pas la mémoire. On suppose que le MR est "ensemencé" avec la couche 0, qui vient ici du contexte de la session. Ensuite on tombe sur la couche 1. On peut traduire assez directement ?C :friend ?X en une requête SPARQL sur la base RDF. Le point sensible est qu'il faut remplacer ?C par les valeurs possibles dans le MR (ici une seule). En fait le MR peut être rempli par autre chose, mais en supposant qu'il n'y a qu'un User, on peut raisonner sur le domaine de la propriété fb:friend (c'est à dire User).

Pour la couche 2 (les amis des amis), c'est plus compliqué, car il y a plus d'objets à prendre en compte. Mais en fait on peut traduire toute la règle en requête SPARQL.

SUITE PLUS HAUT <<<<<<<<

2010-01-15

Erreurs tests EulerGUI sur Windows XP

Failed tests:
testRelativePathWithDot(n3_project.helpers.TestSimplifiedURI)
testFileNameWithDot(n3_project.helpers.TestSimplifiedURI)
testPath(eulergui.project.TestN3Source)
testpostproc_build(n3_project.TestProjectSequence)

Tests in error:
test_foaf_import2(eulergui.gui.TestGenericGuiGeneration)
test_uml2(eulergui.gui.TestGenericGuiGeneration)
test_ecore2(eulergui.gui.TestGenericGuiGeneration)
testXMLOutputFromRDF(eulergui.gui.TestEulerGUIOutputs)
testXMLOutputFromN3(eulergui.gui.TestEulerGUIOutputs)
test_uml(eulergui.gui.TestSwingGeneration)
test_ecore(eulergui.gui.TestSwingGeneration)

Tests run: 95, Failures: 4, Errors: 7, Skipped: 0

Est-ce dû à une ancienne version de Java ?

Il semble que la création d'un URI donne un URI qui n'est pas reconnu par URI lui-même.

//////// translating Query file:///C:/cygwin/home/maman pro/eulergui/trunk/eulergui/test/ab_query.n3

net.sf.parser4j.parser.service.ParserException: bad uri "file:///C:/cygwin/home/maman pro/eulergui/trunk/eulergui/test
/ab_query.n3"
at eulergui.parser.n3.impl.parser4j.service.N3Parser.parseN3(N3Parser.java:213)
at eulergui.parser.n3.impl.parser4j.service.N3Parser.parseN3(N3Parser.java:188)
at eulergui.parser.n3.impl.parser4j.service.N3Parser.parseN3File(N3Parser.java:167)
at eulergui.drools_engine.ParserLink.parse(ParserLink.java:118)
at eulergui.drools_engine.ParserLink.parseAndUpdateSource(ParserLink.java:144)
at n3_project.helpers.N3SourcetoDrools.translate(N3SourcetoDrools.java:195)
at n3_project.helpers.N3toDroolsUpdater.translate(N3toDroolsUpdater.java:58)
at eulergui.project.Project.translateN32Drools(Project.java:719)
at eulergui.project.Project.doRunDrools(Project.java:686)
at eulergui.project.Project.runDroolsTriples(Project.java:669)
at eulergui.project.ProjectSequence.runDroolsTriples(ProjectSequence.java:147)
at eulergui.project.ProjectSequence.runDroolsTriples(ProjectSequence.java:143)
at n3_project.TestProjectSequence.testpostproc_build(TestProjectSequence.java:62)

Ajouté test:

TestSimplifiedURI: test a File Name With a Space in the path, like "/a/good stuff/b"

Le 16 janvier: Tout est arrangé sur Windows !

2010-01-14

Réunion intégration PHP avec M. Verdier

Le meilleur des deux mondes ! Les nombreux modules de Drupal existants, plus une logique métier sur mesure via un moteur de règles. A terme les règles métier seront gérables via des pages administrateur, directement en langage naturel (Anglais Simplifié).

La communication entre les deux va se faire via un serveur HTTP jouant le rôle de système expert. Les messages seront en N-triples ou N3, avec un résultat en XHTML, ou autre suivant les besoins.

Voir "A server that wraps EulerGUI" , "Application Web avec moteur d'inférence"

Excellent tutoriel sur RDF le Web Semantique, via N3 :

http://www.w3.org/2000/10/swap/Primer

La Pierre de Rosette sur les differents formats de données : Anglais, N3, graphe orienté avec libellés, RDF/XML, N-Triples, Prolog, SQL ( 4 variantes ), XML de base, Javascript et Python.

http://www.w3.org/2000/10/swap/doc/formats

Installation de Drupal

sudo apt-get install drupal6

Après cette opération, 69,6Mo d'espace disque supplémentaires seront utilisés.

Faut-il configurer la base de données de drupal6 avec dbconfig-common ? │

│ <Oui>

J'ai choisi MySQL, car cela est le plus standard avec Drupal.

% aptitude show drupal6
Paquet : drupal6
État: installé
Automatiquement installé: non
Version : 6.12-1.1ubuntu1

api.drupal.org

Maintenant comment j'accède à mon Drupal vierge ?

Pas si simple!

La réponse: Ubuntu 9.10 (Karmic Koala) ... some more steps are necessary to get Drupal running:

http://drupal.org/node/626404

Ca marche !

Welcome to your new Drupal website!

2010-01-13

http://bernard.istasse.perso.neuf.fr/eisis/web/index.html

http://www.modelica.org/

http://www-rocq.inria.fr/scicos/

http://www.systematic-paris-region.org/fr/index.html

http://xml.coverpages.org/stepExpressXML.html

Lancé projet EulerGUI serveur

Ca y est, mon grand retour sur la scène Web ! Voir "A server that wraps EulerGUI" .

Pour l'instant, j'ai créé un répertoire Maven "eulergui_server". Avec le plugin Maven j'ai créé un projet Web via le prototype Maven Web de base. Via l'éditeur du plugin Maven, j'ai ajouté les dépendances à EulerGUI, ainsi qu'à l'API servlet. J'ai ajouté le plugin Maven Jetty 7 le plus récent. Dans le package eulergui.eulergui_server j'ai créé deux HTTPServlet : ServletN3Query et ServletN3 . Via l'éditeur eclipse, j'ai configuré dans web.xml les deux URL relatifs pour les 2 servlets. Après tout ça, je peux lancer le serveur Web avec :

mvn jetty:run

Si j'ai bien compris, ça surveille les sources, et peux directement tester les modifications sans relancer les serveur !

http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin/

Pour l'instant http://localhost:8080/n3_query me fait :

HTTP ERROR: 503

Problem accessing /n3_query. Reason:

Service Unavailable

Powered by Jetty://

EN CHANTIER - résolu le 21 janvier

http://repo1.maven.org/maven2/org/kohsuke/jetty/jetty-maven-plugin/7.0.0pre1/jetty-maven-plugin-7.0.0pre1.pom


Le répertoire contient :

% ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/'
   .
   |-src
   |---main
   |-----java
   |-------eulergui
   |---------eulergui_server
   |-----resources
   |-----webapp
   |-------WEB-INF
   |-target
   |---classes
   |-----eulergui
   |-------eulergui_server
   |---eulergui_server
   |-----META-INF
   |-----WEB-INF
   |-------classes
   |---------eulergui
   |-----------eulergui_server
   |-------lib
   |---maven-archiver
   |---test-classes
   |---tmp
   |-----jsp
   |-------org
   |---------apache
   |-----------jsp
   |---war
   |-----work

( merci à Dem Pilafian pour ce joli script ).

Rechercher "java REST server framework"

avec ou sans RDF

Discussion sur RESTLET sur theserverside.com .

RESTlet

Lien intéressant sur le DDD (Domain Driven Design) de Eric Evans.

http://www.itaware.eu/category/francais/java-2/

A LIRE:

Le Web sémantique, un vaste terrain d'applications encore à défricher

http://www.lemondeinformatique.fr/dossiers/lire-le-web-semantique-un-vaste-terrain-d-applications-encore-a-defricher-25-page-3.html

Il faudrait vraiment avoir des pages pour chaque catégorie intéressée par mes projets: connaisseurs du Web Sémantique, les tenants du MDA "classique" , les spécialiste des bases de données, les prestataires PHP, ...

Conférence de Basile Starynkevitch sur gcc et MELT

Hier. Génial ! Tout ce que vous avez toujours voulu savoir sur gcc, par un "insider" qui a son sens critique.

http://starynkevitch.net/Basile/

Il m'a fait connaître Jacques Pitrat, qui travaille sur ce qu'on appelle l'Intelligence Artificielle "forte".

http://pagesperso-orange.fr/jacques.pitrat/

2010-01-11

date --rfc-3339=seconds
2010-01-11 17:20:50+01:00

Application Web avec moteur d'inférence (EulerGUI serveur)

cf "Un modèle d'affaires" ; "Exemples pour une application avec moteur d'inférence" .

On envisage un moteur de règles qui sera derrière un Service Web Intelligent alias "SWI". Ces services seraient intégrables dans les modules standard sur étagère, d'une ou plusieurs façons qui restent à préciser. Je vois (au moins) deux architectures possibles:

  1. SWI est un serveur HTTP, qui fait donc tout le travail pour un cas d'utilisation donné
  2. SWI est un serveur REST qui offre un service de logique métier; au minimum il enverra une réponse XML <response> avec un sous élément parmi 3 possibilités:

On va partir sur l'option 2, un peu moins simple à intégrer , mais plus simple à développer pour moi. Les paramètres des requêtes HTTP REST seraient définis au cas par cas. Par exemple pour le cas note de frais: saisie l'URL serait du genre:

http://swi/note_de_frais/facture?payeur=p1&fournisseur=f1&montant=123.45&date=2010-01-11+17:20:50

Où payeur et fournisseur sont des Id.

Pour respecter l'architecture REST, ce serait mieux si c'était une requête PUT.

La réponse serait un XML avec une des 3 balises ci-dessus, mais ça peut être un autre format, et il peut y avoir d'autres balises métier.

Si pour toi c'est commode d'envoyer et de recevoir un des formats pour un graphe d'objet: (N-triples, JSON, ...), tant mieux.

Voir "A server that wraps EulerGUI" pour plus de variantes sur l'option 2.

webcam sur Linux

http://www.clubic.com/article-252146-1-utiliser-webcam-linux-tour-horizon.html

http://mxhaard.free.fr/spca5xx.html

2010-01-10

Tâches EulerGUI

Intégration joafip

Je pense à

PersistentDataProject---|>Project

avec une méthode import( String n3URL ) qui va remplir la D base joafip avec un fichier N-Triple ( sans passer par Parser4J pour lire un gros fichier ). N-Triple: triplets simples avec URI in extenso; un triplet par ligne.

jeanmarc. vanel: ou alors carrément TestPersistentProject , avec une méthode populate( int n ) , qui remplir avec une base "FaceBook" créée par programme .

lcpvrr@gmail.com: le PersistentProjet aurait un constructeur avec la base joafip comme argument ?

Pourquoi pas ; je pensais plutôt à un fichier truc.joafip pour le projet truc.n3p .

lcpvrr@gmail.com: il faudrait qu'il regarde si une ruleBase avec une working memory existe, sinon la créer

lcpvrr@gmail.com: voir une option ouverture avec effacement

lcpvrr@gmail.com: recreation systèmaique

Moteur Drools / N3 : math:sum

J'arrange mon traducteur Drools pour qu'il prenne en compte

( ?X ?Y ) math:sum ?Z .

dans le maximum de cas, litéraux ou variables, variables liées ou non . 3 puissance 2 cas , en comptant que ?X et ?Y jouent le même rôle.

C'est là que l'implémentation Prolog de Jos est avantageuse ! Mais il ne gère pas la modification de données, ce qu'on appelle "truth maintenance", alors que Drools le fait.

La "truth maintenance" , ça consiste à enlever de la base de connaissance toutes les conséquences de ce qui a été retracté (enlevé).

2010-01-08

Si joafip n'était pas là , je rechargerai un gros fichier N3 ; mais dans il faut le temps de lire le N3 et d'écrire le foafip , c'est long; d'où l'idée de débrayer la liaison entre RuleBase et WorkingMemory.

Tâches EulerGUI

Il y a des limitations importantes dans le générateur Java, que je n'ai pas eu le temps de lister ...

Aujourd'hui j'ai ajouté les fonctions pour somme et produits dans Drools-N3 .

Et je viens d'envoyer l'annonce 1.4 pour les suiveurs en anglais de EulerGUI.

Je fais les annonces petit à petit pour voir l'impact de chaque ...

NeOn

J'ai essayé NeOn , et ça ne tourne toujours pas sur ma machine Linux 64 bits , malgrè plusieurs messages échangés .

2010-01-05

http://en.wikipedia.org/wiki/Berkeley_DB

Ontologie pour note de frais

J'ai lu How do I create properties with duplicates and/or ordered values (with rdf:Lists)? . En fait ça ne se passe pas exactement comme décrit. J'ai alors découvert que pour utiliser rdf:List avec Protégé 4, il faut importer la définition de RDF Schema en tant qu'ontologie :

http://www.w3.org/TR/rdf-schema/rdfs-namespace

Pour modéliser un itinéraire passant par plusieurs villes, je ne sais pas quelle est la bonne pratique: utiliser rdf:List ou rdf:Seq, ou autre chose.

Questions posée sur la liste Protégé:

http://article.gmane.org/gmane.comp.misc.ontology.protege.owl/31431

Ajouté le 20 janvier

ontologies/expense_report.owl

http://www.daml.org/2001/06/expenses/

Exemples pour une application avec moteur d'inférence

cf Spécification et idées de logiciels, Principes IHM (à propos de l'agenda Google) , General GUI principles

2010-01-04

http://nosql-databases.org/

Tutoriel Joafip sur javafr.com PERSISTANCE-OBJET-DANS-FICHIER

PERSISTANCE-OBJET-DANS-FICHIER

A noter que le site javafr.com est en ASP, pas très cohérent pour un site sur Java !

Mises à jour: mon agenda, titres de ce journal

J'ai ajouté des titres manquants dans ce journal, c'est satisfaisant de voir la diversité des sujets abordés.

Mise à jour de mon agenda: sparklingpoint ; Parinux;

Conférence GCC parinux.org mardi 12 janvier 2010

2010-01-03

Récupérer des fichiers sur un disque USB en ext3 sous Ubuntu

Mon cas est le plus simple qui soit.

J'ai fait un rm * malencontreux et Control-C au milieu, et plus rien

depuis sur ce disque USB.

Palimpsest me dit le device:

/dev/sdc1

Je me suis décidé pour magicrescue:

http://www.student.dtu.dk/~s042078/magicrescue/

Il semble + perfomant que foremost, lequel connaît + de types de fichiers.

http://foremost.sourceforge.net/

En tous cas les deux s'installent via synaptic :).

magicrescue -d /home/jmv/recup_usb_disk -M io -r mp3-id3v2

En fait , je je ne l'ai pas fait, car il y avait trop de fichiers restants j'ai eu peur d'avoir trop de travail juste pour des MP3.

Partagé mes MP3 sur l'Intranet via Apache

Alias /zizique "/home/jmv/Musique"
<Directory     "/home/jmv/Musique" >
       Options Indexes FollowSymLinks MultiViews
       # ExecCGI
       AllowOverride All
       Order allow,deny
       Allow from all
</Directory>

2009-12-31

Perspectives pour un SI géré par l'IA

En clair "Perspectives pour un Système d'Information géré par l'Intelligence Artificielle".

Modèles et règles métier au centre du processus

Dans la pratique courante, les Modèles métier existent, mais ils sont normatifs.

De plus ils sont éclatés entre:

Quand aux règles métier, elles sont rarement formalisées, car la culture informatique concernant les moteurs à base de règles est peu répandue, malgré une percée de Ilog Rules, et son pendant Open Source Drools.

Mettre les modèles et règles métier au centre du processus, implique de pouvoir :

Les techniques de génération intelligente d'application, qui reproduisent le raisonnement d'un concepteur humain, permettent de réaliser des objectif ci-dessus.

Modéliser aussi l'expertise sur le déploiement

Par exemple un expert sur le déploiement d'infrastructures CMS (Content Management System) en PHP telles que Drupal, pourrait être assisté, voire remplacé, par un système expert. En entrée, le système expert pose quelques questions simples, puis passe dans un mode libre où l'on peut entrer plus d'informations, en choisissant d'autres questions auxquelles répondre. En sortie, il produira des scripts permettant d'automatiser le déploiement sur le type de plate-forme choisi.

Les questions porteront, entre autres, sur le type de fonctionnalités désirées (forums, CMS, Wiki, CRUD), et donc de modules en mettre en place. Les fonctionnalités demandant un développement spécifique seront intégrées sous forme de "marque-place".

Pouvoir transférer à volonté traitements entre le terminal et l'infrastructure distante (Web)

Des grands systèmes aux applications Web, en passant par les applications lourdes et la bureautique, l'informatique n'a pas cessé d'osciller entre traitement local et traitement distant. Actuellement l'état de l'art (exemple Google docs) consiste à avoir en local ce qui nécessite une interactionn rapide et fréquente avec l'utilisateur, et en traitement distant, ce qui demande de manipuler un assez gros volume de données. En fait, avec la technologie Ajax, on va plus loin, en profitant des "latences" de l'utilisateur pour télécharger en avance des données utiles. Mais cette répartition du travail est complexe à programmer, surtout parce que la logique applicative est répartie entre le client et le serveur. Bien sûr, le client-serveur ce n'est pas nouveau, mais ce problème de garantir la cohérence client-serveur, et simplifier le développement n'a jamais vraiment été résolu.

A cette problématique se joint le fait que les terminaux sont plus multiples que jamais (téléphones, PDA, ordinateurs), même si beaucoup d'applications tournent sur un navigateur avec JavaScript.

Les techniques de génération intelligente d'application peuvent permettre de transférer à volonté tel ou tel traitement entre le terminal et l'infrastructure Web, aussi bien de façon rigide (en phase de conception), que de façon dynamique, à l'exécution.

2009-12-30

Idée: site collaboratif pour images naturalistes

Je lisais le "Guide Entomologique" de Patrice Leraut; les images, uniquement d'insectes naturalisés, sont peu utilisables. Par exemple, les couleurs des poils des bourdons sont passées. Faire des images d'insectes vivants demande beaucoup de travail, et en plus il faut les identifier. Pour remplir ces deux taches, j'ai eu l'idée d'utiliser les techniques du Web dites 2.0. Une communauté d'utilisateurs va publier des images, les commenter, les évaluer, et aboutir à une identification. Suivant les coutumes communes dans les sites 2.0, les contributions, et donc les contributeurs, sont évalués par les contributeurs eux-mêmes. Cela permet de chiffrer la fiabilité de chaque donnée à chaque instant.

Bien sûr, on ne se limitera pas à publier des images, des identifications et des commentaires. On pourra ajouter des informations structurées quelconques, par exemple plantes nourricière de chenille, nidification des oiseaux, etc.

Les photos les plus "polémiques" seront marquées comme nécessitant l'attention des spécialistes. On constituera ainsi, petit à petit, une base de données sur les images d'animaux et de plantes. Les technologies du Web Sémantique: bases de données RDF, modélisation OWL, moteurs à bases de règles se prêtent bien à une telle base. En effet les propriétés que l'on veut pouvoir ajouter à un objet (image, espèce, contributeur, etc) n'ont pas à être limitées et fixées à l'avance, contrairement à une base relationnelle. De plus, tous les identificateurs, qui sont des URI, partagent un même espace de nommage, et sont donc compatibles. Par conséquent on peut fusionner des informations de plusieurs provenances, par exemple des bases d'images en ligne fournies par des musées, des universités, des herbiers, etc.

Que signifie précisément fusionner ? On a des informations de provenances diverses sur un même objet: espèce, contributeur, lieu géographique. Si on est capable d'affirmer que l'objet O1 de la base B1 est identique à l'objet O2 de la base B2, on peut rassembler tout ce qu'on sait sur O1 dans B1 et B2.

Propriétés

Image: auteur, lieu, horodatage, propriétés de l'image (taille, focale, ...)

Contributeurs: prénom, nom, ou pseudonyme, courriel (identificateur principal), résidence, compétences, ...

Espèce:

Types d'annotation: approuver, désapprouver, commenter, compléter.

Site COCO : publier des photos d'hôtel et de restaurants

A FAIRE

2009-12-24

Un modèle d'affaires

Ma valeur ajoutée serait via des services Web qui implémentent la logique de gestion. Pour les fonctionnalités de base d'un site Web , il y a déjà beaucoup de choses qui existent sur étagère : forum, CMS, authentification, ... L'idée c'est de prendre en charge l'intelligence métier via un moteur de règles qui sera derrière un service Web .

JRE alternative, et licence

Il y a aussi le source jre , different, issu du projet Classpath, http://www.gnu.org/software/classpath/ .

Les nouveaux developpement de JDK7 se passent dans le cadre OpenJDK http://openjdk.java.net/ ; licence GPL : http://www.sun.com/software/opensource/java/faq.jsp#b3

Suggestion pour Joafip + Drools/N3

Au niveau de TripleTable on aurait les 3 méthodes insert, delete, et update qui peuvent être appelées sans pb dans les 2ème membres des règles Drools, et en même temps on appellerait insert, delete, ou update sur le WorkingMemory Drools; Mais le problème c'est pour le membre de gauche de Drools; Quand Drools cherche par ex.

Triple( subject == $S , predicate == $P )

il faut qu'il cherche dans les objets gérés par jf ...

2009-12-19

Je découvre la méthode URI.create(String); il y a certainement pas mal d'endroits où j'aurais dû l'employer.

Un petit exo. N3

Règle Facebook implémentée en N3 :

Si j'ai deux amis qui ont tous deux Z comme ami, alors Facebook va me faire une proposition d'ami pour Z .

{
  ?C :current_user true .
  ?C :friend ?X .
  ?C :friend ?Y .
  ?X owl:differentFrom ?Y .
  ?Z :friend ?X .
  ?Z :friend ?Y .
  ?Z owl:differentFrom ?C .
} => {
  ?C :friend_proposition ?Z .
} .

2009-12-16

On ne déclare pas la classe testée par rapport à la classe de test. C'est un exemple typique de la problématique: "comment simplifier la vie aux experts sans la compliquer à tout le monde?".

2009-12-15

écouter "France Info" sur internet avec :( flash

http://www.france-info.com/pratique-aide-2008-01-21-article67554-67554-76-236.html

2009-12-09

Les présents disent:

Excellent JUG hier ! Un des meilleurs ! La prés. d'Emmanuel Bernard sur Spring 3

2009-12-08

Tester un numéro de téléphone international

Suite à une suggestion de Jean-Luc N. (qui assure ;) ), j'ai mis en ligne un petit exemple JavaScript + expressions régulières qui teste un numéro de téléphone international :

dev/js/checkphone.html

Inspiré de http://javascript.about.com/library/blre.htm

2009-12-07

Règles IHM - Déductions

Cas d'utilisation comptage de liste:

?LIST math:memberCount ?C.
?C math:greaterThan 5 .
} => { ?LIST :putInTable ?TABLE . }

Plaquer (map) une arborescence (e.g. subclassOf) sur une autre (e.g. Tablemodel Java)

Jouer sur les intentions: editedClass ou editedElement.

Autres idées en vrac:

Idée : suppresseur de publicité

radio ou Internet

Idée : règles de gestion pour un lecteur de musique genre rythmbox

Une application d'un moteur à base de règles. Il utiliserait les noms de fichiers, de répertoires, les informations internes (balises ID3, Vorbis etc), les serveurs sur Internet pour:

EasyTAG est un utilitaire de visualisation et d'édition de tags pour les fichiers MP3, MP2, MP4/AAC, FLAC, Ogg Vorbis, MusePack, Monkey's Audio et WavPack. Son interface GTK+ simple et agréable rend le marquage plus facile que sous GNU / Linux ou Windows.

2009-12-05

Tester EulerGUI sans réseau ?

Quasiment impossible de tester EulerGUI sans réseau! Il faudrait vraiment un cache Internet. Quelque chose qui s'interpose entre les appels réseau et l'application Java, soit au niveau du système, soit au niveau Java.

Pourquoi le pack() ne marche pas ? J'essaye successivement :

  # ?JFRAME javam:pack () .
  ?JFRAME javam:validate () .
  ?JFRAME javam:invalide () .

Comportement stupide d'une IHM: eclipse

Encore un exemple de comportement stupide d'une IHM. Avec la console eclipse, je remonte tout en haut avec la touche flèche en haut oblique. Dans la fenêtre de recherche , le sens de recherche devant changer pour être vers le bas. Ce qui est intéressant, c'est qu'il faudrait raisonner sur les intentions de l'utilisateur.

2009-12-03

prochain rendez-vous sparklingPoint

jeudi 3 décembre 2009, 19h45, Paris Centre

thème : Google Editions — un coup de pied dans la fourmilière

invité : Xavier Cazin

2009-12-01

l'outil JRat d'analyse de programme Java

http://blog.developpez.com/adiguba/p8101/java/google-noop/

Carte de visite Gratuite

http://www.vistaprint.fr/vp/ns/studio3.aspx?pf_id=064&combo_id=4298&gallery_id=64&category_id=11&referer=http%3a%2f%2fwww.vistaprint.fr%2fvp%2fns%2fdefault.aspx%3fGP%3d11%252f30%252f2009%2b4%253a31%253a21%2bAM&rd=2

Problème de webcam avec Empathy

kingsparda et sakoul ont le même problème non résolu.

webcam empathy Erreur interne de flux de données

export EMPATHY_DEBUG=all

Inscrit sur ubuntu-fr.org !

Forum » Internet & réseaux

Posté ceci:

Empathy: webcam: Erreur interne de flux de données

http://forum.ubuntu-fr.org/viewtopic.php?id=362927

Devant le manque de réponse, je suis allé voir sur irc://irc.gimp.org/empathy

<Zdra> C'est un bug connu du codec H263 AFAIK

<Zdra> JMV, vous avez besoin du PPA telepathy

<Zdra> Elle a des correctifs pour les codecs buggy

https://launchpad.net/~telepathy/+archive/ppa

C'est mieux mais pas génial: au moins je me vois sur le côté envoi, mais du côté récepteur, l'image est gelée sur l'instant initial. Je présume que que les mises à jour ultérieures vont arranger ça.

<jmv> Zdra, dois-je mettre à jour empathy également du côté réception?

<jmv> Mon but est de communiquer avec Google Talk, mais maintenant je teste avec 2 machines Ubuntu 9.10

<Zdra> J'ai aussi mis à jour empathy avec la PPA côté réception sous Ubuntu 9.10 aussi, mais l'image est encore gelée sur le côté réception.

2009-11-28

2009-11-27

Jester : Ca a l'air bien l'idée de tester les tests.

Etat des lieux des projets Déductions et EulerGUI

Publié dans le groupe de discussion en français pour les projets Déductions et EulerGUI:

tests fonctionnels, Pellet 2.0, etc

2009-11-26

http://www.regismedina.com/articles/fr/principes-avances-conception-objet

Tests IHM Déductions & EulerGUI

Toujours enrhumé !!!!!!

Qiand même avancé sur les tests fonctionnels. C'est le bonheur de voir tous ces cas d'IHM qui tournent tous seuls rapidement !

Mais ça a mis en évidence des menus problèmes de Thread. Ca fait longtemps que j'avais pas écrit de join() . Ca permet d'attendre la fin d'un Thread. En gros je lis et convertis les sources venant du Web dans autant de threads; et quand on lance une exécution Drools, il faut attendre.

Le pb se pose pour les sites lents, et avec les tests .

2009-11-23

http://barcamp.org/LLVM-BarCamp-Paris

http://linuxfr.org/2009/10/27/26075.html

Joafip + Drools

Je comprends comment ceci peut marcher avec Drools .

handle = (InternalFactHandle) this.objectStore.getHandleForObject( object );

qui appelle ceci :

return (InternalFactHandle) this.assertMap.get( object );

Mon problème c'était que les put que je vois dans le code sur assertMap sont tous ainsi :

this.assertMap.put( handle, handle, false );

En fait, il n'y a pas d'autres put. Ca passe par la redéfinition du code de hachage dans EqualityAssertMapComparator :

    public int hashCodeOf(final Object obj) {
        if ( obj instanceof FactHandle ) {
            return rehash( ((InternalFactHandle) obj).getObjectHashCode() );
        }
        return rehash( obj.hashCode() );
    }

La pile correspondante étant :

Thread [main] (Suspended (breakpoint at line 45 in EqualityAssertMapComparator))
EqualityAssertMapComparator.hashCodeOf(Object) line: 45
ObjectHashMap.get(Object) line: 84
SingleThreadedObjectStore.getHandleForObject(Object) line: 106
ReteooStatefulSession(AbstractWorkingMemory).insert(Object, boolean, boolean, Rule, Activation) line: 912
ReteooStatefulSession(AbstractWorkingMemory).insert(Object) line: 829
RandomGraphMaker.insertOneTriple(Project, String, String) line: 58
RandomGraphMaker.makeRandomGraph(Project, int, int, String, String, String) line: 33
StressTestReasoning.runTest() line: 84
StressTestReasoning.main(String[]) line: 51

Souhaits pour les debuggers

Comme j'aimerais qu'un debugger montre les valeurs de retour quand elles sont définies !

Et aussi qu'il enregistre (et montre) le nombre de fois où on est passé par une ligne en pas à pas ou comme point d'arrêt. Pendant qu'on y est, il pourrait garder aussi l'horodatage en nanosecondes, et même la pile et les valeurs des variables. L'idée c'est qu'un état qui a donné lieu à un clic de l'utilisateur mérite d'être gardé, et il n'y aura pas trop de volume.

J'aimerais aussi pouvoir mettre un point d'arrêt sur une méthode d'un objet.

2009-11-18

Cas d'utilisation Déductions & EulerGUI

Prestations et services

2009-11-17

Développement générateur de de formulaires Déductions

Ca avance avec mes formulaires; je m'en sors avec les rapports entre objets utilisateur, champs, formulaires, fenêtres, et évènements .

Mais débugger ça n'est pas plus drôle que débugger un pb Java :( .

2009-01-13

Liens LinuxFr

L'INRIA créé un centre de recherche sur les logiciels libres

http://linuxfr.org/2009/10/06/25989.html

Formation JAVA : + de 100 tutoriaux progressifs pour s'auto-former

http://linuxfr.org/2009/11/02/26101.html

Logiciels libres : un défi scientifique

http://linuxfr.org/2009/11/09/26132.html

fOSSa conférence sur le libre/open-source d'envergure

http://linuxfr.org/2009/11/11/26141.html

2009-01-13

Vers une ontologie pour les communautés de développement de logiciel libre

Isabelle Mirbeĺ

Equipe EDELWEISS, INRIA Sophia Antipolis, Sophia Antipolis - Francé

Equipe KEWI, Pˆ le GLC, Laboratoire I3S, Sophia Antipolis - France

isabelle.mirbel@unice.fr

http://hal.archives-ouvertes.fr/docs/00/41/66/89/PDF/73-85.pdf

Ontologie "Description d'un Project" http://usefulinc.com/ns/doap

liens

http://wave.google.com/

http://websemantique.org/TechniquesEtOutilsPourLeDeveloppeur

gnome-terminal

Je suis passé de Kubuntu à Ubuntu, et certaines choses changent. Par exemple gnome-terminal est lancé par défaut au lieu de konsole. Bonne surprise: il colorie les résultats de grep.

2009-01-12

Lancer un contrôle de disque SMART en ligne de commande

Voilà la procédure pour créer l'exécutable :

http://sourceforge.net/apps/trac/smartmontools/wiki/Download#Installfromthesourcetarball

Ensuite, comme dit

http://blog.shadypixel.com/monitoring-hard-drive-health-on-linux-with-smartmontools/

on lance

sudo smartctl -H /dev/sda1

( remplacer par le vrai nom du device, peut-être /dev/sdb1 ).

Ceci récupère le informations de fonctionnement stockées par le disque lui-même depuis l'origine.

Enfin le vrai test court :

sudo smartctl -t short /dev/sda1

Attendre 2 minutes , puis voir les résultats ainsi :

sudo smartctl -l selftest /dev/sda1

Comme le nom selftest l'indique, ce sont des tests internes au disque, bien réels et physiques, mais ça ne passe pas par l'OS . On connait le résultat final, y compris le LBA de la première erreur, via le protocole SMART.

Enfin le test long :

sudo smartctl -t long /dev/sda1

Voir l'historique de SMART et un témoignage par l'auteur de smartmontools:

http://www.linuxjournal.com/article/6983

2009-01-11

Développement générateur de de formulaires Déductions

Je récupère tous les sources:

svn co https://deductions.svn.sourceforge.net/svnroot/deductions deductions

Restauration de mon environnement

Suite au changement de disque, j'ai installé 9.10 hier à partir d'un CD ordinaire 32 bits; or je suis sur un AMD64, et je voudrais migrer à Ubuntu 64 bits. Hélas apparement il n'est pas possible de migrer via Internet. J'ai donc gravé et lancé un CD 64 bits; mais j'ai été obligé de reformatter et de perdre mon /home (je n'ai qu'une partition). J'avais aussi essayé de créer un USB de démarrage avec l'installation Ubuntu 64.

Packages pour EulerGUI:

sudo apt-get install subversion sun-java6-jdk maven2 eclipse-jdt graphviz \
     vim-gnome yap wget python-rdflib mercurial

Le reste dans la doc. EulerGUI .

Restaurer mes données Firefox:

cd .mozilla/firefox/sz7ct5e1.default/
cp /media/JMV_USB/firefox/* .

Les données Firefox sont:

bookmarks.html places.sqlite  signons3.txt signons.sqlite

Je devrais en faire un zip et me l'envoyer en mail.

Configuration bi-écran

cf fil de discussion sur fr.comp.os.linux.configuration

cvt 1600 1200 
xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
xrandr --addmode VGA-0 "1600x1200_60.00" 
xrandr --output VGA-0 --mode "1600x1200_60.00" 

Installer hors Ubuntu: Amaya, Protégé

Autres locigiels:

sudo apt-get install zsh xchat swi-prolog ssh gftp zenmap bum kompare \
   pidgin jedit gsmartcontrol wordnet lynx \
   prover9-mace4 eprover spass coqide axiom

Copier mon .vimrc

wget --output-document=$HOME/.vimrc http://jmvanel.free.fr/vim/vimrc
mkdir -p $HOME/.vim/syntax/
wget --output-document=$HOME/.vim/syntax/n3.vim \
  http://www.vim.org/scripts/download_script.php?src_id=6882

Rapatrier mon site:

wget --mirror http://jmvanel.free.fr/

2009-01-10

Problèmes de disque

Ce matin j'ai conduit jusqu'à Saint Maur des Fossés chez Iventive. En 20mn tout était fait ! Il a même flashé mon BIOS, et dépoussiéré mon ventilateur de CPU. J'ai aussi eu un CD de Ubuntu 9.10 . J'avais le choix, et plutôt qu'un disque de 640Go Samsung, j'ai préféré un Western de 320Go , mais censé être plus fiable.

2009-01-09

Problèmes de disque

Cher lecteur, lis bien ceci pour ne pas faire les mêmes erreurs.

S'en sortir, ça veut dire pouvoir avoir une ultime session pour sauver les données qui peuvent l'être, et non pas récupérer un ordinateur en bon état et fiable.

Un disque qui a eu une erreur de lecture, il n'est pas raisonnable de continuer à travailler dessus.

Hier soir j'ai même eu un écran noir. Arrêt brutal. Probablement dû au disque.

Si tu veux avoir plus de chances de récupérer tes données avant le crash final, ne fatigues pas le disque en bootant dessus. Utilises un CD Linux live. J'utilise le CD Ubuntu 9.04, mais la majorité des distributions ont cette faculté.

C'est ce que j'aurais dû faire tout de suite. Je viens de me payer une séance supplémentaire de fsck, et ça empire.

L'avis d'un pro:

http://www.presence-pc.com/forum/ppc/Hardware/topic-unique-guide-pratique-recuperation-donnees-disque-sujet-22965-1.htm

Détails de la sauvegarde

Ce n'est pas de la récupération, car si quelques MP3 ont été perdus, les fichiers de textes personnels et de configuration sont encore là.

Voici un exemple de commandes dans la session lancée par le CD Linux live:

sudo mkdir /media/sda1
sudo mount -o ro /dev/sda1 /media/sda1

cd /media/sda1/home/jmv
sudo cp -r -i --preserve=mode,timestamps .gftp/bookmarks .vimrc journal.* mat*.txt \
               plantes/ administratif/ ontologies/ \
          /media/JMV_USB/

sudo cp -r -i --preserve=mode,timestamps \
   donnees.txt mat*.txt bizz/ \
          /media/JMV_USB/

sudo cp -r -i --preserve=mode,timestamps doc/ /media/JMV_USB/
sudo cp -r -i --preserve=mode,timestamps doc-pub/ /media/JMV_USB/

ls -l apps >> /media/JMV_USB/apps.txt
ls -l src >> /media/JMV_USB/src.txt

cd gtk-gnutella-downloads/complete
# après avoir lancé le serveur ssh sur la machine de sauvegarde ( apt-get install ssh )
sftp jmv@192.168.1.28

# mais sftp n'est pas assez récursif, j'utilise rsync à la place
# rsync étant un outil de synchronisation, il ne va pas retransmettre ce qui est déjà là (grâce à sftp)
rsync -avz . jmv@192.168.1.28:/home/jmv/Musique/recup
sent 26347895293 bytes received 1444773 bytes 5670793.08 bytes/sec
total size is 26815085439 speedup is 1.02
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1058) [sender=3.0.5]                                                                                                                         3,114        Tout

En espérant que ça peut rendre service à ceux qui sont dans ma situation.

En suivant les informations ici j'ai récupéré mon historique firefox:

http://www.forensicswiki.org/wiki/Mozilla_Firefox_3_History_File_Format

sudo cp .mozilla/firefox/dgrke902.default/places.sqlite $d/firefox

2009-01-06

Problèmes de disque

Peut-être que moi aussi j'ai des problèmes de disque. Hier matin j'ai eu des erreurs sur le système de fichiers, qui a été démonté automatiquement. Je me suis retrouvé sous une console sous root. J'ai fait fsck ( quoi d'autre pouvais je faire ? ). Et maintenant ça remarche .

Mais je voudrais tester en profondeur mon disque au niveau matériel.

J'ai lancé l'IHM gsmartcontrol avec la technologie SMART derrière. Je ne sais pas encore interpréter les résultats, mais c'est mauvais!

Test result: Completed with read failure.

http://lea-linux.org/documentations/index.php/Hardware-hard_plus-smart

smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Model Family:     SAMSUNG SpinPoint T166 series
Device Model:     SAMSUNG HD501LJ
Serial Number:    S0MUJ1NQA50666
Firmware Version: CR100-13
User Capacity:    500,107,862,016 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 3b
Local Time is:    Fri Nov  6 11:13:15 2009 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x80)Offline data collection activity
was never started.
Auto Offline Data Collection: Enabled.
Self-test execution status:      ( 121)The previous self-test completed having
the read element of the test failed.
Total time to complete Offline 
data collection:  (8960) seconds.
Offline data collection
capabilities:  (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities:            (0x0003)57s SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability:        (0x01)Error logging supported.
General Purpose Logging supported.
Short self-test routine 
recommended polling time:  (   2) minutes.
Extended self-test routine
recommended polling time:  ( 153) minutes.
SCT capabilities:        (0x003f)SCT Status supported.
SCT Feature Control supported.
SCT Data Table supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   092   089   051    Pre-fail  Always       -       17950
  3 Spin_Up_Time            0x0007   100   100   015    Pre-fail  Always       -       7232
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       35
  5 Reallocated_Sector_Ct   0x0033   097   097   010    Pre-fail  Always       -       29
  7 Seek_Error_Rate         0x000f   253   253   051    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0025   253   253   015    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       6801
 10 Spin_Retry_Count        0x0033   253   253   051    Pre-fail  Always       -       0
 11 Calibration_Retry_Count 0x0012   253   253   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       20
 13 Read_Soft_Error_Rate    0x000e   100   100   000    Old_age   Always       -       170750462
187 Reported_Uncorrect      0x0032   253   253   000    Old_age   Always       -       5308416
188 Unknown_Attribute       0x0032   253   253   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   065   057   000    Old_age   Always       -       35
194 Temperature_Celsius     0x0022   130   106   000    Old_age   Always       -       36
195 Hardware_ECC_Recovered  0x001a   100   100   000    Old_age   Always       -       170750462
196 Reallocated_Event_Count 0x0032   097   097   000    Old_age   Always       -       29
197 Current_Pending_Sector  0x0012   090   090   000    Old_age   Always       -       97
198 Offline_Uncorrectable   0x0030   253   253   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x000a   100   100   000    Old_age   Always       -       0
201 Soft_Read_Error_Rate    0x000a   099   099   000    Old_age   Always       -       174
202 TA_Increase_Count       0x0032   253   253   000    Old_age   Always       -       0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       90%      6801         50331727
# 2  Short offline       Completed: read failure       90%      6801         538706004

SMART Selective Self-Test Log Data Structure Revision Number (0) should be 1
SMART Selective self-test log data structure revision number 0
Warning: ATA Specification requires selective self-test log data structure revision number = 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Dernière nouvelle !

Iventive a répondu au téléphone (j'ai quand même essayé 4 ou 5 fois, et envoyé un mail en début d'après midi ) !

Il faut que j'envoie le disque, et alors seulement je recevrai le nouveau disque.

2009-01-05

Gestion des services sous Ubuntu

J'ai vu plein de tentatives de log par ssh.

Alors je me suis préoccupé de gérer mes services.

J'ai installé bum.

J'ai lancé nmapfe.

J'ai arrêté tous les ports :

couchdb, cupsd, mysql, exim et ssh.

En fait je n'ai pas besoin de tout ça.

J'aurais pu aussi changer le réglage de la box.

Erlang, et autres langages fonctionels

J'ai installé Erlang, ce langage fonctionel fait pour le temps réel :
http://fr.wikipedia.org/wiki/Erlang_%28langage%29

http://www.erlang.org/starting.html


Sur Wikipedia, j'ai été amusé de la ressemblance syntaxique avec Prolog :

%% quicksort:qsort(List)
%% Trie une liste d'éléments
-module(quicksort).
-export([qsort/1]).

qsort([]) -> [];
qsort([Pivot|Reste]) ->
qsort([ X || X <- Reste, X < Pivot]) ++
[Pivot] ++
qsort([ Y || Y <- Reste, Y >= Pivot]) .
La notation pour le début et le reste d'une liste, la déclaration d'une fonction (analogue à un prédicat) en plusieurs clauses sont semblables. Par contre, bien sûr, ça reste un language procédural ,et l'exécution en Haskell se fait du membre de droite de -> au membre de gauche, contrairement à Prolog.

En creusant plus, j'ai vu que Erlang a commencé comme une application en Prolog:

http://www.kimbly.com/blog/000057.html

Damien Katz, l'auteur de la base CouchDB (en Erlang), aime Erlang, mais il grogne sur beaucoup de choses:

http://damienkatz.net/2008/03/what_sucks_abou.html

Comme on parlait de OOM killer du noyau Linux, j'ai lu une discussion intéressante sur LinuxFr: Raisons susceptibles du déclenchement d'OOM killer


Pendant que j'y étais, j'ai installé:

Wings 3D , Mercury (un mélange de Prolog et de fonctionnel), et Haskell .
OCAML, je l'avais déjà.

-- Installation complete.

-- Don't forget to add /usr/local/mercury-rotd-2009-11-03/bin to your PATH,
-- /usr/local/mercury-rotd-2009-11-03/man to your MANPATH,
-- and /usr/local/mercury-rotd-2009-11-03/info to your INFOPATH,
-- to copy deep_profiler/mdprof_cgi to /usr/lib/cgi-bin,
-- and to add the following lines to the `.emacs' file
-- in your home directory:
        (add-to-list 'load-path
                "/usr/local/mercury-rotd-2009-11-03/lib/mercury/elisp")
        (autoload 'mdb "gud" "Invoke the Mercury debugger" t)

2009-10-30

http://www.linux-france.org/article/these/cathedrale-bazar/cathedrale-bazar.html#toc11

2009-10-26

Eléments de spécification: formulaires générés à partir de OWL

Je re-visite mes specs pour un générateur de formulaires (runtime behavior).

Il faut gérer les préfixes, car il faut afficher quelque chose quand il n'y a pas de label RDF, ou de nom FOAF.

Utiliser les propriétés objet OWL, c'est naviguer de proche en proche et éditer un graphe d'objets. De proche en proche, cela veut dire qu'il y a un noeud courant. Pour naviguer, il faut pouvoir afficher tous les noeuds connectés au noeud courant (des resources RDF), ou bien ceux répondant à certains critères simples; et changer de noeud courant.

Editer peut être interdit pour certaines classes ou propriétés (par exemple en commerce électronique, on ne peut pas modifier le catalogue quand on commande ). Egalement, on ne modifie pas l'ontologie. A propos d'édition, on peut avoir 2 politiques:

  1. on interdit toute édition, sauf ce qui est explicitement permis;
  2. on permet toutes les éditions, sauf ce qui est explicitement interdit; ça sera en fait un mode administrateur des données.

Par défaut la politique 1 sera appliquée. On utilisera pour permettre l'édition dans l'application générée:

:myApplication app:editionAllowed :myProperty .
:myApplication app:editionAllowed :myClass .

Pour appliquer la politique 2, on utilisera ces déclarations:

:myApplication app:policy app:allEditionsAllowed .

Pour éditer, il faut pouvoir :

  1. créer un noeud à partir d'une propriété objet et du noeud courant
  2. enlever un noeud existant
  3. connecter (le noeud courant) à un noeud existant (resource RDF), à partir d'une propriété objet et du noeud courant

Pour réaliser ces objectifs, on peut avoir respectivement, pour chaque instance de propriété, trois éléments d'IHM:

  1. Bouton de création
  2. Bouton de destruction
  3. un combo box

Aujourd'hui l'état des lieux est ainsi:

deductions_object_property

Le projet tests sont :

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/examples/plants2.n3p ( correspond à l'image ci-dessus )

http://deductions.svn.sourceforge.net/viewvc/deductions/n3_new/wine-app.n3p ( en chantier, pour les aspects restrictions OWL )

Tâches à réaliser

Bouton create

  1. ajouter un pictogramme et/ou un tooltip pour indiquer que c'est une création d'objet
  2. doit être dans un panneau avec le combobox (pour les forcer à être à côté)
  3. une fenêtre de création doit proposer un rdfs:label (sauf s'il y déjà qq'chose du même genre comme foaf:name), et éventuellement un rdfs:comment (choix global ou particulier à la propriété), en plus bien sûr des propriétés spécifiques qui été inférées comme étant applicables

ComboxoBox

Rappel: il s'agit de connecter le noeud courant à un noeud existant (resource RDF). On choisit un URI qui est déjà connu dans la base de connaissance (KB), ou on en tape un (soit avec la notation abrégée N3, soit in extenso).

Il y a deux cas un peu différents. Soit cet URI est une classe sans propriétés, ou owl:Thing. Soit cette classe a des propriétés, auquel cas on voudra éditer ces propriétés.

Règles pour les propriétés objet:

Règles pour les tableaux

2009-10-24

mapper-sa-base-donnees-avec-pattern-dao

2009-10-23

Groupe de discussion pour les projets Déductions et EulerGUI:

J'ai fait un nouveau groupe de discussion en français pour les projets Déductions et EulerGUI:

http://groups.google.com/group/deductions-fr

Discussions en Français pour les développeurs et architectes intéressés par les évolutions, les choix et la feuille de route des projets EulerGUI (http://eulergui.sourceforge.net/) et Déductions ( http://deductions.sourceforge.net/ ):

Moteurs de règle, Web Sémantique, génération d'applications

2009-10-21

En ce moment je teste virtuoso , un serveur qui peut RDFiser beaucoup de choses .

2009-10-20

Gestion de cave à vin

Je travaille sur une petite démo. de gestion de cave à vin .

Avec Déductions.

Si vous avez une autre idée de démo...

Luc : à une époque on avait parlé de pet-clinic, que je ne connais pas, demo spring je crois.

moi: oui je me rappelle ... L'avantage là c'est que le OWL est là :

moi: http://www.w3.org/TR/2003/PR-owl-guide-20031215/wine.rdf

tandis que pour des modèles POJO ou SQL je suis pas encore équipé.

Enfin SQL il y qq'chose mais c pas OSS, et ça le sera peut-être jamais (ça vient de Dassault)

Pour les POJO tels que pet-clinic, je n'ai pas de techno. en vue à intégrer .

C'est à dire pour traduire le modèle en OWL.

Créer des videos de démo.

Créer des videos de démo. ; quel logiciel conseilleriez vous (sous linux ) ?

J'ai jamais fait une recherche rapide; ça donne pour linux :

http://recordmydesktop.sourceforge.net/

J'ai regardé la video

http://fosswire.com/post/2008/3/video-screen-capture-in-linux-with-recordmydesktop/

Ca fait aussi le son, ce qui n'est pas évident, d'après certaines sources.

Il y a aussi Wink:

Wink is a Tutorial and Presentation creation software, primarily aimed at creating tutorials on how to use software (like a tutor for MS-Word/Excel etc). Using Wink you can capture screenshots, add explanations boxes, buttons, titles etc and generate a highly effective tutorial for your users.

Animations en SVG et JavaScript

Ce matin j'ai cherché pour ma fille un logiciel qui aide à faire de l'animation en SVG et JavaScript; il n'y a rien !!!

Il y a des outils pour le dessin animé "classique" , ktoon et pencil , mais ça n'est pas ce que je cherche.

Débat avec Thomas sur EulerGUI

Sur LinuxFr.

Merci Thomas pour relancer le débat. Ca va mieux avec des questions précises !

Je réécris la règle avec des variables pour la traçabilité :

"les personnes P ayant acheté la même chose A1 que vous ont aussi acheté A2 "

Du point de vue applicatif , c'est en fait une règle de présentation :

S'il existe une personne P ayant acheté la même chose A1 et qui a aussi acheté A2,

et si A1 et A2 sont distincts, alors il faut afficher le message proposant A2 .

Ce qui se traduit en logique N3 par :

{
  ?P a_acheté ?A1 .
  client_courant a_acheté ?A1 .
  ?P a_acheté ?A2 .
  ?A1 owl:distinct ?A2 .
} => {
  ?message contient ( "Les personnes ayant acheté " ?A1 "
                       ont aussi acheté " ?A2 ).
  affichage_courant contient ?message .
} .

Chaque point délimite un triplet ("statement"). Les parenthèses délimitent une liste. Bien sûr le dernier triplet va déclencher d'autres règles qui vont ultimement afficher qq'chose en Swing ou en HTML, etc, suivant la plateforme et le contexte de la session. La variable ?message à droite du signe => correspond à une création d'objet.

Pour voir un exemple de règles qui sont effectivement utilisées pour la génération de formulaires:

http://deductions.svn.sourceforge.net/viewvc/deductions/n3/app_gui-rules2.n3?view=markup

Ce qui est intéressant c'est que la même technologie N3 est utilisée pour les règles d'infrastructure (les formulaires) et pour les règles métier (les conseils d'achat).

Je réécris la règle une 2ème fois d'une façon plus réaliste et précise en introduisant une notion de catégorie de marchandise:

"les personnes ?P ayant acheté la même chose ?A1 de catégorie ?C que vous , ont aussi acheté ?A2 de catégorie ?C"

2009-10-12

La communauté websemantique.org

Légèrement déçu par la communauté LinuxFr.org, j'ai ajouté mon grain de sel sur la communauté websemantique.org .

2009-10-11

Ma présentation de jeudi

Ma présentation de jeudi prochain est enfin sur l'agenda du libre:

http://www.agendadulibre.org/showevent.php?id=3946

Hier conf. Linux embarqué

Excellent; mais trop de rappels bien connus des développeurs. Par Gilles Blanc pour l'April . Son blog embarqué parait de bonne facture.

Je lis son article sur les IHM générés en Python par Qt Creator. Ca me donne l'idée de faire une génération de XML façon Qt Creator avec mon outil Déduction. Justement là je travaille sur la génération de XML, avec XForms en ligne de mire.

Debug à l'envers

Dans le nouveau gdb; admirable:

https://linuxfr.org//2009/10/10/25999.html

A quand ça avec Java ?

2009-10-08

Je suis en plein dans les bases RDF et SPARQL ( une beta de EulerGUI tous les jours ).

Réflexions sur la galère: programmation système et règles

A propos de logiciel système, hier j'ai pesté contre le son dans Linux; j'ai acheté un micro pour parler sur pidgin ...

En fait il y a une grande complexité dans la problématique: multiples entrées et sorties, multiples cartes, préamplificateur ou pas , ...

12:06 multiples logiciels, pleins de réglages,

12:07 et pour couronner le tout, sur Linux, plusieurs frameworks : Alsa, et d'autres .

et bien sûr il y a un niveau bas /dev/dsp

Bref, matière à mettre des règles :) .

Mon prochain séminaire

L'Agenda du Libre

L'agenda des évènements du Logiciel Libre en France

>>> Prévisualisation de l'évènement

Paris : Le générateur d'application Déductions

Date et lieu

Le jeudi 15 octobre 2009, de 19h00 à 20h45.

À Paris, Île-de-France

Description

Le créateur du projet libre Déductions donne un séminaire sur le générateur d'application Déductions le jeudi 15 octobre 2009, 19:00 – 20:45 à Paris, Métro Cadet.

Ce séminaire s'adresse à des informaticiens ayant une connaissance d'une technique de modélisation, telles que UML, SQL, OWL, RDF Schéma, ...

Il devrait aussi intéresser les développeurs qui suivent les thèmes du Web Sémantique, des moteurs à base de règles, et de l'Intelligence Artificielle. La présentation tournera autour de deux projets sous licence LGPL:

Pour s'inscrire: http://jmvanel.free.fr/seminaires/seminaires_gratuits.html, ou écrire à  jeanmarc.vanel CHEZ gmail.com .

Résumé

Informations

Site Web: http://jmvanel.free.fr/seminaires/seminaires_gratuits.html

Contact: jeanmarc POINT vanel CHEZ gmail POINT com

2009-10-07

Galère avec le micro et KMix sur KUbuntu (résolu)

J'ai voulu tester le micro "tout seul", alors j'ai pris Audacity. J'ai compris que, pour que les réglages de KMix soient pris en compte, il faut choisir dans Audacity le périphérique d'entrée "Alsa: dmix" (pas celui par défaut) .

Maintenant, dans Kmix:

gnome-sound-recorder 2.26.0 ne marche pas comme Amarok, et le dernier Pidgin 2.6.1 non plus :( .

2009-10-06

Après Open Source Developers Conference, Paris

Je suis le dernier des exposés sur le Web Sémantique:

http://act.osdc.fr/osdc2009fr/favtalks

Les autres exposés sur le Web Sémantique étant :

Le Web Social, par Henry Story

J'ai cherché la présentation de Henry sur le site OSDC ... En vain.

> Voici la presentation que j'ai un peu amélioré encore hier:

> http://bblfish.net/tmp/2009/10/

Bugtracking sur le web sémantique, par Olivier Berger

2009-10-02

Open Source Developers Conference, Paris

Je passe demain à 14h45 à la 1ère Open Source Developers Conference France.

Cette conférence se tiendra au Carrefour Numérique de la Cité des Sciences, à Paris (porte de la Villette).

http://act.osdc.fr/osdc2009fr/talk/2349

Programmation par intention (avec Cyril)

> Pour moi, il y a surtout les vidéos de la programmation par intention qui sont très

> impressionnantes pour ceux qui les comprennent, meme si bien sur la

> démarche est différente, elle casse les mêmes a priori sur le code source :

> http://www.youtube.com/watch?v=tSnnfUj1XCQ&hl=fr

J'ai vu la partie 1, ce essentiellement ce qu'on peut faire

aujourd'hui avec eclipse, à part l'arbre syntaxique . Je vais quand regarder la suite ...

Dans cet ordre d'idées, il y a la méthode B ( http://fr.wikipedia.org/wiki/M%C3%A9thode_B ); elle bien existante , avec des outils open source. Mais il y a déjà des gens qui font du business avec .

Il y a aussi la "program synthesis" , lancée par cet article souvent cité:

http://theory.stanford.edu/~zm/papers/pap-fundamentals92.ps.Z

A noter que les auteurs utilisent une forme d'algorithme avec "tableaux", comme les raisonneurs DL .

2009-10-01

l'écosystème Maven ... je voudrais mieux comprendre.

Ce soir mon séminaire "Développement logiciel et ontologies" ...

Maven en Français

Première relecture publique de la traduction de Maven - The definitive guide, Posté par Emmanuel Hugonnet

https://linuxfr.org/2009/09/30/25976.html

2009-09-28

Nouvelles de EulerGUI

Bonjour

J'envisage de remplacer les boutons "GRAPH", "PARSE", "ORIG." par des icones. Ce sera mieux pour désencombrer l'écran, et aussi pour i18n .

Suggestions bienvenues.

Il y aura aussi un bouton pour lancer un formulaire sur le document courant; là aussi icone bienvenue.

De plus il y aura une petite image à côté de chaque source pour signaler si elle est Web ou locales, N3, RDF, ou autres, qui reprendra les images des boutons de la première rangée.

Enfin, il y maintenant 2 importeurs différents pour XML de base et XML Schéma: Gloze et ReDeFer.

A+

Un nouveau développpeur sur EulerGUI

Un nouveau développpeur sur EulerGUI : Paul, alias shantiart ! :) Il va surtout tester et voir la documentation pour l'instant .

2009-09-27

J'ai trouvé ce site qui rassemble tous les aide-mémoires et cartes de référence : http://www.cheat-sheets.org/

2009-09-24

http://www.agendadulibre.org/submit.php

http://friendfeed.com/hnourel

http://www.zdnet.fr/blogs/l-esprit-libre/pour-un-web-libre-le-projet-drumbeat-et-un-expose-a-lire-39706487.htm?xtor=RSS-1

OWL en Français

https://linuxfr.org/forums/31/27696.html : EulerGUI 1.2.1, environnement pour les règles et le Web sémantique

http://friendfeed.com/hnourel/df6e0570/eulergui-1-2-environnement-pour-les-regles-et-le

Journées du Logiciel Libre 2009, les 16-17 octobre, Lyon

https://linuxfr.org//2009/09/09/25882.html

Présentation et utilisation d'HSQLDB

Date de publication : 12 Octobre 2006 , Date de mise à jour : 19 Mars 2009, Par Baptiste Wicht

Trouvé l'entrée dans Maven pour HSQLDB :

http://repo2.maven.org/maven2/

2009-09-23

LinuxFR, Parinux

Répondu à Sitoka au sujet de EulerGUI sur LinuFr

Merci d'avoir adhéré à Parinux.

Vous pouvez maintenant envoyer votre chèque à la trésorière de l'association

Parinux c/o Sabine Herbin

75 avenue Maurice Berteaux

78300 Poissy

A bientôt lors d'un évènement Parinux !

https://linuxfr.org//~jmvanel/28736.html

La sérialisation XML en Java

http://ydisanto.developpez.com/tutoriels/j2se/serialisation/partie2/

2009-09-17

Ma Présentation Développement logiciel et ontologies à osdc 2009

Christian Fauré : Hypomnemata : supports de mémoire - Guide pour construire une ontologie

Développement logiciel et ontologies - Par Jean-Marc Vanel

Date : Pas encore planifié - Durée : 40 minutes

Langue : Français - http://act.osdc.fr/osdc2009fr/talk/2349

Web Sémantique en Français:

http://www.w3.org/2001/sw/Europe/talks/040721-cmn/all.htm

2009-09-15

Liens

http://www.christian-faure.net/2005/11/13/guide-pour-construire-une-ontologie/

http://www.agendadulibre.org/index.php

http://www.systematic-paris-region.org/fr/index.html

http://www.competitivite.gouv.fr/spip.php?article1650/24666.html

https://linuxfr.org//forums/32/21239.html

https://linuxfr.org//2006/04/28/20738.html : TOM est un langage de programmation développé par l'INRIA et qui marie le meilleur des mondes des langages fonctionnels et impératifs en ajoutant des capacités de réécriture à Java, C ou OCaml (autres backends à venir).

L'utilisation de TOM est pertinente dès qu'il s'agit de manipuler des données arborescentes (termes, arbres syntaxiques, arbres XML...), ce qui est très courant en programmation.

Soirée Qualité du logiciel du JUG

Exactement ce qu'il me faut pour changer de bain, après une semaine dans la Méditerranée (un endroit on l'on médite, d'où son nom).

Comportement intelligent à base de règles: forward

Je ne sais pas si j'ai fait un forward ... A propos j'adorerais que le lecteur de mail me dise "vous avez déjà fait suivre à ..." . Encore un exemple de comportement intelligent à base de règles.

2009-09-04

Open Innovation Summit

Présentez votre société à l’"Open Innovation Summit" et candidatez aux “Open Innovation Awards” : https://linuxfr.org//2009/08/09/25797.html

Annonce EulerGUI 1.2.1 sur LinuxFr.org

Entre autres , je pense ajouter un peu d'intelligence dans EulerGUI :

(18:04:42) jeanmarc.vanel@gmail.com/Home47DBD586: savoir quand il doit ajouter au projet certaines règles ou sous-projets.

(18:08:31) jeanmarc.vanel@gmail.com/Home47DBD586: Dommage que les stats sur téléchargements SF.net soient nazes. Je ne peux absolument pas savoir ce que le débat sur LinuxFr a apporté , mais LinuxFr rapporte plus de 100 clics sur le téléchargement .

2009-08-30

Liens RDF, OWL

http://loicmathieu.free.fr/wordpress/index.php/informatique/rdf-et-la-forme-n3/comment-page-1/#comment-3802

http://www.lespetitescases.net/definir-une-ontologie-avec-owl : plein de liens à voir

ISWC 2008 : premières impressions générales

http://www.akasig.org/2002/12/05/edition-dontologies/

La Création d’Ontologies Web Sémantique avec Protégé-2000

http://websemantique.org/

2009-08-26

Rédigé une note pour Linuxfr.org

http://www.parinux.org/content/pique-nique-du-libre-daout-2009

Rédigé une note pour Linuxfr.org : ai/deductions-nouvelles.fr.html

Parue ici, avec une discussion: https://linuxfr.org/2009/08/28/25838.html ; ce qui me vaut un "karma" de 50 sur LinuxFr :) .

Luc: Là on voit bien que votre concept bouscule un peu les habitués du développement "classique" ...

(10:40:58) jeanmarc.vanel@gmail.com: he oui , je suis pas surpris .

(10:41:54) jeanmarc.vanel@gmail.com: Mais ça va rassurer les gens d'avoir un "hook" pour appeler du code classique ...

(10:42:06) Luc : moi j'y crois, c'est à l'image du passage de l'assembleur au languages évolués

(10:42:22) jeanmarc.vanel@gmail.com: bien sûr; et on peut toujours appeler de l'assembleur.

(10:43:13) Luc : cela reste une approche objet au niveau de la description des choses, ou une extention. Pour les traitement cela change du tout au tout, d'où l'allusion au passage asm -> language évolué

(10:45:16) jeanmarc.vanel@gmail.com: oui; un "hook" pour appeler du code classique c'est prévu :

http://deductions.svn.sourceforge.net/viewvc/deductions/html/user-java.html

je cite:

But I think that the biggest challenge is to come with a way of augmenting the generated application with code in traditional languages . Of course we want to minimize and even completely eliminate procedural user code, but it will reassure many developpers, and also provides a way to integrate existing software components.

2009-08-24

Liens transformation de modèles, etc

http://scholar.google.fr/

http://www.lespetitescases.net/le-rdf-avenir-du-patrimoine-sur-le-web-y

http://www.mdday.fr/

Classification des approches de transformation de modèles

Un panorama des techniques de transformation de modèles
Pourquoi tout le monde ne fait-il pas du MDA ?
Expériences pour décrire la sémantique en ingénierie des modèles

2009-08-21

Open Source Developers Conference France

Cette conférence se tiendra au Carrefour Numérique de la Cité des Sciences, à Paris (porte de la Villette) les 2 et 3 octobre. Entrée libre et gratuite !

http://act.osdc.fr/osdc2009fr/news

Présentez votre société à l’"Open Innovation Summit" et candidatez aux “Open Innovation Awards”

Projet EulerGUI + Déductions: tâches courantes

Je mets cet am un nouveau snapshot de EulerGUI au même endroit; relancer l'inférence pour le même projet marchait mal; il ne recompile que les fichiers N3 récemment modifiés.

En ce moment je travaille sur le cas d'utilisation 2.? : L'utilisateur clique pour choisir parmi les sous-classes: il faut ajouter les champs de la sous-classe choisie. Il y a deux cas: ou c'est la sous-classe de l'objet courant, ou c'est celle d'un champ de l'objet courant.

Ensuite je m'attaque à chercher et lier à un objet existant. L'exemple typique est : chercher dans une bibliothèque un livre à emprunter. Le cas test est basé sur FOAF:

http://deductions.svn.sourceforge.net/viewvc/deductions/html/GUIgenerator.html#Running1

2009-08-17

Instrument et musique

Ce que je fais en moment, c'est fabriquer un instrument (EulerGUI), et en même temps écrire la musique qui se joue dessus (Déductions).

2009-08-07

Trucs dessin OpenOffice

Ajuster le rectangle à la taille du texte : pas moyen; il faut créer en tant que texte, puis avec "ligne / continue" créer la bordure, puis avec remplissage ajouter la couleur de fond.

Problème pour insérer une image dans un texte de façon que le texte ne se superpose pas:

2009-08-05

Liens

http://explorateursduweb.com/blog/explorateurs-du-web/olivier-auber.html

http://www.agendadulibre.org

http://linuxfr.org/

http://www.swaroopch.com/notes/Vim_fr:Table_des_Mati%C3%A8res

http://www.framasoft.net/article4231.html

Créer ses propres styles avec OpenOffice.org

2009-07-28

Sur http://alpage.inria.fr/perl/parser.pl, j'ai fait un petit essai avec une phrase .

PactePME : Société Générale - IHM innovantes

2009-07-17

Affaires

Pour l'instant je vois 3 types d'affaires pour moi :

  1. les PME innovantes, avec des applications assez simples genre site Web de gestion : http://jmvanel.free.fr/innovateurs.html
  2. les grands comptes : http://jmvanel.free.fr/dsi.html
  3. un partenariat en tant qu'apporteur de techno. , soit avec la catégorie 1. , soit avec un éditeur ou une SSII .

plus les formations .

Projet EulerGUI + Déductions: réflexions et état des lieux

Je suis plutôt le nez dans le guidon avec la "nouvelle architecture" , mais justement parce que n'est pas simple de créer une architecture radicalement nouvelle , je suis ouvert à de nouvelles idées . J'ai commencé à regarder la méthode B, elle est célèbre, mais maintenant je suis mûr pour regarder ça ...

A part ça j'ai une échéance au 24 - 7 : http://www.webont.org/owled/2009/. Au Program Committee , j'en connais 2 :). il y a plusieurs événements en même temps :) . Jamais été dans le Sud Est des USA.

Je sens que j'ai besoin de changer un peu de sujet; dès que ça sera à peu près correct, je vais passer à la génération de XML via des règles; j'ai 2 cas d'utilisation : XForms , et XBRL ( business report ).

XForms est intéressant comme inplementation via XSLTForms , mais aussi intéressant car c'est un vocabulaire de référence pour les formulaires, même si le point de vue est différent .

XForms est vu comme une plateforme Web

Un exemple XForms avec XSLTForms : http://www.agencexml.com/xsltforms/balance.xml . Autres exemples en bas de page : http://www.agencexml.com/xsltforms.htm

En fait XML est incontournable, vu le nombre de XSD qui circulent dans la nature ... Dans le cadre de ma politique "laissez venir à moi les modèles" ( et les données ) .

Même si je suis ouvert à la génération de classes à partir du modèle OWL, je n'ai pas renoncé à explorer les avantages d'une base de connaissance (KB) embarquée qui soit au coeur de l'application, et qui héberge à la fois les règles, les objets de conception (classes-propriétés) et les instances utilisateur .

On a le choix de la façon d'exécuter.

Disons que pour l'instant il n'y a pas de raisonnement sur l'application en phase de conception; c'est l'application qui raisonne en temps réel sur: 1. le modèle métier, 2. les évènements. Mais je reconnais que ça a ses limitations ... Cela dit, pour l'instant les règles métiers sont purement passées au moteur d'exécution telles quelles .

Protégé pourrait devenir la plateforme de l'"analyste métier" ... à défaut de mieux, car Protégé est quand même peu ergonomique .

Je pense que l'"appli." JMV à XXX € / jour est pas mal pour saisir des modèles ;)

C'est JMV qui est à XXX €/jour; les applis resteront OSS.

Une appli avec son modèle qui avale les autres modèles ! greedy pourrait être son nom ............

Quand j'aurai du temps pour lire un livre, je vais absorber CommonKADS , c une méthodologie pour créer des systèmes à base de connaissance. L'auteur a parlé à Amsterdam : Guus Schreiber http://www.commonkads.uva.nl/INFO/course-slides/index.html

Au sujet de l'application EulerGUI, j'aimerais trouver des gens à qui repasser le bébé ...

He mais, en parlant d'exemple d'application pour valider la chaîne et éprouver les concepts, refaire EulerGUI c'est pas mal ...

J'y pensais au début, et ça m'est un peu sorti de la tête .

Il s'agit de (re)générer l' application EulerGUI avec le générateur d'application Déduction ! Il y a plein d'action "métier" , des boutons pour chaque source N3, il faudrait formaliser des points d'extensions à la eclipse ...

Mais avant ça avoir qq'chose de propre et générique pour les proppriétés à cardinalité multiple , etc etc.

2009-07-15

Changé mon invite Gmail

Prépare une soumission pour OWLED 2009 à Washington

était

Serai-je apporteur d'affaires ? Ou m'apportera-t-on des affaires ?

2009-07-03

http://www.zenika.com/presentation_gradle.php

Moteur Drools N3

Je m'attaque à un truc que j'ai laissé de côté depuis des mois :

Duplicated triples with Drools engine

cf http://eulergui.wiki.sourceforge.net/page/edit/A+D%C3%A9duction+and+EulerGUI+Blog?token=27a713ef5247da534b80e1321b9165e4

et pour ça c'est embêtant de écrire la sortie au fil de l'eau ...

Pour ajouter un test dans le Drools généré, je dois avoir traité tous les triplets de la conséquence ; c'est pas commode avec mon API évènementielle. En gros je ne dois affirmer la conséquence que si elle n'est pas déjà vraie .

Ce sera mieux qu'actuellement, mais pas encore parfait .

2009-06-17

S'inscrit à la conférence Protégé (l'éditeur Web Sémantique - OWL) la semaine prochaine à Amsterdam.

Pas mal , un film sur Hitler détourné; il apprend que les tests logiciels agiles n'ont plus été passés depuis longtemps : http://t37.net/le-dernier-sprint-meeting-dhitler-chef-de-produits-agile.html

http://eformation2009.paris.ort.asso.fr/login/index.php

appels à projets semantic desktop ???

http://www.lemonde.fr/technologies/article/2009/06/11/quand-smartphones-et-mini-pc-ne-feront-plus-qu-un_1204819_651865.html

2009-06-08

La réflexion du jour

Que sont des lois qui sont trop compliquées? On doit les simplifier, mais aussi, pour une France (Europe aussi allez) qui marche mieux il faut un moteur de recherche conceptuel et explicatif.

QOTD de Christopĥe Muller

LINUX est à Windows ce qu'une jolie fille est à une prostituée : - La jolie fille, il faut la séduire pour obtenir ce que l'on désire. - La prostituée , il suffit de la payer, et surtout bien se protéger.

Ma première description FOAF

J'ai rapidement crée ma première description FOAF jmv.rdf grâce à foaf-a-matic de Leigh Dodds.

2009-06-02

Smila, CouchDB

http://www.eclipse.org/smila/

(12:58:07) Olivier Moïses: jette un oeil; pour moi c'est sémantique ==> Jean Marc.

Smila à première vue me fait penser à CouchDb ( cf l'article dans Linux Mag de juin ).

Nepomuk

Nepomuk = Networked Environment for Personalized, Ontology-based Management of Unified Knowledge

Grâce à Olivier Moïses, j'ai jetté un oeil sur nepomuk. J'ai bien peur que ce soit un autre projet Européen dont il ne restera rien :( , même si la vision parait intéressante.

Je regarde quand même le portail développeur:

http://dev.nepomuk.semanticdesktop.org/

2009-06-01

Débuts sur Twitter

C'est amusant , j'ai voulu chercher "artificial Intelligence owl rdf" , je me suis trompé de case , et c'est devenu mon statut :) . Et en fait il n'y a que moi comme résultat pour cette recherche .

Linux Mag de juin

J'ai acheté Linux Mag; il y a plusieurs sujets Java :

# p. 86 JCR269 : L’API de gestion d’annotations de Java 5

# p. 92 Programmation orientée aspect avec Java

Drools fait partie de JBOSS, et implémente une JSR Sun. Mais c'est pas essentiel; cette API JRS94 est assez contestée . Elle fixe l'API entre l'appli. et le moteur d'inférence, mais le language de règles reste hors de la spec.

Jadex, un framework Java pour agents

Luc n'a montré http://jadex.informatik.uni-hamburg.de/bin/view/About/Features

Les agents c'est un sujet intéréssant que je n'ai pratiquement pas exploré . C'était assez à la mode il y quelques années.

2009-05-29

Mon séminaire "décideur" ; et le prochain défi

J'ai présenté pour la première fois mon séminaire non-technique à une amie directrice commerciale dans une SSII .

En gros , c'est pas mal ...

Quelques modifs à faire .

presentations/deductions-non-technique.pdf

C'est un apéritif; la cuisine se mijote là ...

Le défi suivant sera, entre autres, de pouvoir s'adapter à des projets existants.

Nettement plus dur que de faire à partir de zéro ou d'un modèle ( c'est tout le problème que les banques ont depuis 30 ou 40 ans ).

2009-05-28

Articles de Loïc Mathieu sur OWL, N3

Découvert plusieurs articles de Loïc Mathieu sur OWL, N3, etc :

http://loicmathieu.free.fr/wordpress/index.php/informatique/rdf-et-la-forme-n3/comment-page-1/#comment-3802

2009-05-27

Inscrit: http://www.valtech.fr/fr/index/news/seminar/Table-Ronde.html Table-Ronde a gile

Monétique

http://fr.wikipedia.org/wiki/Paiement_%C3%A9lectronique

http://en.wikipedia.org/wiki/Electronic_payment

2009-05-24

Hehe , EulerGUI est bien placé sur ce créneau : https://sourceforge.net/search/?type_of_search=soft&words=rdf+uml

Conférences

Cette conférence me va comme un gant:

IWOCE2009 - Open Component Ecosystems

International Workshop

24 August 2009 - Amsterdam, The Netherlands

http://protege.stanford.edu/conference/2009/ - Juin 23-26, 2009.

GRABATS

JAZOON

http://www.lyonjug.org/bin/view/Main/

Monétique

Rien sur Sourceforge (ça se dit monetics), ni sur swoogle .

http://fr.wikipedia.org/wiki/Paiement_%C3%A9lectronique

Reconnaissance vocale en logiciel libre

J'en ai rêvé, ça existe:

open source voice recognition

http://www.speech.cs.cmu.edu/sphinx/tutorial.html

Et même je peux l'installer comme un package sur Ubuntu !

Mais pour l'utiliser , ça a l'air compliqué .

Et en Java il y a http://cmusphinx.sourceforge.net/sphinx4/

Il y a plus de choix pour les prononceurs (les Québéquois de http://granddictionaire.com/ disent : "synthèse de la parole à partir du texte" ). En Anglais , ça s'appelle "text-to-speech" .

il suffit d'installer libgnome-speech7 , et on a plusieurs implémentations possibles: festival, espeak, ...

Et pour le prononceur en Java : http://freetts.sourceforge.net/docs/index.php

2009-05-23

La domotique

Je considère la domotique comme un secteur très prometteur pour les technologies de l'IA.

Nous n'avons pas l'intention de nous limiter à Java. Un des cas d'utilisation est d'avoir un environnement de développement en Java, tout en déployant en C. C'est le cas si utilise déjà eclipse pour le C .

D'ailleurs je viens de passer 3 ans chez MathWorks pour développer une infrastructure UML et metamodèles pour des outils de développement électronique embarquée. Donc j'ai acquis une culture dans ce domaine des sytèmes électroniques.

La première idée qui vient pour ajouter de l'IA dans un système écrit en C, est CLIPS (http://fr.wikipedia.org/wiki/Clips_(langage)).

Mais il y en a d'autres, par exemple http://opencog.org/wiki/Unified_Rule_Engine. Un avantage de CLIPS est sa compatibilité avec l'environnement de développement Protégé (http://protege.stanford.edu/doc/design/clips.html). Et grâce à Protégé on a accès à toutes les ressources du Web Sémantique, par exemple avec le moteur de recherche Swoogle .

Open Source Blog - The 10 Best Open Source Rules Engines

2009-05-20

proposition de prés. au JUG Paris

Je viens de proposer une prés. au JUG Paris (Java User Group), mais c'est pris jusqu'en septembre au moins .


services conseil protection pirates informatique hackers

--> pas grand'chose ! , à part http://www.sysdream.com/


Une bonne documentation Canadienne sur le Dublin Core:

http://www.tbs-sct.gc.ca/im-gi/meta/profil/profiltb-fra.asp

Quelques articles sur des frameworks Web Python : Django, Pylons, Web2py, Repoze.bfg, Pyxer

2009-05-16

Mes offres de missions et d'embauche

Sans pour l'instant embaucher , je cherche des compétences pour des missions de développement .

Il y a beaucoup à faire.

Cela dépendra des clients, mais je souhaite commencer à investir tout de suite.

Nous cherchons des développeurs exprimentés, qui ont envie de sortir des sentiers battus, pour révolutionner l'informatique. Nous développons les infrastructures pour remplacer ou générer le code écrit à la main par des outils intelligents.

J'ai besoin d'aide pour la génération d'application pour ces plateformes (dans l'ordre de priorité) : Java Swing, PHP, Java Web( GWT, Ajax, Wicket) , eclipse (eclipse e4, SWT, plugins), firefox, OpenOffice, Mono(.Net).

J'ai besoin de compérences générales Java pour développer EulerGUI (Swing, UML, Maven, JUnit, Web Start, intégration outils variés).

J'ai besoin de compérences IA (Intelligence Artificielles) pour faire de la programmation à base de règles, et développer des ontologies.

Je prévois des contrats au forfait de développement d'applications, pour lesquelles il faudra développer des modèles, règles et ontologies, en s'appuyant sur le framework existant, en liaison avec l'équipe de développement du framework.

Ca peut vous intéresser, ou alors vous connaissez des gens que ça peut intéresser.

Je suis aussi à la recherche de low hanging fruits ( comme on dit chez MW ;) ) en ce qui concerne des idées d'applications qui n'existent pas, qui peuvent être utiles à un grand nombre, et si possible générer des affaires. Dans ce domaine, j'ai déjà EulerGUI (pas encore un franc succés mais quand la masse critique sera là ça y sera ).

J'ai rassemblé ici des idées de logiciels :

"Classeur de notes" et "IHM collaboratives" me plaisent particulièrement , mais il doit y voir des tas d'applications métiers possibles.

Grammaire UML Textuel avec Parser4J

Pour activer le log décommenter la ligne

log4j.logger.net.sf.parser4j.parser.service.Parser=debug

Dans eulergui/src/main/resources/log4j.properties

Dans les source de Parser4J, les tests sont là:

src-test/net/sf/parser4j/grammarfile/

src-test/net/sf/parser4j/parser/entity/

2009-05-15

Conception Coopérative d'Ontologies Pré-Consensuelles, Urbanisme

Alerte Google Web : ontology software development

Conception Coopérative d'Ontologies Pré-Consensuelles : Application au domaine de l'Urbanisme [PDF]

Abdelkader Keita [LIRIS] - 6/2007

2009-05-14

eXist, EulerGUI, Euler

Je n'ai malheureusement pas le temps de suivre ce que se passe avec

eXist , mais j'ai l'impression que ça va bien :

https://sourceforge.net/project/stats/rank_history.php?group_id=17691&ugn=exist

même qu'une release s'appelle Rennes :) .

A comparer avec mes scores confidentiels :(

https://sourceforge.net/project/stats/rank_history.php?group_id=237733&ugn=eulergui

A noter qu'Euler ne fait guère mieux , malgrè son ancienneté:

https://sourceforge.net/project/stats/rank_history.php?group_id=77046&ugn=eulersharp

2009-05-13

5 mn pour convainvre (pacte PME)

Cet après-midi je vais à 5 mn pour convainvre.

Mon interlocuteur: un Directeur d'une PME qui fait des développements logiciels qui sont au coeur de son affaire, et qu'il ne peut pas sous-traiter. Vos informaticiens sont dévoués et contents, mais: - avec les technologies courantes, il est déjà difficile de livrer des fonctionalités complexes et innovantes - en fait les informaticiens ont la tête littéralement prise par des myriades de détails, toujours changeants, qui leur "prennent la tête". - joint au fait que qu'il faut sortir en temps et en heure, que des bugs et des demandes nouvelles arrivent inopinément, - le résultat est qu'on a quelque chose qui marche, certes, mais qui est difficile à faire évoluer: ajouter des fonctionalités, changer de plateforme, fusionner ou éclater l'application, communiquer avec d'autres application, suivre les tendances et standards, ... de plus, il y a une difficulté à communiquer entre experts du métier et infomaticiens

2009-05-12

présentation Grid du JUG

Ce soir je vais à la présentation Grid du JUG.

http://www.parisjug.org/xwiki/bin/view/Meeting/20090512

Et cet am , j'ai rdv avec un bon client qui n'est pas très exigeant :

le pole emploi ;)

J'ai fait l'ouverture de fichiers depuis le Web dans EulerGUI : vous pouvez ouvrir directement la démo.

http://deductions.svn.sourceforge.net/viewvc/deductions/n3/test_person.n3p

dans File / Open Project from URL

Pas encore en argument de la ligne de commande , ni glisser-déposer .

Récupérer des fichiers Windows sous Ubuntu

Hier , j'ai fait la manip. de démarrer l'ordi. de Marie sous Ubuntu 8.04; elle m'a demander de récupérer ses fichiers.

Ca a parfaitement marché; il faut taper sur Escape ou F1 au démarrage (ça dépend des machines).

Ensuite Ubuntu te demande si tu veux installer ou essayer.

Après tu ouvres Système / administration / Editeur de partitions

et là tu vois le nom Linux de tes partitions ( correspondant à C: D: ).

Pour moi c'était /dev/sda2 .

Pour voir sous Linux ces fichiers Windoze, il faut faire un montage (je ne comprends pas pourquoi Ubuntu ne le fait pas automatiquement).

D'abord créer un répertoire vide:

sudo mkdir /media/windows

Ensuite "monter" la partition Windows sur ce répertoire :

sudo mount /dev/sda2 /media/windows

Et après tu vois tous les fichiers :

cd /media/windows ; ls -l

2009-05-11

foaf spec

Absorber des données ayant un XSD

Je suis dans une vraie course contre le temps; avoir la masse critique c'est difficile !

Mais à terme je voudrais pouvoir absorber des données ayant un XSD , tout comme je peux absorber du UML, eCore, RDFS ....

En fait je me dis qu'il y a là beaucoup plus de contenu disponible qu'avec UML ...

c'est à dire ?

He bien si on fait le total des octets de XML ayant un XSD disponible sur le Net, et des octets de mêmes existant dans les entreprises, on arrive à un total beaucoup plus grand que le total des des octets de données répondant à modèle UML ou eCore.

Les données répondant à un modèle UML ou eCore ne sont pas forcément en XMI ... Il y a JSON .

Ces arguments sont une bonne chose, car ça me motive pour intégrer Gloze.

2009-05-08

apprentissage informatique : à voir


je refais l'archi. IHM + moteur de règles .

En ce moment je fais un diag. de séquence sur papier , c'est instructif ...

Hier j'ai mis à jour http://deductions.svn.sourceforge.net/viewvc/deductions/html/runtime-architecture.html

2009-05-04

Annonces de EulerGUI

Annonce de EulerGUI sur Drools user

Annonce de EulerGUI sur eclipse EMF et MDT

http://www.eclipse.org/newsportal/thread.php?group=eclipse.modeling.mdt

http://www.eclipse.org/newsportal/thread.php?group=eclipse.tools.emf

If you want to export your UML or eCore models in the Semantic Web World, there is a tool.

?????????????????????

Annonce de EulerGUI sur public-cwm-talk

http://lists.w3.org/Archives/Public/public-cwm-talk/2009AprJun/

I am pleased to announce version EulerGUI 1.1, a development environment for

Semantic Web technologies, written in Java, under LGPL licence .

Out of the box, you can run :

- the Drools inference engine, but with very few of the CWM builtins

- CWM if you have installed it ;)

In addition, if you install the Yap Prolog engine, you have the latest Euler

engine, as explained in the User Manual. Euler has numerous ( and unlisted

:( ) extensions compared to CWM. For example a catch-all query is possible:

{ ?S ?P ?O } => { ?S ?P ?O } .

Euler has most of the CWM builtins, plus its own builtins:

http://eulersharp.svn.sourceforge.net/viewvc/eulersharp/trunk/2003/03swap/log-rules.n3

etc ...

Annonce de EulerGUI sur LinkedIn group " Semantic Web"

I am pleased to announce EulerGUI 1.1 , a development environment for Semantic Web technologies , written in Java , under LGPL licence .

The Change Log is :

- reading and translating to N3 EMF eCore files

- reading and translating to N3 UML XMI files

- project pipeline and project import

- corrections for Vista and Mac

- N3 parser in Java based on parser4j, 4 times quicker, thanks to Luc Peuvrier;

now replaces the old ad-hoc Java parser

- implemented e:findall extension in Drools engine

- Drools engine : implement integrity_constraint

- add to documentation : howto_debug_n3_rules.html

- Add class DroolsRunExportedProject , with a main()

to load and run facts and rules independently from EulerGUI,

after File / "Export as Drools".

- Generated Swing application:

- use Drools engine at runtime

- able to make a round-trip with user N3 file and see the modifications

in the GUI after re-opening the file.

- possibility to fire rules creating exception at runtime

Download from

https://sourceforge.net/projects/eulergui

User Manual here:

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html

Preceding annonce was here:

http://www.linkedin.com/groupAnswers?viewQuestionAndAnswers=&gid=49970&discussionID=1664543&sik=1241442064001&split_page=1&goback=.ana_49970_1241442064001_3_2&report.success=62WUlrnddR6bgwSqXhj6sMCTLzs-Mtpi3fLJWbNsWtuooxKwgTL8r5xsvgkbozKwEkXBakadko

Annonce de EulerGUI 1.0 sur fr.comp.lang.java

J'ai le plaisir d'annoncer l'environnement de développement EulerGUI 1.1 pour le Web Sémantique, sous licence LGPL. L'annonce précédente était le 24 février.

Voici les nouveautés:

- lecture et traduction en N3 de fichiers eCore EMF

- lecture et traduction en N3 de fichiers UML XMI

- pipeline de projets et importation de projets

- corrections pour Vista et Mac

- l'analyseur N3 en Java basé sur parser4j est 4 fois plus rapide, grâce à Luc Peuvrier ; il remplace maintenant le vieil analyseur ad hoc en Java

- moteur Drools: contraintes d'intégrité

- ajouté à la doc. : howto_debug_n3_rules.html

- Ajouté la classe DroolsRunExportedProject, avec un main() pour exécuter faits et règles indépendamment d'EulerGUI, après clic sur File / "Export as Drools".

- Application Swing générée :

- moteur Drools à l'exécution en temps réel pour créer les formulaires

- capable faire un aller-retour avec le dossier de l'utilisateur N3 et voir

les modifications dans le GUI après ré-ouverture du dossier.

- possibilité de règles envoyant des exceptions à l'exécution

Téléchargement de Euler GUI

https://sourceforge.net/projects/eulergui

Manuel ici :

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html

--

Jean-Marc Vanel

Conseil, services, formation.

Programmation à base de règles, Web Sémantique.

2009-05-03

http://www.pactepme.org/place-de-marche

Je m'inscris à "5 minutes pour convaincre - 13/05" : http://www.pactepme.org/evenement/785/coaching

trouvé ce joli site french sur les expressions régulières : http://www.expreg.com/ancrages.php

l-internet-des-objets-n-est-pas-celui-que-vous-croyez

la-bibliotheque-numerique-mondiale-en-ligne-depuis-le-21-avril-reduit-la-fracture-culturelle-entre-nord-et-sud

2009-05-01

Flash-et-Java-pour-Ubuntu 9.04 64bits

http://www.ubuntulinux.fr/index.php?post/2009/04/14/Flash-et-Java-pour-Ubuntu-64bits

Le pouvoir de l'annotation avec RDF

Contrairement aux technologies classiques (OO, SQL, C/C++/Java), avec RDF il est possible d'ajouter de l'information à tout ce qui a un URI de l'extérieur, c'est à dire sans modifier le moins du monde la chose annotée.

Appliqué à des objets logiciels, c'est plus général que les points d'insertion d'eclipse, et ça s'apparente à AOP.

Mon Business

J'explore plusieurs pistes business :

  1. conseil , coaching et audit sur les projets de développement logiciels (bonnes pratiques, processus, architecture)
  2. conseil , formation et développements dans les domaines des moteurs de règles et du Web Sémantique (avec l'accent sur mon outil EulerGUI et les règles Déductions)
  3. réalisation d'applications au forfait ou en assistance, soit IHM Java Swing, soit Web (Java Wicket ou PHP ) ; cela permettra en même temps de mettre au point mes outils;
  4. ingéniérie de la connaissance : création de modèles et ontologies sur mesure, par exemple pour des projets d'intégration d'applications, ou pour des applications à base de règles

2009-04-29

Là il y a 2 outils Java --> RDF qui peuvent être intéressants :

http://esw.w3.org/topic/ConverterToRdf

(il faut que EulerGUI y soit dans la catégorie UML ).

2009-04-28

Livraison EulerGUI 1.1

Pour l'instant, j'annonce les livraisons sur :

Par ailleurs, je suis en contact avec les dirigeants de programmez.com

2009-04-26

cf article "Saisie efficace d'un modèle".

Les modèles métiers de ma formation UML

J'ai mis en ligne mes photos; hélas elles ne sont pas très bonnes:

http://jmvanel.free.fr/uml/images/index.html

Je les ai écrites aussi en UML simplifié (textuel):

http://deductions.svn.sourceforge.net/viewvc/deductions/n3/models/

2009-04-24

Pacte PME - rencontre Mécatronique dans les transports

Valorisant les modèles existants, UML, Web Sémantique ou autres, nous développons des outils Open Source générant des formulaires et des application complètes.

Notre environnement EulerGUI permet de mettre au point des règles avec plusieurs moteurs d'inférences (Drools, Prolog, CWM).

Retour dans le Nord

Je viens de rentrer d'un endroit ensoleillé mais sans Internet ...

Pas facile de travailler sans Internet ni grand écran ...

Mais c l'occasion de réfléchir plus globalement. En particulier ma démarche suppose qu'on a déjà des modèles ... ce qui en fait doit être peu fréquent . Il faut donc insister sur les bénéfices de la modélisation, quelle qu'elle soit. Et sur les services que je peux offrir dans ce domaine.

Il faut également insister sur RDF et les technologies reliées, qui sont le véritable espéranto de l'informatique, beaucoup plus que XML.

Il y a 3 volets pour le modèle :

Saisie efficace d'un modèle

Ca fait longtemps que je trouve insupportable d'entrer un modèle dans un éditeur de type UML, ou Protégé OWL.

Ca prend 4 fois plus de temps qu'en N3 ou même en Java dans eclipse, sans parler des éditeurs de type property sheet comme EMF.
 
Cependant avoir un diagramme est une valeur ajoutée à un modèle.

D'un autre côté, entrer un modèle en mode texte comme ici en N3 :


  :id1796397632 a uml:Class
      ; uml:name "Employee" 
      ; uml:ownedElement :id1770446243 .
   :id1770446243 a uml:Property
      ; uml:name "name"
      ; uml:type uml:String .

est assez embêtant parce qu'on est dans un contexte où on peut entrer n'importe quoi , pas seulement des classes et des propriétés. Ce serait pareil en OWL ou en eCore.

Mon idée est de prendre le meilleur de N3 et d'un UML simplifié, dessiné en texte, comme celui que j'utilise dans les mails:

# pour dire qu'on est dans le namespace UML 2:
@prefix : <http://www.eclipse.org/uml2/< wbr>2.1.0/UML#> .

Employee--------------<>Contract-------Employer
name : String
birth : Date
        -----------DriverLicense
        ---------- HealthInsurance



Notes

Il me semble que ça peut rendre service à ceux qui veulent créer rapidement des modèles et des diagrammes.

2009-04-10

Mes séminaires gratuits

Mis en ligne le résumé de mes deux séminaires gratuits, décideurs et informaticiens .

Après avoir regardé Drupal et Jooomla

La première impression, hélas, est que j'aurais plus vite fait de générer du PHP de base que de comprendre quoi générer avec un de ces frameworks.

Y-at-il l'équivalent de Hibernate en PHP ?

Affaires : partenariat avec prestataires Web

J'ai réfléchi à mes offres de services, et d'ailleurs la formation UML m'a donné à penser.

Et je me suis dit que mes technologies actuellement en développement pourraient intéresser des prestataires en sites Web . En effet, je pourrai bientôt générer automatiquement près de 100% de la partie gestion de données d'un site Web en PHP , grâce au framework "Déductions" . Ma prestation consisterait en formation et prise en main du framework (100% open source et basé sur des standards) . Il pourrait aussi y avoir le développement de fonctionalité spécifiques dans le framework.

Dans le cadre du projet "Déductions" , nous travaillons à faciliter la tâche des concepteurs jusqu'à demander zéro compétence informatique. Par contre, une compétence en modélisation restera nécessaire. Cependant des modélisations génériques par métiers seront disponibles, aussi en Open Source. Et bien sûr, nous pourrons effectuer la modélisation à partir du cahier des charges ou de d'une spécification.

Cher lecteur, si dans le cadre de vos fonctions, vous connaissez des prestataires en sites Web qui pourraient être intéressés, envoyez les moi !

Reflexions le lendemain

En fait les prestataires en sites Web ont un framework qu'ils connaissent à fond, Drupal, Joomla ou autre . Et ils vont pas changer de techno.

En fait c'est toute une chaîne qu'il faut vendre: 1. créer des modèles ( OWL ou UML ) 2. écrire des règles métier 3. valider l'appli. 4. déployer.

AAAI 2008

Assez excitant , le programme de AAAI 2008 :

http://www.aaai.org/Conferences/AAAI/2008/aaai08program.pdf

Je vais me payer les proceedings.

J'ai remarqué

SPARQL

http://www.lespetitescases.net/sparql-maillon-essentiel-web-of-data

http://www.lespetitescases.net/ou-s-amuser-avec-sparql

http://jena.sourceforge.net/ARQ/Tutorial/

2009-04-08

Questionnaire sur les pratiques de développement logiciel

J'ai reçu ce matin un appel d'une société qui fait des développements scientifiques et qui a besoin de "petites mains", expérimentées quand même, pour développer . Mais ils ne veulent pas de conseils. A la suite de ça , j'ai ajouté sur le site un "Questionnaire sur les pratiques de développement logiciel" pour aider les clients à évaluer leurs pratiques.

2009-04-07

J'ai conscience que beaucoup d'informaticiens reçoivent mal mon message, car il s'agit d'automatiser une partie de leur travail, et de plus avec des techniques qui ne sont pas dans les habitudes.

Page Update Checker 0.3.1

https://addons.mozilla.org/fr/firefox/addon/920

JUG Paris

JUG Paris : Soirée Scrum (10/04/2009)

http://www.parisjug.org/xwiki/bin/view/Meeting/20090414

Une bonne prés. sur le Web Sémantique par Alexandre Bertails :

http://www.parisjug.org/xwiki/bin/download/Meeting/20090310/parisJUGSemWeb20090310.pdf

(voir la liste d'outils à la page 34)

Il faudrait intégrer un requêteur SPARQL dans EulerGUI, peut-être en réutilisant la syntaxe N3. En tous cas les sources comme DBPedia sont incontournables.

Essai de ACE par l'interface Web REST

Qu'est-ce que vous dites de ça :

http://attempto.ifi.uzh.ch/ws/ape/apews.perl?text=Every+man+is+a+human.&solo=owlrdf

C'est quand même grandiose de pouvoir créer une ontologie en Anglais :)

Le parser REST n'admet pas les adjectifs, mais autrement il comprend bien :

http://attempto.ifi.uzh.ch/ws/ape/apews.perl?text=A%20customer%20inserts%20two%20cards.&solo=owlrdf

Séminaire "décideurs" sur projet Déductions

Résumé - Présentation (PDF) (aussi en OpenOffice)

Séminaire "informaticiens" : Développement logiciel et ontologies

Résumé

2009-04-06

Le Jeu de la Vie

J'ai lu dans pour la Science d'avril l'article de J.P. Delahaye sur le fameux Jeu de la Vie de Conway. L'algorithme HashLife utilisé dans le moteur de jeu golly pour calculer les générations parait intéressant à étudier. Il est capable d'exploiter les régularités pour économiser aussi bien le temps CPU que la mémoire. Les concepts sous-jacents peuvent être utiles pour des bases de données et des moteurs d'inférences.

Je m'inscris sur Viadeo

Jean-Marc Vanel - Conseil, services, formation, programmation à base de règles, Web Sémantique

Ce blog est libellé ainsi sur Viadeo:

Mon activité dans le Logiciel Libre, la formation, le conseil; l'Intelligence Artificielle, le Web Sémantique, Drools, languages N3 OWL, Java, etc ...

2009-03-25

Je débugge mes règles UML-->OWL, et j'écris le résumé d'un séminaire décideurs .

Ecrit aussi mes trucs pour mettre au point des règles en N3 .

http://websemantique.org/PagePrincipale

Programme de ma formation UML

* Méthodologie Objet : UML 21h

* Modélisation UML

* Méthode (UP)

* Architecture

* Expression du besoin technique Conception Préliminaire

* Conception détaillée

* Conception détaillée de la partie Présentation (IHM)

* Conception détaillée de la partie "Métier"

* Conception détaillée de la partie "Accès aux données"

* Génération de code et reverse-engineering

* Diagramme de classes

* Diagramme de collaboration/séquence

* Diagramme d’états transition

* Diagramme de composants

* Diagramme de déploiement

2009-03-19

Formation UML pour "web consultant chef de projet"

Liens divers: web sémantique

http://semantics.univ-paris1.fr/

OWL en Français

RDF en Français

Un sympathique site en Français:

http://websemantique.org/

Il faudrait que je m'inscrive là :

http://websemantique.org/TechniquesEtOutilsPourLeDeveloppeur

Aussi : http://planete.websemantique.org/

2009-03-17

Plan affaires

Tout comme je maintiens un plan de développement pour Déductions, je devrais avoir un Plan "affaires".

Principes IHM (à propos de l'agenda Google)

Ce matin j'ai ajouté plein d'entrées dans mon agenda Google pour les Séminaires LIAFA. D'abord un manque d'intelligence criant: il fait un rappel par défaut 10mn avant , alors qu'il sait que je suis à Versailles, à une bonne heure de Paris 13. On est loin de big brother pour l'instant! Bon, ensuite j'ai voulu régler le délai de rappel par défaut: pas moyen !

Voir : Intelligence manquante dans une IHM, Exemple de comportement (in)intelligent, General GUI principles

J'ai toujours pensé que les comportements sur évènements devaient être configurables.

En fait cela revient à atténuer, ou effacer, la frontière entre configuration et programmation.

De toute façon une "programmation" déclarative ressemble à de la configuration.

Mais il faut que la configuration comme la programmation soient plus intuitives, plus intelligentes, avec des capacités de recherche.

Au sujet des capacités de recherche, une bonne fonctionalité est le petit moteur de recherche sur les réglages dans eclipse. Par contre sur le code source c'est trop limité; cela demanderait tout un article; par exemple trouver les classes C1 qui produisent une classe C2.

Un point important, si l'on veut que l'utilisateur final modifie les comportements, est qu'il faut des gardes -fous. L'utilisateur ne doit pas pouvoir modifier les "fondamentaux" de l'application. C'est à dire qu'il ne doit pas créer des contradictions avec certaines contraintes embarquées dans l'application. Par exemple un bouton marqué "enregistrer dans l'agenda" ne peut pas ne pas enregistrer.

Ceci étant, il y a deux moyens: soit on re-vérifie les contraintes à l'exécution (coûteux), soit on calcule a priori la contradiction entre le nouveau comportement et une des contraintes: plus difficile, mais beaucoup plus satisfaisant. Là on a besoin d'un moteur d'inférence capable de raisonner sur un programme. Mais on sait que trouver la contradiction peut être indécidable.

Principes IHM et ontologies

Tout ce savoir de base sur le temps, l'espace, les personnes ... et les rendez-vous, demande un effort important pour être formalisé d'une façon réutilisable dans plusieurs contextes. Les notions en question sont par exemple: une personne ne peut pas être en plusieurs endroits, un rendez-vous est associé à un endroit, il faut un certain temps pour se déplacer, etc.

Il existe plusieurs ontologies de haut niveau (SUMO, MILO, Dolce, BFO, OpenCyc, ... ) qui ont des points de vue différents sur le monde, et qui sont à un niveau d'abstraction très élevé (voir http://jmvanel.free.fr/computer-notes_2008.html#Upper ). Il faut les réutiliser à bon escient.

A terme la valeur ajoutée en informatique ne sera plus dans les lignes de code, mais dans la connaissance formelle en amont des lignes de codes. Encore faut-il avoir des moyens fiables de transformer la connaissance en logiciel opérationnel. Et c'est ce à quoi nous nous employons. Cela passera entre autres par l'écriture d'ontologie et des règles sur les objects logiciels eux-mêmes. A ma connaissance, cela n'a jamais été fait, sinon à des fins purement descriptives.

Séminaires LIAFA

175 rue du Chevaleret, 75013 Paris

Voir plus bas ma liste de laboratoires de recherche en IA .

2009-03-15

Stagiaires pour les projets Déductions et EulerGUI

Contexte: nous avons un noyau d'ontologies et de règles en logique Notation 3 (basé sur RDF), et de moteurs d'inférence, offrant la génération de formulaires et d'applications à partir d'un modèle métier et d'un minimum de spécification annexes.

Quel serait le profil de vos stagiaires ?

Quel type de tâches ?

Il y a de nombreux thèmes de stages :

Donc il y a place à la fois pour des profils d'informaticiens classiques, et pour des stagiaires avec des connaissance en programmation logique .

Mes projets Déductions et EulerGUI

Je dois passer à la vitesse supérieure avec Déductions & Cie ; la priorité n'est plus de montrer à tout prix des fonctionalités; il faut soigner l'infrastructure : restructurer , ajouter plein de tests , créer des outils et des passerelles annexes : POJO, UML, RDFS ;

et pour cela il faut d'abord avoir des tuyaux (pipes) pour enchaîner les traitements en logique N3 .

Bien sûr ces tuyaux seront spécifiés dans un petit langage N3 .

C'est l'occasion de commencer à occuper un vaste territoire, en l'occurence créer des ontologies pour les concepts de l'ingéniérie logicielle.

Par exemple personne ne s'est encore préoccupé de standardiser un modèle et un format de fichier pour un IDE du genre de EulerGUI, ou Protégé, etc ...

Je vais lancer un dialogue là-dessus.

Pas mal pour se faire connaitre; et pas très compliqué ...

(ça porte conseil, une petite course à pied )

Dans la rubrique nettoyage , il faudra remplacer le maximum du comportement des formulaires par de la logique N3 .

J'ai besoin urgent de stagiaires , qu'on se le dise !

2009-03-05

Exemple de comportement (in)intelligent - subclipse

Il manquait une classe ... C'est moi qui ai fait l'erreur . J'ai oublié de versionner 2 nouvelles classes.

D'ailleurs un environnement de dev. un peu + intelligent ne laisserait pas passer un commit avec une classe C1 qui dépend d'une classe C2 qui n'est pas versionnée .

Pas besoin d'Einstein pour faire ce genre de raisonnement .

Dès que eclipse aura un service de notification pour les actions utilisateur , beaucoup de choses seront possibles !

2009-02-09

Discussion avec Luc sur architecture EulerGUI

Pour l'instant je suis moi aussi dans de la mise au point ...

Les dernières correction sur le moteur Drools a la mano ...

avant d'appliquer des règles sur les règles :) ....

(18:31:43) Luc : C'est cela le problème de bootstrap ? comme le generateur de données de parsing qui à un parser qui utilise des données de parsing qui ne peuvent être généré par le générateur tant qu'elles n'existe pas.

C'est analogue .

Pour traduire des règles N3 en règles Drools, je pense avoir une implémentation de base en N3 , qui va sortir un résultat dans un vocabulaire N3 qui reproduit fidèlement le langage Drools, puis la traduction finale en chaîne de caracractère sera sans intelligence .

Et donc j'utiliserai pour commencer un moteur N3 existant ...

La démarche sera la même pour traduire N3 en Java, etc.

Sauf que là c + simple, car on ne considère là que des faits ( c à d. de simples triplets ).

J'ai déjà expérimenté avec des règles qui sont des requêtes sur la base de règles :) .

En fait mon processeur de bootstrap ce sera Euler, car il est le seul à pouvoir traiter des règles sur les règles .

J'ai pensé à tout ça dans le train ce matin :) ...

Je crois que ça sera + clair quand j'aurai quelques exemples;

(18:44:23) Luc : Je vois qu'il s'agit de tout traiter en IA au plus vite ? Et le parsing de N3 dans tous ça ?

en tous cas c'est la même démarche que pour générer des IHM, on crée des objets et on les remplit de proche en proche .

parsing de N3 dans tous ça ? Il en faut , bien sûr .

Dans l''avenir comme maintenant le traducteur Drools s'appuiera sur un parseur en Java,

maintenant c'est Euler, avec le nouveau traducteur ce sera parser4j , bien sûr .

(18:52:18) Luc : j'avais cru comprendre que la traduction de n3 en drools allait être fait à l'aide d'un moteur d'inférence !

oui

c ce que disais à l'instant

(18:54:51) Luc : Où intervient la parseur de N3 en java ?

Dans l'implémentation finale le moteur Drools va prendre en entrée des objets Java, soit directement issus de parser4j, soit qui auront été préparés pour optimiser .

Pour être + concret : soit des règles utilisateur r1.n3 , disons des règles pour des réductions commerciales .

Le flux serait :

r1.n3 ===> graphe d'objets N3Model ==règles_N3_vers_Drools==> règles Drools r1.drl

puis:

objets applicatifs app.n3 ===r1.drl==> résultat (comportement, validation, présentation, EAI)

Séminaire Paris 7 - Automated Reasoning for Reliable Software

Séminaire ce matin à Paris 7 (Diderot)

* Viktor Kuncak (EPFL, Lausanne) * Automated Reasoning for Reliable Software

2009-02-06

Les favoris de Swoop sont ici:

./src/org/mindswap/swoop/favorites.txt

Séminaire à Orsay - LRI

Exposé de HAMDI Fayçal sur un outil d'alignement de taxonomies.

J''ai découvert Falcon, un outil dont je ne peux faire mieux que citer le but :

Falcon is an infrastructure for Semantic Web applications, which aims at providing fundamental technology for finding, aligning and learning ontologies, and ultimately for capturing knowledge from the Web via an ontology-driven approaches.

Signe des temps, c'est la première fois que je télécharge un logiciel Chinois (SouthEast University). Pour tester , j''ai pris deux ontologies:

FOAF: http://xmlns.com/foaf/0.1/

http://www.mindswap.org/ontologies/debugging/university.owl

Pendant une demi-heure, il ne se passe rien avec l'IHM ! :( Il va falloir lire la doc. Falcon.

Le séminaire se trouvait dans les locaux du Microsoft Research-INRIA Joint Centre ( évènements Microsoft Research-INRIA ). Et en plus j'ai rencontré Guillaume Rousse que je connais depuis mes travaux sur les bases biologiques.

2009-02-05

Moteur Drools pour la logique N3

Hier c'est une journée peu fructueuse ! J'ai bricolé sur la traduction N3 --> Drools programmé a la mano, et il y a une explosion combinatoire de cas : triplet dans l'antécédent ou dans le conséquent, liste ou pas, liste dans le sujet ou l'objet, variable déjà définie ou pas, function builtin ou pas ... C'est là que le Prolog est commode !

Ou un autre moteur de règle ... Ca se mord un peu la queue !

Bien sûr dès le départ je savais que c'est une preuve de concept ...

Il va falloir arrêter les frais sur cette implémentation du traducteur N3-->Drools ... Et faire quelque de propre, dans l'état de l'art des compilateurs, et même mieux en programmation logique ou à base de règles.

Heureusement je ne suis pas loin de couvrir de quoi faire des démos convaincantes, mais ce sont les builtin qui gachent tout !

Il y en a beaucoup ! Si vous regardez dans euler.yap "builtins" , en 200+ lignes c'est fait ! C'est concis comme un rêve !

Pour information les "builtins" ce sont des fonction qui sont prédéfinies et implémentées en interne par un moteur de logique N3 : mathématiques, logique, chaînes, ....

En fait j'ai un problème de "bootstrap" à ce stade; j'ai besoin d'un moteur de règles pour en faire un ...

2009-02-05

Drools et N3 (Notation 3)

L'avantage de Drools tel quel est qu'il absorbe bien les Pojo.

Cependant le langage Drools est un langage mal conçu ... Je traduis un langage plus agréable, N3, en Drools ...

Et en plus on peut récupérer des ontologies existantes (et bientôt aussi EMF, UML, Pojo ). J'ai déjà un traducteur depuis SQL, RDBToOnto, de chez Thales .

2009-02-04

A voir : http://introspector.sourceforge.net/

Solutions Linux, agenda et glisser-déposer

Je me suis inscrit à Solutions Linux le 31 mars. Ce qui est intéressant, c'est que j'ai pu télécharger le fichier ICS pour cet évènement et l'importer dans mon calendrier Google. Mais ce qui ne marche pas encore (ou peut-être avec G. Chrome) c'est de glisser-déposer l'icone depuis la fenêtre Solutions Linux vers le calendrier.

C'est un exemple de ce que j'appelle la compréhension sans protocole (ou compréhension a priori).

2009-01-30

PMD et DU-anomaly

This perfectly frequent loop triggers a "DU-anomaly" diagnostoc by PMD !?

int i;
while( (i = is.read()) != -1 ) {
result.write(i);
}

Euler GUI

Regression: Si on ouvre à l'avance la fenêtre JavaScript on a ceci:

java.lang.OutOfMemoryError: Java heap space

2009-01-27

Conférence TAO

C'était une excellence conférence ! Hier je suis allé à cette Conférence TAO :

Séminaire Mondeca "Vers une Architecture Orientée Services sémantique" .

TAO, Gate, RDBToOnto, etc, sont des outils prometteurs.

J'ai découvert aussi videolectures, le site de videos scientifiques.

Test Datao

javaws ontopoint.jnlp

2009-01-24

Projet Déductions - plan

Je saisis l'occasion d'écrire le plan de développement de Déductions comme un document N3.

Cette nuit j'ai eu l'idée d'une fonctionalité chouette pour EulerGUI: glisser-déposer une URL ou fichier pour l'ajouter au projet .

C'est fait !

Comparaison entre moteur Drools et logique N3

Une petite discussion avec Luc Peuvrier, l'auteur (entre autres ) de parser4j .

11:46:09) Luc : je me demande si la génération de code assembleur ( ou pseudo code ) à partir de l'AST peut être posé comme un problème d'IA.

(11:49:15) jeanmarc.vanel@gmail.com/Home58A22E34: En gros oui . C'est plus long à développer, et les performances sont moins bonnes mais c'est plus robuste et réutilisable. Il y a 2 techniques différentes :

  1. le processeur Euler, basé sur une forme de logique, en gros la logique des prédicats, alias logique du 1er ordre.
  2. le processeur Drools, qui est un moteur dit "chaînage avant" , c à d. qui enchaine les si ... alors jusqu'à ce qu'il n'y ait plus rien à déduire.

2. est plus performant, mais un peu moins propre.

(11:55:18) Luc : moins propre sans quel sens ?

(11:55:55) jeanmarc.vanel@gmail.com/Home58A22E34: Drools impose de gérer des priorités entre règles, comme le fait XSLT par exemple. Ca peut devenir difficile à gérer. Alors qu'avec 1, toutes les conclusions possibles sont vraies, on n'a pas besoin de priorités pour choisir une seule conclusion pour un antécédent donné. Aussi en logique pure, il est possible d'avoir un ou logique dans la conclusion (je ne m'en sers pas pour l'instant). Par contre avec Drools au peut avoir des règles qui dépassent la logique du 1er ordre, par exemple dire "pour toutes les propriétés d'un objet, faire ceci" . Par exemple actuellement j'ai du code Java ad hoc qui génére du JavaScript à partir de triplets RDF sortant du moteur Euler. Ce serait malcommode, voire impossible à faire avec la logique N3. Par contre avec Drools ça convient bien; je pense réécrire ça en Drools. Ce sera beaucoup plus propre qu'en Java, puisque l'enchaînement des règles est pris en charge par le moteur, pas par le programmeur. C'est déclaratif !

Pour syntétiser : Java < Drools < logique N3

< signifie "plus propre que"

Pour être concret, voici le résultat d'Euler en N3, que je transforme ensuite en JavaScript :

ns2:myWindow a :javax_swing_JFrame. ns2:myWindow a :javax_swing_JFrame.
ns2:myWindow a :javax_swing_JFrame. ns2:myWindow :title """generated by Euler GUI""".
ns2:myWindow a :javax_swing_JFrame. ns2:myWindow :visible true.
ns2:myWindow a :javax_swing_JFrame. ns2:myWindow javam:setSize (300 100).
ns2:myWindow a :javax_swing_JFrame. ns2:myWindow a :java_awt_Container.
ns2:myWindow a :java_awt_Container. ns2:myWindow a :javax_swing_JFrame.
ns2:myWindow a :java_awt_Container. ns2:myWindow :title """generated by Euler GUI""".
ns2:myWindow a :java_awt_Container. ns2:myWindow :visible true.
ns2:myWindow a :java_awt_Container. ns2:myWindow javam:setSize (300 100).

Le JavaScript correspondant est:

myWindow = new javax.swing.JFrame(); ;
myWindow.title = "generated by Euler GUI" ;
myWindow.visible = true ;
myWindow.setSize( 300, 100 ) ;

Il me semble que votre problème de générer de l'assembleur à partir de l'AST (Abstract Syntax Tree) est du même genre. Donc vous pourriez faire ça avec Drools. Un truc bien avec Drools est que c'est très utilisé, c'est mûr. Et il y a du répondant sur le chat IRC ! Il y a des bons didactitiels pour Drools ... Et un plugin eclipse, c'est facile de s'y mettre . Vous installez le plugin, et vous avez tout . C'est très adapté pour traiter des objets JavaBeans .

2009-01-22

Séminaires: Paris 6, etc

Hier j'étais au Séminaire du Labo. d'Intelligence Artificielle à Paris 6 Saint-Denis (là où j'étais allé pour le General Game Playing), sur "Rendus expressifs" (traitements d'images). J'y retourne lundi.

J'irai à ce Séminaire à Jussieu le 9 février 11h : Viktor Kuncak * (EPFL, Lausanne) * Automated Reasoning for Reliable Software .

A l'inria Rocquencourt, le 11 mars , j'irai écouter "le nudging direct et retrograde pour l'assimilation de données" .

Lundi 26 sera bien rempli avec Saint-Denis à 14 heures, et Villenaneuse (si possible ) à 15h30 : La plateforme Why de vérification déductive de programmes C et Java

Suivi mardi 27 par le Séminaire Mondeca "Vers une Architecture Orientée Services sémantique" .


2009-01-19

Projet Déductions - état des lieux 2

J'ai envoyé ces nouvelles avant Noël. Qu'en est-il maintenant ?

Comme on peut voir dans mon journal en Anglais, j'ai surtout travaillé sur sur un cas réaliste de bon de commande. Notamment comment avoir une forme limitée de raisonnement par défaut ( utiliser l'ID comme label quand il n'y a pas de label RDF ). Et aussi prendre en compte les propriétés des classes parentes. Autrement tout ceci dessous reste à faire :( .

Je fais beaucoup de plomberie, mais ça commence à couler dans mes tuyaux ! :)))))))))

Cette simple ligne dans java_projection-rules.n3 :

:GUIHelper javam:addFieldBehavior ( ?JTEXT_FIELD ?Property ) .

permet d'ajouter le comportement au champ de saisie, c'est à dire de stocker la donnée quand le champ perd le focus ( http://deductions.svn.sourceforge.net/viewvc/deductions/n3/java_projection-rules.n3?view=markup) .

Parce que GUIHelper a été exposé au moteur JavaScript, et que le namespace javam: indique un appel de méthode java .

Pour l'instant ce comportement est codé en dur en Java. Mais plus tard il pourra être configurable, ou même implémenté en règles logiques.

Pour l'instant je vais avancer sur la route de ma POC (Proof of Concept), qui est de créer un éditeur CRUD simple. Ca veut dire:

  • brancher Drools comme moteur de stockage et règles (ce n'est pas le même emballage que dans EulerGUI, car ici j'ajoute les triplets un à un, et je dois lancer le moteur d'inférence de façon asynchrone)
  • ajouter un comportement minimal pour les champs références objects ( owl:ObjectProperty ), tenant compte du caractère composite ou non, avec possibilité de lier à un objet existant ou d'en créer un ( créer seulement si composite )
  • pouvoir ajouter des règles N3 pour l'application finale ( pour l'instant les règles sont dans EulerGUI, pour la phase de conception), conformément au diagramme de séquence dans la présentation http://deductions.svn.sourceforge.net/viewvc/deductions/html/architecture.odp)

Un petit cas d'utilisation intermédiaire serait d'implémenter un formulaire de saisie pour un questionnaire pour les utilisateurs d'EulerGUI. Il faudra donc exporter l'application Swing + JavaScript générée ( pour l'instant tout se passe dans EulerGUI ). Et puis sauver les données en N3 dans l'application générée . Bien sûr on aimerait bien, pour cet usage, exporter l'application en PHP, qui serait déployé sur SourceForge ... Ca viendra ! Il faudra d'abord restructurer java_projection-rules.n3 pour créer une couche supplémentaire avec des widgets abstraits généralisant Swing et HTML. Cette couche sera utile aussi pour la génération SWT avec Wazaabi2 d'Olivier Moïses, ou une génération GWT, etc .

A part ça il y a pas mal d'améliorations dans EulerGUI qui facilitent la vie. Notamment le source généré JavaScript apparaît dans la console JavaScript.

Pour l'instant j'utilise le moteur Euler + Prolog Yap de Jos De Roo, qui est 1000 (sic!) fois plus rapide que le moteur Euler + Prolog en Java JLog . Je laisse de côté le moteur Drools, qui est encore plus rapide, mais nécessite encore un peu de mise au point (il marche dans les cas simples, mais pas avec la génération d'application de Déductions) .

Dommage, parce que, grâce à Maven, tout ce qui est 100% Java est très facile à livrer. Pour le moteur Euler + Prolog Yap, je n'ai pas pris le temps d'écrire une procédure d'installation.

Mais vous pouvez toujours déjà installer Maven et Yap ;) . Et si vous voulez installer un snapshot, faites-moi signe, je ferai ce qu'il faut. Je vais aussi écrire un How-to pour Déductions. Surveillez le Wiki Déductions.

Wiki eulergui

Bon Noël à tous

Je pars une semaine à Cracovie le 26 ; je fais face à des pressions pour ne pas emporter d'ordinateur ...

Mon agenda :

http://www.google.com/calendar/embed?src=jeanmarc.vanel%40gmail.com&ctz=Europe/Paris

2009-01-14

Ed Merks, l'auteur de EMF, a fait quelques diagrames qui synthétisent EMF:

http://ed-merks.blogspot.com/2008/06/was-gany-good-to-you.html

Projet Déductions - état des lieux

Il est encore un peu tôt pour introduire un niveau widget de convergence détaillé . C'est à dire une ontologie (basée sur Java Swing) qui soit une convergence de Swing, SWT, Qt, etc.

J'ai fait la validation pour les types simples, rougissant ce qui n'est pas valide dans les champs de saisie.

Mes prochaines étapes: les champs multi-valeurs (listes ou ensembles), les champs correspondant à des propriétés objet (au sens OWL, EReference au sens EMF), sauver l'état courant en N3 dans l'application générée.

2009-01-03

Pourquoi encore C++ ?

Je lis avec intérêt le fil de discussion que mon message "Pourquoi encore C++ ?" a déclenché .

C'est le premier, Mayeul, qui a fait la meilleure réponse, en insistant sur l'accès aux resources de l'OS et du matériel bien meilleur en C/C++ .

J'ai appris ceci:

Le jdk1.6.0_07 possède un outil sympa pour (entre autre) profiler: jvisualvm. Savoir l'utiliser est un must à mon avis.

Mon profil sur Google groupes est un peu minable: 4 messages, mais il n'y a pas tous les messages de quand j'étais jmvanel@free.fr .

Choix d'une machine de développement sous Linux

Un grand merci à Fabien LE LEZ pour sa réponse claire et complète sur "choix d'une machine de développement sous Linux ".

2009-01-02

Articles de Pirmin Lemberger

Merci à Luc Peuvrier de m'avoir indiqué une série d'articles de Pirmin Lemberger :

  1. Web Semantique : http://www.architectes.it/index.php/post/2008/05/23/Diderot-et-le-web-semantique4
  2. API Java : http://www.architectes.it/index.php/post/2008/02/04/Une-alternative-a-J2EE-:-Essential-Java2
  3. MDA : http://www.architectes.it/index.php/post/2008/02/24/Du-bon-usage-de-labstraction-4-MDA-et-conclusion

Je partage globalement le scepticisme de Pirmin sur le Web Sémantique en soi (1.) . Mais il ne faut pas jetter le bébé avec l'eau. Dans un domaine restreint, mais encore très vaste, les spécifications associées au Web Sémantique (RDF, OWL, N3) peuvent être très utiles. Ce domaine est celui du développement logiciel. Je prétends que RDF et OWL sont de meilleures repésentations du monde et des concepts que UML, EMF, Java Pojo, SQL, etc. D'abord parce qu'ils ont été faits pour ça; la logique de description à la base de OWL cristalise des décennies de recherche en représentation des connaissances. Et ensuite parce ce sont des vrais formats d'échange: stables, clairement spécifiés, avec de nombreux outils, avec des milliers de modèles réutilisables sur le Web, et des moteurs de recherche (Swoogle). Par contre, ce qui manque ce sont des outils pratiques pour réutiliser ces modèles dans des applications de gestion ou scientifiques standards.

Je partage également les réserves de Pirmin sur les API et les cadres (frameworks) Java (2.) , et l'idée que le progrès vient par les individus, pas par les collectivités. Dans l'histoire de Java, un moment crucial a été la spécification Servlet. Ca a été la première spécification qui s'est écartée de l'Orienté Objet et a inauguré les fichiers de configuration XML. Il n'y a rien dans un fichier de configuration qui ne soit exprimable par une API, mais réciproquement une spécification d'un fichier XML n'est pas directement une API . Et en plus la spécification Servlet a été dès le départ incomplète, puisqu'on pouvait seulement instancier des servlets, mais pas instancier un serveur.

Je respecte la volonté de Pirmin de revenir à des fondamentaux Java (Essential Java). Mais cela exige un vrai projet Open Source, sinon un framework honi ;-) . Cependant la façon de se sortir de difficultés du développement n'est pas de revenir à une pureté originelle Orientée Objet. Il me semble que les Design Patterns sont en fait un moyen de contourner les limitations de Java et des autres langages OO .

Ce que je propose, c'est de mettre beaucoup plus de sémantique et des moteurs de raisonnement dans le développement logiciel . Mais il ne s'agit pas de faire table rase du passé, mais plutôt de compléter et emballer les bibliohèques et cadres (frameworks) existants avec des annotations qui permettront de les trouver , les relier et de les interchanger beaucoup plus facilement . Et ceci ne sera pas limité à Java. En particulier, PHP est une plateforme de choix pour le Web, car on trouve des hébergements gratuits de qualité suffisante, ce qui n'a jamais été le cas pour Java. C'est pour réaliser tout ceci que j'ai commencé le projet Déductions, qui s'appuie sur l'environnement de développement EulerGUI .

A SUIVRE ......... MDA .......

OSGi

Merci à Olivier Moïses de m'avoir parlé de OSGi. Je ne peux que coller le dialogue:

JMV >> j'ai besoin de qq'chose qui charge incrémentalement et paresseusement les jar au fur et à mesure des fonctionalités utilisées ; par exemple en utilisant les repo. Maven .

11:33 Olivier: ça s'appelle osgi ;-)

11:34 moi: un petit tutorial pour le même prix ?

11:36 Olivier: ya de la matière : http://www.aqute.biz/OSGi/Presentations

A l'intersection de "Web Semantique" et OSGi , j'ai trouvé ceci :

http://blogs.talis.com/n2/archives/143

A SUIVRE .........

2009-01-01

Intelligence manquante dans une IHM

Encore un autre exemple d'intelligence manquante dans une IHM.

Je fais un virement sur Internet (banque postale). Il n'y a que 2 comptes ( courant et épargne ) . Ayant choisi l'un des comptes, l'autre est déterminé.

He bien non, il faut le choisir. En plus dans une liste déroulante, alors que des boutons seraient plus appropriés (il faut être très riche pour avoir plus de 5 comptes actifs ).

2008-12-25

Le retour de JMV

Ca fait longtemps qu'il n'y a pas eu d'entrée ici! Difficile d'être au four et au moulin, en Anglais et en Français, sur les projets et sur les blogs.

Depuis des mois mes projets ce sont:

Etat des lieux du projet Déductions

eulerGUI generated by itself

Je fais beaucoup de plomberie, mais ça commence à couler dans mes tuyaux ! :)))))))))

Cette simple ligne dans java_projection-rules.n3 :

:GUIHelper javam:addFieldBehavior ( ?JTEXT_FIELD ?Property ) .

permet d'ajouter le comportement au champ de saisie, c'est à dire de stocker la donnée quand le champ perd le focus. Parce que GUIHelper a été exposé au moteur JavaScript, et que le namespace javam: indique un appel de méthode java .

Pour l'instant ce comportement est codé en dur en Java. Mais plus tard il pourra être configurable, ou même implémenté en règles logiques. Pour l'instant je vais avancer sur la route de ma POC (Proof of Concept), qui est de créer un éditeur CRUD simple.

Ca veut dire:

Un petit cas d'utilisation intermédiaire serait d'implémenter un formulaire de saisie pour un questionnaire pour les utilisateurs d'EulerGUI. Il faudra donc exporter l'application Swing + JavaScript générée ( pour l'instant tout se passe dans EulerGUI ). Et puis sauver les données en N3 dans l'application générée . Bien sûr on aimerait bien, pour cet usage, exporter l'application en PHP, qui serait déployé sur SourceForge ... Ca viendra ! Il faudra d'abord restructurer java_projection-rules.n3 pour créer une couche supplémentaire avec des widgets abstraits généralisant Swing et HTML. Cette couche sera utile aussi pour la génération SWT avec Wazaabi2 d'Olivier Moïses, ou une génération GWT, etc .

A part ça il y a pas mal d'améliorations dans EulerGUI qui facilitent la vie. Notamment le source généré JavaScript apparaît dans la console JavaScript.

Pour l'instant j'utilise le moteur Euler + Prolog Yap de Jos De Roo, qui est 1000 (sic!) fois plus rapide que le moteur Euler + Prolog en Java JLog .

Je laisse de côté le moteur Drools, qui est encore plus rapide, mais nécessite encore un peu de mise au point (il marche dans les cas simples, mais pas avec la génération d'application de Déductions) . Dommage, parce que, grâce à Maven, tout ce qui est 100% Java est très facile à livrer. Pour le moteur Euler + Prolog Yap, je n'ai pas pris le temps d'écrire une procédure d'installation.

Mais vous pouvez toujours déjà installer Maven et Yap ;) . Et si vous voulez installer un snapshot, faites-moi signe, je ferai ce qu'il faut.

2008-11-26

Model Development Day 2008 (MD Day)

Un petit compte-rendu bref ...

Les prés.: http://www.mdday.fr/spip.php?rubrique20

Le clou de la journée c'était Ed Merks, le créateur de EMF et eCore.

L'insupportable stupidité des approches modèles : info ou intox ? (en anglais).

Il a rappelé que UML est un modèle très complexe ( après avoir

travaillé 2 ans dessus, je ne peux qu'approuver ).

Il a rappelé que le code généré par EMF à partir d'un modèle est aussi

optimisé que possible.

Le MD c'est une femme anorexique dans des vêtements excitants :-) (Ed dixit ) .

Voir son blog: http://ed-merks.blogspot.com/

J'ai raté le début de Didier GIRARD - Présentation: Model Driven : Ca marche !

Dommage , c'est un très bon conférencier ...

Ce qui m'intéresse, c'est qu'il a fait un DSL (Domain Specific Language) pour les formulaires de gestion ( basé sur Struts Layout et taglib ) .

J'ai remarqué l'idée courante comme quoi le DSL s'inscrit dans une démarche "d'industrialisation" . Je dis non aux usines logicielles. Le logiciel est et restera longtemps encore un artisanat. C'est autant un travail d'auteur que d'ingénieur, et ça le sera plus encore dans l'avenir.

Ensuite Grégory Weinbach de Object Direct a insisté sur la modélisation applicative, indépendante de la technologie d'IHM, et distincte des modèles de domaine (exemple choisir dans une liste). Ses "pattern applicatifs" sont des profils UML. Dans la foulée, le représentant de Merck a parlé de l'utilisation de ces techniques chez Merck.

Philippe Desfray, de Objecteering, un éléphant de l'Orienté Objet en France, a présenté son IDE qui se veut un fédérateur de modélisation à

l'échelle de l'entreprise. A noter qu'il y a une version gratuite (mais pas OSS). Il insiste sur la traçabilité ( chaque ligne de code doit être justifiée par un élément métier ). Il ne parle presque pas de MD. Il insiste sur les "techniques de cadrage" à partir d'un dictionnaire de concepts textuels, mais aucune velléité de se relier à des éléments linguistiques. Dans la foulée, le représentant de la DGME( Modernisation de l'Etat) a parlé de leur utilisation de l'outill Objecteering. En gros, ils entrent leurs données, puis sortent des XSD et des .doc , et c'est tout . La DGME s'appuie sur sur une francisation de l'UMM.

UN/CEFACT's Modeling Methodology (UMM): Overview

UN/CEFACT's Modeling Methodology (UMM) is a UML modeling approach to design the business services that each partner must provide in order to collaborate. It provides the business justification for the services to be implemented in a service oriented collaboration architecture.

Thus, a primary vision of UN/CEFACT is

to capture the business knowledge that enables the development of low

cost software based on service

oriented architectures (SOA) helping the small and medium size

companies (SMEs), and emerging economies

to engage in eBusiness practices.

http://www.untmg.org/wp-content/uploads/2008/10/specification_umm_foundation_module_v20_publicdraft_20080910.pdf

Techniquement, ce sont des profils UML.

Voilà une belle source de modèles pour moi .

Ensuite vint François Bonnet de Lyria / W4 . Ici, pas de prétentions à

une belle technique, des fonctionnalités. Lyria est un générateur de

formulaires, avec beaucoup de connecteurs ( SQL, etc ). Ils viennent

de fusionner avec W4, qui offre une infrastructure générique pour les

processus métier ( BMPL ). Techniquement les formulaires sont dans un

XML propriétaire, et rendus par un interpréteur. La personalisation se

fait par redéfinition de méthodes Java. Pour moi le BPM est du

fliquage des employés; le travail leur arrive choisi par la machine,

et les statistiques fournies sont du type nombre de dossiers/jour. Je

ne sais même pas si l'on peut définir des stat. personalisées. Le

processus "ne stocke pas l'information", il ne peut pas donc offrir

une intelligence adaptative (le bon serviteur). Une jolie blonde de

Structis (groupe Bouygues) a présenté les applications.

Après il y eut Kermagoret de BlueXML. Ils font de l'OSS, et même du

"logiciel durable", grâce à des modèles indépendant des technologies.

Ces gens concourent dans la même catégorie que moi :-) . J'ai déjà

croisé Kermagoret car nous avions un client commun, lui qui faisait du

Cocoon, et moi avec la base XML eXist . Une collaboration sera

peut-être possible. A noter qu'ils sont gavés de subventions . Leur

client est la SEM Pays De la Loire http://www.sem-paysdelaloire.fr/ (

Société d'Economie Mixte ).

Frédéric Madiot de MiaSoft est plus dans le logiciel de manipulation

de modèles ( comme Sodius ). Ils ont un environnement de développement

de template de génération ( basé sur eclipse ), par exemple traduire

Swing en GWT (Google Web Toolkit). Ils sont contributeurs eclipse,

dans le nouveau projet MoDisco:

(for Model Discovery) is an Eclipse GMT component for model-driven

reverse engineering.

Leur client est Philippe Laurel de Thalès Raytheon (TRS); ils générent

du code à paritr de modèles UML.

Aussi contributeurs eclipse, et même "membre (viril?) stratégique",

vient OBEO. Ils ont fait EMF compare, SCA, etc. Ils présentent Agility

un assistant de rétro-ingénierie, avec une application chez Atos:

traduction de Forté en Java . Je les ais vu aussi à Eclipse Now You

can, où ils présentaient un créateur générique d'éditeur graphique à

partir d'un modèle EMF quelconque.

J'ai raté la présentation M$ sur les DSL ( http://blogs.microsoft.fr/fmerand/archive/2006/03/02/21033.aspx ).

A propos on sent à travers toutes les présentations que UML est là comme fonctionnalité obligée, mais que les efforts portent partout sur les DSL.

Enfin Sodius, qui est plus dans le logiciel de manipulation de modèles

que dans les outils pour utilisateurs finals. Ils vendent leurs

composants de traduction, transformation et de rendu à tout les grands

du logiciel UML.

Ca se confirme que Nantes est une pépinière pour la modélisation ;

Bézivin était là d'ailleurs.

Sodius présentait MDWorkbench ( http://www.mdworkbench.com/ ), qui est

un outil de type couteau Suisse pour les architectes techniques, qui

intègre tous les formats possibles, et tous les types de

transformations ( impératives, et déclaratives à la QVT ). Il y a une version gratuite :-) .

Intelligence manquante dans une IHM

Encore un autre exemple d'intelligence manquante dans une IHM.

Je fais un virement sur Internet (banque postale). Il n'y a que 2

comptes ( courant et épargne ) .

Ayant choisi l'un des comptes, l'autre est déterminé.

He bien non, il faut le choisir, en plus dans une liste déroulante (

alors que des boutons seraient plus appropriés )

2007-10-22

Prospective et système expert

Entendu à la radio ==> réforme carte judiciaire ==> améliorer efficacité de la justice ==> système expert ==> objections: justice inhumaine, erreurs, problème de responsabilité ==> remèdes: 1. avoir un système tel que que les juristes eux-mêmes peuvent le programmer ; 2. le système sera capable de dire, et de justifier (tiens un mot de la famille de justice) si le cas est hors des cas prévus; 3. le système expert ne supprime pas l'intervention humaine, mais c'est une aide et un gain de temps; 4. instaurer une responsabilité des experts juristes qui ont fait le système

Dans les idées de système expert, j'imagine un système de forums qui classifie et confronte automatiquement l'information, pour exemple une association de consommateurs qui entrent des apréciations sur des produits et services, éventuellement à un niveau local.

2007-10-10

Graphe aléatoire en Prolog

Je viens d'écrire un petit programme en Prolog qui crée un graphe aléatoire; je vais pouvoir faire d'intéressantes mesures de performance.

ai/path_big.pl

2007-10-01

GWT, ontologie et widgets

Marco m'a indiqué le framework web gwt de google. Le client lourd est de retour, et son assembleur clé javascript, voir les exemples GWT .

Après avoir regardé le showcase je me suis dit: un exemple de plus d'une collection de widgets, comme il en existe en Java, Qt, GTK, WxWidgets, JSP, etc.

Ma démarche serait d'abstraire ces concepts en un groupe d'ontologies, plus des règles qui permettraient d'appliquer le(s) widget approprié à un objet concret (ou à une classe).


2007-02-11

J'ai mis un .mm (c'est à dire un fichier pour Freemind ) dans http://jmvanel.free.fr/uml/development-uml-tools.mm 

Je lis cet article de l'auteur de Antlr:

http://antlr.org/article/1100569809276/use.tree.grammars.tml


Script : répertoire MP3 et noms incorrects

J'ai arrangé sur mon répertoire MP3 les noms incorrects:

for f in *.OK
do
  echo ${f/\.OK/} ; mv $f ${f/\.OK/}
done
sync

2006-05-28

QVT

Hier j'ai lu le début de la spec. QVT (Query, View, Transform ) de l'OMG . D'habitude je suis réticent vis-à-vis des techniques de l'OMG, mais là il y a qq'chose à creuser . C'est un pas de plus par rapport à XSLT ...

http://www.omg.org/cgi-bin/doc?ptc/2005-11-01

Il y a le projet ATL qui offre une implémentation proche de QVT; voici la doc. :

ATL User Manual

http://java.sun.com/products/jmi/

2006-05-06

jboss rules remplace Drools .

Présentation :
Object/Relational Mapping with Hibernate


PDSTab:

2006-04-25

SWOOP

Je redécouvre SWOOP, un éditeur OWL en Java de l'université du Maryland. Comparé à Protégé, il est moins complet, mais assez simple et ergonomique. Il est plus adapté à l'exploration de plusieurs ontologies, alors que Protégé est adapté à la cr&tion d'ontologies. Les bookmarks sont vraiment très commodes .



Le langage d'ontologie Web OWL, Guide : traduction "officielle" en Français du W3C .

2006-04-24

Conférences




Pas de bonne conception?

Que faire quand on n'a pas de bonne conception?

Références sur ontologies

Avec une recherche sur :
SUMO CYC Bremen dolce
j'ai récupéré des références intéressantes:



Mes articles sur l'Intelligence Artificielle


Il y a aussi des présentations:

Et en Anglais: AFAIRE

Spécification et idées de logiciels

Pendant que j'y suis, je rassemble mes écrits concernant Spécification et idées de logiciels :

Radios numériques écoutables sur Linux



2006-04-15

Tuer les spams dans l'oeuf

J'ai regardé ce qu'il y a comme bibliothèques pour le protocole POP : http://www.columbamail.org/

En fait javamail semble tout à fait adapté. Je pars du de l'exemple GUI .

Le but est de filtrer les spams sans les télécharger. Peut-être qu'il faudra utiliser le protocole IMAP. Par exemple je reçois beaucoup de mail suspects avec des pièces attachées de type application/octet-stream .

Compréhension sans protocole préalable

J'ai envoyé ce matin un mandat par Western Union, à ma fille à Madrid . J'ai écrit sur un formulaire papier des choses qui étaient déjà sur mon ordinateur . Puis (laborieusement) l'employé des Postes a recopié mon formulaire sur son ordinateur . Voilà le genre de choses qui arrivent tout le temps en ce XXIe siècle. Et dire qu'on parle d'Ere de l'Information! En vérité c'est encore le Moyen Age, et pas qu'à la Poste.

C'est l'occasion d'expliciter des réflexions que je mène depuis des années, autour de XML, RDF, des ontologies, et des architectures applicatives.
LIRE TOUT L'ARTICLE "Compréhension sans protocole préalable"



Un moteur de recherche sur les ontologies :
http://swoogle.umbc.edu/index.php?option=com_frontpage&service=search&queryType=search_swd_ontology&searchString=money&searchStart=1
Chercheraient-ils à se faire racheter par Google ? :-)

2006-04-08

Scaner HP PSC 750 sur Fedora

Je ré-installe mon scaner HP PSC 750 sur Fedora . La commande lsusb est dans le package usbutils .
Le "comment faire" ( howto ) :
http://hplip.sourceforge.net/install/step1/index.html

2006-04-06

Formation sur C++

Fini deux jours de formation sur C++ , pour de sympatiques stagiaires du CNRS, qui font des volcans, et des simulations moléculaires.

Liens C++
http://jmvanel.free.fr/c++/liens.html

Les présentations ( inclus dans un cycle de formation sur le développement orienté objet, les bonnes pratiques et les bons processus ) :
http://jmvanel.free.fr/formations/cycle.html

Les exemples ;
cpp_elementaire.zip <http://jmvanel.free.fr/c++/cpp_elementaire.zip> 05-Apr-2006 22:36    15k
(je vais ajouter ceux du dernier jour ce week-end ) .

Le langage SWRL

Découvert le langage SWRL , langage de requêtes à la Prolog pour une base connaissances OWL ( voir SWRL FAQ de Protégé ) . Hélas, pour l'instant, ce n'est qu'un éditeur, il n'y a pas de processeur associé . C'est pour le prochain build de Protégé . De plus SWRL ne parait pas très puissant; ne peut pas avoir de requêtes avec une expression référençant plusieurs champs.

2006-04-02

Je mets à jour l'article d'avant hier, après avoir commencé un test avec Protégé. Je me suis aperçu que les contraintes possibles sur une classe OWL sont très simples: pas d'inégalités possibles sur les valeurs numériques ou dates, encore moins d'expressions générales comme en XQuery , ou en UML avec OCL (Object Constraint Language).

Explorer ces aspects sur la programmation à base d'ontologies :



J'ai essayé EMF avec Java annoté . Ca a l'air intéressant . On part d'une interface Java annotée, et on peut régénérer les classes après modification manuelles, Il y a d'autres manières de générer du code Java à partir d'une définition de plus haut niveau :



2006-03-30

Nouvelle présentation sur le développement basé sur ontologies

En fait cette présentation est en préparation depuis juin. Ce matin, j'ai l'impression que les pièces du puzzle se mettent en place. Je réalise plusieurs choses:

Après ces réflexions, une recherche avec :
dynamic proxy java ontology class
amène une moisson intéressante:

A FAIRE

2006-03-29

Nouvelle présentation sur la persistence en Java

Je continue ma présentation sur la persistence en Java.

Après avoir vu le problème d'activation des objets avec db4o , j'ai posé des questions sur la liste eyeDB . Je pense que, vu l'architecture eyeDB, il n'a pas ce  problème d'activation des objets en suivant les références. Ceci parce qu'il n'utilise pas de POJO, mais des classes générées. Hibernate est correct aussi , cf parag. 4.3.1 "Persistence by reachability" dans "Hiberante in Action" :

  Persistence by reachability guarantees referential integrity; any object graph can
be completely re-created by loading the persistent root object. An application may
walk the object graph from association to association without worrying about the
persistent state of the instances.


 Je dois aussi, pour avancer ma présentation sur la persistence en Java, écrire deux examples CRUD + requête avec Protégé, montrant comment on peut utiliser Protégé comme n'importe quelle infrastucture de persistence (pas évident !). Je regarde Protege Programming dans la documentation Protégé - OWL , et je vois que l'API OWL, bien que proche par les concepts et étendant l'API Protégé originelle, est différente:

Le "CRUD" de Protégé se trouve documenté dans Basics, et les requêtes dans Querying the OWLModel .


Je vois des projets passer à Java 5 : Protégé, db4o . A quand eXist ?

2006-03-28

Créer un logiciel, c'est comme écrire une pièce de théatre, on le fait en pensant aux acteurs.

Nouvelle présentation sur la persistence en Java

J'ai écrit une présentation de 30 transparents sur la persistence en Java (au format OpenOffice 2 bien sûr), couvrant beaucoup de sujets: Hibernate, mais aussi les bases Orientées Objets (OODMS),  les bases XML, les bases de connaissances, etc . Ce n'est pas fini ...

La base Orientée Objet db4o

Je viens de découvrir db4o ( db4objects ) , une autre base objet, 100% Java sous licence GPL . Il y a aussi une documentation impressionante au premier abord, mais assez verbeuse et pas très synthétique . Le modèle économique est celui de MySQL, avec double license. Contrairement à eyeDB , le stockage de POJO est possible . Ca parait simple et propre . En lisant attentivement la doc. , je vois cependant ( parag. 7.2.1. Activation depth , pas en ligne ) qu'avec une liste chaînée d'objets, on ne peut pas naviguer sur la liste en partant d'un objet récupéré . Enfin, on peut, mais il faut faire un appel à la base :
    db.activate(readout,1);
avant de parcourir la référence en mémoire :
    readout=readout.getNext();
Ceci signifie que db4o ne contrôle pas ses objets comme Hibernate pour aller chercher dans la base quand c'est nécessaire . Ca me parait un défaut majeur de db4o . C'est très intrusif, et on ne décharge pas le programmeur du souci de persistance .

2006-03-27

Essai de EyeDB

Je comprends pas que , depuis le temps , le gens de GNU et gcc n'ont pas fait qq'chose pour accélérer les compils . Je pense que l'intanciation d'un compilateur via make à chaque fichier fait mal .

Pendant ce temps je lis
http://doc.eyedb.org/manual/html/GettingStarted/node6.html
Collé de mon journal :
I'm glad to see that I'm at a higher level than Java declarations , quite at an UML abstraction level :

class Person {
 string firstname; string lastname; int age; 
  Address addr; Person * spouse inverse Person:pouse; 
  set<Person *> children; }; 

With or without the * makes the same difference as in C++ ; it has also the same semantics as in UML an aggregation versus a composition .

Ca me fait comme un ballon d'oxygene de voir comment marche cette base objet ; le langage interprété pour créer les object, et faire les requêtes , OQL , c'est réconfortant de savoir que ça existe .
Maintenant il faut voir le mapping Java . Déjà je crois qu'on ne peut pas utiliser des POJO comme avec Hibernate .

Question posée sur la liste :  eyeDB and POJO

Request ID

Summary

Open Date

Priority

Assigned To

Submitted By

1459472

Segmentation fault in eyedbrc

  2006-03-27 17:32

5

nobody

jmvanel



2006-02-13

Des bonnes pratiques en tous genres , extraites de bons livres ( hélas seulement des noms ) :
http://rearchitect.wordpress.com/2006/02/12/software-design-principles-mined-from-books-and-papers/

Un tableau de correspondance entre symptômes ("Bad Smells") et remèdes :
TWiki . People . SmellsToRefactorings

2006-02-04

Essais avec Lucene

Dans un des projets que je suis, nous mettons tous les documents avec les sources sur CVS. Pour l'instant, nous n'avons pas de serveur Web pour le projet (c'est d'ailleurs un projet Java Swing). Il y donc besoin d'un outil à la google pour chercher dans des répertoire s de travail CVS. Lucene est l'outil standard Java. Il faut résoudre les problèmes suivants:

Prise en main de Lucene;
http://lucene.apache.org/java/docs/demo.html
IHM Swing Luke:
Luke - Lucene Index Toolbox

Script pour créer un index HTML à partir de la configuration Apache

J'ai écrit un petit script pour créer un index HTML (rustique!) pour la racine de mon serveur , à partir de la configuration Apache :

# cd /etc/httpd/conf
# cat faire-index.sh
grep '^Alias' httpd.conf | \
  sed 's/".*//' | \
  sed 's/Alias /<a href="/' | \
  sed 's/"\(.*\)/\1">\1<\/a><br\/>/' \
  > index.html
cat index.html
echo Si OK taper:   mv index.html /var/www/html/



2006-02-02

Solutions d'agenda partagés (bis)

Poussé par les nécessités projet, je reviens sur ce thème .
Voir Solutions d'agenda partagés (2005-11-29) .
Depuis lors Mozilla Calendar fait des snapshots assez réguliers , mais ce sont des snapshots de Sunbird, la version autonome . Or il faut avoir la liaison avec les Contacts et le lecteur de courrier .

Architecture pour la gestion des tâches

Le point essentiel est que la description fine des tâches, et des bugs, et des fonctionalités qui leur sont associées, est indépendante de l'aspect administratif et tableau de bord . Pour ce dernier aspect, c'est le format d'échange ICalendar qui sera utilisé . Pour le reste, la description fine des tâches, l'association avec le fichier ICalendar se fait via un URL .
On a donc de multiples possibilités pour partager, diffuser et mettre à jour tout ceci :



2006-01-25

Using the STATE Design Pattern in Java - Steven John Metsker.


J'ai trouvé une excellente présentation CVS de Montréal : CVS Help Session , que je peux reprendre à peu près telle quelle . Mais bien sûr j'ai des compléments :
CVS compléments JMV .

2006-01-24

Le calcul intensif

Je viens de lire le numéro spécial de la Recherche sur le calcul intensif . Ca me rappelle beaucoup de souvenirs ! On y parle beaucoup de matériel , et assez vaguement de logiciel . Réduire et maîtriser le complexité, en calcul scientifique comme ailleurs, passe par une conception logicielle propre et nette, appuyée sur une ontologie métier explicite .

Quand j'aurai envie (!) d'utiliser sendmail , voici ce que je pourrai lire  :
http://www.linux-france.org/article/mail/sendmail/sendmail.html#toc2

2006-01-23

CVS

Je regarde les plugins eclipse pour CVS . Je trouve ceci, qui remplace la fonctionalité graphe de WinCVS :
http://versiontree.sourceforge.net/

En passant je tombe sur :
Insectivore
- http://www.zclipse.org/projects/insectivore/ qui réalise une gestion de bugs à la bugzilla dans eclipse . Ce serait très bien si ça marchait ! Le projet ne semble pas maintenu, comme le montre la liste de courrier . Dommage ! C'est une voie prometteuse.

Gestion de bugs

En regardant Insectivore, je tombe sur Scarab . Tiens tiens, il est hébergé par le même site que ArgoUML ! Il y a même plusieurs guides en français datant de décembre !
http://scarab.tigris.org/servlets/ProjectDocumentList?folderID=1963&expandFolder=1963&folderID=0

Les bugs de Scarab , comme pour tous les projets de tigris.org , sont gérés par Scarab . On peut donc voir la bête en vraie grandeur : Issue tracker . Voici un rapport de bug typique :
http://www.solitone.org/scarab/issues/curmodule/100/tqk/0/template/ViewIssue.vm/id/SCB1381/eventsubmit_dosetissueview/foo/action/ViewIssue/tab/1

J'ai réussi l'installation de scarab sans problèmes ! http://localhost:8080/scarab/

Ici une liste des projets Open Source de geqtion de bugs :
http://opensourcetesting.org/bugdb.php

2006-01-21

Hibernate 3.1

Je suis curieux de savoir les dernières nouveautés de Hibernate 3.1, et en particulier si les "generics" (généricité) de Java 1.5 sont supportés . Rien vu dans la doc. officielle Hibernate French 3.1 ; par contre ce journal est intéressant :
http://blog.hibernate.org/cgi-bin/blosxom.cgi/2005/09/08#genericdao

Mise à jour de Squirrel-SQL

Toujours un outil agréable, plus mûr que eclipse WTP ou OpenOffice 2 dans sa spécialité . Les greffons, tel que l'outil de diagramme ("graph") sont maintenant dans la distribution . Java, open source :-) ; plus de raisons d'utiliser MS Access !

Installation d'un disque USB non formatté sur Fedora

Il s'agit d'un boitier USB sans disque Enermax EHD 350, dans lequel j'ai branché un disque Western Digital 200 Go. Ayant branché tout, je regarde ce que dit dmesg :

usb 1-2: new high speed USB device using ehci_hcd and address 24
scsi6 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 24
usb-storage: waiting for device to settle before scanning
  Vendor: WDC WD20  Model: 00BB-22GUC0       Rev: 0811
  Type:   Direct-Access                      ANSI SCSI revision: 00
SCSI device sde: 390721968 512-byte hdwr sectors (200050 MB)
sde: assuming drive cache: write through
SCSI device sde: 390721968 512-byte hdwr sectors (200050 MB)
sde: assuming drive cache: write through
 sde: unknown partition table
Attached scsi disk sde at scsi6, channel 0, id 0, lun 0
usb-storage: device scan complete

De ça je peux deviner le nom du périphérique : /dev/sde .
Je peux alors lancer parted :

# parted /dev/sde
mklabel msdos
mkpartfs primary ext2 0 100000
quit

Ce qui veut dire une partition primaire de 100 Giga-octets. Comme parted n'a pas voulu faire un système ext3, je le refais autrement :

[root@zamia ~]# umount /dev/sde1
[root@zamia ~]# mkfs.ext3 /dev/sde1
mke2fs 1.38 (30-Jun-2005)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
12812288 inodes, 25599569 blocks
1279978 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=29360128
782 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

On peut alors créer les répertoires :

mkdir /media/usbdisk/jmv
mkdir /media/usbdisk/guest
chmod o+rwx /media/usbdisk/guest
chown -R jmv.jmv /media/usbdisk/jmv



2006-01-18

J'installe le paquet Fedora kdesdk , pour avoir Cervisia (client CVS sur Linux ) . Dans la foulée , je mets à jour ma page "Comment démarrer avec CVS" .


Mozilla Calendar

J'essaye le dernier snapshot de Mozilla Calendar (sur Windows seulement ! ), pour voir si on peut ajouter des participants à une réunion à partir du carnet d'adresses . Hélas non, pas encore . C'est joli, mais pas de progrès substanciels depuis novembre dernier. Mais c'est très utilisable .

Pour Jean-Luc, je regarde les possibilités de synchronisation avec Palm . Il y a une page ici pour parler de ces développements :
http://wiki.mozilla.org/Calendar:Device_Sync
En gros le développement n'a pas commencé , mais il y a un planning aboutissant à un version stable en Avril :
palmsunbirdsync

D'après cet article, il est possible de récupérer les rendez-vous d’Outlook en passant par le format intermédiaire « .ICS » . Mozilla Calendar exporte ses données dans divers formats dont « .ics », « .vcs », « .rtf », « .html ».

2006-01-11

OpenCourseWare du MIT

Le Massachusets Institute of Technology a mis en ligne ses cours ( OpenCourseWare ) :

http://ocw.mit.edu/index.html
C'est de très bonne qualité.


Traduction d’une présentation de Gavin King sur hibernate et de Dennis Leung :
www.e-coz.org/section/repository/currentdata/Présentation/Hibernate.ppt

2006-01-07

IHM Swing

Je conseille en ce moment un client a qui a une IHM Swing avec une base de données. Dans cette optique, je lis les présentations sur le site JGoodies . Je lis tout ce que je peux sur le bonnes pratiques en matière d'IHM :


Je viens de remarquer l'application modèle J2EE / Spring appfuse de Matt Raible .


L'auteur de PMD vient de sortir un livre !


Pour faire des applications de type collaboratif qui soient vraiment flexibles, il faudrait:

2006-01-03

Rien pour l'instant pour les réunions Java à Paris :
http://ossgtp.xwiki.com/xwiki/bin/view/Main/WebHome

Par contre après-demain jeudi à SparklingPoint une réunion sur l'ergonomie du logiciel .

2005-12-30

Free sans la FreeBox : possible , voir :
http://mon.adsl.chez.free.fr/modemdegroupe/spedtoucheusb/config.html



2005-12-06

Pour préparer ma formation Spring ( SpringFramework ) , j'ai installé le dernier eclipse 3.2M3 avec SpringIDE et le dernier WTP 1.0M9 ; détails ici :
eclipse/my-eclipse-plugins.html

2005-11-29

Solutions d'agenda partagés

Formation et conseil donnés à IRD sur les solutions d'agenda partagés ( voir ici groupware/ ).
Je découvre Aethera , un client mail et calendriers, qui tourne sur Linux, Windows et Mac, basé sur Qt . C'est probablement la solution à mon problème, qui est d'avoir un client sur Windows pour organiser des réunions via le courriel au format ICalendar . Mais attention, il essaye de faire son système de fichiers virtuel. Le chargement de mes contacts a pris de nombreuses minutes, alors que c'est instantané avec KDE . Ca a été encore pire avec l'importation d'un dossier de mails de Mozilla qui fait 100Mo. Là ça n'a pas marché; il a pris toute la mémoire plus le swap , il a chargé la machine à 22 . Ca n'est pas encore Aethera qui va remplacer Mozilla . Il n'y a pas de filtre de spam; évidemment on peut utiliser un filtre extérieur à la SpamAssassin . Pas de news non plus . Par contre il y a une vision intéressante, qui rejoint la mienne , de gestion globales des données personnelles. On peut ajouter des notes à tout .

Articles:


CMS

2005-11-13

A LIRE: ESB ce n'est pas une maladie des bovins, c'est "Enterprise Service Bus" :

http://xmlfr.org/actualites/decid/051109-0001

2005-11-11

transparents pour ma formation CVS

Je crée des transparents pour ma formation CVS.

2005-11-07

Echange sur news:fr.comp.lang.java : composants Java

je voudrais avoir plus de choix pour les GUI composants, est-ce que 
quelqu'un connait des siets qui en proposent ? (Si possible open source et 
gratuits)
Merci,
Vincent


Paul wrote:
> Ici il y a une liste en français des meilleures API Java :
> http://java.developpez.com/outils/api/#graphique

Cette liste est intéressante, mais elle est trop grande pour être à jour. Par exemple il y figure Jakarta ORO, qui est démodé depuis que les expressions régulières sont dans Java .

Je propose une recherche sur SourceForge.net :
http://sourceforge.net/search/?type_of_search=soft&exact=1&forum_id=0&group_id=0&atid=0&words=gui+java&Search=Search

J'ajouterai que les meilleures interfaces graphiques ce sont celles qu'on ne développe pas. Il est par exemple possible de construire génériquement à l'exécution un formulaire de saisie à partir d'un objet Java:
Explications et copie d'écran ici :
http://jmvanel.free.fr/computer-notes.html#mozTocId826972
téléchargement :
http://sourceforge.net/projects/ecolosim/






Parmi les additifs pour la suite Mozilla :
https://addons.mozilla.org/extensions/?application=mozilla

J'ai installé Web Developer 0.9.4 :
https://addons.mozilla.org/extensions/moreinfo.php?id=60&application=mozilla

2005-10-30

Logiciel: de fantastiques aventures à vivre

    Si je suis dans ce métier, c'est parce qu'il y a de fantastiques aventures à vivre. Sinon je ferais autre chose, comme concevoir des jardins, naturaliste, musicien, ... La convergence d'Internet et de tous les autres réseaux vers un espace unique, l'avènement des dispositifs intelligents partout (téléphones, assistants personnels, domotique, transports, médecine, ...), celui de l'intelligence artificielle et de la connaissance formalisée, les modes de collaboration du logiciel libre, vont faire avancer l'informatique à une vitesse encore insoupconnée. Et au coeur de tout ça: le logiciel, et pas le logiciel commercial, le logiciel libre, seul capable d'apporter aux utilisateurs la stabilité, la visibilité et la réactivité dont ils ont besoin. Seul capable aussi de réunir souplement et efficacement des grands utilisateurs à la recherche de fonctionalités, tout en évitant les pièges, les coûts commerciaux et la fermeture sur soi-même des éditeurs.

    Je parle de logiciel au sens large, incluant les sources de connaissance, les ontologies. Le PHP n'est pas l'avenir, ni même Java et C#, dont le pouvoir d'expression était déjà dépassé par Eiffel dans les années 80 . Si on a besoin de modèles de conception (Design Patterns) en Java, c'est justement parce que son pouvoir d'expression est trop limité. Par exemple la fabrique poussée à l'extrême a donné naissance au moteur Spring; eclipse a lancé un nouveau modèle de conception, le point d'extension . L
es langages courants ne sont pas assez expressifs. Mais je ne m'attends pas à un nouveau super-langage, parce qu'en même temps le paradigme du développement est en train de changer. Les sources Java, PHP, Python, et C++ actuels sont le "legacy code" de demain. Il est bien clair que ce n'est pas le langage de programmation qui pose problème. C'est bien sûr la qualité du code source source, où les bonnes pratiques sont la plupart du temps négligées. Mais c'est surtout la dépendance par rapport aux bibliothèques "standard" de chaque langage. On le voit bien quand il y a portage. Ce qui fait le coeur de Java (idem pour Phyton , C#, etc), ce n'est pas le langage, ni le compilateur, ni la machine virtuelle, qui ont tous été implémentés plusieurs fois de façon conforme. Ce qui n'a jamais été "imité", c'est sa bibliothèques "standard", même si le projet classpath (gcj) s'en rapproche. Bien sûr c'est un travail très lourd. Mais il y a aussi le fait que la sémantique de ces bibliothèques "standard", bien que toujours à peu près semblable, n'est pas explicitée en terme de connaissance formalisée. Par exemple un bouton d'interface graphique en Java Swing, en SWT, en GTK, en Qt, en TCL/TK ou en WxWidgets c'est toujours la même chose, il y a un libellé, un rendu graphique, un conteneur graphique, et des fonctions de rappel (le comportement). Mais à l'heure actuelle, il n'y a pas moyen de retrouver cette sémantique derrière les sources qui dépendent de ces bibliothèques. Ceci nous ramène au sujet de l'Intelligence Artificielle (IA).

    Le développement logiciel tend depuis quelques années vers une séparation rigoureuse, au niveau du code source, entre l'aspect procédural (toujours plus réduit) et l'aspect déclaratif. C'est ceci que l'Intelligence Artificielle a depuis longtemps réalisé, la séparation entre l'application, le moteur d'inférence (générique), les règles et ontologies, et les faits (réunis dans la notion de base de connaissance). En fait les techniques de l'Intelligence Artificielle sont prêtes pour les développements logiciels «tout-venant», en informatique de gestion par exemple. On ne s’en rend pas encore compte parce que les maîtres d’ouvrage se polarisent sur les techniques reconnues (quel mauvais critère quand on voit l’échec de la technologie EJB!). Ils pensent qu’un logiciel sera plus maintenable parce qu’il utilise Java plutôt que des techniques plus confidentielles. Les maîtres d’oeuvre, eux, sont obnubilés par le « coût de journée » de l’informaticien. La maintenabilité est le cadet de leurs soucis. On sait, bien sûr, que le coût total du logiciel est dominé par la maintenance. Mais les rôles sont ainsi répartis qu’on anticipe peu cette phase de maintenance. Et c’est en phase de maintenance qu’un logiciel basé sur des ontologies, sur un langage naturel formalisé, révèle sa supériorité. D’abord parce que le volume de code spécifique est très réduit. Mais surtout parce que la traçabilité est excellente entre concepts de base et implémentation, entre fonctionnalité et implémentation.

Techniquement, il y a plusieurs signes qui témoignent de cet avènement de l’IA dans le courant principal de l’informatique :

2005-10-15

Repéré les notes de Ludovic Maître sur MDR avec ArgoUML :
http://www.ubik-products.com/ubik/en/projects/argomdr.html
Presentation in French: Spring Framework, by Thierry Templier ...

Thierry Templier has made available a comprehensive presentation on Spring which he gave to the French OSS-Get-Together group.

2005-09-24

un additif simple pour eclipse

Je développe pour un client qui fait du temps réel un additif simple pour eclipse CDT .

La page d'accueil pour le développement d'eclipse 3.2 :
http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/jdt-core-home/r3.2/main.html

2005-09-21

Activités sociales
Je viens de m'inscrire pour la réunion de demain sur le Wiki du groupe OSS Get-Together Paris :
http://ossgtp.xwiki.com/xwiki/bin/view/Main/22septembre2005

http://www.parinux.org/activites/

2005-09-13

Test d'application Web

J'ai regardé ce qui est disponible dans la direction de tests automatisés , écrits par des développpeurs et testeurs variés :


Je suis tombé aussi sur Cactus (sans me faire mal ;-) ) de Apache.org . Il a le tort de faire du test de l'intérieur; Cactus ce sont des servlets de test qui interagissent avec les servlets à tester. Outre qu'il n'est pas possible de tester des sites Web quelconques non Java, ce n'est pas la bonne architecture. C'est le cas aussi du projet http://httpunit.sourceforge.net/ . Ce n'est pas en soi une mauvaise architecture, mais pour une application Cocoon ou XQuery, ça ne convient pas.

En regardant ce portail , Open Source Testing, je suis tombé sur le projet Anteater :
qui va dans le bon sens :

The type of tests you can write using Anteater are:
Send a HTTP/HTTPS request to a Web server. When the response comes back, test that it meets certain criteria. You can check for HTTP headers and response codes, and validate the response body with regexp, XPath, Relax NG, or contentEquals tests, plus some binary formats. New tests can be easily added.

Le hic, c'est que la dernière version date de 2003 . Mais c'est une preuve d'existence, il y a certainement d'autres projets similaires.

Je vous laisse pour ma tâche de développement. Je vais à cette occasion utiliser JMeter pour spécifier et valider .

2005-08-16

Drools

En ce moment j'étudie drools; je suis toujours à la recherche d'un exemple de règles pour générer des formulaires.

Artificial Intelligence: A Modern Approach
[PDF] Combination of DROOL rules and Protégé knowledge bases in the ONTO ...

hydrus.org.uk - Deleting spam from a POP3 server


J'ai deux utilitaires intéressants que je dois retrouver et publier:

2005-07-18

optimisation XQuery pour un client qui développe un CMS

Ces temps-ci je fais de l'optimisation XQuery pour un client qui développe un CMS (Content Management System). Ce week-end j'ai fait de la restructuration ( Refactoring ) sur eXist .



J'ai découvert la page d'un enseignant d'Angers :
http://tahe.developpez.com/
avec pas mal de resources pépagogiques sur Java et autres, en particulier cet artivle sur l'injection de dépendances dans Spring :
http://tahe.developpez.com/java/springioc/

2005-06-26

greffons d'eclipse

J'étudie les plugin (greffons) d'eclipse. Le mieux est de lire la doc. officielle, complète avec tous les Javadoc :
http://help.eclipse.org/help30/index.jsp
C'est une copie de la doc. incluse dans l'aplication.

J'ai commencé par utiliser le wizard inclus dans eclipse pour créer un plugin échantillon "Hello world".


J'ai découvert jdocs
, un site qui présente 130 Javadocs de projets Java open source. Il y a eclipse en particulier, mais pas eXist.


J'ai vu sur linuxfr.org que le dernier Fedora Core 4 qui vient de sortir comporte eclipse 3.1 compilé avec gcj . Intéressant ! Ca peut résoudre les plantages que j'ai avec eclipse 3.1 sur Mandriva , avec différents JDK (le meilleur étant IBM).

2005-06-24

Exemple concret de règle: carnet d'adresses

Exemple concret d'une règle de type système expert:
Si j'ai dans mon carnet d'adresses de courriel un certain nombre d'adresses PPP@SOCIETE.fr, et que l'une d'entre elles a un champ "Organisation" renseigné, je peux en déduire que tous ces contacts dont le courriel se termine par @SOCIETE.fr appartiennent à cette même organisation.

2005-06-17

Easy Urpmi -

2005-06-09

Plantages avec eclipse et Linux

VMThread eclipse crash linux
Bug 79964 - Eclipse crashes frequently giving exit code - 255

And it's a lot faster than Sun JRE with -Xint ;-)
http://www-106.ibm.com/developerworks/java/jdk/linux140/

IBM SDK for 32-bit xSeries (Intel compatible)
Version  142 SR1a

eclipse -vmargs -Dosgi.locking = java.io

2005-06-04

Activité: développement sur eXist , formation de 3 trois jours sur les Services Web

Ces dernières semaines ont été occupées par :


Je compile le dernier Axis 1.2. Surprise ! Ca ne compile pas avec Java 1.5, à cause d'une bêtise: ils n'ont pas implémenté les nouvelles functions spécifiées par l'API DOM.


comptabilité http://www.gnucash.org/fr/ BNC ??


Essayé le dernier GanttProject 1.11.1 à partir des sources. Il y a une erreur dans le build.xml qui empêche d'exécuter , il faut que ce soit ainsi  dans la cible  "prepare" :

        <copy todir="${build.dest}">
            <fileset dir="${data.dir}/resources">
                        <exclude name="dtd/**"></exclude>
                        <!-- <exclude name="language/**"></exclude> -->
            </fileset>
        </copy>

Heureusement ça a été corrigé dans le CVS:
http://cvs.sourceforge.net/viewcvs.py/ganttproject/ganttproject/build.xml?rev=1.85&view=auto

2005-04-28

liste des Java Specification Requests (JSR)

JJe parcours la liste des Java Specification Requests (JSR) , je tombe sur ceci ????
Je lis la nouvelle spécification JSR de l'API pour la gestion de la persistence et la correspondance object/relationelle.
 


mission de développement sans le minimum vital


C'est la dernière fois que j'accepte une mission de développement en équipe sans le minimum vital:

Lors de ma dernière mission, il n'y avait rien de tout cela! En bref il faut se raprocher au maximum des bonnes pratiques eXtreme Programming (voir Extreme Programming: A Gentle Introduction ).

2005-04-24

Lucene

Il était temps de tester Lucene ! Je veux évaluer le produit, et surtout comparer avec une base données XML telle que eXist (dont je suis un développeur). Je commence par exécuter la démo. de base :
About the basic Lucene demo and its usage

Les commandes que j'ai tapées:
ant; ant jar-demo
# indexation du répertoire des sources de Lucene (un exemple comme un autre):
java -cp build/lucene-1.5-rc1-dev.jar:build/lucene-demos-1.5-rc1-dev.jar \
        org.apache.lucene.demo.IndexFiles ./src
# interrogation de l'index en ligne de commande :
java -cp build/lucene-1.5-rc1-dev.jar:build/lucene-demos-1.5-rc1-dev.jar \
        org.apache.lucene.demo.SearchFiles

Le dialogue résultant :

Query: stopword
Searching for: stopword
1 total matching documents
0. ./src/java/org/apache/lucene/analysis/de/WordlistLoader.java

Je regarde à quoi ressemble la base de données sur disque :

$ ls -l index
total 364
-rw-r--r--  1 jmv jmv 359108 avr 24 12:36 _8i.cfs
-rw-r--r--  1 jmv jmv      4 avr 24 12:36 deletable
-rw-r--r--  1 jmv jmv     28 avr 24 12:36 segments
$ du -s  index src
368     index
3832    src

Soit un rapport 1/10 entre la taille de l'index et celle des fichiers bruts. Je détruis le répertoire index/ pour indexer maintenant un ensemble de fichiers XML avec lequel j'ai déjà fait des tests de performance avec eXist. Le temps d'indexation, mesuré par la commande time, est :

   37,62s user 11,24s system 20% cpu 3:57,64 total

C'est 6 minutes pour eXist. L'interrogation de l'index en ligne de commande est très rapide à l'oeil. Elle dure 300 ms pour eXist. Je modifie

src/demo/org/apache/lucene/demo/SearchFiles.java
        long t0 = System.currentTimeMillis();
        Hits hits = searcher.search(query);
        long t1 = System.currentTimeMillis();
        System.out.println(hits.length() + " total matching documents; " + 
                (t1-t0) + "ms elapsed." );

pour imprimer le temps écoulé. Il n'y a pas photo! L'interrogation dure 66ms avec Lucene, et 1ms la deuxième fois. Si on pouvait réutiliser Lucene dans certaines parties de eXist!

2005-04-02

Ca fait du bien de revenir sous Linux

Je viens de récupérer mon portable après plusieurs semaines de réparations. RCB m'en avait prêté un autre, sous XP. Ca fait du bien de revenir sous Linux, même si cygwin, Mozilla et eclipse m'aidaient.

Après un contact avec un serveur DHCP peut-être inamical, j'ai configuré à la main mon portable :

/sbin/ifconfig eth0 10.0.0.222 netmask 255.255.255.0
route add default gw 10.0.0.1 dev eth0

Ce site n'est mal, parmi bien d'autres :
Linux Tutorial - Linux Network Administration

Ras le bol de Mandrake Cooker, il faut se mettre à jour plusieurs fois par semaine, et on n'est pas à l'abri de mauvaises surprises, surtout si on est resté des semaines sans mises à jour. Je suis repassé à la version Mandrake 10.1 pure et simple. J'ai utilisé le site
http://easyurpmi.zarb.org pour configurer les medias (sources de paquetages) pour urpmi et rpmdrake; la mise à jour par le réseau est bien commode.


Le portail des projets Java, open source et autres :
java.net

2005-01-31

ma présentation sur les architectures Web et Serveurs d'applications

J'ai mis quelque peu à jour ma présentation sur les architectures Web et Serveurs d'applications (au format OpenOffice bien sûr).

Devant préparer une formation sur EJB, c'est l'occasion de passer en revue les ressources francophones en supports de formation.

A LIRE: ce cours sur les Systèmes d'inférences: http://www.lifl.fr/~routier/enseignement/si.html

2005-01-17

Il y a une nouvelle version 2.7 de XSB (voir plus bas Prolog et bases relationnelles). J'ai aussi essayé XQuark Bridge, qui offre une vue XQuery de bases relationnelles .

2005-01-11

Spring

Echange avec un ancien collègue:

Je travaille à la refonte du système d'information en technologie J2EE.
Pour l'instant, nous en sommes aux spécifications et justement j'étais en train de me demander comment faire le mapping objet/relationnel (pas envie d'employer les EJB entity).

C'est jouable de baser un nouveau système la-dessus?

C'est très raisonnable pour ces raisons:


JavaComptoir - Blog sur J2EE et la vie en général.
Gurus, gourous, et experts

2004-12-31

Réflexions sur l'injection de dépendances

La référence est l'Article Inversion of Control Containers and the Dependency Injection pattern, par Martin Fowler; voir en particulier Setter Injection with Spring.

Les avantages de l'injection de dépendances:

Les problèmes de l'injection de dépendances:

Une solution serait d'utiliser une syntaxe comme BeanShell, suffisament proche de Java pour définir la configuration des objets. Il semble qu'il y ait ceci dans le "sandbox" de Spring. Mais il n'y a pas d'éditeur avec complétion pour BeanShell. Par contre j'ai trouvé en cherchant ça un plugin eclipse similaire à BlueJ: BluEclipse .

2004-12-16

Travaux pratiques bases relationnelles

En continuant les essais sur "Prolog et bases relationnelles", je dois tester ODBC indépendemment du moteur Prolog. J'ai utilisé ODBCConfig et DataManager du paquetage unixODBC-gui-qt pour configurer unixODBC et avoir une vue d'ensemble des bases.

J'ai aussi fait marcher postgresql avec le client SQuirrel, l'URL étant:
jdbc:postgresql://localhost/test
où "test" est le nom de la database.

Pour ODBC
l'URL est simplement:
jdbc:odbc:post1
où post1 est le nom du "User DSN" que j'ai donné à la même base PostGreSQL dans
ODBCConfig.

J'ai ainsi deux fenêtres dans SQuirrelL SQL avec la même base PostgreSQL, une avec le pilote ODBC via le pont JDBC-ODBC, l'autre avec le pilote JDBC direct. Je dois dire que JDBC direct marche mieux. Avec JDBC-ODBC, on peut faire des requêtes SQL, mais l'affichage de "Content" dans l'onglet "Objects" donne un ArrayIndexOutOfBoundsException.
Difficile de savoir si c'est un défaut e unixODBC, JDBC-ODBC, ou SQuirelL.

Je ne suis pas pas arrivé à faire tourner un autre client odbc. J'ai essayé Daft, mais il a besoin de tclodbc qui s'installe mal malgrès ces conseils .

2004-12-11

Suite à une discussion avec Michel Verdier, je regarde les bibliothèques graphiques. Je vais sûrement ajouter des implémentations dans ma pierre de Rosette des IHM. En effet je viens de trouver deux bibliothèques graphiques pour Java. Bien sûr Swing est très bien, mais il y a des soucis de licence (voir l'article de Linux Magazine de ce mois).

Java-gnome - Java binding for Gtk and Gnome

Java-GNOME is a Java binding for GTK and GNOME. It is implemented as a JNI layer that delegates the Java calls to the underlying native libraries.

Web page : http://java-gnome.sourceforge.net/
wx4j: A Java Binding for wxWidgets - wx4j is a Java binding for wxWidgets providing a Java GUI toolkit using native widgets.

2004-12-09

objet métier simple (POJO) bien réalisé par Spring

Je lis la fin de "J2EE dévelopment without EJB", l'application exemple JPetStore. Je vérifie que ma vision d'un objet transactionnel comme emballage (modèle décorateur) autour d'un objet métier simple (POJO) est bien réalisée par Spring.

Fédérer des bases de données

IBATIS

    En lisant Rod Johnson je me demande si iBATIS ne serait pas capable de fédérer des bases de données. Voici à quoi ressemble la configuration iBATIS:

<sqlMap namespace="Person">
   <select id="getPerson" resultClass="examples.domain.Person">
         SELECT
                PER_ID                   as id,
                PER_FIRST_NAME           as firstName,
                PER_LAST_NAME            as lastName,
                PER_BIRTH_DATE           as birthDate,
                PER_WEIGHT_KG            as weightInKilograms,
                PER_HEIGHT_M             as heightInMeters
         FROM PERSON
         WHERE PER_ID = #value#
   </select>
</sqlMap>

Les noms après "as" sont bien sûr les propriétés JavaBeans; simple, mais il fallait y penser. On voit qu'on peut entrer n'importe quelle requête SQL pour remplir l'objet Java.
Il y a aussi un outil intéressant sur leur site, sql2ibatis , qui génère le code Java et tout le reste à partir de déclarations SQL (create table).
En lisant le manuel, je vois qu'iBATIS n'est pas fait pour fédérer des bases de données (pas plus qu'Hibernate). Tous ces outils agissent sur une source JDBC ou DataSource. Il faut chercher des outils qui manipulent plusieurs sources JDBC ou DataSource.

Divers

En cherchant "federate several datasource jdbc" sur google je trouve ceci:
Daffodil Replicator Daffodil Replicator is a powerful Open Source data replication tool that allows bi-directional data synchronization between heterogeneous databases – Oracle, SQL Server, Postgre SQL, Derby, Daffodil DB – supporting JDBC drivers, triggers and procedures. 
Daffodil est une suite de produits intéressants en Java sous license GPL, avec notamment une base au standard SQL 99 qui concurrence HSQLDB (ex-Hypersonic). Mais ce que je cherche pour l'instant est un "simple" agrégateur de bases JDBC. En cherchant davantage je tombe sur ce projet ObjectWeb :
C-JDBC - Clustered JDBC gives your applications a transparent (no code modification) access to a cluster of databases even if your database engines are not cluster-aware.
Là l'accent est mis sur l'aspect "cluster", c'est à dire tolérance de pannes, répartition de charge, haute disponibilité. Tout cela est plus compliqué qu'un "simple" agrégateur de bases JDBC. Je commence à espérer que ce n'est pas si compliqué à réaliser. Il faudrait en savoir plus sur les dernières specs JDBC et SQL.

J'ai publié une question "federate several datasources" dans  news://comp.lang.java.databases
Il y a des réponses.

PostgreSQL Replication


Prolog et bases relationnelles

Il faut aussi que j'examine plus avant XSB pour sa capacité à faire de la Programmation Logique en s'appuyant sur les faits pris dans une base relationnelle. J'ai compilé, installé, et exécuté sans problème XSB-2_6 . Ensuite XSB fonctionne comme n'importe quel Prolog; cf ma page prolog-getting-started .

cd /usr/src/w/XSB/build
 ./configure --with-odbc
 ./makexsb
xsb
[xsb_configuration loaded]
[sysinitrc loaded]
[packaging loaded]
XSB Version 2.6 (Duff) of June 24, 2003
[i686-pc-linux-gnu; mode: optimal; engine: slg-wam; gc: indirection; scheduling: local]
| ?- import odbc_open/3 from odbc_call.
yes
| ?- odbc_open(post1,'jmv','').
| ?- import odbc_sql/4 from odbc_call.
yes
| ?- odbc_sql(post1, [], 'select * from my_table', Resu).

A SUIVRE ....


SWI-Prolog a aussi une interface ODBC , moins riche.



Il est temps pour une Grande Unification des sources de données: relationnel, Objet, Ontologies; comme Java a été en son temps la normalisation d'un ensemble d'idées Orientées Objets.


Une sélection de projets ObjectWeb :
Apollon - Generation engine able to build graphical user interfaces (GUI) from DTDs and customization models. This makes the GUIs adapted to the edition of XML documents.
XQuark - The XQuark project provides a set of Java components for extending J2EE platforms with XML-based, heterogeneous information integration capabilities, using the XQuery language
JOTM - JOTM (Java Open Transaction Manager) is a fully functional open source standalone transaction manager that implements the XA protocol and is compliant with the JTA APIs.
JORM - JORM (Java Object Repository Mapping) is an open source adaptable persistence service.
MEDOR - MEDOR stands for Middleware Enabling Distributed Object Requests The MEDOR project, lead by France Telecom R&D allows the expression, optimisation and evaluation of queries on heterogeneous distributed objects.
MEDOR Distributed objects Request Manager.

DataVision DataVision is a database reporting tool similar to Crystal Reports. It supports many data sources (JDBC, files) and many output formats (HTML, XML, PDF, LaTeX, comma- and tab-separated files, DocBook). Drag-and-drop GUI editing. Reports stored as XML.

2004-11-28

Eclipse Project 3.1 Draft Plan

Formats UML et interopérabilité

Précisions sur les différents dialectes XMI et UML, et autres formats pour les méta-données UML.
J'ai mis à jour mon vieil article de 2002 "Languages pour la metadonnée - une vue d'ensemble".

Coral modeleur UML en Python

Le modeleur UML en Python Coral est prometteur. Il comprend XMI 1.2 ET XMI 2.0 . Il y a un shell Python dans l'interface graphique, et un visualiseur de diagrammes. Mais il y a très peu de docs.

Petit problème à l'installation, mais on peut le lancer à partir du répertoire de construction:

rpm --recompile  ~jmv/distribs/linux/coral-0.7.6-1.src.rpm
 .............
Building libraries symlinks...done
Traitement des fichiers: coral-0.7.6-1
erreur: Fichier non trouvé: /var/tmp/coral-buildroot/usr/share/man/man1/coral.1.gz
erreur: Fichier non trouvé: /var/tmp/coral-buildroot/usr/share/man/man1/coral-start.1.gz
Erreur de construction de RPM:
    Fichier non trouvé: /var/tmp/coral-buildroot/usr/share/man/man1/coral.1.gz
    Fichier non trouvé: /var/tmp/coral-buildroot/usr/share/man/man1/coral-start.1.gz

Même ce dimanche après-midi, j'ai eu une réponse sur Coral !


IDEE: utiliser un modeleur UML comme éditeur de correspondances objet-relationnel.
Exadel ORM ne marche pas .

2004-11-25

Si ça continue, je vais abandonner mon gvim! Voilà que le dernier eclipse (Version: 3.1.0, Build id: 200411050810 ) a un éditeur générique XML, avec complétion des balises en fonction du contenu, catalogues des DTD, éditeur XML Schema.
Le plugin EMF est capable de lire un fichier MDL de Rational Rose. A partir de ça, l'extension JET paut générer du code Java avec un bon niveau de réglages.

2004-11-17

En parcourant le site de Martin Fowler (http://www.martinfowler.com/books.html#ap : M. Fowler lui-même dit que son bouquin est vieux ), je trouve plusieurs documents qui se rapportent un peu à mon vieux rêve: trouver un site référentiel de conceptions métier:

2004-11-13

Urbanisation

J'ai déjà travaillé 2 semaines sur un contrat de cartographie du système d'information, dans le domaine des Télécoms. Je fais de la rétro-conception UML de bases relationnelles existantes, interrogeant aussi des experts métiers. J'aimerais bien trouver un outil open source de fédération de bases relationnelles (EII = Enterprise Information Integration ) analogue à DB2II de IBM.

EAI et EII

EAI = Enterprise Application Integration est different de EII . Les EAI sont des plaques tournantes basées sur le modèle publication-abonnement, avec des messages vus comme XML, plus des fonctionalités de transformation par rapport à un format pivot. L'archétype de l'EAI c'est Biztalk . Tandis que les EII agissent au niveaux des bases relationnelles.

Test IHM pour bases de données

Voir aussi ma page spéciale sur bases relationelles .

Remettre à neuf une base PostGreSQL

On suppose qu'on a une base currompue ou presque vide. Les commandes sont les suivantes:

rm -rf $PGDATA/.* $PGDATA/.*
sudo -u postgres initdb
/etc/init.d/postgresql start


Si on a le message :

Initialisation de la base de données :You are required to change your password immediately (password aged)
Changing password for postgres
(current) UNIX password: su: Mot de passe incorrect.

il faut réinitialiser le mot de passe de l'utilisateur posgres :

passwd postgres

2004-11-12

Mes pages d'experts :


J'ai regardé les commons Apache, il y a à boire et à manger. En particulier j'ai remarqué jxpath ( http://jakarta.apache.org/commons/jxpath/ ) . C'est une bonne idée que j'aurais aimé avoir !

Dans cet ordre d'idées je voudrais voir au moins un de ces outils basés sur JavaBeans avec un modèle itérateur + visiteur, sinon je le fais . Il y a plein d'outils qui bénéfifieraient d'un itérateur JavaBeans réutilisable:

2004-11-11

Hibernate, EII, etc

J'apprends Hibernate dans la nouvelle traduction de la documentation en Français . Mon but est , entre autres, de voir comment l'utiliser comme une brique d'un outil de EII (Enterprise Information Integration  ). Au premier regard, ce ne semble pas être le cas, il n'y a qu'une seule base connectable, ou alors un pool (DataSource).

Dans un autre ordre d'idées , il y a XSB , une implémentation Prolog qui permet de se connecter à une base relationnelle; je cite:
This interface allows Oracle tables to be accessed from XSB's environment as though they existed as facts. All database accesses are done on the fly allowing XSB to sit alongside other concurrent tasks.

Our interface gives an Oracle programmer all the features of Prolog as a query language including intensional database specification, recursion, the ability to deal with incomplete knowledge, inference control through the cut operation, and the representation of negative knowledge through negation.



Divers

Je télécharge eclipse 3.1M3 ; comme d'habitude pas mal de nouveautés, par exemple le support Java 1.5 avance .

2004-11-03

Portabilité UML / XMI et ArgoUML

J'ai un fichier apparemment en XMI 1.1 et UML 1.3 sortant d'un outil que charitablement je ne nommerais pas. Il commence par:

<!DOCTYPE XMI SYSTEM 'UMLX13-11.dtd' >
<XMI timestamp="Wed Nov 03 10:02:40 2004" xmi.version="1.1" xmlns:UML="href://org.omg/UML/1.3">
  <XMI.header>
    <XMI.documentation>
      <XMI.exporter>Unicorn System</XMI.exporter>
      <XMI.exporterVersion>3.1.7.100.4-000.0</XMI.exporterVersion></XMI.documentation>
    <XMI.metamodel xmi.name="UML" xmi.version="1.3"></XMI.metamodel></XMI.header>
  <XMI.content>
    <UML:Model isAbstract="false" isLeaf="false" isRoot="false" isSpecification="false" 

Ce qui donne ce message avec ArgoUML:

[Warning] Resource 'file:/home/jmv/contrats/acp/UMLX13-11.dtd' not found. Default XMI DTD will be used instead.
[Error] Illegal element 'UML:Namespace.ownedElement'
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException
 at org.argouml.kernel.Project.addModel(Project.java:626)

Tandis qu'un fichier sortant de ArgoUML se présente ainsi:

<?xml version="1.0" encoding="UTF-8"?>
<XMI xmi.version="1.0">
  <XMI.header>
    <XMI.documentation>
      <XMI.exporter>Novosoft UML Library</XMI.exporter>
      <XMI.exporterVersion>0.4.20</XMI.exporterVersion>
    </XMI.documentation>
    <XMI.metamodel xmi.name="UML" xmi.version="1.3"/>
  </XMI.header>
  <XMI.content>
    <Model_Management.Model xmi.id="xmi.1" xmi.uuid="127-0-0-1--57eff9f4:fedf915d4c:-8000">
      <Foundation.Core.ModelElement.name>untitledModel</Foundation.Core.ModelElement.name>
      <Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
      <Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
      <Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
      <Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
      <Foundation.Core.Namespace.ownedElement>
        <Foundation.Core.Class xmi.id="xmi.2" xmi.uuid="127-0-0-1--57eff9f4:fedf915d4c:-7ffe">

Il y a un outil de conversion commercial avec version gratuite : Meta Integration Model Bridge .
Autres outils XMI - UML :

2004-10-15

Démarrer avec spring

samples/webapp-minimal
Comme expliqué dans lib/readme.txt

export spring=/usr/src/usr2/spring-framework-1.1
cd samples/webapp-minimal/lib
ln -s $spring/lib/j2ee/servlet.jar .
ln -s $spring/dist/spring.jar .
ln -s $spring/lib/jakarta-commons/commons-logging.jar .
cd ..
ant warfile

Formation Corba

Formation donnée sur  Corba en Java (ORB du JDK) et C++ (OmniORB) sur RedHat .
Dans la foulée je compile l'ORB ACE + TAO (ACE_wrappers).

2004-10-04

Hier j'ai fini le plan de cours pour un grand organisme de formation sur:

Pendant que j'y suis, je vais expliciter de sujets de séminaires pour introduire des développeurs expérimentés à des sujets techniquement mûrs mais encore mal connus :

Voir détails dans ma page formations rubrique séminaires .

2004-10-02

Praticiens de Paris de XP-France

Avant-hier exposé très intéressant de Marc Godin aux
Praticiens De Paris de XP-France sur:
Lightweight framework for Lightweight methodologies ?

Résumé - Lightweight framework for Lightweight methodologies

Les frameworks (traduction Française ?) de type Spring ou PicoContainer répondent à deux problèmes de base dans n'importe quel développement basé sur des interfaces (au sens Java du mot, pure virtuel en C++):

  1. pouvoir configurer quelle implémentation on associe à une interface

  2. en plus de 1. , pouvoir configurer les implémentations qu'on instancie

Le tout se fait par des fabriques, lesquelles sont configurées au début de l'exécution par du code ou du XML.
L'inversion de contrôle (IoC), alias injection de dépendances, veut dire ceci: c'est le framework, et non le code utilisateur qui appelle les constructeurs et les setXXX(). Ces frameworks sont donc non intrusifs, i.e. ils n'exigent rien de particulier des classes métier, qui sont des POJO (Plain Old Java Object). POJO est devenu un mot à mode.

Au dessus de ce socle, Spring a ajouté plein de briques spécifiques Spring ou venant de l'extérieur. Le tout arrive à avoir les mêmes possibilités qu'un serveur d'application (JBoss, ObjectWeb-Jonas, WebSphere, WebLogic, ...). En particulier, on peut configurer les transactions de façon déclarative, sans coder.

Commentaires JMV

Au sujet des frameworks, on aurait pu parler d'un autre problème de base dans n'importe quel développement: comment ajouter des fonctionalités sans avoir à parcourir tout le code pour savoir où s'insérer. En fait, idéalement, on aimerait ajouter une fonctionalité sans aucunement modifier le code existant. Le framework eclipse, avec ses plugins et la notion de point d'insertion, le permet. Bien sûr, il n'y a pas de miracle, les nouvelles fonctionalités ne peuvent être ajoutées qu'aux points d'insertion prévus à l'avance. Bien sûr, c'est particulièrement adapté à une IHM, où les nouvelles fonctionalités se greffent nécessairement à des objets graphiques déjà existants (menus déroulants, palettes de boutons etc).
Pour faire la liaison avec les conteneurs à injection de dépendances, on peut dire que c'est un pas de plus. Non seulement le framework prend en charge le choix et la configuration de l'implémentation, mais en plus il instancie ces implémentations dans le bon contexte.

Un autre sujet intéressant, sur lequel je n'ai aucune piste. Ces modèles de conception "injection de dépendances" et "point d'insertion" sont tellement utiles qu'on pourrait les ajouter dans un langage de programmation. Ce serait une façon de réduire la "fracture sociale" du développement où chacun utilise son framework, alors qu'ils ont en fait beaucoup de concepts en commun.

Annexes

Quelques outils et URL cités par Marc:
Article Inversion of Control Containers and the Dependency Injection pattern, par Martin Fowler

Gurus, gourous, and experts (version mise à jour)



Bouquins
Domain-Driven Design: Book

Book Review: J2EE Development without EJB
Patterns of Enterprise Application Architecture (P of EAA).



2004-10-01

Netbeans 4.0 beta2

J'ai téléchargé le nouveau Netbeans avec Java 1.5 . Ca marche assez bien. Pour mettre au point des servlets et des JSP ça marche bien. Alors que la semaine précédente j'avais galéré avec Lomboz sur eclipse, qui marchait de façon intermittente. NetBeans est livré avec un Tomcat 5.0.28 qui marche bien ensemble. L'application web déployée est dans le sous-répertoire
build/web
du projet courant. NetBeans n'arrive pas à lancer Mozilla. L'URL de l'application web est à copier depuis l'onglet "nom du projet (run)".

On peut déployer des fichiers .war ici :

$HOME/.netbeans/4.0beta2/jakarta-tomcat-5.0.28_base/webapps

2004-09-27

formation services Web

Je finis de préparer ma formation services Web . Il y a plein de question qui n'ont pas encore trouvé leur place là-dedans: sécurité, WS-I, REST versus SOAP.

J'ai mis à jour mon agenda, avec en particulier les prochaines réunions de mes communautés .

2004-09-23

Damned! J'ai encore raté le rendez-vous de sparklingPoint : échanges sur l'e-business et la gestion de contenu. Communauté d'échanges d'expériences. Ce devait être diablement intéressant, avec le PDG d'IdealX qui a parlé du logiciel libre. Il faut d'ailleurs que je fasse une page sur mes communautés .

J'ai aussi ajouté une page sur cygwin, le sublime environnement qui permet d'avoir 80% de Linux par-dessus Windows.

2004-09-15

QCM Java


Cherchant un éditeur PHP, j'ai trouvé Quanta+. Il a la complétion des noms de fonction.

PyDBDesigner

2004-08-31

modèle de conception DAO

Une présentation de l'accés aux données (modèle de conception DAO) à 
http://www.corej2eepatterns.com/Patterns2ndEd/DataAccessObject.htm, ou, de 
façon plus complète à 
http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html, 

2004-08-26

syntaxe pour les dates avec MySQL

La bonne syntaxe pour les dates avec MySQL:

drop table reservations;
create table reservations ( date_res datetime PRIMARY KEY, 
  personne varchar(100) NOT NULL );
select * from reservations;
insert into reservations VALUES( '2004-08-30', 'Robert' );
insert into reservations VALUES( '2004-08-30 12', 'Berthe' );



2004-08-12

Une perle de traduction automatique

La perle de perl CPAN (http://cpan.uwinnipeg.ca/mirror) :

Avec cette forme vous pouvez indiquer d'où vous voulez chercher des téléchargements (ceci exige des biscuits d'être permis).Votre arrangement de courant est http://cpan.uwinnipeg.ca/cpan. Le lien de multiplexeur de http://cpan.uwinnipeg.ca/cpan essayera de vous réorienter à un miroir voisin de CPAN, basé sur votre pays d'origine.

2004-08-04

Un petit article intitulé " Développement d’une ontologie 101 : Guide pour la création de votre première ontologie" (traduction d'une doc. pour Protégé).



Plugin Java pour mozilla :

cd /usr/local/mozilla/plugins
ln -s
 $JAVA_HOME/jre/plugin/i386/ns610-gcc32/libjavaplugin_oji.so .



2004-07-31

Hier j'ai essayé le plug-in jambalaya livré avec  protégé. Protégé est un éditeur d'ontologies. Jambalaya présente des vues sous forme de graphe, avec les positionnements classiques: arbre horizontal ou vertical, algorithme du ressort, étoile. J'ai quand même eu un plantage de la JVM en chargeant SUMO dans Jambalaya ...

Si on veut essayer:
http://www.thechiselgroup.org/jambalaya/install : Running Jambalaya
En fait ce groupe de recherche Australien a plein de projets intéressants, notamment un plugin pour eclipse. Mais je n'ai pas trouvé de source :-(( .

Un article intéressant sur KIF, le langage neutre utilisé pour développer SUMO:
http://www.cs.umbc.edu/kse/kif/kif101.shtml

Les questions que je me pose à ce stade:

2004-07-29

Ontologie SUMO

J'ai écouté la présentation sur l'Ontologie SUMO (allongé au soleil sur la terrasse). Celle dont le lien est en bas de la page SUMO (http://ontologyportal.org/). Je pense que mes petits-enfants auront en collège des cours là-dessus, alors que maintenant c'est un sujet pour quelques thésards.

2004-07-27

Test: Protégé

Protégé est un éditeur d'ontologies OWL et CLIPS. J'essaye de charger un fichier RDFS simple. Et ça fait traceback !?! Il faudrait peut-être essayer le plug-in RDF. En fait ce truc est opensource :-( .

L'IHM pour les requêtes est mauvaise, elle mêle la création de requetes avec l'exécution de requetes.

Test: ArgoUML

J'utilise à nouveau ArgoUML après plusieurs mois. Je fais ma première contrainte OCL:

context Table inv used : classes -> size + functions -> size > 0

ce qui veut dire en Français: "dans le context de la classe Table on a l'invariant suivant: la somme des cardinalités des associations classes et functions est > 0".

Je constate que la génération Java est tout à fait insuffisante. Heureusement il y a d'autres projets OSS qui s'occupent de ça. Créer des instances d'objets n'est toujours pas possible (pas plus qu'avec umbrello). Et umbrello (UML 1.???) n'est pas interopérable avec ArgoUML (UML 1.3).

2004-07-25

Notes sur métadonnées, modèles et ontologies

En IA et ontologies, il n'y a pas en général pas de différence explicite entre concept et instance, c'est plutôt considéré comme une généralisation au même titre qu'une généralisation entre concepts (héritage en OO).

D'habitude on travaille au niveau M0 au sens MOF (instances, objets); le niveau M1 (classes) est figé, mais cela dépend de l'application. On peut avoir des applications qui manipulent (en création et modification) plusieurs niveaux en même temps:

Si on travaille sur plusieurs niveaux d'abstraction, il faut pouvoir ajouter dynamiquement du comportement, i.e. des implémentations de méthodes.

Certains langages interprétés comme Python facilitent le travail sur plusieurs niveaux d'abstraction. Il suffit de générer un source de méthode et d'utiliser la fonction eval() pour l'ajouter à une classe. Cependant en Java on peut faire l'équivalent en chargeant dynamiquement une classe qui vient d'être compilée par programme. L'antatage de Java c'est bien sur d'avoir une vérification des types dès la compilation (et après aussi la JVM fait des vérifications).

En fait je sens venir une formation sur les métadonnées, théorique et pratique: comment brasser au mieux SQL, RDFS, MOF/UML, IDL, langages Java - C++, XML Schema, ontologies (KIF, DAML etc). Il faudrait parler des outils: éditeurs, navigateurs, raisonneurs, valideurs, gestion. Et des catégories d'application: raisonnement, fusion de données/métadonnées, référentiels, bases de connaissance.

Une présentation intéressante sur la convergence UML et ontologies:

MDA Standards for Ontology Development . p. 46, 58 <<< à réutiliser; Protégé ne semble pas faire XMI??

Languages pour la metadonnée - une vue d'ensemble - Jean-Marc Vanel 2002 (serait à mettre à jour !)

Questions que je me pose:

Idée: référentiel de XML Schema avec eXist

Ca fait longtemps que j'ai envie d'essayer de faire un repository (référentiel, réceptacle) de XML Schema avec eXist. Avec le projet de référentiel d'entreprise dans lequel je travaille en ce moment, l'idée supplémentaire est de stocker aussi les métadonnées SQL et applications. Pour cela, il peut etre bon de réutiliser les standards OMG: CWM, MOF, XMI.. Cela pose pas mal de questions:

Additifs eclipse

Je mets à jour mes additifs (plugins) eclipse suite à eclipse 3.0 :

Je fais aussi mon marché dans les nouveautés eclipse sur le site eclipse-plugins.2y.net :

Je réalise que c'est une preuve de dynamisme des projets que d'avoir un plugin eclipse, tout comme autrefois d'avoir un build.xml. A tel point que les projets qui n'en ont pas vont bientot etre soupçonnés d'etre peu actifs et peu au courant de l'actualité.

2004-07-24

Repository et CWM

Je me penche sur la spec. CWM pour répondre à ces questions:

D'une manière générale, ce qui me fascine dans ce genre de concepts, c'est le serpent qui se mord la queue, ici par exemple:

site intéressant: www.cwmforum.org

2004-07-21

Ontologies DAML

Je regarde les ontologies DAML disponibles:

http://www.daml.org/ontologies/keyword.html

Finlement ça se rapproche beaucoup de ce qui depuis des années est mon Saint-Graal (voir OO + free software = synergy [dream] ): avoir des Conceptions Réutilisables, voire simplement des Schema de bases de données, pour les objets courants de l'informatique de gestion. Seulement je cherchais ça sous forme XMI/IDL/Java/C++. Mais finalement un langage dédié à la repréentation de la connaissance comme DAML-OIL est mieux adapté. On doit pouvoir en extraire des interfaces Java, alors que la transformation inverse créerait une déperdition d'information.

2004-07-20

J2EE et Modèles de Conception

J'avais depuis quelques mois ce bouquin sans avoir le temps de le lire:
J2EE et les Design Patterns, de Alur, Crup & Malks.

Je l'ai ouvert parce qu'un développeur (Frédéric ) m'a parlé du Modèle de Conception DAO (Data Access Objects). Je crois que maintenant je vais le lire en entier.

eXtreme Programming et Open source

Publié sur la liste de courrier http://fr.groups.yahoo.com/group/xp-france/

En attendant des contrats plus rémunérateurs, je m'occupe d'un projet
open source, eXist (http://exist-db.org/), une base de données XML 100%
Java. C'est un projet hébergé sur sourceforge.net.

Il y a eu des problèmes de qualité récemment (accès concurrents etc).
Il y a des problèmes liés au fait qu'il y a un seul développeur qui fait
90% du source.
Il y a des problèmes liés aux utilisateurs qui ne savent pas toujours
faire des rapports de bugs et encore moins sous la forme JUnit.
De toute façons, le nombre de tests JUnit (20) est insuffisant.

Pour arranger ce dernier point, j'essaye dans la liste de discussion de
pousser les utilisateurs à faire des rapports de bugs sous la forme
JUnit. J'ai écrit une page pour aider:
http://jmvanel.free.fr/exist/howto-test.html
Pas encore de succès depuis quelques jours...

Bien sûr quand je fais une correction, j'écris le JUnit correspondant.
Mais Wolfgang ne travaille pas (encore ?) comme ça...

Alors mes questions:

Cela pourrait être un éditeur de source où l'on peut:

Une application X-Window peut-être?


2004-07-19

Formation Modèles de Conception

Je viens de donner une formation sur les Design Patterns et le Refactoring en Java, avec eclipse 3.0 bien sûr. Il y a un exemple de publication - abonnement avec une (petite) base de données géographiques, avec une version en ligne de commande et une version Swing, et une huitaine d'autres exercices, dont certains basés sur mon environnement de simulation 2D ecolosim.
Tout comme Bruce Eckell, je ne suis pas satisfait de la présentation donnée dans le livre de E. Gamma et Cie. Etant mathématicien, je me suis intéressé à la structure plus qu'à l'intention. J'ai présenté les Concepts derrière les Design Patterns :

Nous avons abordé aussi CVS, JUnit, eXreme Programming, Ant .
Présentations: Modèles de Conception (Design Patterns); Refactoring (restructuration de code), le tout au format  OpenOffice.

PC vendu avec Linux

Ce jour est à marquer d'une pierre blanche. Dans ma boîte aux lettres, en plein mois de juillet, je trouve un propectus pour me vendre du matériel informatique. Du banal; oui mais en première page, un PC à 299 Euros, vendu avec MandrakeLinux 10.0 Discovery (pas préinstallé apparemment), et sans Windows. Allez, un peu de pub., ils s'appelent planète Saturne.

Depuis le temps que j'attendais cela! Je pense que ça va faire boule de neige et qu'on va voir les grandes marques s'y mettre. Qui va commencer ?

2004-07-06

Système d'Information pour la formation

Suite aux dernières formations que j'ai données (Java débutants, C++, PHP), voici quelques réflexions et pistes pour améliorer les choses.

Le grand problèmes est l'hétérogénéité des stagiaires:

Lié à ce problème de l'hétérogénéité, il y a deux problèmes connexes:

Voici quelques remèdes possibles:

Cela va aboutir à une formation de meilleure qualité, et décharger un peu plus les responsables formation. Accessoirement ce serait une vitrine des compétences du centre de formation.

2004-07-04

Essai de hsqldb

Comme je travaille beaucoup sur eXist, une base XML 100% Java et open source, il était naturel de s'intéresser à hsqldb (http://hsqldb.sourceforge.net), le pendant de eXist en relationel. Anciennement appelée Hypersonic DB, cette base est très petite (le jar ne fait que 260k) mais assez complète. Il y a une petite IHM, qu'on lance comme ceci:

java -cp lib/hsqldb.jar org.hsqldb.util.DatabaseManager

Il y a 4 façons de faire tourner hsqldb:

Voir "Running HSQLDB" dans http://hsqldb.sourceforge.net/doc/guide

C'est vraiment commode pour mettre au point un programme Java qui utilise une base relationnelle, sans se casser la tête avec les permissions, les mots de passe, la sécurité réseau.

2004-06-24

Biocase

Le protocole est indépendant du format de données. Les métadonnées et la propriété intellectuelle doivent pouvoir etre ajoutés de manière uniforme quel que soit la donnée atomique.

Cabri ?

2004-06-23

Recherche sur Internet:

mapping relational XML open source agregation

gestion historique modifications des bases de données: historical database

>>>>>>>>>> Ci-dessus une flèche en SVG ajoutée avec amaya <<<<<<<<<<

touchpad sous Linux

Mon touchpad fonctionne ! Sur mon portable Clevo/notebook Computer D410V. Un extrait de mon /etc/X11/XF86Config-4 :

Section "ServerFlags"
    AllowMouseOpenFail # allows the server to start up even if the mouse doesn't work
EndSection
Section "InputDevice"
    Identifier "Mouse1"
    Driver "mouse"
    Option "Protocol" "IMPS/2"
    Option "Device" "/dev/mouse"
    Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
    Identifier "Mouse2"
    Driver "mouse"
    Option "Protocol" "IMPS/2"
    Option "Device" "/dev/psaux"
    Option "ZAxisMapping" "4 5"
EndSection
Section "ServerLayout"
    Identifier "layout1"
    InputDevice "Keyboard1" "CoreKeyboard"
    InputDevice "Mouse1" "CorePointer"
    InputDevice "Mouse2" "SendCoreEvents"
    Screen "screen1"
EndSection

2004-06-21

Les collections du Museum

Par Nicolas Bailly

Maitenant on a des formulaires de saisie en Java.

"On finira jamais, donc c'est pas la peine de commencer".

Réflexions sur les problèmes des bases taxonomiques

2004-06-21

Formation sur GBIF

24 millions d'enregistrements

GBIF = 14 employés, budget 1.5 millions $ /an

Risques:

persistence & et unicité des identificateurs: il y a des problèmes: index

SMIB = Système mondial d'information sur la biobiversité ?

circa.gbif.net

On peut retirer l'information à tout moment (exemple information sensible), mais pour l'instant cela n'est pas retiré des caches.

pas de protocoles sécurisés pour les informations sensibles.

Services d'hébergement: une base de donnée par organisation.

Tout le code est sur le CVS de sourceforge.

Pas d'images avant 2006! JMV: pourquoi cela pose-t-il des problèmes?

ENBI =? European Network Biodiversity ; projet Enropéen à durée déterminée.

Problèmes avec les noms de pays: anciens pays

Zamia pseudoparasitica : épiphyte

permien: coléoptères, mouches

Togo: 460 espèces horticoles

IRD: Chevillotte: herbier de Guyane (140 000 specimen), Nouméa, Tahiti

ITIS: base centralisée pour USA, Canada, Mexique; plantes OK

species2000: fédération de DB, associé à ITIS

CDROM 350000 noms ITIS+species2000

nomenclature: intersection non vide avec GBIF, animosités

Tela-botanica

Partenariat Fédéral sur l'information en Biodiversité.

SITI services XML

passerelle ICSOB: moteur de recherche sur spécimens etc

avant Biocase DIGIR: TSA, REMIB

index de métadonnées: identification taxonomique, lo, lat, date, source

association entre séquences de gènes et spécimens ==> lien avec bases génétiques et moléculaires.

Species Bank

Kew bouquin euphorbiaceae,


Pour compléter les idées du 2004-04-27 (organiseur d'idées), il faudrait considérer l'apport de RDF, comme formalisation mais aussi comme format de stockage dans la base, et bien sur comme format d'échange. Les triplets considérés seraient:

ressource: la note, a priori définie par son URI

propriété: au-sujet-de (alias se-rattache-à)

valeur: un sujet déjà défini, aussi un URI

Il faudrait voir si dans OWL ou ailleurs il n'y a pas des Schema RDF déjà définis pour ces choses. Il faudrait voir aussi si il n'y a pas des choses à récupérer dans Protégé, l'éditeur RDF Java Open-Source. Il faudrait aussi spécifier comment réutiliser ce que j'ai avec JGraph, XML et XQuery.

Egalement pour l'implémentation il faudrait voir si mon Modèle de Conception "XML + comportement" tient la route. C'est à dire que les objets ont une double nature: ils implémentent org.w3c.Node (en fait Element ou Document), et d'autre part un comportement "métier".

NoteStorage {

store(Node, String)

}


Il faudrait trouver des choses sur le mapping objet-relationnel en C++, ainsi que sur les timer et le threads.

2004-06-17

Formation Java débutants

Après 3 jours de formation sur Java débutant, je m'aperçois qu'il est plus facile d'expliquer l'héritage et le polymorphisme que l'encapsulation. Je m'aperçois ausi que meme si le livre "Conception Objet en Java avec BlueJ" est excellent en tant que livre, comme inspiration pour une formation courte ça ne suffit pas.

Ajouté le 2004-06-19:

En fait Java n'est tout simplement pas un langage pour programmeur débutant, ou alors il faut l'aborder avec BeanShell, si Java est le but final. Si Java n'est pas le but final, on peut débuter en programmation avec Python.


gcc 3.5

Je mets à jour ma copie CVS de gcc 3.5 . Je vois que quelques dizaines de choses ont changé, comme :

gcc/libjava/javax/swing/RepaintManager.java

Plus je pense à gcc, plus je vois son importance dans la lutte entre le logiciel libre et le reste, et aussi dans la lutte d'influence plus feutrée entre les acteurs du libre. RedHat prend une part importante dans la suite gcc. C'est un bon choix, car gcc permettra à terme de mélanger les langages et les plateformes plus simplement et plus efficacement que tous les bytecodes et les RPC du monde.


Java 1.5

http://java.sun.com/developer/technicalArticles/releases/j2se15/

Un petit échantillon qui mélange la généricité, l' "auto-boxing" et la boucle for améliorée:

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(0, new Integer(42));
int total = list.get(0);
// i n'est pas l'indice, c'est le contenu
for (Integer i : list) {
  System.out.println( i );
}

2004-06-12

Compilation de gcj

Maintenant que j'ai une machine à 2.4GHz, j'essaye de compiler un snapshot de gcj ( gcc-3.5-20040606 ). Je suis la recette ici:

Et ça ne marche pas !!!! Après 2 heures de compilation juste pour le bootstrap il y a une erreur! Sans doute dans un Makefile:

/usr/bin/ld: cannot open java/awt/event/.libs/ComponentAdapter.o: No such file or directory
make[3]: *** [libgcj.la] Erreur 1
make[3]: Leaving directory `/usr/src/compile/objdir/i686-pc-linux-gnu/libjava'

Le problème c'est que c'est CompOnentAdapter.o qui existe, et je ne sais pas pourquoi. Il ont bien raison de recommander un accès par CVS au source! (http://gcc.gnu.org/snapshots.html). C'est ce que je fais, et, après trois heures de compilation, je peux faire un Helloworld.

unset CLASSPATH
/home/jm/usr2/gcc/bin/gcj --main=HelloWorld HelloWorld.java
export LD_LIBRARY_PATH=/home/jm/usr2/gcc/lib
 ./a.out

Maintenant pour essayer les nouvelles implémentations swing, il faut encore configurer le toolkit GTK. Voir les options "AWT-Specific Options" dans :

http://gcc.gnu.org/install/configure.html

Donc finalement je dois tout recommencer avec:

../gcc/configure --enable-threads=posix --prefix=/home/jmv/usr2/gcc \
    --enable-shared --enable-languages=c++,java --with-x \
    --enable-java-awt=gtk,xlib
make bootstrap; make; make install

Essais avec g95 (Fortran 95)

Les développeurs de g95 ont le bon gout de mettre un binaire linux pc presque chaque jour de leur compilateur (http://www.g95.org/). D'autre part avec l'accès CVS on peut avoir leurs fichiers f90 de test (http://sourceforge.net/cvs/?group_id=5179). Tout ça m'a l'air de bonne facture, et le projet semble avancer au quotidien. Je ne sais encore si je vais pouvoir l'utiliser pour ma prochaine formation Fortran 95.

2004-06-11

Je mets à jour mon Mandrake 10 community avec les 3 CD de Mandrake 10 officiel que j'ai téléchargé (en 3 fois 3 heures) de mon ancienne école, l'ENSET de Cachan ;-) . Je grave :

/usr/bin/cdrecord -v gracetime=2 dev=/dev/hdc speed=8 -dao driveropts=burnfree \
  -eject -data -raw96r /tmp/isos/Mandrakelinux10.0-Official-Download-CD3.i586.iso 

2004-06-06

Devant faire bientot une formation sur C++ pour des stagiaires devant faire de la maintenance applicative, ça m'a donné à penser que beaucoup de thèmes sont communs avec l'intégration d'applications open source. Voici donc un programme adapté à ces besoins: une sélection d'outils en tous genres, et de méthodologies: refactoring, rétro-conception, tests...

2004-06-06

L'environnement Object-Web: Lomboz + Jonas

Ayant eu des déboires avec Lomboz + eclipse 3.0 M8, je recommence tout en suivant à la lettre la procédure: Installation, Concepts, J2EE projects, adding modules. En particulier il faut faire attention à appuyer sur "Apply" pour les définitions de serveurs, et à utiliser bin/ et src/ comme répertoires de construction et de source du projet eclipse.

Ensuite :

Que fait Lomboz pour nous ?

Lomboz et Jonas marchent bien ensemble, car ils sont de la meme provenance: le consortium ObjectWeb; surtout Jonas déploie et élimine rapidement une application Web.

2004-06-04

L'embryon d'une formation "panorama des langages" (format OpenOffice), une espèce d'arbre généalogique.

Ma formation Services Web a été reportée à fin septembre. Je viens de préparer un programme de formation pour Ada 95 sur 5 jours. La communauté Ada, bien que relativement réduite, rassemblée autour de l'entreprise ACT, est bien vivante. Il y a toutes les bibliothèques et les outils qu'il faut, et pour travailler en open source. Ada n'a pas d'embuches, c'est très amical pour le programmeur. On peut se concentrer sur la conception. Cela fait penser à Eiffel.


J'ai un nouveau portable à 2.4GHz, un Nitteo / Clevo de Taiwan. J'ai mis pour l'instant Mandrake 10.0 Community, mais j'ai des plantages quotidiens, et le touchpad n'est pas reconnu. Je mets tout ça sur le compte du noyau 2.6 ...

2004-05-20

Nouveaux thèmes de formation:

2004-05-18

Association Libre Cours : sous ce joli nom, il y a plein de cours informatiques. Ils ont ont une présentation sur Web Services.

Python

Plus puissant que Java, plus propre que PHP et Perl, orienté objet ... Python est incontournable. Voici un didacticiel en Français . Et maintenant, il n'y a plus qu'à consulter la documentation: Python Library Reference .

Il faut installer le paquetage python-docs; ainsi la fonction help("nom_de_commande") marchera :

apt-get install python-docs
export PYTHONDOCS=/usr/share/doc/python-docs-2.2.3/html

Pour faire des IHM, Tk est intégré, voir la doc Tk.

Installation de Web Services for Python

Comme je prépare une formation services Web (WS), je regarde les WS avec Python (il faut bien montrer WS avec d'autres langages que Java) :

Il faut d'abord aller chercher et installer les dépendances:

Ensuite je ne peux mieux faire que citer l'échantillon de source:

QUICK START
A simple "Hello World" http SOAP server:

import SOAPpy
def hello():
  return "Hello World"
server = SOAPpy.SOAPServer(("localhost", 8088))
server.registerFunction(hello)
server.serve_forever()

Et le client correspondant :

import SOAPpy
client = SOAPpy.SOAPProxy("http://localhost:8088/")
print client.hello()

On voit que l'aspect dynamique de Python est mis à profit. Pas besoin des étapes laborieuses d'un appel WS en Java avec l'API Sun officielle !

Installation Jython

C'est un pont avec Java, un Python implémenté en Java : Jython .

java -cp /home/jmv/distribs/ jython-21 # IHM d'installation 
cd /home/jmv/install2/jython-2.1        # répertoire de Jython installé
cp jython ~/bin

Mais que peut-on faire exactement avec Jython ? Appeler toute classe Java avec la syntaxe Python :

>>> from java.util import *
>>> h = HashMap()
>>> h.put("75", "Paris")
>>> print h.get("75")
Paris

Cela ressemble pas mal à ce qu'on peut faire avec BeanShell :

bsh % h = new HashMap();
bsh % h.put("75", "Paris");
bsh % print (h.get("75"));
Paris

Beanshell gère bien les 4 flèches du clavier; il accepte du Java standard comme du Java simplifié sans déclarations. Mais Jython permet d'avoir à la fois la puissance de Python et celle de Java. On peut aussi à l'inverse Appeler toute classe Python depuis Java, à condition de préparer une classe emballage (délégation) en Python qui appelle la classe Python souhaitée et étend java.lang.Object .

2004-05-10

Analyseurs syntaxiques

Après avoir bataillé quelques jours avec Alma, qui a un analyseur syntaxique totalement fait main, je regarde, enfin, quelque chose de plus standard. Il y a JavaCC qui a une grammaire pour C++. Voici le récit de mes tests avec JavaCC pour C++.


Compilé eclipse

Pour la première fois j'ai compilé eclipse; ça a pris 1h15 sur mon vieux 500MHz Celeron :-(( . Il est temps de changer ! Je voudrais mieux comprendre le source, à la fois pour utiliser son API d'arbre syntaxique, et parce qu'un logiciel conçu par quelques membres de la bande des 4 doit être intéressant.


Un script qui fait une page HTML statique avec un répertoire de photos, parfait pour mettre en ligne un CD de photos :
http://opengallery.sourceforge.net/

2004-05-05

Meditor: calcul symbolique

Un très beau projet! Je peux à la fois l'utiliser pour corriger les exercices de mes filles, et comme bibliothèque Java dans mes projets. Et il y a une IHM qui sait faire du MathML!
jscl-meditor - java symbolic computing library and mathematical editor

Un simple Control-A Control-E (E comme Expand) sur cette expression :

(x-a) * (x+sqrt(2)) * (x*a*sqrt(2) -3x)

donne ceci:

3*a*x^2-3*x^3+3*a*x*sqrt(2)-3*x^2*sqrt(2)-a^2*x^2*sqrt(2)+
a*x^3*sqrt(2)-a^2*x*sqrt(2)^2+a*x^2*sqrt(2)^2

Mais il y a mieux; Control-T factorise et récupère l'expression initiale. De plus Control-Q permet de simplifier l'expression développée :

-2*a^2*x+5*a*x^2-3*x^3+3*a*x*sqrt(2)
-3*x^2*sqrt(2)-a^2*x^2*sqrt(2)+a*x^3*sqrt(2)

Bien sûr, il y a Maxima que j'utilisais déjà dans les  années 80. Mais là c'est très simple à utiliser, et c'est un modèle Java Orienté Objet de l'algèbre.
A noter que Mozilla 1.7beta affiche bien ce MathML sur le wiki de meditor : Trigonometric_identities
Car il y a même un Wiki en PHP sur meditor !
A noter aussi que la documentation n'est que dans la distribution, pas sur le site.

2004-04-27

Idée: Spécification: Classeur de notes

On veut mettre de l'ordre dans ses notes et ses idées. On peut utiliser un graphe sémantique où on peut tracer des liens d'un article-élément d'information vers un sujet. C'est conceptuel; tracer un lien n'est pas (toujours) le plus simple gestuellement. Un choix dans un menu, un DnD dans un classeur, la saisie d'un sujet au clavier peuvent être mieux. A la wiki, le seul fait d'écrire un nom de sujet qui n'existe pas peut le créer.
L'idée sous-jacente est qu'une note se rattache à plusieurs sujets.
C'est la richesse de ces sujets qui fait la structuration du graphe sémantique (houlà ça devient hermétique ;-) ). Je veux dire que si on n'a que 3 sujets tels que sexe, drogue, et Rock'nRoll (ou client contact proposition) c'est un peu pauvre. Par exemple en ce moment je m'intéresse à ces sujets:

Mais j'ai aussi client - contact - proposition, ça enrichit ;-) . Ces réflexions rentrent dans la dernière catégorie, sémantiques et IA. Une analyse linguistique de la note peut permettre de suggérer un ou plusieurs sujets. Si c'est du XHTML ou du XML, l'analyse linguistique va être remplacée ou enrichie par l'analyse des balises en rapport avec leur contenu. Par exemple un hyperlien vers happypenguin.org sera révélateur de préoccupations à la fois ludiques et logiciel libre.
Si on veut partager ses notes avec d'autres, il convient d'utiliser des standards, tels que OWL, TopicMaps. Et là on rentre dans le sujet "infrastructures collaboratives".

Implémentation

Vu les nombreuses possibilités pour crééer un lien, on aura plusieurs clients: Web, GUI, ligne de commande, de plusieurs styles. Et le serveur sera accessible de plusieurs façons: embarqué, RMI, Corba, WS. Mais que doit faire le serveur ?

On peut utiliser eXist qui fait déjà beaucoup de choses. La conception consistera surtout à choisir judicieusement comment stocker auteurs, sujets, et les associations note-->sujet .

2004-04-26

A FAIRE


Describe here who you are!
Je suis un inventeur d'informatique. Je prends des bouts d'abstractions, quelques implémentations,  et je concrétise  C'est une cuisine goûteuse...


Terminé une semaine de formation sur Linux, et 2 jours sur Cocoon.




Idées IHM collaboratives

En parlant avec mon fils de jeux en réseaux, je me suis dit que l'idée d'être plusieurs sur un même monde est intéressante. Avoir des tanks (bzflag) ou des mitraillettes (doom) et se tirer dessus n'est que l'une des choses qu'on peut faire dans un même monde. On peut envisager des "jeux" où on construit ensemble. La métaphore peut être une maison, une carrière et des loisirs comme les Sims, ou une ville comme Cesar II, Simcity ou Lincity.

Et puis alors j'ai pensé à des applications d'entreprise. Le monde sera (par exemple) un projet de conception d'un nouveau produit.

  1. Il ne faut pas se limiter à un seul aspect, tel que hardware, software, fonctionnalités, simulations, mesures, équipes, … On sait bien que tout est connecté et dépendant de tout. Pour montrer tout sans être perdu et pouvoir naviguer rapidement, le paradigme ZIP de Jef Raskin s'impose. Ayant une formalisation de tout ça sous forme de graphes de sujets (topics), on doit pouvoir représenter aussi ça sous forme de :

2004-04-09

Installation de JBoss

2004-04-08

Installation de JBoss

2004-04-06

le poste que je cherche sur lea-linux.org

Comment j'ai défini le poste que je cherche sur lea-linux.org:
Projets novateurs où l'on cherche la créativité au niveau fonctionnel et architecture.

Réflexions sur l'Orienté Objet

Classiquement les conceptions Orientées Objet se présentent de la sorte, avec l'exemple d'un compte en banque:

compte.lireMontant();
compte.déposer(500);

On remarque que cela ne correspond pas, comme on le lit parfois, à une tournure linguistique "sujet-verbe-complément". Un schéma plus conforme à cette intuitoin du langage naturel serait:

client.déposer(compte, 500);

Cette délégation permet de rendre explicite qui fait l'action. En terme de gestion de la sécurité, ce genre de mécanisme permetrait de remplacer la gestion des permissions par les EJB. Mais au coup par coup il faudrait avoir des fabriques qui créent des objets comme client ou compte avec les bonnes permissions. Pourquoi pas ? De toute façon la création des objets est le point faible dans un langages comme Java, c'est pour ça qu'on a inventé les modèles de conception "fabrique" et "fabrication".

Il faudrait donc avoir un point de passage obligé pour la création des objets, une sorte de contexte - fabrique universelle. Celle-ci renverrait un objet décorateur autour d'un objet métier "pur sucre". La décoration (qui gère les permissions ou autre préocupation transversale) pourrait être implémentée en POA (Programmation Orientée Aspect). Mais une simple délégation peut le faire aussi. Et l'avantage de la délégation est d'être dynamique.

La séquence serait donc:

  1. on accède, avec un certain rôle et/ou identité, à une fabrique d'objets métiers

  2. on accède aux objets métiers "décorés" avec les permissions

  3. on appelle les méthodes métier

Ce genre de "fabriques de décoration" peut aussi prendre en charge les objets distribués à la Corba/RMI.


Reçu commande d'une formation sur Cocoon pour Alstom. Il va falloir mettre à jour la présentation, et parler de eXist.

2004-04-05

Geronimo - 

Overview

Installation de RedHat WAF + CCM

Installation de JBoss

J.B. Onofré, auteur de l'article dans Linux Magazine: Vous trouverez les sources sur le WebCVS :
http://cvs.nanthrax.net/cgi-bin/viewcvs.cgi/jboss_linuxmag/

Il y a Download tarball <http://cvs.nanthrax.net/cgi-bin/viewcvs.cgi/jboss_linuxmag.tar.gz?view=tar>
en bas de la page.

Architecture EJB

Une suite de questions  / réponses avec J.B. Onofré, auteur de nombreux articles dans Linux Magazine.

JMV>>>>>

Je me pose des questions sur les alternatives possibles à EJB qui seraient basées au maximum sur les constructions Orientées Objet de Java, ainsi que des modèles de conception tels que Décorateur, sans conventions de nommage à la JavaBeans, ni éventuellement génération de code à la RMI/Corba.   

Je ne comprends pas tout à votre question :)
 
Je m'adresse à qq'un de haut niveau pour mes interrogations qui ne le sont pas moins.

EJB est déjà basé sur les constructions objet Java (il y a l'héritage,
polymorphisme, etc), le concept le plus important dans les EJB étant la
séparation entre interfaces et implémentation.

Rassurez-vous, je sais ce qu'est un serveur d'app. EJB; j'ai lu le Monson-Haefel.
Mais je manque de pratique.

Decorator est une Design Pattern "classique" dans Java (les I/O sont
manipulées sont forme de Decorator) mais je vois pas bien son
application dans les EJB.

Un décorateur est une possibilité pour réaliser un conteneur d'objets métiers similaire à un Serveur d'App. J2EE.
Conceptuellement l'objet métier serait décoré de façon à prendre en compte la sécurité, les transactions, etc.
Une autre possibilité à partir de Java 1.5 est d'utiliser la généricité pour implémenter les fonctions d'un serveur d'app.
Dans cet ordre d'idées je sais que JBoss 4. fait du tissage Orienté Aspect.

Les conventions de nommage "à la JavaBeans" sont principalement
utilisées dans les Entity afin de cacher l'implémentation des fields et
les mapper au SGBD.

Je n'aime pas les conventions de nommage "à la JavaBeans". Ca fait bidouille. Ce sont des palliatifs pour des choses qui devraient être soit dans le coeur du language (voyez eiffel, il n'a pas besoin de getXXX() ), soit alors être mises en oeuvre à l'aide d'interfaces et de fabriques.

Personnellement, j'utilise les EJB Session (stateless et stateful) dans
pratiquement toutes mes applis. Par contre pour les Entity, selon
l'appli, j'utilise soit les BMP (c'est de plus en plus rare), soit les
CMP, soit Hibernate, soit JDO/OJB.

A ce propos, voici les prochains articles prévus en rapport avec J2EE :
- CruiseControl (j'espère dans le numéro de mai)
- JBoss 2eme partie avec les CMR, les interceptors et développez ses
 propres MBeans
- Hibernate 

Volontaire pour relire ...


JMV >>>>>

> Il me semble que à une époque, à l'origine, c'était un élément de la 
> stratégie de Sun pour enmener BEA, Oracle, IBM et d'autres dans sa 
> barque. Le but n'était pas de faire une architecture propre et nette.
Je suis tout à fait d'accord et même encore, il y a des parties de Java
qui ne sont pas nettes. Mais il ne faut pas non plus mettre tout sur le
dos de Sun, même dans des consortium comme JDO Experts, les choses ne
sont pas nettes  :) 
> Et maintenant on est là avec cette spec. et ses implémentations, face à 
> .NET, face à PHP, face à RedHat Web Application Framework, et tout ce 
> qui va venir ensuite. Pendant ce temps, des entreprises achètent du 
> Websphere et du WebMethods très cher, et se contentent de faire des 
> servlet et du JSP avec.
> Pourquoi ?
> Parce que, si des décideurs ont acheté J2EE + EJB, les développeurs ont 
> du mal à suivre.
C'est encore une fois tout à fait vrai  :) 
Je suis toujours aussi surpris du niveau général des développeurs,
surtout dans le monde Java. Même dans les outils "classiques" de
développement, les gens ont du mal (je pense notamment à CVS ou ant par
exemple).
> Il ont déjà du mal à suivre l'Orienté Objet, qui reste la base.
> Et après on leur dit que c'est loin de suffire, il faut assimiler toute 
> une façon de faire à la Corba, et pas mal d'autres choses pour faire des 
> EJB.
> Le moins qu'on puisse dire, c'est que les specs EJB ne permettent pas de 
> faire simplement les choses simples.
Oui mais la puissance est au rendez-vous. C'est sur que si concevoir des
EJB afin que ces derniers soient utilisés que par une seule webapp se
trouvant sur le même serveur, je ne vois aucun intérêt. Autant faire du
PHP.
Il faut bien garder à l'esprit que J2EE ne révéle sa puissance que
lorsqu'on se trouve dans une optique trois tiers avec les clients (et je
dis bien LES) se trouvent distants du container d'EJB, lui même distant
du serveur de base de données.
> 
> Et les décideurs ont du mal à comprendre que l'intérêt d'une spec. comme 
> J2EE, c'est de pouvoir changer de crémerie (de Websphere à JBoss ou 
> ObjectWeb).
Oui c'est exact mais il faut reconnaitre qu'à l'heure actuelle la
portabilité des serveurs d'application n'est pas optimale. Par exemple,
passer une application de JBoss à Websphere n'est pas simple (les
descripteurs des CMP sont très différents par exemple pour le mapping).



> Alors justement est-ce que les nouvelles specs EJB vont prendre en 
> compte ces descripteurs ?
Clairement non. Les descripteurs spécifiques sont propres aux serveurs
d'application et donc sont périphériques.
De plus, il y a des problèmes autre que dans les descripteurs. Je pense
notamment à toutes les extensions EJB-QL comme on peut les trouver dans
WebLogic. Lorsqu'on passe d'un EJB-QL étendu à un EJB-QL pur, bonjour
les problèmes  :) 
JMV >>>
> Pendant que j'y suis, que pensez-vous du nouveau projet Geronimo, porté 
> chez apache.org par entre autres David Monson-Haefel et JBoss ?
> http://incubator.apache.org/geronimo/

Je trouve le projet intéressant mais avec des réserves. La réaction de Marc Fleury et Gavin King a été pratiquement sans équivoque. Déjà la license pose problème entre la GPL de JBoss et l'Apache License de Apache. Ensuite quelle valeur ajoutée va proposer Geronimo par rapport à JBoss si le container est majoritairement basé sur JBoss. En gros, j'attends de voir. Le gros avantage de Geronimo est son appartenance au groupe Apache. Par exemple, un serveur comme Jonas est de très bonne qualité et pourtant ne connait pas un engouement énorme (ce que je trouve dommage). Wait and see donc :)

2004-04-03

Installation de JBoss


Passé à Mozilla 1.7beta; installé Webmin pour régler le parefeu et protéger mes ports que je vais ouvrir avec JBoss. Un petit didacticiel sur iptables est ici :
 http://www.siliconvalleyccie.com/linux-hn/iptables-intro.htm

2004-04-02

Présentation WWBKB à la FING : presentation-fr-wwbkb.sxi - presentation-fr-wwbkb.ppt

Installation de RedHat WAF + CCM

Je parcours la Javadoc de ccm-core-5.2.1. C'est bien ce que j'avais compris. C'est une alternative radicalement différente à l'utilisation des EJB. Il y a une modélisation objet des notions de role, utilisateur, persmission (com.arsdigita.kernel.permissions). C'est une approche qui me va; cependant l'ouverture du code est médiocre: il y a très peu d'interfaces Java.

Installation de JBoss

Je suis l'article de Onofré sur Linux Magazine. J'ai fini l'installation (page 28).
Sur Fedora, addgroup n'existe pas, et adduser est different. Il doit utiliser Debian. J'utilise donc redhat-config-users .

2004-04-01

Installation de RedHat WAF + CCM



Publié sur news:fr.comp.lang.java

Le 03/31/2004 09:40 PM, M a écrit :
......
> 2)
> Pour la partie stockage de données, j'aimerais m'afranchir d'un sgbd, il
> n'y en pas vraiment besoin vu la simplicité des données et des
> opérations dessus, et donc utiliser des fichiers plats. J'avais pensé à
> un stockage dans des fichiers XML. Connaissez vous des solutions simple
> pour mettre cela en oeuvre ?
Utilisez l'API XML:DB :
XML:DB Initiative: API for XML Databases
http://www.xmldb.org/xapi/

Ele est suivie par au moins 2 produits open source: eXist
( http://exist.sourceforge.net/ dont je suis un des développeurs) et XIndice de apache.org .
Il y a aussi des produits commerciaux comme Software AG Tamino.

XML:DB c'est un peu le JDBC des bases XML.

Et ce qui est intéressant, c'est que l'implémentation de référence de l'API
XML:DB est tout simplement basée sur un système de fichiers, donc vous pouvez commencer petit et embarquer une base XML par la suite si nécessaire.

Des API qui ressemblerait au requêtes SQL ?
Avec eXist vous avez Xquery (spécifié par le W3C) qui est un sur-ensemble de XPath. Ce sont des languages de requête spécialement faits pour XML. XQuery est de plus un véritable langage de programation orienté XML, qui permet de faire simplement les choses simples.
Avec eXist vous avez aussi XUpdate, qui sert à faire des mises à jour des documents XML.

2004-03-31

version 0.2 de ecolosim

Je sors la version 0.2 de http://sourceforge.net/projects/ecolosim/

2004-03-30

Finies les formations Corba et le restant de la formation Java à l'IRD.
Je regarde Java 1.5 : J2SE 1.5.0 Beta 1 Documentation Download J2SE 1.5.0 Beta 1 DocumentationView

2004-03-14

CORBA

Je prépare une formation sur Corba .


Problèmes avec mon serveur personnel et le FAI Wanadoo.fr

J'en suis déjà à une semainde de tergiversations de Wanadoo. Voici le problème :

J'ai depuis plus d'un an un abonnement ASDL 512 chez Wanadoo.
Je faisais marcher plusieurs programmes serveur sur ma machine personnelle,
accessibles depuis Internet pourvu qu'on connaisse l'adresse IP,
tels que ssh, HTTPd, un serveur Java sur le port 8080.

Certains utilisateurs de mon site se sont plaints d'avoir une connexion refusée.
Alors que si je me connecte sur mon adresse IP personnelle non fixe telle que 81.50.251.238,
ça a toujours marché.

Je soupçonne Wanadoo d'avoir changé sa politique ou d'avoir des problèmes intermitents.
Il semble qu'à certains moments, mon site n'est plus accessible, au moins depuis certains domaines IP.

Je souhaite avoir un état des problèmes; ou pouvoir discuter avec une personne compétente.
Je souhaite que ce genre de problèmes soit indiqué en temps réel dans les pages support.
Vous pourriez par exemple faire tourner périoquement des scripts qui font un ping depuis un ensemble de sites non-wanadoo vers une adresse IP personnelle wanadoo.
Ou alors s'il existe un moment de tester cela moi-même je souhaiterais le connaître.

Merci à Frédéric Salach qui m'a mis sur la piste :

trouver un proxy publique <http://www.proxy4free.com/page1.html> et
parametrer le proxy dans ton navigateur... c'est tout.

J'ai testé 2 des adresses IP mentionnées avec konqueror, après avoir configuré le "serveur de proximité", et voilà :
Impossible de se connecter à Serveur de proximité 80.225.251.61 sur le port 8080

Je ne me suis pas découragé, après avoir vu que ça répondait à ping. J'ai lancé nmap, et là j'ai vu ceci :

Starting nmap 3.48 ( http://www.insecure.org/nmap/ ) at 2004-03-14 10:44 CET
Interesting ports on netcache0-lds.as9105.net (80.225.251.61):
(The 1651 ports scanned but not shown below are in state: closed)
PORT    STATE    SERVICE
23/tcp  open     telnet
80/tcp  open     http
135/tcp filtered msrpc
439/tcp filtered dasp
445/tcp filtered microsoft-ds
514/tcp open     shell

J'ai donc vu que le proxy était sur le port 80 et non 8080. J'ai reconfiguré konqueror. Et ça marche!
Je vais pouvoir faire un petit script avec wget pour tester mon site :

export http_proxy=http://80.225.251.61
mkdir tmp ; cd tmp
wget --recursive --level=1 --span-hosts http://jmvanel.free.fr/protea.html
cd .. ; rm -rf tmp

Encore quelques questions:
- comment savoir lequels tout de suite quels proxy utilisent le port 80, ou 8080?
- que veut dire "transparent" et "anonymous" dans la colonne "Type" ?
- Faut-il s'inscrire prélablement sur certains sites ?
- lequels recommanderiez vous?

2004-03-06

premier essai réussi d'OCR, avec gocr

Mon premier essai réussi d'OCR, avec gocr intégré à xsane, en numérisation mode trait, résolution 300. On voit que seule la police majoritaire passe bien.

l26        GuIDE Du NATuRALTsTE EN DoMBEs

QUE_ ESr lE _cBON Er_NG__.?

Même si l'ornithologue et le chasseur ne s'intéressent pas également aux
mêmes oiseaux, leur souhait commun est de disposer d'étangs aussi riches
que possible, en espèces comme en individus. Au-delà de l'ìndifférence,
ou de l'empirisme, il est donc permis de i'interroger sur les critères défi-
nissant un {_ bon étang}} pour l'avifaune nidificatrice, pour en optimiser
l'aménagement et la gestion. C'est la question à laquelle Michel Bournaud
et ses colIègues (1980, 1982) ont tenté d'apporter réponses, en étudiant (pen-
dant deux années consécutives, 1977 et 1978, à raison de 8-10 visites en
belle saison), 36 étangs ( + 10 gravières) dans 5 districts de la régìon Rhône-
Alpes : Dombes et Forez (l l étangs chacun), Bresse, Ile Crémieu et Bas-
Dauphiné (4 ou S étangs). Les auteurs ont noté l'avifaune présente (au total
61 espèces), mais ont également relevé de nombreux paramètres, morpho-'
Iogiques et botaniques, permettant de définir le milieu dans l'espoir d'en
saisir le déterminisme écologique.

2004-03-05

The Blackboard Model of Problem Solving

Blackboard Systems: The Blackboard Model of Problem Solving and the Evolution of Blackboard Architectures. AI Magazine 7 (2): 38-64. "The first blackboard system was the HEARSAY-II speech understanding system (Erman et al.,1980) that evolved between 1971 and 1976. Subsequently, many systems have been built that have similar system organization and run-time behavior. The objectives of this article are (1) to define what is meant by 'blackboard systems' and (2) to show the richness and diversity of blackboard system designs."

2004-02-25

FOSDEM à Bruxelles

Je suis arrivé presque à la fin samedi.
J'ai dîné avec les membres de PLF.
Dimanche j'ai écouté JOnAS, GCJ (même posé des questions), SmallEiffel.


J'ai mis le javadoc de Alma 0.41 sur un de mes sites :
http://perso.wanadoo.fr/jmvanel/docs/

C'est intéressant de comparer avec la javadoc d'eclipse (seulement version 2.0) :
http://download2.eclipse.org/downloads/documentation/2.0/html/plugins/org.eclipse.jdt.doc.isv/reference/api/index.html
La partie intéressante est : org.eclipse.jdt.core.dom The Java DOM is the set of classes that model Java program as a structured document.

Si on veut récupérer les générateurs de Alma pour s'en servir à partir d'eclipse (c à d. faire un plug-in d'eclipse qui sache générer tout ce que Alma sait générer), il faudrait faire une façade com.memoire.agl autour de org.eclipse.jdt.core.dom .

Et si on veut récupérer les analyseurs syntaxiques de Alma dans eclipse, il faut faire la façade inverse, i.e. présenter com.memoire.agl à la sauce org.eclipse.jdt.core.dom .

Je ne sais pas si c'est facile.


Dans une université Australienne j'ai trouvé des cours sur UML, design patterns, etc:
http://cs.anu.edu.au/student/comp2110/archive-2002/lectures/

2004-02-21

Ma base de données botaniques avec la flore de Chine

Ma base de données botaniques avec la flore de Chine (Etat du projet Worldwide Botanical Knowledge Base http://wwbota.free.fr/ ) tourne en ce moment:
protea.html - Essayez-la !

10 000 espèces avec un moteur de recherche mieux que google! Il faut faire connaître ce projet et cette technique, qui peut servir à toutes sortes de besoins documentaires et autres.

Aide à l'utilisation

On entre des requêtes de la forme:

nom_d_organe_ou_de_rubrique:mot_cherché_dans_cette_rubrique ...

- Pas d'espace autour de :
- Autant de critères qu'on veut, séparés par des espaces

On clique ensuite sur "Submit Query".


Exemples:

Pour ne pas entrer au hasard les noms d'organe ou de rubrique, une liste complète est fournie en bas de page, sous la mention:
Click on element names below ...
Il suffit de cliquer sur un de ces noms pour l'ajouter à la fin du champ de saisie.

Pour comprendre à quoi ça sert, il faut imaginer qu'on a sous les yeux un échantillon de plante inconnu.


Trouvé la javadoc d'eclipse (seulement version 2.0) :
http://download2.eclipse.org/downloads/documentation/2.0/html/plugins/org.eclipse.jdt.doc.isv/reference/api/index.html

2004-02-14

données géographiques en XML

Une intéressante source de données géographiques en XML (et autres):
http://dbis.informatik.uni-goettingen.de/Mondial/


USB-storage sur Linux

Mon premier essai avec USB-storage sur Linux :

/sbin/lsusb
mkdir -m 777 /mnt/usb
/sbin/modprobe usb-storage
mount -t vfat /dev/sda1 /mnt/usb

Avec un noyau 2.6 c'est :

mount -t vfat /dev/sde1 /mnt/usb/

2004-02-13

Carrefour des possibles de la FING: Agora, vcoop.org

Hier j'étais à la toujours intéressante soirée Carrefour des possibles de la FING (Fondation Internet Nouvelle Generation). J'ai remarqué:


hébergement Java

je recherche un hebergeur accedant l'execution de servlet java.
J'en ai trouvé un qui propose un hebergement avec jre coté serveur.; Est ce
suffisant pour executer des servlet?

Vincent Brabant wrote:

JeeP a écrit :
y a www.mycgiserver.com
juste que 'We're currently not accepting new users.'

Je m'étais inscrit il y a un an ou 2. C'était des pionniers de l'hébergement mutualisé Java, et je crois que c'est encore une denrée rare.
Beaucoup de FAI Français ne savent pas mieux faire, pour supporter Java, que de proposer une lame, c à dire un serveur physiquement distinct.

Mais mycgiserver ne proposait que 5 Mo par utilisateur, et rien pour supporter le format war. Pour faire tourner ma base de données botanique avec Cocoon et eXist c'était vraiment juste ...


Je serais vous, j'irais voir Webwork, alias HMVC :
http://freshmeat.net/projects/webwork/

Bien sûr il n'a pas la notoriété de Struts. Mais c'est quelque chose de propre et Orienté objet, sans toute la lourdeur de Struts.

C'est aussi un "framework" pour applications Web J2EE. Il est tellement propre qu'il en est flexible, et il supporte des vues multiples, c'est à dire qu'on peut brancher ces différentes technologies: HTML, Swing, PDF, XSLT, Applet, et Velocity, sans changer la logique applicative.

Alfsalim wrote:
Bonjour

Je souhaite realiser une application web (servlet- jsp) en MVC2 , y'a t-il
des exemples d'appli ou de modele afin de me baser dessus.

Comment est réaliser le Controleur ? ca consisite juste a faire des if et
des else suivant la requete reçu ?


UML par la pratique de Pascal Roques

Question sur news:fr.comp.developpement :
Je viens après la bataille, et en + c'est pour proposer un bouquin :-( payant :-(

Mais il est très intéressant parce que ce sont des études de cas très variées.
Ca se lit comme des nouvelles policières, car on propose une conception, puis on la démolit, puis une 2ème, une 3ème. Et à chaque fois la solution paraît bien.

Ca peut ouvrir l'esprit sur la phase d'analyse des objets "métier". UML n'est qu'un langage graphique, mais là on parle de conception. Et l'intérêt d'UML c'est de fournir un niveau d'abstraction + élevé que les classes.

#  titre. UML par la pratique
# auteur: Pascal Roques
# editeur: Eyrolles
# isbn: 2-212-09280-6

Le 01/29/2004 09:37 AM, Lsom a écrit :
> Connaissez vous un bon tutorial UML, c'est à dire, idéalement pour moi :
> - en francais
> - qui montre concrètement à quoi sert UML. Sans doute avec des petits exemples
> - qui donne une vue d'ensemble sans entrer dans les moindres détails

2004-02-12

Dialogue Java sur news:fr.comp.developpement

Question sur news:fr.comp.developpement :
je suis passionnée d'infos, j'interviens plus dans le dépannage, j'ai des notions de html!!!! mais comme j'aimerais élargir mes connaissances
j'aimerais me lancer dans la programmation!


Je suis un programmeur Java, qui donne aussi des formations.
Et je peux dire que Java n'est pas forcément LE language pour des débutants complets. Ou alors il faut utiliser une approche totalement originale, http://BlueJ.org un environnement d'apprentissage de Java fait par plusieurs enseignants, et de préférence le livre en Français de Barnes et Kölling qui va avec.

On a raison de dire que la programmation, c'est plus complexe que d'écrire des pages Web.

Mon conseil, c'est tout simplement de commencer avec JavaScript. Il y a un petit environnement agréable avec Mozilla, et une abondante littérature. Après, il sera temps de passer à des langages qui n'ont pas la limitation de tourner essentiellement sur un navigateur (essentiellement mais pas uniquement), comme PHP, Java, Phyton, voire Perl.

L'avantage de Javascript pour un débutant, c'est son typage faible.
Pas besoin d'écrire:
int mavariable = 3;

pour dire que c'est un entier, comme en Java/C/C++ , il suffit d'écrire :
mavariable = 3;

Bien sûr, ce qui est un avantage pour un débutant, est un inconvénient par la suite. Mais il faut commencer par des choses simples.


Outils de dév. : PMD, Abbot, UML, SourceNavigator et BlueJ

PMD (http://pmd.sourceforge.net/) je le recommande car il permet de tester le code par rapport à des règles. Les règles en XML sont configurables. En plus il a la fonctionalité unique de lister tous les bouts de code qui ont été copiés-collés.

L'outil que j'utilise pour tester en batch l'IHM, sans avoir à cliquer c'est Abbot (http://abbot.sourceforge.net/).

Je vais essayer d'installer des moteurs de discussion et de gestion de projet .
 
Omondo je n'ai pas encore fait tourner. Quand j'ai besoin de concevoir en UML et de générer du code, j'utilise ArgoUML ouPoseidon, mais je fais pas de round-trip engineering. Pour "déchiffrer" la conception d'un logiciel inconnu, j'utilise une combinaison de eclipse (bien mais un peu lent, pas assez graphique) de SourceNavigator et de BlueJ (excellent pour afficher graphiquement les relations de dépendance, très rapide).


mon offre commerciale

Je peaufine mon offre commerciale:

http://jmvanel.free.fr/conseil.html

Je lis le journal de Laurent Bossavit :
http://bossavit.com/thoughts/

Je me remets à ma base botanique. Il y a des contacts à ce sujet ...
Ce soir je vais au Carrefour des possibles de la fing .

J'envisage d'aller au FOSDEM à Bruxelles le 21 et 22.
Je me penche sur l'architecture de eXist la base XML mono-développeur ...

2004-02-11

FAQ/Astuces pour Mozilla et Netscape 7

2004-02-09

changer d'encodage un fichier

Comment changer d'encodage un fichier :

iconv -f utf-8 -t iso-8859-1 signature.txt > signature-accents.txt

Il y a aussi jv-convert pour les fichiers Java.

2004-02-06

vie artificielle

Un site très intéressant sur la "vie artificielle" :
http://www.rennard.org/
J'ai bien apprécié l'applet montrant des algorithmes génétiques appliqués à des "biomorphes", qui ressemblent pas mal à des plantes.


Salon Solutions Linux

Il y a avait beaucoup de monde au Salon Solutions Linux. Et même un stand Microsoft ! J'ai découvert le projet LibreSource de l'Inria, un portail à la sourceforge mais en Java, avec des idées novatrices par rapport à CVS; malheureusement pas encore opérationnel. Egalement au stand Inria le thème ObjectWeb, un Consortium qui monte en puissance sur le territoire de JBoss, un match à suivre.

Et puis j'ai vu pour la première fois Richard Stallman; je lui ai même posé une question.

2004-01-23

formation Java donnée à l'IRD

Après trois jours de formation donnée à l'IRD, où nous avons travaillé sur un projet sur sourceforge.net : http://sourceforge.net/projects/ecolosim/ , je vois qu'il est difficile d'utiliser les services CVS de sf.net pour une formation, car les mises à jour se font 1/2 heure après chaque versionnement (commit), quand le site CVS n'est pas carrément inactif. Mon prochain projet sera sur Savannah; il y a certainement moins de monde, et je sais que le projet de la plate-forme Savannah, issu de sf.net, évolue plus vite.
Le journal de la formation: http://jmvanel.free.fr/java/formation-5jours/README.html


Le programme des prochaines versions d'eclipse:

The 3.0 release is targeted for June 2004. All release deliverables will be available for download as soon as the release has been tested and validated in the target operating configurations listed below.



2004-01-18

Utilisé Source-Navigator 5.2b1, c'est bien plus rapide que eclipse pour naviguer dans le source, comme son nom l'indique. Il fait C, C++, Java, Tcl, [incr tcl], FORTRAN, COBOL, et assembleur! C'est écrit en C et TCL/Tk (une autre façon d'écrire des IHM portables), et grâce à ça, il tourne sur Unix, Windows ou Mac.

2004-01-17

ATLAS SEMANTIQUE de la langue Française

Je suis tombé par hasard sur l'Institut des Sciences Cognitives (des Lyonnais aussi!). Il ont un "ATLAS  SEMANTIQUE" de la langue Française.

Dans mon projet Worldwide Botanical Knowledge Base (http://wwbota.free.fr/) j'utilise WordNet dans une analyse sémantique grossière des descriptions botaniques. Et je n'ai rien en Français.

Donc je leur pose la question. Votre base est-elle disponible en tant que bibliothèque de sous-programmes  pour un projet non lucratif comme le mien?

De plus à un autre titre leur applet qui dessine des diagrammes ensemblistes de Venn est quelque chose que je cherche depuis longtemps pour pouvoir représenter avec un diagramme ensembliste les résultats d'une requête sur notre base de données botanique. Y aurait-il moyen de partager le code ?


vie artificielle

Je regarde des demo applet de vie artificielle sur un site Japonais spécialisé avec des dizaines d'applets .

appletviewer http://ai.unime.it/~gp/english/clustering_applet/elbg_demo_applet.htm &

2004-01-15

sourceforge.net

La recette pour télécharger sur le site sourceforge.net :

rsync --rsh=/usr/bin/ssh --recursive --times --stats --progress * \
jmvanel@shell.sourceforge.net:/home/groups/e/ec/ecolosim/htdocs

On peut aussi avoir un shell en faisant :

ssh -X jmvanel@shell.sourceforge.net

Je remplis la base CVS :

# cd /home/jmv/ird-import
# ls
ecolosim
# cvs -d:ext:jmvanel@cvs.sf.net:/cvsroot/ecolosim \
import -m "Initial import." src jmvanel start

Le contenu de mon répertoire ecolosim apparaîtra donc comme src/ecolosim dans la base CVS du projet EcoloSim.

Les infos de base pour utiliser les services d'hébergement Web, bases de données et shell de sourceforge.net :
https://sourceforge.net/project/admin/prweb.php?group_id=99483

Toutes les docs. utilisateur et développeur de sf.net sont là (appuyer sur GO) :
https://sourceforge.net/docman/index.php?group_id=1

Mon troisième projet sur sf.net !!!!!!!!!!!!!! http://sourceforge.net/projects/ecolosim/
EcoloSim is a Simulation Framework for simple spatial models in biology and ecology, in Java. Typical problems are behavior of a herd of cattle, growth of microbe cells and other populations.

2004-01-13

Simulation: ecoloSim

Je cherche un nom pour le projet à créer pour l'IRD sur sourceforge... Avec les ingrédients suivants que je cherche sur le Net:

Une intéressante présentation Canadienne (Française) sur le sujet:
Multi-Agents Systems, Simulation & Soccer Server
NACSE - Northwest Alliance for Computational Science and Engineering : Ecological Simulation


Suite à une demande de formation d'un organisme public dont je tairais charitablement le nom, j'ai regardé comment faire du JavaScript côté serveur, sans IIS et ASP. A la grande époque de Netscape, c'est leur cheval de bataille, avoir le même langage côté serveur et côté navigateur (maintenant iPlanet Netscape Enterprise Server 4.0). Cela avait une cohérence qui, encore maintenant, n'est pas dans les moeurs. Mais on sait comment Microsoft a contre-attaqué. Je suis donc allé voir là où moi qui suis en peu Java-centrique, je n'avais pas encore été, i.e. la liste de TOUS les modules Apache:
http://modules.apache.org/search
Il y en a quand même 303! Il y a PHP, mod_perl, mod_python et même des langages plus confidentiels comme mod_ocaml , mod_ruby, mod_scheme. On trouve des trucs assez exotiques comme steganography, mod_topicmaps (web service interface to topic maps) . La plus grande partie est encore pour Apache 1.3.x, et non Apache 2.x . Au milieu de tout ça, il y a Whitebeam, qui se dit "XML based rapid design environment for dynamic web content", mais sur son site on voit qu'il intègre le moteur JavaScript en C de Mozilla, SpiderMonkey. Il y a aussi Rhino (aussi du projet Mozilla), écrit en Java, qui doit être facilement intégrable dans un moteur de servlets, quoique je n'ai pas trouvé de référence là-dessus.


Terminé une version de BeanPeeler - Generic JavaBean editor .

2004-01-10

Il est temps de se mettre à rsync; même si les disques ne coûtent pas cher, il faut gérer bien ses données:

rsync --verbose --progress --stats --compress \
 --rsh=/usr/bin/ssh --recursive --times --perms --links \
  --update 10.0.0.246:wwbota.free.fr perso/

2004-01-09

développement d'un éditeur JavaBean générique

J'avance dans le développement d'un éditeur JavaBean générique ( voir ici une copie d'écran de l'éditeur JavaBean ). Le source est (pour l'instant) ici :
http://jmvanel.free.fr/java/formation-5jours/jmvanel/beans/
Je suis parti d'un bout de code de 1999 d'un programmeur (scientifique lui aussi ) nommé John David Taylor. Or, récemment, il a mis ce BeanPeeler sur sourceforge !

J'installe le dernier sourcenavigator, et audacity-1.0.0-2.i386.rpm .

2004-01-08

J'essaye d'utiliser alma pour traduire du vulgaire Java en Eiffel. Je lui mets (dans alma) mon build.xml à tout faire. Et voilà les résultat de mes traductions de Java en Eiffel avec alma.


Il y a le dernier ant 1.6. Je le télécharge. Pendant que j'y suis, je fais une petite page ant pour abriter mon build.xml à tout faire.


Je relis la dernière version de "Conception et Programmation orientées Objet", qui avait été mon chemin de Damas en 1995. Du coup j'installe Eiffel, et j'ajoute des tests avec Eiffel dans Java performance compared to C++.

2004-01-07

Annuaire des professionnels du logiciel libre

Aujourd'hui, un peu de commercial; j'ai demandé à paraître dans l'Annuaire des professionnels du logiciel libre. Ce n'est pas si simple, mon résumé n'a pas paru assez logiciel libre du point de vue du modérateur :
Je ne peux pas vous intégrer à l'annuaire avec cette présentation.
Elle ne met pas en avant les logiciels libres. De même que votre site et votre CV.
L'annuaire est pour les professionnels travaillant sur les logiciels libres, pas avec des logiciels libres.


A suivre ...


J'adhère à root66 , association de loi 1901 basée dans les Yvelines. Elle a pour but de faire découvrir les logiciels libres au public, ainsi que d'aider toute personne ayant des difficultés dans ce domaine. ça me ferait plaisir de connaître d'autres partisans du logiciel libre près de chez moi, et bien sûr de partager mes connaissances.

2004-01-06

J'ai regardé :

2004-01-05

Je dialogue avec l'équipe de raptor, qui fait un éditeur (pas assez) générique de Javabeans (voir essai raptor ici).


J'ai résolu un problème d'impression avec Linux (voir dans notes en Anglais : Printer problem with RedHat Fedora and HP PSC 750 ). Encore un problème d'IHM trompeuse ! Après un coup comme ça, je suis prêt à passer à Debian !

2004-01-05

Simulation

Je regarde le projet Cormas du Cirad, basé sur un paradigme multi-agents. C'est open-source, basé sur une version non open-source de SmallTalk mais gratuite. Voici un intéressant diagramme UML de Cormas . J'ai téléchargé tout ça. Pas très simple déjà, au moins trois trucs pour Smalltalk, puis Cormas. Je n'ai pas vu de vraie documentation de conception, apparemment ils préfèrent faire des formations ... Y-a-t-il seulement le source Smalltalk du framework? Oui, il y a dans Kernel/ un gros fichier de 36 000 lignes et 1.1Mo; peut-être qu'en SmallTalk on peut pas faire autrement ?

Publié sur fr.comp.lang.java est-ce que java fera le poids dans les années à venir?

Par rapport a .NET est-ce que java fera le poids dans les années à venir? Ou est ce que cette technologie est vouée à disparaître ?
>>>guichon
>>mauvaise année les trolls
>
> Ah bon ? pourtant la question me semble légitime
> et intéressante, d'un point de vue technologique et commercial.

Il y a des problèmes avec Java, qui sont:

Il y a aussi un mouvement pro-.NET dans le libre que j'avoue mal comprendre (cf l'éditorial de Linux Magazine de janvier).

Le problème dans les projets concrets avec la moyenne des développeurs avec Java est que les choses simples ne sont pas assez simples par rapport à PHP ou Perl. Je le vois bien quand je donne des formations (exemple les chaînes et les fichiers). Peut-être .NET améliore-t-il cet aspect. Les gens veulent avoir très rapidement qqchose qui marche. Ils ne voient pas que la conception (y compris rétro-conception à la XP) est importante.
Il est certain que l'utilisation d'eclipse rend les choses plus faciles, de même que les nouveautés attendues de Java 1.5.

Mon sentiment est que Sun va finir par mettre la techno. Java en open source ou en LGPL. Mais Java est devenu qqchose de trop gros et il y a trop d'intérêts en jeu pour que ce soit facile à gérer. Clairement maintenant Sun n'a pas les moyens de développer Java aussi vite et aussi bien qu'il faut à lui tout seul; il ne faut plus qu'il soit seul. Et il y a un effort de simplification, d'épuration à faire comme j'écrivais plus haut, par exemple pouvoir distinguer les méthodes principales (primitives) des autres, qui sont des facilités (helpers) ou des alias avec des arguments différents.

2004-01-03

anjuta, raptor

Essayé anjuta , un Environnement de développement Intégré (IDE) C++ pour Linux. Assez ergonomique, avec son repliement de blocs, et sa complétion. Je crois que si j'avais à écrire du C++, je le préférerais à KDevelop (en attendant eclipse/CDT qui n'avance pas vite).


Dans ma longue quête d'éditeur générique JavaBean, j'ai essayé:



J'ai commencé une présentation sur le logiciel libre (au format OpenOffice), à destination des décideurs.

2004-01-02

Antoine Quint du W3C parle de SVG

Je serai le jeudi 22 janvier à la réunion mensuelle à étincelles :
http://sparklingpoint.xmlfr.org/networkg.html#LPI
Cette fois ce sera Antoine Quint du W3C qui parlera de SVG.


Retour de vacances, pas de contrat proche, c'est le moment de mettre à jour mes outils  de travail. Je viens  d'installer Fedora (disponible en ce moment chez les marchands de journaux) par-dessus RedHat 9.0 . Ça marche très bien, c'est un peu Redhat 9.1 beta . Également j'ai un nouvel écran Iiyama 1600x1200 19', et une carte GeForce 4 de chez Palit.com.tw . Enfin je peux avoir une fenêtre confortable avec eclipse ! Par contre c'est toujours un vieux processeur 500MHz avec une carte-mère Soltek . A ce propos, j'ai fait des mesures de performances pour comparer Java (avec une JVM ou compilé avec gcj) avec C++ .

2004-01-01

téléchargements les plus populaires sur sourceforge

Très intéressante, cette page des téléchargements les plus populaires  sur sourceforge ! Bien sûr, les plus répandus ne sont pas les plus intéressants du point de vue de l'informaticien. De plus, maints projets sont ailleurs que sur SF.NET (apache.org, gnu.org, redhat.com ), sont inclus dans les distributions Linux, ou sont téléchargeables ailleurs comme sur download.com .
Signe des temps, le premier, et de loin, est eMule, un partage de fichiers en licence GPL et C++, mais sur Windows, avec 22 millions. Ensuite on trouve d'autres logiciels dans cette catégorie, comme CDex, VirtualDub, BitTorrent, DC++.
Ensuite on trouve la grosse cavalerie du logiciel libre: Dev-C++ (remplace Visual Studio), le moteur J2EE JBoss, phpMyAdmin, le serveur de discussions phpBB. Avec Dev-C++ on est redescendu à 4 millions mais quand même!
Je remarque que, à part JBoss, le premier représentant du monde Java est l'environnement de développement jEdit , en position 33; il est certainement surclassé maintenant par le raz-de-marée eclipse . On voit par contre plein de choses en PHP. JUnit est quand même 88ème avec près de 600 000 téléchargements, ça fait plaisir.

2003-12-22

7 jours de formation à l'Institut de Recherche pour le Développement (IRD) sur Java

Je viens de terminer 7 jours de formation à l'Institut de Recherche pour le Développement (IRD) sur Java.  En sus d'une formation normale, je les ai aidés à concevoir une architecture réutilisable pour simulation. On a généralisé la notion de modèle, qui sait se calculer, qui représente un être vivant qui se déplace en 2D. Le modèle au premier niveau est un ensemble de modèles élémentaires, pouvant être e.g. un troupeau d'herbivores ou des microbes. On a deux modèles: un modèle avec marche aléatoire, et un modèle grégaire très simple. On a une notion d'afficheur qui fait une exploitation des résultats en temps réel. On a deux afficheurs:

Le javadoc est ici:
http://jmvanel.free.fr/java/formation-5jours/doc/ ,
et le source y est aussi.


Ma précédente mission, d'avril à décembre 2003, a été la réalisation d'une IHM pour un environnement de simulation en électronique, incluant le développement d'un adapteur XML pour la bibliothèque JGraph (affichage et édition de modèles définis en termes de noeuds et de liens). Cette mission, au sein d'une équipe de 13 personnes dont 8 développeurs, a été très riche humainement et techniquement.


J'ai installé le démon sshd sur les machines Windows XP des enfants (ça marche aussi sur Win2000). La première fois il faut taper sous Cygwin:

/usr/bin/ssh-host-config

Ensuite le service se lance avec:

net start /usr/sbin/sshd

Sur Windows XP ça n'a pas fonctionné d'être installé comme service Windows, on le lance à la main. Ainsi j'ai le même protocole d'un bout à l'autre de mon réseau local, et c'est sécurisé. Pour le transfert de fichiers, en ligne de commande c'est sftp, en IHM c'est gftp ou FileZilla sur Windows. Et ssh -X permet de faire tourner sur la machine distante des programmes X-Window qui s'affichent sur la machine locale, toujours sécurisé.

2003-12-11

L'information sous forme XML c'est comme les sucres rapides: c'est de l'information hautement digestible.
A partir d'XML on peut toujours générer de l'information sous forme dégradée: présentation HTML, commandes SQL, IHM, code source, configuration progiciel, etc.

2003-11-30

Idées: plein de puissance de traitement inutilisée et convivialité

Il y a plein de puissance de traitement inutilisée dans nos ordinateurs.

Et ce n'est pas centré sur l'utilisateur. Chaque chose qu'il fait doit être enregistrée, analysée, restituée intelligemment. Au niveau zéro chaque site que nous cliquons est gardé dans un historique, et un éditeur de texte garde trace des derniers fichiers édités. Mais nous voulons bien plus. Garder trace des modification passées dans ces fichiers édités. Corréler des évènements dans des programmes distincts, par exemple recevoir un certain type de courrier conduit à éditer un certain document, etc.

Toujours pour exploiter la puissance de traitement inutilisée, prenons le cas d'un épouilleur ( ;-) debugger). A un point d'arrêt il devrait pouvoir anticiper et montrer le cheminement à venir.

2003-11-08

zsh

ça fait longtemps que je voulais l'essayer. zsh complète TOUT, pas seulement les noms de fichiers, mais aussi les options des commandes. Le  seul petit ennui est que RedHat et Cygwin ne configurent pas d'office le produit. Pour bénéficier des services de zsh, juste ajouter ceci dans $HOME/.zshrc

autoload -U compinit
compinit

Et maintenant, si on tape:
ls -
puis tabulation, toutes les options apparaissent avec leur noms et résumés. Presque plus besoin de taper man !

Pour avoir une invite de commande décente comme:
jmv@protea:/home/jmv/install/savannah/#
j'ai ajouté ceci dans $HOME/.zshrc :
export PS1='%n@%m:%d# '
-




BeanShell

Il est amusant qu'au moment où je passe à zsh, j'essaie en même temps un shell 100% Java : Beanshell . Pour moi la finalité est avant tout d'avoir une machine virtuelle Java (JVM) toujours prête sans avoir à subir quelques secondes de démarrage pour lancer un petit utilitaire tel qu'une transformation XSLT. Il faut donc avant tout avoir l'équivalent des commandes:
java -jar monjar.jar arg1
java -cp dir:malib.jar MaClasse arg1
Si en plus il y a des fonctionnalité de shell: complétion, variables, etc, et une IHM tant mieux. On va voir que BeanShell et JSH font ça de façon assez différente. Commençons par BeanShell; on définit la commande shell de base pour le lancer:
cd $HOME/distribs
ln -s bsh-2.0b1.jar bsh.jar
echo 'java -jar $HOME/distribs/bsh.jar $*' > ~/bin/beanshell
chmod u+x  ~/bin/beanshell

Maintenant je peux taper ceci dans beanshell pour lancer une transformation XSLT:

addClassPath ("/home/jmv/install/saxon7/saxon7.jar");
import net.sf.saxon.*;
args = new String[2];
site = "http://wwbota.free.fr/XSLT_models/";
args[0] = site + "testHREF.xml";
args[1] = site + "attributes2elements.xslt";
Transform.main(args);

On voit qu'il y a un support assez complet du langage java en interactif. Par contre il n'y a aucun support particulier pour lancer une méthode main(). D'ailleurs si je ne crée pas les deux éléments du tableau arg, je récolte ceci :

addClassPath ("/home/jmv/install/saxon7/saxon7.jar");
import net.sf.saxon.*;
args = new String[2];
Transform.main(args);

java.lang.NullPointerException
        at net.sf.saxon.Transform.doMain(Transform.java:97)
        at net.sf.saxon.Transform.main(Transform.java:63)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at bsh.Reflect.invokeOnMethod(Reflect.java:149)
        at bsh.Reflect.invokeStaticMethod(Reflect.java:100)
        at bsh.Name.invokeMethod(Name.java:872)
        at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:72)
        at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
        at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
        at bsh.Interpreter.run(Interpreter.java:460)
        at java.lang.Thread.run(Thread.java:534)
Fatal error during transformation: null


Un manque de robustesse (de Saxon mais surtout de BeanShell) fatal à ma JVM! On voit ici que BeanShell ne récupère pas les exceptions et s'arête trop facilement. Il ne récupère pas non plus les appels à System.exit() !


JSH

La même transformation XSLT se joue ainsi dans JSH :
set classpath = /home/jmv/install/saxon7/saxon7.jar
net.sf.saxon.Transform http://wwbota.free.fr/XSLT_models/testHREF.xml http://wwbota.free.fr/XSLT_models/attributes2elements.xslt

On note un vrai support pour lancer une méthode main(). Un autre point positif est que JSH récupère les exceptions et les appels à System.exit() . Par contre l'aspect shell est limité. Les variables d'environnement ne marchent pas. Et il n'y a pas moyen de rediriger la sortie standard (heureusement dans le cas de Saxon XSLT je peux utiliser l'argument -o).

Conclusion

Les shell Java sont un domaine assez foisonnant, où aucun outil n'a acquis une position dominante. BeanShell est bien établi (inclus dans Ant par exemple), mais EN PRATIQUE il lui manque des choses essentielles.

Echidna (réutilisé par JSH) est là aussi depuis longtemps, mais il n'évolue plus. Dommage, car il a une architecture client-serveur intéressante. En effet on peut utiliser son shell de tous les jours (zsh, bash ou ce qu'on veut). Il y a un petit protocole qui permet, grâce à telnet (présent dans tous les shells dignes de ce nom) de dire au serveur Echidna quelle classe lancer avec quels arguments. On peut contrôler dynamiquement le CLASSPATH d'Echidna. Malheureusement le serveur Echidna ne reçoit pas le répertoire courant et les variables d'environnement; il faut donc donner tous les chemins de fichiers en absolu. Mais quand même, taper
javae MaClasse arg
au lieu de:
java  MaClasse arg
dans son shell de tous les jours c'est l'idéal car les shells Java ne peuvent pas de sitôt rivaliser avec les shells classiques. Beanshell aussi a un mode serveur (HTTP et telnet). Il faut faire attention à la sécurité et limiter l'accès à localhost; un serveur ssh serait idéal.

Tous ces outils de shell ne savent pas démarrer un jar avec la classe principale déclarée dans son manifeste.

2003-10-31

Ca fait des années que je cherche une alternative à Access. La combinaison de openoffice.org et MySQL paraît très naturelle. Hélas ça ne marche pas "sorti de la boîte" sur RedHat 9. Je ne me décourage pas, il y justement un HOWTO (pour OO 1.0 cependant):
http://www.unixodbc.org/doc/OOoMySQL.pdf
A suivre ..


Mon projet d'un environnement de développement d'application autour de graphes et de XQuery commence à ressembler à quelque chose. Il y a même une mini-architecture de composants/plugins à la eclipse, ce serait d'ailleurs un bon sujet d'article. Si seulement mon client était prêt à mettre ceci en opensource ! Ca ferait une bonne plate-forme qui concurencerait par certains cotés XML Spy et Stylus Studio, mais c'est aussi et surtout un cadre (framework) pour construire toutes sortes d'application métier où les données se présentent bien sous forme de graphes.

2003-09-20

Je suis partisan de la biodiversité, et le clonage biologique ne me plaît pas. Mais en informatique il n'en est pas de même. Dans cet article voici le pourquoi et le comment du clonage en Java: Attack of the clones .

2003-08-03

Architecture EJB

J'ai tendance à penser que l'architecture EJB est un peu bricolage. On passe par des générateurs de code. En plus la cible ce sont les base relationnelles classiques. Les concepts orientés objet sont subtils mais très puissants, et il a fallu des années à la communauté des développeurs pour les assimiler (et encore ...). Et maintenant on explique que ça ne suffit pas, il faut ajouter de la génération de code, de la configuration en XML, un concept de "bac à sable" pour l'exécution. Toute cette complexité a un but bien clair, qui est de pouvoir ajouter des aspects permission, sécurité, transaction, persistance, répartition de charge, etc, sans impacter les classes métier. Heureusement il y a des alternatives, notamment la "programmation orientée Aspect". Justement un article dans Dr Dobb's Journal d'août 2003 est intitulé "Lightweight Aspect-Oriented Programming". Il indique 4 approches différentes pour ajouter des "aspects" à une classe existante.
Essayé sans succès ces mots de recherche:  "J2EE EJB architecture versus pure object oriented"

Idée: graphe de dépendances

Comme je me suis occupé de graphes ces derniers mois, ça a réactivé une vision que j'avais depuis longtemps: celle de composants logiciels (classes par exemple) comme des atomes munis de valences. Une valence c'est un type de retour, ou un type d'argument d'une méthode. Les atomes (ici les classes) s'accrochent par leurs valences, et cela fait des modécules. Ici les molécules sont des graphes d'appel. Bien sûr (hélas) ce n'est pas aussi simple. Un argument String n'a pas du tout la même sémantique  suivant qu'il s'agit d'un URL, d'une chaîne XPath ou d'une chaîne à rechercher dans un texte. La solution à ça, c'est d'utiliser des classes, comme URL, qui ont une sémantique bien précise tout en encapsulant une chaîne. Ma vision initiale c'était quelque chose d'auto-constructif. Mélangeons des molécules dans un becher, agitons et voyons ce qui en sort.

Maintenant je vois les possibilités de visualisation de la structure de graphe des appels potentiels, grâce à des algorithmes génériques de positionnement (layout). On peut par exemple se donner une classe de départ et avancer par élargissement par niveaux successifs, etc récursivement. Et enfin le plus grandiose pour la fin: en appliquant des algorithmes de recherche de chemins, on pourrait automatiser pas mal de code "de jointure", autrement dit la plomberie. Par exemple si j'ai un résultat de requête SQL, et je veux un objet XML (org.w3c.dom.Node), ET si j'ai déjà dans ma base de classes ce qu'il faut, je pourrais générer la plomberie qui va bien. Ca pourrait être un chouette additif à Eclipse! Et si j'ai pas déjà dans ma base de classes ce qu'il faut, je pourrais demander à un service Web (à construire ce service Web!) ...

2003-08-01

Un peu d'Anglais pour changer ...
J'ai envoyé ceci au développeur de chez Sun qui fait JFluid, un outil de mesure de performances.

I tried your tool, it's useful. I was not able to put the output listing in the clipboard (on Linux).
And I regret that it's not open source.

Following are some ideas about an XML output for a debugger that I wrote months ago,
and  that can also be applied to your tool.
_________________________________
My use case:

It would be cool to be able to generate an UML sequence diagram out of a debugger session. In fact it is complicated because not every event is interesting; typically we want to be able to trace only a few classes or objects.
UML sequence diagrams generated out of code (e.g. by UML IDE's) also tend to have too many calls.
There are also a lot of uses of a Program execution recorder:

  * profiling
  * coverage study
  * other metrics ...

How can it be as flexible and light-weight as possible ? It's simple: by outputing nothing by itself, just issuing Sax events. This way, it is left to the debug front-end to branch a ContentHandler for a specific use, or just save the XML in a file for later processing, by XSLT for example. Here is a sample of the XML I imagine :

<instruction line="12">
<call function="justTheFunctionName">
  <args>
      <this id="122" class="actualCompleteClassName"
          name="myArgumentNameAsSpecifiedInFunctionDeclaration"
          type="myInterfaceOrAncestorClassAsSpecifiedInFunctionDeclaration"
          variable="myVariableAsSpecifiedInInstruction"/>
      <arg id="123" class="" name="" type="" variable=""/>
      <arg value="333" name="" type="int" variable=""/>
  </args>
  <!-- possibly instructions here .... -->
  <return id="124" class="" formal="" variable=""/>
</call>
</instruction>
<instruction line="13" />   <!-- simple assign -->
______________________________

So all you have to do, Mikhail, is to give the user 3 choices:
1. - no XML output
2. - XML output in standard output
3. - XML output using user implementation of org.xml.sax.ContentHandler

2 and 3 are implemented the same way, except that in 2 the ContentHandler is an XMLSerializer.
You just have to make calls such as :
_contentHandler.startElement("", "call", "call", attributes );
_contentHandler.startElement("", "args", "args", null );
etc ...


2003-07-31

Comme ces derniers mois j'ai utilisé une machine assez puissante, j'ai utilisé eclipse pas mal. J'ai surtout aprécié l'aspect base de données et requêtes sur le source (et les bibliothèques), ainsi que la restucturation (refactoring), et bien sûr le marquage en direct de toutes les erreurs Java (avec les suggestions de correction). Depuis un mois il y a les graphes d'appel, mais c'est trop lent.
Ca ne m'empêche pas de regarder jEdit, qui a une quantité impressionnante d'additifs (plugins). Et  puis jEdit n'est pas suspect d'avoir  divergé (fork) dans  le domaine des IHM Java, ce qui est le cas de eclipse avec son SWT, pour des raisons peu claires.

Je profite de mes instants libres,  au  milieu d'un projet très prennant, pour regarder les techniques et les projets. Pour l'instant je regarde quel parti on peut tirer de l'architecture JavaBeans (cf jGuru ). Je veux aussi comprendre en profondeur XQuery; il me semble que son principal avantage (sur XSLT) est d'être typé. Je ne prends pas comme un inconvénient d'être un langage fonctionnel comme ML, CAML et XSLT, car cela peut favoriser une programmation  plus sûre et prouvable. Par contre on ne peut pas faire du polymorphisme sur le type XML Schema; aparemment on ne peut même pas y accéder. On peut écrire une fonction qui prend en argument un type XML Schema précis, mais qu'arrive-t-il si l'argument ne correspond pas à l'exécution?

Je regarde aussi les API DOM3. Xerces en implémente certaines, notamment la validation en temps réel, mais la spec. DOM3 Validation, idéale pour un éditeur de document, ne semble implémentée par personne ... En tous cas il faut signaler à la JVM qu'on utilise une API DOM  plus avanccée que celle par défaut grâce à la system property java.endorsed.dirs :
java -D java.endorsed.dirs=répertoire-install-xerces/build/dom3-xml-apis.jar
    En liaison avec ça je promeus mon interface XMLEditor , qui vise à rendre un éditeur XML aussi facile à intégrer dans une IHM qu'un bouton.

Je regarde aussi  les outils de collaboration pour un projet de développement [question posée dans new:fr.comp.developpement ]
Je participe à un projet de développement en simulation, avec du C++, du Java, du Perl, du XML+XPath+XSLT, etc ...
Nous sommes 8 personnes + 2 ou 3 "commerciaux".
Il n'y a pas d'infrastructure de communication/documentation.
Il y a Clear Case pour le versionnement des sources, un peu lourd ...

Le besoin que je ressens:
- forums de discussions, avec des liens si possible bidirectionnels avec les délivrables, sources, specs, conception (UML), retro-documentation (Javadoc, Doxygen)
- gestion des tâches ( liens idem + liaison avec versionnement: telle mise à jour CVS correspond à l'accomplissement d'une tache)
- gestion des anomalies (encore liens + liaison CVS)
- moteur de recherche avec mots-clés sur tout le contenu, y compris base CVS: les modifs de telle période sur tel répertoire avec tels mots dans le libellé ou dans la modif
- peut-être visualisation de l'arborescence des documents et de leurs liens
- pouvoir assurer la traçabilité entre besoins <--> conception <--> implémentation, et les discussions alentour, peut-être avec un identifiant unique du cas d'utilisation figurant dans conception et implémentation

Il y a :
- TikiWiki (http://sourceforge.net/projects/tikiwiki/), qui n'est pas dédié développement
- plusieurs choses en cherchant sf.net avec TOUS les mots:
    "software development management"
- http://maven.apache.org/ : ça a l'air d'un truc assez lourd qui s'occupe trop
    de build et pas assez de communication
- sourceforge, en version à déployer (rappel: notre projet n'est pas open source :-( )
    * assez bon pour les forums et les tâches, mais pas beaucoup de liens, et quelle est la facilité de déploiement?
- CVSWeb: uniquement vue de l'arborescence des répertoires (pas par dates ou par auteur), OK pour les diffs, mais pas de requêtes

Des idées et retours d'expériences?


Voir ici les développements de ces idées : collabCode

2003-03-30

Abstraction

Comme je vais commencer jeudi un projet d'une IHM pour un environnement de simulation électronique, je teste des environnements de développement. Pour un test en vraie grandeur, je prends eXist bien sûr, où je voudrais ajouter l'intersection de deux ResultSet, et l'accès à la liste des mots d'une requête XPath avec le nombre d'occurences. Pour l'instant je suis confortable avec Eclipse. J'aprécie son intégration avec CVS, et bien sûr le soulignement et les suggestions pour les erreurs. J'aprécie moins qu'on ne puisse récupérer un répertoire de travail CVS déjà téléchargé, et l'obligation de tout copier dans le projet courant eclipse quand on importe un système de fichier (j'apréciais le concept de système de fichier de NetBeans, moins intrusif). Et puis quelle consommation de resources! Y'a pas photo au point de vue ressources entre Eclipse et Source-Navigator (hyper):

 PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
23124 jmv 15 0 166M 65M 5300 S 0,0 20,8  13:26 java
 783 root 5 -10 41724 30M 2752 S < 4,3 9,7 1355m X
30129 jmv 15 020456 19M 14848 S 0,0  6,3 0:41 konqueror
30175 jmv 15 019240 18M 2508 S 0,0  6,0 0:35 hyper

Je suis tombé sur Source-Navigator par hasard chez RedHat, en cherchant autre chose. C'est une IHM d'apparence un peu rustique mais quelles fonctionalités de navigation! Quelle rapidité! Pour appréhender rapidement un gros volume de code (Java C C++ ou même Fortran je ne vois rien de mieux. Autrement j'utilisaisDoxygen ou Xref-Java2Html , des outils qui créent un site HTML statique (donc que des hyperliens prédéfinis, pas de requêtes), et un outil UML (Poseidon), trop lourd et pas bon en navigation (pas d'accès aux ancêtres, descendants, et associations à partir d'une classe dans le diagramme).
Au passage je vois dans eXist deux classes qui ont été faites l'une à partir de l'autre (ResourceSetImpl et LocalResourceSet). Il faudrait créer un ancêtre commun. Donc je cherche des outils de restructuration de code (refactoring): Mozart, freefactor , RefactorIt, ... Pour l'instant je ne trouve rien pour faire ceci au niveau de la classe. Extraire un passage et le promouvoir en une méthode et l'appeler à cet endroit, ça marche avec Eclipse.
Par contre j'ai trouvé un outil de diagnostic sans pareil: PMDCDP (Copy Paste Detector ). Le premier rapporte des manquements à des règles en XML: Basic, Naming, Unused Code, Design, Import Statements, JUnit Tests, Strings, Braces, Code Size and produit des rapports en XML ou HTML (voir exemples de rapports PMD et CPD). Le deuxième, c'est encore plus fort, sort la liste de tous les bouts code dupliqués plus grands qu'une certaine taille.

2003-03-28

Dans mon Linux Mag j'ai vu l'apparition de SAP DB. Je ne sais pas si c'est vraiment mieux que MySQL et PostGreSQL, mais on voit que le relationnel devient une commodité gratuite. Ca va tout à fait dans le sens de l'histoire. SAP fait la part du feu en gardant pour la vente son PGI (Progiciel de Gestion Intégrée). C'est l'étape à laquelle on assiste maintenant dans le développement du Logiciel Libre: il devient hégénomique dans le logiciel de base.  Mais je prévois que bientôt le logiciel métier sera investi, en commençant par ce qui est le plus générique. La frontière entre le libre et le licencié va devenir de plus en plus mouvante et subtile.

Maintenant que je suis admis comme développeur de eXist, j'ai maintenant trois projets sur sourceforge.net. Hourra !

2003-03-19

démo. de Office X11 par Jean Paoli

Hier à Technoforum j'ai vu une démo. de Office X11 par Jean Paoli, le grand chef XML chez Microsoft. Un fois de plus, Microsoft a fait un beau cheval de Troie pour pénétrer l'entreprise. Il a fait ce que les autres éditeurs ont gardé sur un marché de niche cher.
En gros, une secrétaire va pouvoir éditer en suivant un XML Schema dans son Word familier.
Et côté libre, qu'y a-t-il ? Rien d'approchant, à ma connaissance. Mais qu'y a-t-il comme projet?
Le bon côté de la chose, c'est le libre va pouvoir s'appuyer, comme il l'a déjà fait, sur ce travail de spécification pour faire mieux. Et il pourrait le faire plus efficacement, car eux ont eu à patcher une vieille base de code. Mais combien de temps cela va-t-il prendre ? En attendant, OpenOffice et autres AbiWord prennent un coup de vieux.

Ce qui est intéressant aussi, c'est que Microsoft se donne maintenant la coquetterie de suivre les standards, en l'occurence ceux du W3C. Fort de ses $, et peut-être grâce à certaines clauses du procès de l'administration Américaine, il se permet une concurrence moins déloyale. Mais quand on est à ce niveau de fonctionalités (et donc de dépenses en développement), c'est simple, il n'y a que le libre qui puisse suivre.

Quand à moi j'ai plein d'idées (et pas beaucoup de $ -:( ) sur ce que pourra être un éditeur XML voir:
http://wwbota.free.fr/editor-spec.htm
http://wwbota.free.fr/XMLinside.htm

Ajouté à ça le concept ZIP (Zoom Interface Paradigm, http://humane.sourceforge.net/humane_interface/hollands_review.html ),
et nous aurons quelque de plus puissant que Office X11.

2003-03-04

xupdate

Enfin! Vu sur exist-open@lists.sourceforge.net :

"I played a little bit with xupdate from the cvs. It works realy fine."

En fait je vais peut-être faire carrément des infidélités à XSLT!

Stefano Mazzocchi publie aujourd'hui sur la liste cocoon-dev@xml.apache.org : "STX could seriously replace XSLT on the server side". STX serait mieux adapté au traitement SAX de Cocoon. Il semble que la vision des auteurs de XSLT (et avant de DSSSL) d'un langage fonctionnel, avec des variables immuables, et qui donc facilite un re-parcours optimisé du traitement quand les données changent, ne passe pas. Dommage! En tous cas je compte bientôt utiliser un autre langage fonctionnel, CAML, pour faire du XML.

2003-03-03

ma formation Cocoon

J'ai mis au propre ma formation Cocoon.

J'essaye pour la première fois xsltproc sur Linux:
xsltproc style.xslt *.xml
Ca marche bien, et il n'y a pas besoin de lancer une machine virtuelle pour ça ! Je vais peut-être faire des infidélités à Saxon !

2003-02-02

Je mets à jour ma bibliothèque de transformations XSLT

Je mets à jour ma bibliothèque de transformations XSLT. Il faudrait des mode= partout pour être bien modulaire, justement. J'aime bien ces outils qui se valident les uns les autres: à partir d'une instance XML, je fais un XML Schema, puis je valide l'instance avec le Schema généré.
A cette occasion, je me rends compte que XSLT et XML Schema ne marchent pas parfaitement ensemble. Par exemple, si l'instance XML contient <ns:e>, je ne peux pas dans le XML Schema généré mettre directement <xsd:element name="ns:e">.
XSLT et XSD sont des techniques bien faites, prises à part. Mais il n'y a pas de vision d'ensemble au W3C, parce qu'il n'y a pas de visionnaire. Il y a bien Tim Berners-Lee, mais il pense surtout au Web Sémantique. A apache.org, c'est à peu près la même chose. Il faudrait des visionnaires qui veillent à la cohérence d'ensemble des concepts, à l'orthogonalité.

2003-01-31

plusieurs outils versus XMLSpy

Voilà ce que j'ai répondu sur news:fr.comp.text.xml ; ça n'était sans doute pas ce qu'il voulait -:)  :

Effectivement, la combinaison de plusieurs outils apporte presque autant de XMLSpy. En outre je n'ai pas confiance dans la qualité de la validation de XMLSpy, qui s'arrête à la première erreur comme un mauvais compilateur.

Comme éditeur, j'utilise Pollo, une application Java, qui présente des bandes colorées dépliables - repliables, le glisser-déposer, exploite les DTD et XML Schemas, et permet des requêtes XPath.

Comme éditeur de console, j'utilise gvim, qui fait une excellente coloration syntaxique.

Autrement je fais tout en ligne de commande, de la même façon sous Linux ou sous Windows:
- HTML TIDY pour convertir du HTML de Office en HXTML
- saxon pour mes transformations XSLT
- xmllint pour valider une instance XML (sous Windows grâce à Cygwin)
- Xerces ou XSV pour valider par rapport à un XML Schema

Castor permet (en ligne de commande) de:
- convertir une DTD en XML Schema
- obtenir un XML Schema à partir d'une instance XML
- générer des classes Java à partir d'un XML Schema (et la bibliothèque pour convertir instance Java<==> instance XML)

Maitenant pour l'aspect conception graphique de Schema/DTD, je ferais ceci si j'en avais besoin pour un projet. Je créerais des classes dans un éditeur UML (Unified Modeling Language); c'est très convivial avec Poseidon/argoUML, on peut faire sa mise en page alors que XMLSpy peut pas. Ensuite, je génèrerais les classes Java. Enfin il y a deux solutions pour générer du XML Schema à partir des classes Java:
- introspecter les classes récursivement, et créer un complexType pour chaque classe
- faire une transformation XSLT qui prend le fichier UML au format XMI (c'est du XML) et le traduit en XML Schema; l'avantage est que c'est plus direct, mais c'est sûrement plus difficile, le format XMI n'est pas simple

Voir:
Principales_sources_technologiques.htm
metadonnee.html

R. Vigon wrote:
Bonjour,
Connaitriez-vous un equivalent gratuit (ou encore mieux, libre) de XMLSpy (http://www.xmlspy.com) qui tourne sous windows ?

2003-01-30

QUESTIONS Cocoon :

Idée: faire des pages Cocoon qui affichent le résultat de un ou plusieurs valideurs XML Schémas (voir http://jmvanel.free.fr/xsd/valid-sitemap.txt).

Si mes formations Cocoon2 , Perl ,  et le projet WWBKB me laissent un peu de temps, j'ai de grands projets sur la métadonnée :

J'ai commencé à écrire une méthodologie de développement XSLT. Il faudrait continuer, et insister sur les modes pour la modularité.

J'ai trouvé l'implémentation WSDL que je cherchais, c'est Apache WSIF (Web Services Invocation Framework) .

J'ai installé le logiciel de calcul formel Maxima . C'est amusant de le retrouver 20 ans après, avec un bel habillage, des pages HTML étendu pour lancer les calculs, un traceur de courbes, et c'est GPL! C'est l'ancêtre de Maple et Cie.

2003-01-24

Pour ne pas polluer mon block-note avec des choses trop techniques, je commence aujourd'hui ce block-note informatique. Il y aura plein d'opinions, de découvertes, d'espoirs, d'inquiétudes.

J'ai installé Sodipodi, un éditeur SVG. Une IHM de bonne facture, avec  des sous-palettes dépliables-repliables comme Rational XP.  Je vais l'utiliser concuremment avec Amaya, c'est bien d'avoir plusieurs éditeurs, surtout pour un format émergeant.

Je viens de lire le didacticiel de Cyril Vidal sur Soap. L'architecture Apache Soap a l'air vraiment lourde. Je n'ai pas trouvé d'implémentation WSDL dans freshmeat, il doit y avoir qqchose chez Sun. 

2003-01-23

ponts XML-objets en Java

Dans la famille des ponts XML-objets en Java, je demande ... skaringa.
J'ai compilé skaringa avec junit.jar et log4J.jar .
C'est le seul outil que je connais qui fait un XML Schema à partir d'une classe. Mais le format XML généré est spécial, différent de Castor.
De plus un utilisateur se plaint d'une récursion infinie dans le cas d'objets ayant des références circulaires. Je sais que JSX le fait bien, Castor je ne sais pas.

Il faut lire le nouveau document Sun, qui s'appelle XML Bind, il y a une implémentation de référence. Castor, skaringa, JSX font chacun les choses à leur façon, il faut tester un cas avec un graphe d'objets avec tous ces frameworks.

2003-01-22

Jbind à est voir: cela ressemble à l'architecture Simeo que j'ai faite pour Oxand :
http://jbind.sourceforge.net/


Table des matières