Bloc - note informatique
© 2008-2014 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 . ma page Twitter : https://twitter.com/jmvanel_fr - FOAF : http://jmvanel/free.fr/jmv.rdf#me

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

je propose une prés. sur le Web sémantique et les moteurs de règles, et comment les faire marcher ensemble .

Le projet Déductions - présentation - ma vidéo : démo cadriciel EulerGUI : mélanger règles métier et règles Java

NOTE: ce blog contient des idées au jour le jour, qui ne sont pas nécessairement mon opinion et mes (pré)occupations principales.


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

2014-07-22

Notes Wordnet & Cie

Exemple 1 : cours de langue ; durée D , langue L.

durée

Dans rdf-i18n/wordnet/wordnet-synset.fr.ttl ( sur github ) on a le label en français associé à un URI de WordNet :

<http://purl.org/vocabularies/princeton/wn30/synset-length-noun-3> rdfs:label "durée"@fr.

http://wordnetweb.princeton.edu/perl/webwn?s=duration

Wordnet de base en anglais nous donne des infos sur les concepts :

~/data/nlp/ % ls -ltr
total 366092
-rw-rw-r-- 1 jmv jmv  38996551 nov.  17  2011 wolf-0.1.5.xml
-rw-rw-r-- 1 jmv jmv       899 juil.  2 10:47 debvisdic-strict.dtd
-rw-r--r-- 1 jmv jmv  39672999 juil.  3 15:53 wolf-1.0b4.xml
-rw-rw-r-- 1 jmv jmv   7357417 juil.  3 16:41 rdf_wordnet-hyponym.ttl
-rw-rw-r-- 1 jmv jmv     54902 juil.  3 16:41 rdf_wordnet-attribute.ttl
-rw-rw-r-- 1 jmv jmv  11088872 juil.  3 16:41 rdf_wordnet-skos-inScheme.ttl
-rw-rw-r-- 1 jmv jmv   1118435 juil.  3 16:41 rdf_wordnet-membermeronym.ttl
-rw-rw-r-- 1 jmv jmv     16170 juil.  3 16:41 rdf_wordnet-causes.ttl
-rw-rw-r-- 1 jmv jmv  16030316 juil.  3 16:42 rdf_wordnet-glossary.ttl
-rw-rw-r-- 1 jmv jmv 238600563 juil.  5 15:58 wolf-1.0b4.xml.ttl
-rw-rw-r-- 1 jmv jmv      1800 juil.  7 05:54 wnskosmap.rdfs
-rw-rw-r-- 1 jmv jmv  21880390 juil.  7 10:17 wordnet-synset.ttl

Wordnet de base en anglais nous donne des infos sur le concept de durée:

~/data/nlp/ % grep wn30:synset-duration-noun-1 *
rdf_wordnet-glossary.ttl:wn30:synset-duration-noun-1 wn20schema:gloss "the period of time during which something continues"@en-us .
rdf_wordnet-hyponym.ttl:wn30:synset-clocking-noun-1 wn20schema:hyponymOf wn30:synset-duration-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-duration-noun-1 wn20schema:hyponymOf wn30:synset-time_period-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-longueur-noun-1 wn20schema:hyponymOf wn30:synset-duration-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-residence_time-noun-1 wn20schema:hyponymOf wn30:synset-duration-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-rule-noun-6 wn20schema:hyponymOf wn30:synset-duration-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-span-noun-1 wn20schema:hyponymOf wn30:synset-duration-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-stretch-noun-6 wn20schema:hyponymOf wn30:synset-duration-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-time_scale-noun-1 wn20schema:hyponymOf wn30:synset-duration-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-value-noun-5 wn20schema:hyponymOf wn30:synset-duration-noun-1 .
rdf_wordnet-skos-inScheme.ttl:wn30:synset-duration-noun-1 skos:inScheme <http://purl.org/vocabularies/princeton/wn30/> .
wordnet-synset.ttl:wn30:synset-duration-noun-1 a wn20schema:NounSynset .
wordnet-synset.ttl:wn30:synset-duration-noun-1 rdfs:label "duration"@en-us .
wordnet-synset.ttl:wn30:synset-duration-noun-1 wn20schema:synsetId 115133621 .

Hélas, on n'a rien qui dise que durée a une valeur numérique (et idéalement que l'unité est l'heure).

Par contre on a :

NOTE: WorNet en RDF est disponible ici:

http://semanticweb.cs.vu.nl/lod/wn30/

http://eculture.cs.vu.nl/git/public/?p=vocs/wordnet.git;a=tree;f=rdf;hb=HEAD

langue

Malheureusement, rien dans wordNet ne nous indique les sous-catégories de langue , même si on a les sous-catégories de wn30:synset-English-noun-1

% grep wn30:synset-English-noun-1  *.ttl
rdf_wordnet-glossary.ttl:wn30:synset-English-noun-1 wn20schema:gloss "an Indo-European language belonging to the West Germanic branch; the official language of Britain and the United States and most of the commonwealth countries"@en-us .
rdf_wordnet-hyponym.ttl:wn30:synset-American_English-noun-1 wn20schema:hyponymOf wn30:synset-English-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-English-noun-1 wn20schema:hyponymOf wn30:synset-West_Germanic-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-King_s_English-noun-1 wn20schema:hyponymOf wn30:synset-English-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-Middle_English-noun-1 wn20schema:hyponymOf wn30:synset-English-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-Modern_English-noun-1 wn20schema:hyponymOf wn30:synset-English-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-Old_English-noun-1 wn20schema:hyponymOf wn30:synset-English-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-Oxford_English-noun-1 wn20schema:hyponymOf wn30:synset-English-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-Received_Pronunciation-noun-1 wn20schema:hyponymOf wn30:synset-English-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-Scottish-noun-1 wn20schema:hyponymOf wn30:synset-English-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-cockney-noun-2 wn20schema:hyponymOf wn30:synset-English-noun-1 .
rdf_wordnet-hyponym.ttl:wn30:synset-geordie-noun-2 wn20schema:hyponymOf wn30:synset-English-noun-1 .
rdf_wordnet-skos-inScheme.ttl:wn30:synset-English-noun-1 skos:inScheme <http://purl.org/vocabularies/princeton/wn30/> .
wordnet-synset.ttl:wn30:synset-English-noun-1 a wn20schema:NounSynset .
wordnet-synset.ttl:wn30:synset-English-noun-1 rdfs:label "English"@en-us .
wordnet-synset.ttl:wn30:synset-English-noun-1 wn20schema:synsetId 106947032 .

Alors, se tourner vers dbPedia ?

De toute façon, on a un alignement entre dbPedia et WordnNet je crois ...

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

A Semantic Web Primer for Object-Oriented Software Developers

www.w3.org

Difference between ontology and object oriented models - ANSWERS

answers.semanticweb.com

A Semantic Web Primer for Object-Oriented Software Developers

www.w3.org

Comparison of semantic modeling and object-oriented modeling - Recherche Google

www.google.fr

2014-07-14

Pas de réponse pour l'instant d'Alex. à mon issue:

https://github.com/w3c/banana-rdf/issues/105

Mais je le fais en Jena à partir d'un objet Banana .

A part ça j'affiche maintenant un bout de formulaire généré avec Play!

Aussi passé à Play 2.3.1 le dernier.

La spec du formulaire est encore en dur , je continue ce matin :) .

Tout est poussé dans github:

https://github.com/jmvanel/semantic_forms/commits/master

2014-07-01

Test DomainApp + pré-remplissage

J'ai testé ceci avec DomainApp:

1. Afficher mon FOAF en collant cet URL dans le champ en haut à gauche :

http://jmvanel.free.fr/jmv.rdf#me

2. créer une personne en appuyant sur le boutton avec l'icone "personne"

Alors, comme

http://jmvanel.free.fr/jmv.rdf#me

représente une personne, et que foaf:knows a comme type (range) foaf:Person ,

le champ foaf:knows est rempli avec cet URL .

Ca marche avec la dernière URI visualisée;

on pourrait étendre ça à toute la session.

2014-06-30

TODO EulerGUI

2014-06-29

update N3; PARSE ERROR in http://usefulinc.com/ns/doap#Project
 ( /home/jmv/.eulergui/n3_cache/doap_Project_5372792347641627907.n3 ) 
Erreur pendant  re-parsing N3 source "http://usefulinc.com/ns/doap#Project"
 getLocalN3(): /home/jmv/.eulergui/n3_cache/doap_Project_5372792347641627907.n3
getURI(): http://usefulinc.com/ns/doap#Project
class java.lang.RuntimeException
Cause:
http://usefulinc.com/ns/doap#Project
n3_project.exceptions.parser.ParsingException: parse succeed
reduce error: @keyword not declared for 'rdf'
@keyword not declared for 'rdf'

Spécification recherche "à la Google"

On entre ( avec ou sans assistance sous forme de complétion) une chaîne du genre:

type:personne nom:Vanel "Scala"

La recherche portera sur la classe dont le label dans la langue de l'utilisateur correspond; ( ici foaf:Person )

sur la propriété dont le label dans la langue de l'utilisateur correspond.

( ici foaf:name )

Je pense que BigData tient la route pour faire une complétion en temps réel...

2014-05-26

> Est-ce que tu as une solution à des changements de JenaDB qui rendraient

> impossible la lecture d'une ancienne base ?

Je peux rattraper l'exception en question, et conseiller une

sauvegarde avec l'ancienne version de TDB,

destruction de l'ancienne base et rechargement de la sauvegarde .

Mais j'aimerais savoir comment détecter au niveau de l'API la version

de la base.

Par ailleurs je suis en plein test de BigData(R) , alternative à Jena :

http://jmvanel.free.fr/computer-notes.html#L53740

Le petit ennui est que BigData utillise l'API Sesame (alias SAIL alias

OpenRDF) et non l'API Jena.

Mais il y a des solutions.

Results :

Failed tests:   testRDFList(unif.TestTripleStoreTDB): queryResult.size() == 7
  testpostproc_build(eulergui.project.TestProjectSequence): must have a result with subject (..)
  testSelectSPARQL(eulergui.gui.TestSPARQLInGUI): rowCount > 0
  testAddNewSPARQL(eulergui.gui.TestSPARQLInGUI): contains birthDate
  testTooltip(eulergui.gui.TestEulerGUITooltip): "<HTML><http://exampleS#waza>:<BR></HTML>" does not match pattern: .*Comment for waza in the ex: namespace.*
  test_read_project_n3p_n3(eulergui.gui.TestN3FormatForProject): rdfs_typeTriples.size() >= 6
  test(deductions.runtime.swing.N3TableModelTest): after tableModel.addAfter() 2 expected:<1> but was:<2>
  testPostproc(deductions.runtime.RuleBasedApplicationWithCacheTest): expected:<2> but was:<1>
  testRuleWithURIArgument2(deductions.runtime.RuleBasedApplicationWithCacheTest): call to printURI2 by rule Succeeded
  testRuleWithURIArgument3(deductions.runtime.RuleBasedApplicationWithCacheTest): call to printURI2 by rule Succeeded
  testFormFromResource(deductions.runtime.TestRulesForUserEvents): form and field as expected
  testRuleWithURIArgument2(deductions.runtime.RuleBasedApplicationStarterTest): call to printURI2 by rule Succeeded
  testPostproc(deductions.runtime.RuleBasedApplicationStarterTest): expected:<1> but was:<0>

Tests in error: 
  testNamedDataset(unif.TestTripleStoreTDB): already closed
  testNamedDataset2(unif.TestTripleStoreTDB): Not in a transaction
  storeTripleinNamedDatasetandRetrieve(eulergui.jena.JenaTDBTest): already closed
  testXMLInputGloze(eulergui.gui.TestEulerGUIInputs): Wait for "getText() Component Chooser "Jean-Marc Vanel"(..)
  testCreateProjectInGUI2(eulergui.gui.TestFacebookSearch): Wait for "Action NAME Component Chooser "Add N3 source"(..)
  testRemoteFacebookSearch(eulergui.gui.TestFacebookSearch): Wait for "Action NAME Component Chooser "Run Drools"(..)
  testCreateProjectInGUI(eulergui.gui.TestFacebookSearch): Wait for "Action NAME Component Chooser "Add N3 source"(..)
  testXMLOutputFromRDF(eulergui.gui.TestEulerGUIOutputs): Menu pushing: (JMenuItem with text "File")
  test_uml2(eulergui.gui.TestGenericGuiGenerationInsertLogical): Wait AbstractButton with text "Employee" loaded
  test_cv2(eulergui.gui.TestGenericGuiGenerationInsertLogical): Wait for "Action NAME Component Chooser "Run Drools"(..)
  test_ecore2(eulergui.gui.TestGenericGuiGenerationInsertLogical): Wait for "Action NAME Component Chooser "Run Drools"(..)
  test_foaf_import2(eulergui.gui.TestGenericGuiGenerationInsertLogical): Wait for "Action NAME Component Chooser "Run Drools"(..)
  test_person_import3(eulergui.gui.TestGenericGuiGenerationInsertLogical): Wait for "Action NAME Component Chooser "Run Drools"(..)
  testLocalImportSwrlWithEuler(eulergui.gui.TestImportSwrl): Wait for "getText() Component Chooser ":bc a :BadChild."(..)
  testLocalImportSwrlWithDrools(eulergui.gui.TestImportSwrl): Wait for "Action NAME Component Chooser "Run Drools"(..)
  testRemoteImportSwrlWithEuler(eulergui.gui.TestImportSwrl): Wait for "Action NAME Component Chooser "Run N3 queries - Euler + Yap"(..)
  testRemoteImportSwrlWithDrools(eulergui.gui.TestImportSwrl): Wait for "Action NAME Component Chooser "Run Drools"(..)
  test_cv2(eulergui.gui.TestGenericGuiGenerationInsertLogicalRefactorRules): Wait AbstractButton with text "Skill" loaded
  test_foaf_import2(eulergui.gui.TestGenericGuiGenerationInsertLogicalRefactorRules): Wait for "Action NAME Component Chooser "Run Drools"(..)
  test_person_import3(eulergui.gui.TestGenericGuiGenerationInsertLogicalRefactorRules): Wait for "Action NAME Component Chooser "Run Drools"(..)
  test_uml2(eulergui.gui.TestGenericGuiGenerationInsertLogicalRefactorRules): Wait for "Action NAME Component Chooser "Run Drools"(..)
  test_ecore2(eulergui.gui.TestGenericGuiGenerationInsertLogicalRefactorRules): Wait for "Action NAME Component Chooser "Run Drools"(..)
  testURLProject(eulergui.gui.TestJavaEditor): Wait for "getText() Component Chooser "Employee"(..)
  testAddNewN3SourceEditor(eulergui.gui.TestN3SourceInGUI): Wait for "Action NAME Component Chooser "Add N3"(..)
  test_SaveNewProjectAsN3(eulergui.gui.TestN3FormatForProject): Wait for "Action NAME Component Chooser "Add N3 source"(..)
  test_read_newproject_n3p_n3_from_file_menu(eulergui.gui.TestN3FormatForProject): JFileChooser's window
  test_SaveExistingProjectAsN3(eulergui.gui.TestN3FormatForProject): JFileChooser's window
  test_read_newproject_n3p_n3(eulergui.gui.TestN3FormatForProject): Wait AbstractButton with text "plants.n3" loaded
  testJavaIindirectInstantiationThroughVariable(deductions.runtime.BasicRuntimeTest): org.drools.common.DefaultFactHandle cannot be cast to scala.runtime.Nothing$

Tests run: 238, Failures: 13, Errors: 29, Skipped: 0

[INFO] Total time: 24 minutes 46 seconds
[INFO] Finished at: Thu Apr 24 09:51:33 PDT 2014

in DomainApp, pre-filling the form with URI from previous form when types agree

N3Form : "reverse" triples : value is shown with a yellow background,

remote SPARQL in EulerGUI classic: add button to enter user+password for the endpoint

TESTED : actually use credentials in query

- DataGUI: with new button to show instances of a class URI, show all classes in combobox

COMMIT

FIX Maven test-compile

2014-04-18

<Randy> how can i get repeated values from a list

<dibblego> ! List.fill(7)("hi")

<multibot_> List[String] = List(hi, hi, hi, hi, hi, hi, hi)

Bouton personalisé pour POC e-commerce

Il s'agit d'un Bouton pour créer une offre ou demande ( eg:ItemSpecification ).

ANGLAIS:

Le vocabulaire N3 spécifique :

eg:ItemSpecification a owl:Class.
eg:quantity a rdfs:DatatypeProperty  ;
  rdfs:domain eg:ItemSpecification ;
  rdfs:range xsd:integer .
eg:forProductOrServiceClass a rdfs:ObjectProperty ;
  rdfs:domain eg:ItemSpecification ;
  rdfs:range rdfs:Class .
eg:creator a rdfs:ObjectProperty ;
  rdfs:domain eg:ItemSpecification ;
  rdfs:range a foaf:Person .

Commité ici :

http://code.sf.net/p/eulergui/code/trunk/eulergui/examples/barter.owl.n3

2014-04-15

Pour les triplets "inverses", en fait:

http://cfp.devoxx.fr/devoxxfr2014

<jmvanel> je viens de mettre à jour mon eclipse avec un nouveau Scala IDE ! :)

<kali> gg :)

<kali> sans le péter ?

<jmvanel> les plugin ne sont pas pas certifiés :(

<jmvanel> pas sérieux de la part de TypeSafe !

<kali> bha, au moins ya pas openssl dedans

<jmvanel> kali je te tiens au courant

<jmvanel> :)

<jmvanel> il demande des test du setup ...

<jmvanel> là g dit oui ...

<jmvanel> un petit clean pour essayer d'activer des nouvelles fonctionalités ...

<jmvanel> toujours pas d'infobulle pour les commentaires scaladoc !!!!!

* kali garde son vim

<jmvanel> :)

<jmvanel> Affectivement côté nouveautés y'a presque rien : http://scala-ide.org/blog/release-notes-3.0.3.html

<jmvanel> Peut-être une amélioration sur les mélanges Java Scala ...

<kali> dis donc, il est lent leur site

<jmvanel> mais pas de pétage pour l'instant !

2014-02-20

2014-02-12

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

Thèse Andrei Sambra : details sur WebID

On va parler de #dbPedia et donc #semweb ce soir au Paris #machinelearning meetup :

http://www.meetup.com/Paris-Machine-learning-applications-group/events/159576942/

Mon premier billet sémantique: Inondations simulation, et prévention

Lien : Inondations simulation, et prévention

Mon premier billet sémantique, entré avec DomainApplication.

domainApp examples/domain-app-all.n3 &

En ce moment on voit une immense fresque du CNRS sur les modélisations et les simulations, dans le grand couloir du Métro à Montparnasse:

http://www2.cnrs.fr/presse/communique/3377.htm

Dans le même temps, on entend des nouvelles comme quoi des habitants ont été *surpris* par une inondation.

En 2014, on a en plus des simulations (mon métier initial), on a:

- les données de masse (big data)

* Notamment, on a les données sur les précipitations depuis des dizaines d'années.

- Internet, les réseaux GSM, les réseaux sociaux

- les prévisions de la météo nationale

- les images satellite

Or les dégats sont dus en grande partie à une non anticipation.

SI on met en balance le coût des dégats et le coût d'un système d'information pour la prévision locale et l'avertissement, il n'y a pas photo !

Mais j'ai bien peur qu'il n'y ait rien de prévu.

En fait les pouvoirs publics gèrent à la petite semaine, et il n'y a pas de notion de retour sur investissement.

En cherchant on trouve ceci : http://agire.brgm.fr/MI_projet_ANFAS.htm : un projet européen fini en 2003. Et on sait ce que c'est qu'un projet européen fini !

2014-02-11

un petit tour dans rosettacode.org

Les catégories de problèmes de programmation sont les mêmes dans les différents langages ( c'est l'avantage du site ) :

http://rosettacode.org/wiki/Category:Scala

MAIS ...

ça inclut surtout des questions sur la programmation disons bas niveau, pas sur comment structurer une grosse appli.

Séminaire du LSV - ENS Cachan

http://www.lsv.ens-cachan.fr/Seminaires/

Alberto Pettorossi - Professor of Theoretical Computer Science

http://www.iasi.cnr.it/~adp/

ENS Cachan

Alberto

Fibonacci peut être calculé en une formule.

règles de réécriture

CCS

système MAP en ligne

http://www.iasi.cnr.it/~proietti/system.html

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

http://www.huffingtonpost.fr/laurent-orseau/intelligence-artificielle-robot_b_4721823.html?utm_hp_ref=tw

Nouvelles du développement

Dans une semaine , la révision 4000 !

---------

Déjà la révision 4000 !

Une version 2.11 se profile à l'horizon; je viens de mettre à jour le CHANGELOG:

http://svn.code.sf.net/p/eulergui/code/trunk/eulergui/CHANGELOG

Pas mal de travail sur les applications plus "grand public" : DomainApplication, DataGUI & SWExplorer.

La mise en page pour les propriétés multi-valuées est améliorée.

On pourra bientôt enlever des triplets de la base de triplets Jena TDB.

Je commence à entrer mon journal dans DomainApplication. Tout est sous forme de triplets sémantiques: le titre, le contenu, la date, l'auteur qui est repéré par son URL FOAF public.

La migration vers Scala continue: on utilise de plus en plus de futures ( les threads avec plus de sucre syntaxique ). On tire parti de la contruction "self type", qui permet de spécifier une dépendence, ou de découper en deux une grosse classe facilement.

Un snapshot a été mis en ligne ce matin.

TÉLÉCHARGER le snapshot:

http://eulergui.sourceforge.net/maven2/eulergui/eulergui/2.1-SNAPSHOT/?C=M;O=D

Et le manuel d'utilisation mis à jour en permanence est ici:

http://svn.code.sf.net/p/eulergui/code/trunk/eulergui/html/documentation.html

Une collaboration se dessine avec Stample, et il y a une complémentarité claire:

Toutefois connecter Déductions et Stample ne sera pas simple.

Le code de Stample est basé sur une bibliothèque Scala de très bonne qualité, Banana-RDF.

Banana-RDF est un cadriciel pour le Web sémantique, qui encapsule le Jena et Sesame d'une manière sûre et efficace.

Il offre un ensemble assez complet de services:

Voici mes propositions pour des premières étapes, sur la liste Stample:

https://groups.google.com/d/msg/stample/56q8vajIPqY/o22jmqQj7hkJ

Je prévois aussi d'emballer la classe Triple d'EulerGUI et l'intégration Drools à la sauce Banana, ce qui permettra de:

2014-02-10

http://fr.slideshare.net/businessangeleu/description-de-la-technologie-cfarm

http://www.editions-eni.fr/livresgratuits

http://www.infoq.com/fr/articles/cake-pattern-scala-explique-developpeurs-spring

http://daily-scala.blogspot.fr/2010/02/self-annotation-vs-inheritance.html

2014-02-09

2014-02-08

La CNIL a condamné la société Google

La CNIL a condamné la société Google à 150 000 euros d'amende pour manquements à la loi « informatique et libertés ». Décision accessible à l'adresse suivante: http://www.cnil.fr/linstitution/missions/sanctionner/Google/

linkchecker

ça marche bien

évidemment une grosse page comme

http://svn.code.sf.net/p/eulergui/code/trunk/eulergui/html/documentation.html

ça prend 2mn à cause des timeout.

Et je me limite aux liens directs :

linkchecker -o html --recursion-level=1

2014-02-07

Bases SQL en accès libre sur internet ?

Chers tous,

Si je veux tester certain outils, ce serait bien d'avoir des bases SQL en accès libre sur internet .

C'est plus rapide que d'en installer et d'en peupler moi-même .

Ou alors un script shell qui fait tout ça sur Linux ?

Est-ce que ça existe ?

projet wordpress-free-fr et dépôt subversion (maj le 08/08/2013)

http://rodolphe.marsolier.free.fr/cms/?p=3662

Recherche playlist turtle semantic

Une approche fondée sur le raisonnement à partir de cas pour la mise à jour interactive d’objets du Web sémantique

http://hal.archives-ouvertes.fr/docs/00/91/02/94/PDF/rpc2013_submission_1.pdf

http://www.irisa.fr/LIS/softwares/sewelis

http://www.dajobe.org/talks/200805-semtech/Yahoo%20Semantic%20Web%20in%20Production.pdf

Introduction OO au web sémantique

intro_semweb.html

https://twitter.com/jmvanel_fr/status/431802194665275394

Imaginez que vous puissiez écrire comme en Java/Python/Ruby/etc , des affectations de propriété comme ceci:

France.president = Francois_Hollande // 1

Deduction.type = SARL // 2
Deduction.siege = Paris

Mais vous voudriez pouvoir échanger ces données :

En somme on veut faire du partage ou transmission de données sans conventions préalables.

C'est à dire que la sémantique doit être portable.

Comment faire ?

C'est là que le web sémantique apporte une solution.

Justement en exprimant la sémantique à l'aide de la toile.

L'idée de base est très simple: chaque concept (object, instance, propriété, classe) est associé à un URI ( URL généralement ).

Ca a 2 avantages:

  1. les URI sont par définition des identifiants globalement uniques dans le web, qui est lui-même le principal réseau informatique;
  2. en ouvrant avec un navigateur web une de ces URI "spéciales" , celui qui gère le concept peut fournir une définition du concept lisible par l'homme.

La suite sur intro_semweb.html

2014-02-06

http://vocab.deri.ie/void#Dataset

Générateur de formulaire sémantique générique

Bonjour

J'ai commencé à écrire un générateur de formulaire sémantique générique, c'est à dire qui a comme entrées:

Le test et l'algo:

http://svn.code.sf.net/p/eulergui/code/trunk/eulergui/src/test/scala/deductions/runtime/abstract_syntax/FormSyntaxFactoryTest.scala

http://svn.code.sf.net/p/eulergui/code/trunk/eulergui/src/main/scala/deductions/runtime/abstract_syntax/FormSyntaxFactory.scala

http://svn.code.sf.net/p/eulergui/code/trunk/eulergui/src/main/scala/deductions/runtime/abstract_syntax/FormModule.scala

Ca utilise Banana-RDF / Jena comme Stample .

C'est générique en ce sens que l'on crée une syntaxe abstraite (structure de données) de formulaire. Ca permet ensuite de générer du HTML ou du Swing, voire autre chose.

C'est générique aussi en ce sens que l'on n'est pas limité à une classe dont on écrit en dur les champs et la correspondance champs % sémantique.

De plus on poura décliner le formulaire en version éditable ou non, navigable ou non.

A contrario, Stample semble limité à des formulaires non éditables pour foaf:Person.

Les règles appliquées pour l'instant, pour chaque propriété:

Les règles supplémentaires à implémenter, pour chaque propriété:

En amont de tout ça , on pourra aussi trouver ou suggérer les champs à partir d'une classe.

J'en suis déjà à la 3ème génération de formulaires sémantiques.

La première est sous forme de règles logiques en langage N3 . Elle à la fois la déduction du formaulaire, et la génération des composants Swing.

Elle pourrait être généralisée à autre chose que Swing, par exemple générer du HTML via Scala.JS ou Apache Wicket .

http://svn.code.sf.net/p/deductions/code/html/GUIgenerator.html

La 2ème est écrite en Scala:

http://svn.code.sf.net/p/eulergui/code/trunk/eulergui/html/documentation.html#L5816

2014-02-05

Soirée sécurité duchesses

http://www.silicon.fr/mozilla-une-fondation-historique-emmenage-dans-un-monument-historique-87011.html

Stéphanie travaille sur Mozilla OS

CVE

CSS ou arguments HTTP accessibles

XSS : 3 types :

feuilles de style en HTTPS

https://www.owasp.org/index.php/Main_Page

webgoat

http://www.lestutosdenico.com/tutos-de-nico/webgoat

Détection de Botnets par Joseph Ghafari

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

logstalgia http://code.google.com/p/logstalgia/

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

https://github.com/stample/wiki/wiki/Web-We-Want-Technical-Workshop

https://github.com/stample/wiki/wiki/Weave-the-web-we-want

http://mklab2.iti.gr/sewm14/

http://community.kde.org/Baloo#Why_change_Nepomuk.3F

Mes projets novateurs

Mes projets dont j'ai parlé avec un chercheur de Telecom Paris ( il y en a d'autres ! )

  1. recherche sémantique par l'exemple ( une ou plusieurs URI où on peut cocher / décocher les triplets ); on peut aussi tenir compte de la navigation récente
  2. agent intelligent pour publier en semweb ( et au passage choisir des vocabulaires )
  3. site générique de discussions à la Youtube mais sémantique et basé sur SPARQL

    sur la même base de code, un site pour annoter sémantiquement des projets Open Source

  4. gestion atomique des règles métier pour recomposer des requêtes SPARQL
  5. ERP sémantique
  6. gestion sémantique des données personnelles (contacts)

Autres sujets abordés avec JCM :

Lecture Scalable Component par Oderski

Je lis ce papier OOPSLA de 2005:

http://lampwww.epfl.ch/~odersky/papers/ScalableComponent.pdf

EN FAIT ce papier décrit des syntaxes ABANDONEES dans Scala !

Ce style de composant n'est celui utilisé dans Banana-RDF. Je me demande s'il n'est pas démodé.

abstract class AbsCell {
type T;
val init: T;
private var value: T = init;
def get: T = value;
def set(x: T): unit = { value = x }
}

The # operator denotes a type selection. Note that this is conceptually dierent from a path dependent type p.Inner, where the path p denotes a value, not a type. C

Je ne vois pas l'intérêt de cet exemple:

Type selection and singleton types

2014-02-04

http://www.npr.org/blogs/therecord/2013/11/12/244851884/12-years-a-slave-is-this-years-best-film-about-music

Henry Story

Management: Holacracy en Bande Dessinée

http://labdsurlholacracy.com/

Jean-Marc Vanel Ca a l'air bien, mais encore remplir le sempiternel formulaire pour avoir accès à la BD; trop chiant; je veux bien leur envoyer mon profil FOAF :) à la place .

2014-02-03

tasker : Android

After adding Banana-RDF, there is this mysterious error on Ubuntu and Mac:

[ERROR] Failed to execute goal on project eulergui: Could not resolve dependencies for project eulergui:eulergui:jar:2.1-SNAPSHOT: Could not find artifact org.apache.jena:apache-jena-libs:jar:2.11.0 in repository.eulergui.sf.net (http://eulergui.sourceforge.net/maven2) -> [Help 1]

COMMIT

- WIP ! abstract_syntax for a semantic form:

* - generated from a list of URI's for properties, and a triple store

* - will be used in conjunction with N3Form(Swing), HTML5 forms and Banana-RDF

- add dependency to Banana-RDF

- pave the way for text editor for triple object in N3Form

http://www.jmdoudoux.fr/java/dej/chap-validation_donnees.htm

https://github.com/bugzmanov/scala-javax.validation-interop/blob/master/src/main/scala/com/test/whatever/User.scala

Syntaxe abstraite de formulaire

Envoyé à Alex Bertazils et bblfish.

Je développe une syntaxe abstraite de formulaire basé sur la sémantique, c'est à dire les vocabulaires stockés dans un graphe RDF, pour pouvoir être utilisée quel que soit le contexte : Swing, web , ....

Le code de la syntaxe abstraite de formulaire est ici:

http://svn.code.sf.net/p/eulergui/code/trunk/eulergui/src/main/scala/deductions/runtime/swing/components/abstract_syntax/FormSyntax.scala

Je commence à utiliser Banana-RDF pour de bon, et j'ai besoin de simples requêtes S P O comme :

<maPropriete> rdfs:range ?R .

qui s'écrirait en Jena:

model.listStatements( model.createResource("maPropriete"), RDFS.range, null )

mais ça ne semble pas exister dans les wrappers de Banana-Jena. Je ne vais quand même pas passer par SPARQL pour ça?

Ou alors il faudrait un DSL Scala pour SPARQL, mais ça c'est un projet gros !

Quand je serai plus familier avec Banana, je pourrais écrire un wrapper RDF pour Drools, y compris les inférences, compatible avec banana.RDF, ou alors pour Prova ou Hamurabi.

REPONSE:

On a un DSL et il s'apelle Diesel . Cela utilise les PointedGraph et te permet d’écrire des choses comme

georgePG / FOAF.knows

https://github.com/w3c/banana-rdf/blob/master/rdf-test-suite/src/main/scala/DieselGraphExplorationTest.scala

2014-02-02

Je vais développer une syntaxe abstraite de formulaire basé sur la sémantique, c'est à dire les vocabulaires stockés dans un graphe RDF, pour pouvoir être utilisée quel que soit le contexte : Swing, web , ....

Je regarde les possibilité de collaboration avec Stample;

Je suis allé à leur journée hier:

http://hack.stample.co/

Les projets OSS sont là :

https://github.com/stample

2014-02-01

Exposé à Web We Want

Pas présenté :(

Le web sémantique : si vous voulez partager

S'approprier ses données, les sémantiser

Clients riches qui facilitent la vie

Cas d'utilisation pour IHM sémantique générique

voir doc.: fr / DataGUI

Conclusion: complémentarité

==> besoin de connecter ces outils

2014-01-31

http://www.ebii.fr/blog

https://tails.boum.org/

http://openuplabs.tso.co.uk/demos/sparqleditor

https://twitter.com/jmvanel_fr

Hackaton sémantique ce weekend

Web We Want Technical Workshop

http://hack.stample.co/

J'y serai pour coupler EulerGUI avec les outils RWW, LDP, WebID, etc

2014-01-30

Je suis en train de développer une application pour mon journal sémantique.

il ajoutera automatiquement la date et l'auteur;

et ajoutera des sujets en vocabulaire (URI) contrôlé grâce au widget Wikipedia.

2014-01-28

http://www.gdr-im.fr/?q=system/files/Programme%20gdr-im%202014.pdf

Mis à jour mon FOAF avec mes journaux de bord:

techno en anglais http://jmvanel.free.fr/computer-notes.html

techno en français http://jmvanel.free.fr/notes-informatiques.html

tous sujets en français http://jmvanel.free.fr/Block-note.html

http://www.toile-libre.org/fr/services

Autres sujets pour formation semWeb:

D2RQ

2014-01-27

Conf. WWW == Web We Want

Ce soir réunion d'afficionados du web libre et sémantique:

http://www.gaite-lyrique.net/web-we-want-developper-son-projet-numerique-en-ple

http://hack.stample.co/

En fait c'est une table ronde.

Béatrice : conseil

Matthieu Baudin, directeur de l’Institut des Futurs souhaitables : conspirateurs positifs

candy crush

radiateur serveur

reprennez possession de vos données

VRM : Vendor Relationship Management

concilier connection et libertés

web sémantique + peer-to-peer

collectes de données : partout : génétique FNEG > 6 millions

"sous-veillance"

site holandais de partage d'outils de bricolage

https://webwewant.org/

for what ? Edgar Morin à Doha ; french touch

commission Lauvergeon

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

Pour info. c'était un coup d'épée dans l'eau pour faire démarrer rapidement EulerGUI ( en moins de 5s ).

J'ai fait un build sur Mac, sans problème particulier, sinon de s'adapter aux menues particularités du Mac, et ne pas oublier de faire les opérations dans l'ordre.

jeudi un petit atelier intitulé "git: push toi de là que je m'y merge"

http://www.agendadulibre.org/showevent.php?id=8217

http://www.silexlabs.org/201107/the-blog/blog-silex-labs/sl-events/atelier-dinitiation-a-git-push-toi-de-la-que-je-my-merge/

2014-01-26

Je suis occupé à simplifier le démarrage de EulerGUI ( actuellement 11 s pour un projet simple ! ).

Je vais bientôt donner une formation sur semweb, et je voudrais avoir un outil correct.

Quand je mets un sleep à la fin de ProjectGUI.layoutFrame() , il y a quand même 10 s de démarrage! Qu'est ce qu'il fait dans tout ce temps ?

====  ApplicationKB.Initializer.run():  duration TIME 4384
Thread: ApplicationKB initialization
ApplicationKB.waitInitializationThread(): TIME to join: 4382

2014-01-24

http://www.infoq.com/fr/articles/cake-pattern-scala-explique-developpeurs-spring

2014-01-23

http://smag0.blogspot.fr/

Composants JavaScript pour timeline

Formation Web Sémantique

Mes resources

J'ai donné un cours de 8h sur l'Intelligence Artificielle dans une école d'ingénieurs parisienne, où j'ai utilisé EulerGUI, tant pour le Web Sémantique que pour les règles N3, et le framework lié.

Je présente d'un point de vue pratique et tourné vers les applications :

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/fr/ia1_logique.xhtml

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/fr/ia2_semantique.xhtml

Il y a aussi :

Autres resources

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

Programme

Questionnaire:

Ceci n'est pas un formulaire administratif, on n'est obligé de répondre à rien.

Le but est d'orienter la formation en fonction de vos besoins et futures tâches, et de l'état de vos connaissances.

IL n'y a a priori aucun pré-requis.

2014-01-22

http://www.capdigital.com/evenements/pleniere-tic-sante-8/

http://www.agendadulibre.org/showevent.php?id=8177

Après-midi d’information Les TIC dans Horizon 2020

évaluateur : voir "portail du participant"

PPP

Eranet

FET Future & Emerging Technology

OPen;

proactive

Human Brain Project

Internet future : volet logiciel

robotique : 157 M€

Open disruptive Innovation Scheme ( 90M€)

Secure societies

horizon2020.gouv.fr

---------

BPIFrance = Oseo + ...

eurostars

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

13h30‐13h45 Accueil des participants

Isabelle de Sutter, Systematic – Nadia Echchihab, Cap Digital

13h45‐15h00 Présentation du Programme H2020 et des TIC dans H2020

Claire Ferté, PCN TIC - Ubifrance

15h00‐15h45 Présentation du Programme EUREKA-Eurostars 2

Amandine Karoui, BPI France

2014-01-21

Nouveau compte twitter

j'ai créé un nouveau compte twitter en français : @jmvanel_fr .

J'inaugure un nouveau format pour des notes d'intérêt général, dans une page séparée:

Déclencher préventivement un tremblement de terre

http://hack.stample.co/

http://www.infoq.com/fr/articles/cake-pattern-scala-explique-developpeurs-spring

http://assemblee-virtuelle.org

http://cibul.net/

https://groups.google.com/forum/?fromgroups#!searchin/deductions-fr/framework$20web$20application

Mail à Stample

https://stample.co/

https://github.com/stample

https://github.com/stample/wiki/wiki

Y -a -t-il un IRC ?

Une liste de courrier?

Une liste de tâches ?

Des spécifications ?

Un modèle économique?

Qui mène la barque ?

Il y a plusieurs forks comme rww-play, forked from read-write-web/rww-play . Où est la version de référence ?

Pourquoi Play! et pas Scalatra ou même LiftWeb ?

Pourquoi ????????????? WIP

Formulaires

[Version de réference de cet article: Formulaires]

Introduction

Les formulaires c'est le nerf de la guerre de l'informatique.

Autrefois tout partait de la spécification d'une suite d'"écrans".

Maintenant on le fait en HTML, enfin pas toujours, car on a inventé l'orienté objet. Et une classe orientée objet n'est pas directement isomorphe à un formulaire de l'application.

On peut faire un formulaire en HTML, mais les nuances n'y sont pas (champs obligatoires ou non, validation). On met alors du JavaScript, ou ça retourne au serveur HTTP. Bref ça n'est pas très déclaratif.

Toutes les variétés de RAD ( Développement_rapide_d'applications ) utilisent tous des éditeurs/générateurs de formulaires, qui peuvent ou non être confondus avec les éditeurs de modèle de données. Voir une liste des Outils_RAD.

Il y a aussi les générateurs de processus métier (BMP, workflow) (Bonita, etc).

Il y a les formulaires en XML via XForms, liés à XML Schema.

Les principaux cadriciels Web comme Ruby on Rails, Play! ou Drupal ont leur façon de créer des formulaires, soit à partir des tables SQL, soit du modèle objet.

Avec le Web Sémantique

Dans le monde du Web Sémantique, le plus naturel est de créer un formulaire à partir d'une liste de propriétés RDF.

Si l'on veut ajouter des "nuances", le plus naturel est d'ajouter des propriétés aux champs du formulaire.

C'est ce que fait Fresnel, qui est, plus largement, un vocabulaire pour afficher des données RDF. Par exemple ceci :

:foafPersonDefaultLens rdf:type fresnel:Lens ;
                       fresnel:classLensDomain foaf:Person ;
                       fresnel:showProperties ( foaf:name 
                                                foaf:surname 
                                                foaf:depiction ) .

exprime cela: "ceci s'applique à la classe person de FOAF et c'est une vue contenant les 3 propriétés name, surname, depiction". La syntaxe () exprime un ordre, ce qui convient à un formulaire.

De toute façon, Fresnel est un vocabulaire d'affichage, pas directement pour l'entrée de données. Il est cependant réutilisable à cette fin.

Un autre exemple est le composant Data manager GUI dans le cadriciel EulerGUI. A partir d'une instance (URI resource) il affiche tous les triplets directs existants, et donne la possibilité d'ajouter des litéraux ou des URI, suivant que la propriété est datatype ou objet. DomainApplication est un autre composant générique qui permet de saisir une nouvelle instance d'une classe donnée. Il affiche toutes les propriétés dont le domaine correspond (pas de domaines inférés pour l'instant).

Quelques références sur Fresnel :

http://www.w3.org/2005/04/fresnel-info/

Présentation : https://www.lri.fr/~pietriga/2006/11/fresnelISWC06.pdf

http://www.w3.org/2005/04/fresnel-info/manual/

Hélas, après un intérêt entre 2004 et 2008, Fresnel n'a plus été implémenté, sauf récemment comme on va voir plus loin.

Recherches semantic web RDF "forms" field

Une recherche avec

semantic web RDF "Forms" field

donne quelques resources:

http://www.swcs2013.org/SWCS-Rutledge-final2.pdf

http://semantic-mediawiki.org/wiki/SMWCon_Fall_2013/OWL_Wiki_Forms_%28OWF%29:_A_Style_Language_that_Generates_Wikis_from_Semantic_Web_Ontologies

https://groups.drupal.org/node/152939

http://dzineblog.com/2012/01/guide-to-building-semantic-web-forms.html

Semantic Forms in Drupal: Making the Semantic Web Usable ...

https://groups.drupal.org/node/152939‎

1 juin 2011 - 6 messages - ‎4 auteurs

Are there any current initiatives for semantic forms in Drupal? ... make it easy for people to use semantic identifiers as values in form fields. .... work the Web application does doesn't need to be SemWeb-y... the RDF just needs ...

Help:SMW extensions - semantic-mediawiki.org

https://semantic-mediawiki.org/.../Help:SMW_extensi...‎

11 juin 2013 - 1.1 Semantic Forms; 1.2 Semantic Image Input; 1.3 Semantic Forms Inputs ... 2.1 Frequent Pattern Tag Cloud; 2.2 Semantic Drilldown; 2.3 Semantic Web Browser; 2.4 SolrStore ... 5 Storing data via an RDF triplestore ... property helps determine what sort of input will show up for that field in the form.

Guide to Building Semantic Web Forms - DzineBlog.com

dzineblog.com/.../guide-to-building-semantic...

De Jake Rocheleau - Dans 1 977 cercles Google+

18 janv. 2012 - Semantic forms deal with the concept of data-driven web forms and how ... This doesn't work so well on password fields since the placeholder ...


Le plus prometteur est le premier article (à la 10th Extended Semantic Web Conference, ESWC 2013, Montpellier, France, May 27th, 2013), qui commence par "nous décrivons une transformation à partir d'une ontologie OWL vers des données de style Fresnel, et de là vers des wikis sémantiques à base de formulaires" , et intutilé:

From Ontology to Wiki – Generating Cascadable Default

Fresnel Style from Given Ontologies for Creating

Semantic Wiki Interfaces

Lloyd Rutledge

OWF utilise SPARQL 1.1 à la fois pour accéder aux ontologies, et pour inférer et écrire les spécifications Fresnel dans la base SPARQL.

Donc cette partie est indépendante de Semantic Media Wiki (un gros pâté de PHP et SQL).

http://is.cs.ou.nl/OWF/index.php5/Main_Page

http://is.cs.ou.nl/OWF/index.php5/OWL_Wiki_Forms_v0.2_installation

Quand on regarde là-dedans, il y a surtout les 444 lignes de SpecialOWLwikiForms.php , et là -dedans la partie "utile" est la

function ontos2DefFresnel ( $inOntosStr )

Et, dans cette fonction, 2 requêtes SPARQL, une pour les propriétés avec un ou plusieurs domaines affirmés ou or inferrés, et une pour les autres propriétés.

Voici la 1ère, brute en PHP avec insertion SPARQL:

endpointUpd ( <<<EOT
INSERT {
?lensuri rdf:type       fresnel:Lens ;
fresnel:classLensDomain ?domain      ;
fresnel:showProperties  ?prop                 .
}

WHERE {
?prop a           rdf:Property ;
  rdfs:domain ?domain        .
FILTER ( ! bound(?subDomain) )
FILTER ( ! regex(str( ?prop   ), "http://www.w3.org/1999/02/22-rdf-syntax-ns#" ) )
FILTER ( ! regex(str( ?prop   ), "http://www.w3.org/2000/01/rdf-schema#"       ) )
FILTER ( ! regex(str( ?prop   ), "http://www.w3.org/2002/07/owl#"              ) )
FILTER ( ! regex(str( ?prop   ), "http://www.w3.org/2004/09/fresnel#"          ) )
BIND(IRI(CONCAT("
EOT
 . WIKIURI . 'defaultLens", ' . <<<EOT

REPLACE(str(?domain), "[^A-Za-z0-9]", "", "i" )
)) AS ?lensuri)
OPTIONAL {
?prop      rdfs:domain     ?subDomain .
?subDomain rdfs:subClassOf ?domain    .
FILTER ( ! sameterm ( ?domain , ?subDomain) )
}
}
EOT
);

Simple et parfaitement réutilisable !

Y a t-il un site où OWF est déployé ???????

2014-01-20

arnaques compte en banque

2014-01-19

http://blog.bsoftco.com/2009/08/10/tutorial-html-5-et-les-bases-de-donnees-embarquees/

Appli. bancaire CA

2014-01-17

<form class="lift:OnSubmit?form=post">

meaningengines.com vend des moteurs de recommandation et du service et des données concernant la musique.

http://exmo.inrialpes.fr/

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

Ajouté ceci pour pouvoir exécuter Play! de n'importe où:

echo 'alias play=$HOME/src/play-2.2.1/play' >> ~/.bashrc

LOD 2, etc

retour d'expérience sur deux projets Linked Open Data / Web Sémantique; le projet européen de Linked Open Data

LOD2 et le projet ESCO .

entrée libre - GFII, 43 rue de Beaubourg, 75003 Paris.

Présentation faite par Johan de Smedt (Ten Force) et John Dann (Gov du Grand Duché du Luxembourg)

Le projet LOD2 repose sur la mise en relation de la réglementation européenne gérée et publiée par l'Office des Publications de l'Union Européenne avec les corpus d'un éditeur privé : Wolters Kluwer Deutschland, dans les standards du Linked Open Data.

Le projet ESCO (Skills, Competences and Occupations taxonomy) repose quant à lui sur la mutualisation des référentiels de la DG Emploi, la DG Education et Culture et l'Office des Publications pour la description des postes, des compétences et du catalogue des formations disponibles en Europe afin de produire une classification multilingue européene de l'emploi et des compétences.

Johan de Smedt tenforce.com

bloquages :

Cellar; Eurlex: modèle FRBF comme la BNF

seealso, exactMatch

EXMO , inriaalpes

projet ESCO == Eur. Skills, Competences, Qualification & Occupations

http://ec.europa.eu/esco/home

ISCO ( OIT/ONU) ; ROME ( fr )

Qualification: FoET, EQF

Europas ? CV

ODP Open Data Portal ; ODS == Open Data Support

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

http://stack.lod2.eu/blog/?page_id=14

A propos de Lift

Mon impression de ce matin est que Lift part d'un bon principe qui est de cacher les détails protocole derrière une façade Scala et HTML, et de garder un HTML assez pur ("view first").

Par exemple il n'y a pas de format "propriétaire" comme conf/routes dans Play! .

Mais il semble que ce projet n'a pas eu les moyens de son ambition.

Les documentations, et il y en a plusieurs ( Simply Lift, Exploring Lift, ... ) sont peu didactiques. En particulier un point essentiel et caratéristique est la réécriture du patron HTML. Hélas il n'y a pas de vue d'ensemble, ni en détail , sur comment chaque construction dans le HTML est transformée par une syntaxe dédiée dans les "snippets" Scala, donnant un nouveau fragment HTML (plus précisément une function Scala : NodeSeq => NodeSeq ).

Robot I'm still alive

jmvanel Salut!

jmvanel Hello, quoi !

Robot I'm still alive

jmvanel Alors robot, tu dis mieux ?

Robot I'm still alive

Web Sockets

Est-ce que l’on peut utiliser les Web Sockets d’HTML 5 ?

On peut, comme toute autre techno. JS. , en mettre dans les pages HTML renvoyées par Lift.

Cela dit, le principe de Lift est d'emballer l'implémentation d'un formulaire dynamique dans du Scala et du HTML de base.

Actuellement, Lift fait du polling, mais les websockets d'HTML5 sont dans la feuille de route:

http://simply.liftweb.net/index-Chapter-20.html

http://lift.la/blog/lift-and-data-driven-comet

( chercher sockets )

Voir aussi http://blog.zenika.com/index.php?post/2011/02/25/Html5-et-les-webSockets

Il est difficile de savoir le statut des websockets d'HTML 5 aujourd'hui.

2014-01-16

une liste des applis HTML5 pour subsonic.

Il y a MiniSub un mini player HTML5 pour subsonic. Repo git: https://github.com/tsquillario/Jamstash

Avec ce client je n’arrive pas à me connecter via l’alias djman.subsonic.org, j’ai du utiliser l’adresse locale.

Il y a aussi XO pour WebOS mais je n’ai pas regardé. Je ne sais pas ce qu’est WebOS.

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

J'étudie toujours les fw Scala Web : Lift, Play! , Scalatra

J'ai fait une petite appli avec Play! pour afficher des infos LastFM.

Mais je reviens à Lift

http://simply.liftweb.net

qui permet de gérer de l'ajax avec peu de code.

Je dois maintenant récupérer les clics de l'utilisateur, et mettre ça dans Jena TDB.

---------

Inscrit à la Soirée sécurité le le mercredi 5 février à partir de 19h15 dans les locaux de Mozilla:

http://www.duchess-france.org/

http://www.meetup.com/Paris-Tech-Talks/

http://www.meetup.com/lecafedesfreelances/quick_join/

https://trello.com/

Brain-Based Learning

L'éducation est un système auto-organisé dans lequel l'apprentissage constitue un phénomène émergent. Sugata Mitra

Je suis partant pour un hackathon .

Mais je devrais aussi en organiser un sur le développement basé sur les règles ...

2014-01-15

http://blog.xebia.fr/2012/04/05/les-types-monadiques-de-scala-le-type-either/

2014-01-14

Scala.

Peut-on faire une validation XML Schema d'un objet element XML en Scala?

api key

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

revenu à Play!

Après avoir essayé Lift, Wicket, je suis revenu à Play!,

pour les raisons suivantes: communauté la + importante, bonne doc., et surtout, cycle modification - compilation - test court.

J'ai peut-être laissé Scalatra un peu vite.

J'ai fait tourner le projet "pure vanille" :

http://scalatra.org/2.2/getting-started/first-project.html

Et un petit projet SPARQL + Jena

https://github.com/dozed/scalatra-linkeddata

mais un peu gros pour que je le comprenne vite.

Aussi des parties de ce projet dupliquent Banana-RDF, et il y a seulement un affichage des résultats en texte Turtle.

Aussi en 15 mn , sur IRC on a corrigé le pb que j'ai soulevé:

<jmvanel> Hi

<jmvanel> ( new to Scalatra) g8 proposes by default: scala_version [2.10.2]

<jmvanel> is it possible to enter 2.10.3 ?

<rossabaker> jmvanel, yes.

<rossabaker> We should change that default.

<rossabaker> There, fixed for the next person. :)

2014-01-13

http://www.horizon2020.gouv.fr/cid75832/la-france-donne-le-coup-d-envoi-du-programme-europeen-horizon-2020.html

Choix d'un cadriciel Scala Web

Ces derniers jours, j'ai continué à explorer les fw Scala Web.

Le touilleur express est un excellent blogeur technique, et un gars très sympa quand on lui parle.

http://www.touilleur-express.fr/2010/05/13/spring-faceswebflowjava-classique-compare-a-play-framework/

Je penche pour Lift, pour ces raisons:

J'ai expérimenté du code avec banana-rdf en Scala, et je pense que c'est utilisable.

Toutefois j'attends des réponse d'Alexandre Bertails à mes mails.

Ma priorité ce serait de faire une appli. Web avec Lift ou autre et Banana-RDF, qui permette d'interagir avec une base TDB.

-------

http://blog.developpez.com/djo-mos/p5428/java/wicket/wicket_et_scala_voici_ce_que_ca_donne

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

J'ai découvert le lookup dbpedia:

http://wiki.dbpedia.org/lookup/

http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?QueryClass=place&QueryString=berlin

qui répond à la question de trouver un URI dbpedia correspondant à une chaîne de caractères: on n'a plus besoin de s'occuper des majuscules qui sont traitées différemment suivant les domaines (par ex. musique ou botanique).

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

2014-01-12

http://web-semantique.developpez.com/tutoriels/jena/arq/introduction-sparql/

https://www.google.fr/search?q=format+%C3%A9change+catalogue+produits+e-commerce

http://www.abes.fr/Sudoc/Produire-dans-le-Sudoc/Formats-d-echange

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

Standards commerce électronique, Edifact

http://sourceforge.net/p/edifactviewer/wiki/Home/

https://github.com/colinsc/Edifact-Interchange

https://github.com/metormote/edifact-xml

http://sourceforge.net/p/edifactviewer/wiki/Home/

http://www.edifact.fr/

http://en.wikipedia.org/wiki/XML/EDIFACT#Example_1:_EDIFACT_source_code

http://ecommercegs1france.blogspot.fr/search/label/Fiches%20produits

2014-01-11

Indiqué par Eric B. :

http://semver.org/lang/fr/spec/v2.0.0.html

2014-01-09

Le touilleur express est un excellent blogeur technique, et un gars très sympa quand on lui parle.

comparaison Play - Spring + travaux pratiques:

http://www.touilleur-express.fr/2010/05/13/spring-faceswebflowjava-classique-compare-a-play-framework/

http://www.touilleur-express.fr/2010/05/01/java-et-les-frameworks-webs-une-longue-histoire-compliquee/

Questions Banana

à Henry, Ruset, Alexandre

Peut - être l'embryon d'une FAQ ?

Questions générales

  1. Banana utilisé en prod. ? si oui, avec Jena ou Sesame ?
  2. Y a-t-il une gestion des préfixes ? OUI
  3. il y a la classe PrefixBuilder[Rdf <: RDF](val prefixName: String, val prefixIri: String) , ainsi que le trait URIOps, mais pas de façon unifiée d'accéder au mapping géré par les implémentations Jena et Sesame.
  4. je ne suis pas sûr que les bonnes pratiques pour les transactions TDB soient imposées par Banana cf http://jena.apache.org/documentation/tdb/tdb_transactions.html
  5. akka est mis dans les dépendances SBT , mais ne semble pas utilisé ; y a -t-il d'autres dépendances non utilisées ?
  6. quelle est la roadmap ?

Comment faire pour :

  1. imprimer un seul triplet en Turtle ?
  2. créer une autre implémentation RDF "hybride" , par exemple mon stockage en mémoire basé sur Drools, avec requêtes non en SPARQL mais en N3, ou bien emballer Mulgara http://www.mulgara.org/, bigdata http://www.systap.com/bigdata.htm, Prova http://www.prova.ws/ , etc
  3. utiliser les propriétés lazy + asynchone pour créer un TableModel Swing à partir d'une requête SPARQL

Remarques Banana

Jean-Marc Vanel <jeanmarc.vanel@gmail.com>

12:15 (Il y a 6 heures)

à Alexandre, Ruset, Henry

J'ai découvert que ça ne compile pas si on utilise les opérateurs RDF dans un contexte "concret" tel que Jena. Il semble que le cadriciel impose d'écrire le code applicatif à l'intérieur d'une classe paramétrée par l'implémentation RDF, que ce soit pour créer des triplets, ou lancer des requêtes SPARQL.

Et si ça déconcerte d'abord, en fait ça oblige à respecter une bonne pratique.

C'est commode de définir FOAF en DSL Banana, mais il y a plein de vocabulaires "méritants", et il serait bien de pouvoir télécharger le RDFS ou OWL à partir de son URI, et de pouvoir utiliser les URI abrégés en Scala.

L'object JenaPrefix liste explicitement RDFPrefix et quelques autres (les mêmes que SesamePrefix) mais ce serait bien d'avoir une liste des vocab' de base.

2013-12-20

Je travaille sur le drop tous azimuths, c à d. comment architecturer pour interpréter intelligemment n'importe quel drop.

J'esquisse juste aujourd'hui, car je dois travailler sur le protocole bancaire.

2013-12-16

EulerGUI : spécification : lier à Wikipedia des données textuelles

Voici un cas typique où l'on a des donnés ouvertes , mais pas liées ( c à d. pas LOD, Linked Open Data ). il n'y a donc pas les cinq étoiles de Tim ; il n'y en a que 4.

Supposons qu'on a des données non liées comme ceci :

:s1 a x:Specimen;
    x:name "Abies grandis";
    x:genus "Abies";
    x:location "lon-lat 1,45" .

Ceci représente les données d'une collection de plantes dans un jardin. Ce serait le même principe pour des collection de timbres, MP3, capsules de bière, ou même un catalogue de vente.

Les champs name et genus, en gras, ne sont pas liés à un spécimen particulier, mais à l'espèce et au genre botaniques de la plante en question.

Ce qu'on veut , c'est ajouter cette information :

:s1 a dbpedia:Plant ; dc:subject dbpedia:Abies_grandis .

Commentaires:

  1. On a transformé la chaîne de caractéres en l'URI dbpedia:Abies_grandis. Il se trouve que cette URI existe bel et bien dans dbPedia; mais même autrement on a le droit de forger une URI dans un domaine Internet qu'on ne gère pas. En fait dans le cas particulier de Wikipedia, on a le droit de créer une nouvelle page.
  2. comme, en 5 mn, je n'ai pas été capable de trouver une ontologie pour les collections biologiques vivantes, j'ai utilisé dc:subject pour relier la plante à l'espèce , à défaut d'une propriété plus explicite. J'ai cherché "ontology for living plant collections specimen species genus", et trouvé ceci :

    http://bco.googlecode.com/git/src/ontology/bco.owl

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

  3. pour le genre "Abies", il s'agit là d'une information redondante, puisque le contenu de l'URI dbpedia:Abies_grandis nous indique le genre par ce triplet:
    dbpedia:Abies_grandis dbpedia-owl:genus dbpedia:Fir .
  4. on a transformé
    a x:Specimen

    en

    a dbpedia:Plant

    en effet, on suppose que less données de départ proviennent d'une table, où toutes les lignes ont le même type. Et on utilise librement l'URI dbpedia:Plant comme une classe OWL

Comment implémenter cet ajout d' information ?

Bien sûr on peut le faire en Java ou Scala via une API RDF, mais on peut aussi le faire par règles.

{ ?S a x:Specimen; x:name ?N
} => {
  ?S a dbpedia:Plant ; dc:subject ?SPECIES . # n'est la solution !
}.

Cependant la manière de calculer ?SPECIES à partir de ?N par les primitives de N3, Euler et CWM n'est pas très agréable à lire, il vaut mieux sous-traiter ça à un langage impératif, et réutiliser la fonction qui existe déjà dans EulerGUI :

{ ?S a x:Specimen; x:name ?N
} => {
  ?S a dbpedia:Plant ; dc:subject {
      java:eulergui-gui-util-WikipediaCompletion javam:makeDBPediaURI ( ?N ) .
  }.
}.

Sauf que cette manière de récupérer le résultat d'une fonction Java pour la réinjecter dans un graphe RDF n'est pas implémentée aujourd'hui. Mais vous voyez l'idée.

Traduction Attempto ==> Drools

Il pourrait y avoir une grammaire Scala pour DRS, peut-être faite avec l'aide de la grammaire OCAML existante:

https://github.com/ontologiae/DRS-Analysis-Tool

On pourrait alors générer tout ou partie de la syntaxe Drools, soit tout en Scala, soit avec passage par N3 et alors l'un ou l'autre des façons de créer des chaînes complexes.

2013-12-10

Suite à la réunion ATOM du 29 Novembre, vous trouverez dans l'onglet réunions http://www.lifl.fr/ATOM/reunions.xhtml les différentes présentations et dans l'onglet participants http://www.lifl.fr/ATOM/participants.xhtml la liste des participants à cette 1ere réunion.

Traçabilité et sémantique

Références Internet

Recherche Traçabilité web sémantique

http://iig.hevs.ch/valais/semantique-tracabilite-textiles.html

http://www.theark.ch/fr/news/fairtrace-presente-sa-solution-de-tracabilite-des-vetements-a-boston_0-2350

Recherche ETL+semantic+web

http://www.semantic-web.at/linked-open-data-management-suite-lodms

Besoins et sémantique

Dans les contextes agro-alimentaires au sens large, les techniques sémantiques permettent de traiter facilement les problèmes ardus de traçabilité et d'échanges multi-partenaires de données complexes et non figées.

Ceux qui partent , au hasard ;) sur le SQL, le JSON , le XML partent perdants.

Les caractéristiques de ces projets sont :

Ces besoins se retrouvent dans le domaine du risque, dont le risque alimentaire est un cas particulier.

Une fois qu'on part sur la sémantique au sens du W3C (il n'y a tout simplement pas d'alternative), il est bon d'avoir [AR] :

Plus les composants web indispensables:

Il y a plusieurs cadriciels sémantiques pour le Web:

Question coût

Un projet de traçabilité multi-partenaires, ça va chercher dans les combien?

Pour le coeur de base et pour un module périphérique. A la louche, juste pour avancer un chiffre tout en disant que bien sûr il faudrait des éléments pour faire un devis précis.

Plutôt que donner un chiffre à la va-vite, je vais donner les points à distinguer:

Pour le coeur de base (il n'y a pas forcément un serveur central; cela peut être plusieurs serveurs qui échangent des informations) :

  1. s'il y a déjà un processus en place d'échange d'information à la EDI [1] ou autre, il est facile d'ajouter son grain de sel dedans, dans du XML on met du RDF/XML , etc
  2. autrement on met en place un ou des moteurs LDP (Linked Data Platform) [2]
  3. il faut spécifier un vocabulaire d'échange, comme j'ai fait pour les contacts / prospects; ça peut être rapide si on a déjà des vocabulaires à étendre
  4. un cadriciel web

Pour un module périphérique :

  1. pour la saisie des données, il y a plusieurs cas possibles: chargements en masse, utilisation de périphériques type lecteur de codes barre ou Q code, connecteurs à des API web, à des bases SQL ou SPARQL
  2. s'il s'agit de visualisation, on aura autant de boulot que de requêtes à afficher, comme d'habitude; mais l'affichage pourra être générique la plupart du temps;

    pour les requêtes comme pour les règles, on peut utiliser un CNL [3] comme ATTEMPTO ou Squall [4] [5]

[1] EDI http://fr.wikipedia.org/wiki/%C3%89change_de_donn%C3%A9es_informatis%C3%A9

[2] http://www.w3.org/TR/2013/WD-ldp-20130730/#introduction

[3] http://en.wikipedia.org/wiki/Controlled_natural_language

[4] [5] http://attempto.ifi.uzh.ch/site/cnl2012/slides/ferre_squall.pdf

http://attempto.ifi.uzh.ch

Synthèse et évaluation grossière

On part sur une architecture conforme aux choix du framework EulerGUI cf [AR] . C'est à dire une version "webisée" des application DataGUI et DomainApplication. La base SPARQL est embarquée dans l'application Scala/Java via l'API ITripleStore de EulerGUI . Elle peut aussi être exposée en tant que endpoint SPARQL ou service REST Linked Data à la pubby. Le travail minimum consiste à "webiser" le composant N3Form (infrastructure). Ensuite chaque page à créer suivra ce flux de données:

  1. extraction depuis SPARQL ou via API

    ( peut être aussi simple que <URIXXX> ?p ?o . ?s ?p1 <URIXXX> . )

    vers le moteur d'inférence (KB)

  2. application de règles métier et d'affichage dans la KB
  3. affichage dans un ou plusieurs formulaires génériques éditables ou non
  4. stockage dans SPARQL ou via API des réponses de l'utilisateur, horodatées et marquées de son URI

évaluation grossière:

Tâche Durée Affectation
choisir outil(s) ETL pour le Web Sémantique (import: traduction X ==> Sémantique)

2 jours

infrastructure
écrire des templates ( avec interpolation Scala, FreeMarker, stringtemplate.org, etc)

(export: traduction Sémantique ==> X )

2 jours

spécifique
Choix moteur REST/LDP pour import export de documents RDF 2 jours infrastructure
spécifier un vocabulaire d'échange (ontologie) 2 jours spécifique
écrire des règles et requêtes métiers (N3, Anglais Contrôlé) 2 jours spécifique
Choix cadriciel web (générique Scala : Lift, Scalatra , Play, ...), ou adapté Web Sémantique 2 jours infrastructure
"webiser" les composants formulaire et table 4 jours infrastructure
écrire les pages Web adaptées au cadriciel web choisi 2 jours spécifique
tests, packaging, formation 5 jours spécifique
TOTAL 10 jours infrastructure
TOTAL 13 jours spécifique

2013-12-04

Un joli projet en Prolog !

http://geometrix.free.fr/site/

Je redécouvre le plaisir de la programmation.

Perdu depuis longtemps avec Java.

Le plaisir, ça veut dire en particulier pouvoir écrire du code concis et lisible.

Ca veut dire aussi pouvoir faire confiance au compilateur, au langage, à ses bonnes pratiques clairement exprimées, à la communauté et à l'écosystème.

Avec les langages que j'ai pratiqué professionnellement (Fortran, C++, Java, C, Python, etc), ce n'était pas le cas.

Depuis longtemps, j'aurais voulu travailler avec Ada, mais il est plutôt rarement utilisé.

Le langage finalement le plus satisfaisant que j'ai pratiqué, à part Prolog qui est un changement radical de paradigme, c'est Pascal.

2013-12-02

qq'chose qui ressemble à un "getting started" des API Banana ?

Tu peux regarder les tests [1] et les examples [2].

Alexandre.

[1] https://github.com/w3c/banana-rdf/tree/master/rdf-test-suite/src/main/scala

[2] https://github.com/w3c/banana-rdf/tree/master/examples/src/main/scala/examples

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

https://github.com/stample/rww-play

Je commence par faire sous SBT :

publishM2

On obtient ceci dans le POM :

        <dependency>
            <groupId>org.apache.jena</groupId>
            <artifactId>apache-jena-libs</artifactId>
            <version>2.11.0</version>
        </dependency>

et quand on lance

mvn compile

Il cherche partout apache-jena-libs-2.11.0.jar , et notamment là :

http://repo.maven.apache.org/maven2/org/apache/jena/apache-jena-libs/2.11.0/

et il ne trouve rien !

Parce que c'est un artefact de type "pom".

Je suis obligé d'ajouter à la main :

        <dependency>
            <groupId>org.apache.jena</groupId>
            <artifactId>apache-jena-libs</artifactId>
            <version>2.11.0</version>
            <type>pom</type>
        </dependency>

dans

~/.m2/repository/org/w3/banana-jena_2.10/0.5-SNAPSHOT/banana-jena_2.10-0.5-SNAPSHOT.pom

pour pouvoir compiler mon projet Maven avec Banana-RDF.

2013-11-29

Compilateur Scala ==> JavaScript

L'autre jour je suis allé à un atelier "Haxetelier #6 : Serious gaming. Passez à Haxe pour programmer des jeux" .

Haxe est un langage qui compile en Java , JS et C.

Ca m'a donné l'idée de chercher un compilateur Scala ==> JS .

Il existe un tel project:

https://github.com/scala-js/scala-js

It seems to be in active development:

https://github.com/scala-js/scala-js/commits/master

Journée ATOM

Prés. 1

MCMD ?

conf ADT == Algorithmic Decision Theory

solutions optimales au sens de Pareto

intraitable : exemple Hansen 1980 : tous les chemins sont optimaux

aussi sur les arbres couvrants

modèles dépendants du rang

transformée de Lorentz <=> transfer de Pigou - Dalton & Pareto

intéressant si on s'intéresse à l'équité

pas facile à calculer

intégrale de Choquet et ses particularisations

linéaire par morceaux,

exemple: affecter des papiers à des reviewers

affectation équitable

maximiser OWA <=> minimiser les inéquités

uitlité espérée (EU) pas pertinent

RDU mieux

pb algo:

hypothèse de commensurabilité des utilités

Prés. 2

T. Ecarot, Thales & Sup Telecom

Cloud: en pratique ajouter ou supprimer des resources pas si simple côté fournisseur

Scheduler multi-objectif avec OpenStack

Prés. 3

Igor Coello

GRAP Greedy Randomized

génétique

OptFrarme.sf.net en C++

Prés. 4

Anisse Ismaili

"nipping" pour recherche bidirectionnel

----------

discussion: pari de Pascal, jeux diff, transports

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

Question Scala: hébergement Cloud: PaaS, IaaS; fw Play, Lift par exemple

2013-11-28

????? Ca parait intéressant:

http://liris.cnrs.fr/~ithaca/index.php?pages/%C3%80-propos-d-ITHACA

mais encore un logicel en source fermé:

http://www.universite-lyon.fr/valorisation/l905-visu-logiciel-de-visio-conference-interactive-pour-l-enseignement-a-distance-174570.kjsp

http://www.esgi.fr/pedagogie-ecole-informatique.html

Annonce EulerGUI 2.0 : ma liste de courrier et deductions-frhttp://code.google.com/p/hermit-reasoner/

voir Announce EulerGUI 2.0

Je suis heureux d'annoncer la version 2.0 de EulerGUI, un outil de développement et un cadriciel pour le Web sémantique et les règles, sous licence LGPL, en Java et Scala.

Même si vous n'êtes pas intéressé par l'aspect de règles métier, EulerGUI est un couteau suisse sémantique.

On peut taper

foaf:

pour télécharger le vocabulaire FOAF, ceci vaut pour n'importe quel préfixe enregistré dans prefix.cc.

Ensuite, vous pouvez :

Lorsque vous modifiez un fichier de Turtle/N3, les préfixes sont automatiquement ajoutés depuis prefix.cc. De plus vous pouvez générer un vocabulaire squelette à partir des instances de triplets dans le projet. C'est ce qu'on peut appeler la conception par l'exemple.

EulerGUI a les requêtes SPARQL, le glisser-déposer, un cache local une base de triplets locale via Jena TDB, la navigation de proche en proche d'URI en URI, et autres commodités.

L'accent dans cette version est sur le nouveau format de fichier N3 pour des projets, compatible avec OWL (et Protégé) . Voici un exemple:

@prefix : <http://eulergui.sf.net/ontology/project.owl.n3#>.
@prefix owl:  <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<> a owl:Ontology.

<> owl:imports <plants.n3> .
               <plants.n3> :isActivated false . # true by default

# the main N3 query
<> :hasN3Query <plants-q.n3> .
               <plants-q.n3> :isMainQuery true .

# Import of an RDF or OWL document
<> owl:imports <herbivores.owl> .

<> :subproject <subproject.n3p.n3> . # recommanded suffix .n3p.n3
> :postProcessing <project-post.n3p.n3> . # only one postProcessing

Les développements actuels pour 2.1 sont bien partis vers 100% du code de Scala, la modularisation, un démarrage plus rapide, et des applications spécialisées pour un domaine personnalisables.

Pour une liste complète des changements, le journal des modifications est ici:

http://svn.code.sf.net/p/eulergui/code/trunk/eulergui/CHANGELOG

TÉLÉCHARGER:

https://sourceforge.net/projects/eulergui/files/eulergui/2.0/

TÉLÉCHARGER un snapshot:

http://eulergui.sourceforge.net/maven2/eulergui/eulergui/2.1-SNAPSHOT/?C=M;O=D

Et le manuel d'utilisation mis à jour en permanence est ici:

http://svn.code.sf.net/p/eulergui/code/trunk/eulergui/html/documentation.html

2013-11-27

Haxetelier #6 : Serious gaming. Passez à Haxe pour programmer des jeux

JB Richardier

SWF , AS3

NME : Sprite ==> div

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

SIEM OS-SIM, IA dans finalfantasy

Le 27 novembre 2013 13:56,

Romain TC a écrit : Pour faire suite à la conversation de tout à l'heure

http://finalfantasy.wikia.com/wiki/Gambits

Explication du système d'IA dans FF XII

Merci Romain

Je vais d'abord regarder OS-SIM:

https://sourceforge.net/projects/os-sim/

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

Apparemment la doc. est là :

http://www.alienvault.com/open-threat-exchange/learning-center

http://www.alienvault.com/docs/AlienVault_Unified_System_Description_1.0.pdf

2013-11-25

Discussion avec C.H. sur Callimachus

Comment avez vous connu et choisi d'évaluer ce projet ?

Il ont fait des annonces sur semantic-web@w3.org

Je ne vois nulle part dans leur doc technique qu'ils se présentent comme un cadriciel sémantique (le mot sémantique n'apparait qu'une fois dans http://callimachusproject.org/docs/1.2/callimachus-for-web-developers.docbook?view et cette occurrence ne semble pas pertinente).

Hélas ça veut dire que le semweb n'est pas très appétissant commercialement :( .

D'après la page d'accueil, il s'agit d'un projet open source pour faire de la présentation web de données, avec des choix techniques tirés des standards W3C dont RDF. Dans leur doc, ils justifient l'utilisation RDF plutot qu'une base SQL.

S'ils font du business, c'est avant tout car ils se positionnent sur un marché important : celui du reporting / tableau de bord. En jargon ERP on appelle cela un module "BI" pour business intelligence en englobant la phase transformation / agrégation de données. Il y a de gros budgets là dessus car ca répond aux besoins des directions financières et commerciales pour piloter leurs activités et flux de produits et de cash...

Oui, ça fait du sens de s'intéresser au BI et aux cubes .

D'ailleurs récemment j'ai été dans le jury d'une thèse sur "Model-Driven Data Warehouse and its Automation Using Machine Learning Techniques"

http://www.theses.fr/2013PA132001

En fait, en cherchant :

OLAP cube "thèse" site:fr

on trouve encore d'autres thèses:

http://tel.archives-ouvertes.fr/docs/00/60/68/47/ANNEX/Soutenance_HDR_SL.pdf

Moralité : Il me semble que pour vous ce projet est surtout une référence pour montrer que RDF / Sparql est utilisable en production.

TOUT à FAIT !

Vous pouvez leur envoyer un email pour leur demander la volumétrie de leur plus gros déploiement en production...

OUI, j'ai des contacts sur IRC aussi.

Annonce EulerGUI 2.0 : ma liste de courrier et deductions-fr

2013-11-24

Pour ajouter subclipse dans eclipse sur Ubuntu

Ajouter dans "Install new software" le "Subclipse 1.8.x Update Site" - http://subclipse.tigris.org/update_1.8.x

prendre les 2 "required" , plus le JavaHL native library

ajouter ceci:

-Djava.library.path=/usr/lib/x86_64-linux-gnu/jni

dans eclipse.ini .

Par la suite, en faisant "check updates" ne pas prendre les nouvelles versions qui sont incompatibles avec le svn en ligne de commande de Ubuntu qui est appelé par JavaHL .

2013-11-22

Tests et autres outils: couverture, profiling, qualité du code

Ce qui se passe , et c'est pas un scoop, c'est que des tests où le scénario appuie sur les boutons ça va beaucoup plus vite que que si c'est un humain.

Il faut donc que tout soit impeccable, en particulier que tous les boutons qui donneraient lieu à une erreur parce qu'ils ne sont pas prêts, soient désactivés.

Il faut aussi que les traitements concurrents soient ou interdits ou corrects.

--------

Est ce que tu connais le plugin EclEmma (http://update.eclemma.org/)

Je me rappelle pas; ça fait longtemps que j'ai pas utilisé des outils de couverture de tests.

Il y a aussi les outils de "profiling" :

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

dont les résultats presque aussi volumineux que le code peuvent être délicats à interpréter.

Encore d'autres bestioles:

Les outils de qualité du code comme PMD, CheckStyle.

PMD a aussi un détecteur de copier-collés.

Les outils "basiques" comme PMD, CheckStyle sont aggrégés dans des usines à gaz comme:

http://fr.wikipedia.org/wiki/Squale_(Qualit%C3%A9_logicielle)

-----------

Je viens de faire un petit tuto JEE qui utilise affiche dans une JSP des info d'un document XML avec XPath et/ou XSLT.

XPath est assez facile à comprendre;

il y a un outil Linux en ligne de commande:

cd ~/src/eulergui-code/eulergui/

xpath -e '/*/*[11]' pom.xml

Found 1 nodes in pom.xml:

-- NODE --

<licenses>

<license>

<name>GNU Library or Lesser General Public License (LGPL)</name>

<url>http://www.gnu.org/licenses/lgpl.html</url>

</license>

</licenses>

Par contre XSLT n'est pas à mettre entre toutes les mains.

Cependant si ça t'intéresse, j'ai écrit une petite suite d'exemples il y a longtemps:

http://wwbota.free.fr/XSLT_models/README.html

Paris-Machine-learning-applications-group le 11/12

http://www.meetup.com/Paris-Machine-learning-applications-group/events/150851882/

Les présentations ainsi que le Champagne seront en français.

Résumé des présentations:

Le vélib sur Google maps:

https://maps.google.com/maps?q=http://v.mat.cc/velib.kml

<jmvanel> Si vouq connaissez pas déjà Daniel Westheide , je vous conseille :

<jmvanel> http://danielwestheide.com/blog/2013/01/09/the-neophytes-guide-to-scala-part-8-welcome-to-the-future.html

<jmvanel> http://danielwestheide.com/blog/2013/01/16/the-neophytes-guide-to-scala-part-9-promises-and-futures-in-practice.html

<jmvanel> La page d'accueil : http://danielwestheide.com/scala/neophytes.html

Publié dans deductions-fr : Testé un cadriciel "Sémantique" pour applications Web : Callimachus

Bonjour

http://callimachusproject.org/

Globalement , c'est assez décevant (mais apparemment 3roundstones.com arrivent à faire des affaires avec ) .

Bien sûr, il y a un peu de glu Web avec JQuery, authentification, documentation utilisateur (réduite), 3 ou 4 vidéos.

C'est Java Open Source.

Il y a Sésame derrière.

Il traite l'historique des modifications.

J'ai passé 1/2 journée à tester à partir de git, en causant avec la communauté sur #callimachus sur freenode.

Pourquoi décevant ?

Parce que la seule caractéristique Sémantique là-dedans est d'utiliser une base SPARQL par son API.

Autrement, la création de pages web pour 1) création d'instance de classes 2) édition d'instance 3) affichage d'instance, est très laborieuse, via un éditeur XHTML en ligne pour des templates avec un peu de substitution de variables (voir video [1] et tutoriel [2] ). Ces templates sont traités par XSLT.

Et on ne peut pas confortablement réutiliser des vocabulaires existants.

D'abord l'IHM pour concepteur (pas vraiment distincte de l'IHM pour utilisateurs) ne découple pas la création ou l'utilisation de vocabulaire (alias ontologie :) ) de la création des 3 pages web.

En plus il n'y a même pas possibilité d'ajouter explicitement des propriétés à un formulaire.

C'est à dire que tout passe par le XHTML à la sauce maison, et qu'il n'y a même pas une tentative d'un vocabulaire pour les formulaires.

C'est dommage parce qu'une propriété RDF porte toutes les infos pour participer à un formulaire. C'est bien sûr le point de vue adopté dans les applications EulerGUI [3] .

On a le potentiel pour faire mieux avec DomainApplication ! Pour l'instant ce n'est qu'un client lourd, mais on pense à Play Framework + Banana RDF , tout du Scala. Et on n'a pas besoin de se mettre un fil à la patte en voulant éditer / créer toute l'application dans l'appli. elle-même. A terme, ça viendra tout seul, puisque tout est déjà exprimable en N3.

Références:

video [1] http://callimachusproject.org/videos/0.13/meeting-notes.xhtml?view

tutoriel [2] http://callimachusproject.org/tutorials/1.0/meeting-notes-tutorial.docbook?view

applications EulerGUI [3] http://svn.code.sf.net/p/eulergui/code/trunk/eulergui/html/documentation.html#L7253

le-web-semantique-avec-alexandre-bertails

De Jean -Phil. E. :

Voici un PodCast de la sphere NipTech qui pourrait t'intéresser:

http://www.niptech.com/podcast/2013/11/nipdev-11-le-web-semantique-avec-alexandre-bertails/

Merci pour le lien.

Je ne suis pas au jour le jour l'activité de Alex., que je connais depuis 1 an ou 2, et je regarderai ce lien.

En tous cas Alex. est un expert semweb et surtout Scala.

On peut le trouver sur freenode.net IRC à #websemantique #scala-fr et ailleurs

2013-11-20

<jmvanel> 2 articles recommandés :(en anglais :( ) http://jazzy.id.au/default/2012/10/16/benchmarking_scala_against_java.html

<jmvanel> http://jazzy.id.au/default/2012/11/02/scaling_scala_vs_java.html

Tu as vu, dans IMAPN3Connector :

val mailSemwebPrefix = "http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#"

// TODO confirm NMO - Nepomuk Message Ontology for mail vocab' <<<<<<

2013-11-19

http://www.roadef.org/content/index.htm

j'assisterai aux présentations ainsi qu'aux discussions.

http://www.lifl.fr/ATOM/reunions.xhtml

Je voulais faire passer à Sam, mais il est pas joignable :(

Igor Carron - 3:10 PM - Un petit resume du meetup: http://nuit-blanche.blogspot.fr/2013/11/summary-of-paris-machine-learning.html

widgets sémantiques génériques

https://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CDEQFjAA&url=http%3A%2F%2Fwww.mondeca.com%2Fcontent%2Fdownload%2F448%2F3411%2Ffile%2F08-Delahousse-Cartographie%2520et%2520Ontologie.pdf&ei=XmyMUprUI8qo0QW554HgBg&usg=AFQjCNHXkWt73kR9SXwRJrDjiwf1TUrn3g&sig2=wWghoY8JBHIza8IcgVs0Uw&bvm=bv.56643336,d.d2k

Essai scenari

http://scenari-platform.org/projects/scenari/fr/pres/co/versionsStables.html

http://scenari-platform.org/trac/scenari/wiki/subversion

svn co http://scenari.utc.fr/svn/dev-core/trunk/ scenari.utc.fr

2013-11-17

Suggestions de tâches EG pour L

- corriger les erreurs de compil. dans eulergui_mail

- utiliser EG pour voir comment une ontologie est traduite en règles; essayer les règles OWL 2 RL dans svn://svn.code.sf.net/p/eulersharp/code/trunk/2003/03swap/owl-rules.n3

rdfs-rules.n3 , etc

2013-11-16

http://www.irill.org/

Cyril: encore quelque chose à surveiller :

http://www.theregister.co.uk/2013/11/15/wolfram_invents_new_programming_language/

Envoyé samedi à 08:20

moi: Séduisant, mais ça reste de la pub' rédactionnelle ; on veut du précis.

2013-11-14

A FAIRE EulerGUI

<jmv1> dc:subject dbpedia:Unemployement .

2013-11-14

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

TODO : montrer

OW2Con'13

Di Cosmo

BlackDuck, Bitergia.org

voir Pistes analyse des projets OSS de Roberto Di Cosmo

example kzalloc

semantic patch, irill.org

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

Huawei : NFV

discussion : Sodexho, ikoula, ...

ETICS : etics.res.eng.it interessant projet : construire et tester ( en particulier des infra Cloud) ; exporter en RPM, Debian, etc; multi-node testing

Ocean, OCCI ?

discussion avec Mr Android (Prados) : morceaux de schema.org dans les mails; API pour savoir si on est en vélo, à pied, etc; possibilité de faire du Scala, du Web Sémantique;

Antelink : Guillaume Rousseau

standart SPDX

CMMI project intelligence with Spago4Q

Riscoss

MySQL as a service

xlcloud

Ocean services

Open Cloud Directory ocdirectory.org

cloud federated ecosystem

https://www.usharesoft.com/products/overview.html

gratuit pour membres OW2.

NoSQL : Sun Tan de Serli

Viadeo utilise Neo4J

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

Compass

opencloudware.org

nuage-france.fr

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

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

Scala & Machine Learning

https://www.google.fr/search?q=scala+machine+learning

https://github.com/scalanlp/breeze

git clone https://github.com/scalanlp/breeze

http://www.scalanlp.org/

http://ppl.stanford.edu/main/index.html

http://ppl.stanford.edu/main/optiml.html

http://fr.slideshare.net/VitalyGordon/scalable-and-flexible-machine-learning-with-scala-linkedin

https://github.com/factorie/factorie

FACTORIE is a toolkit for deployable probabilistic modeling, implemented as a software library in Scala. It provides its users with a succinct language for creating relational factor graphs, estimating parameters and performing inference.

2013-11-13

Metup ML Paris

A DojoCrea

encausse.net

serveur node.js

http://encausse.wordpress.com/s-a-r-a-h/

https://ifttt.com/

medecine P4

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

Results :

Tests in error: 
  testSelectSPARQL(eulergui.gui.TestSPARQLInGUI)
  test_person_import3(eulergui.gui.TestGenericGuiGenerationInsertLogicalRefactorRules): Component enabled: class javax.swing.JToolBar$1
  testSimpleURLProject(eulergui.gui.TestJavaEditor): Frame Title Component Chooser ".*book\.n3$|.*book\.n3 .*|.*book\.n3_.*"

Tests run: 226, Failures: 0, Errors: 3, Skipped: 0

The Subclipse JavaHL hell

Unable to load default SVN Client

An internal error occurred during: "Refresh SVN status cache".

Native library version must be at least 1.8.0, but is only 1.7.9 (r1462340)

The problem was that the newest Subclipse 1.10 is not compatible with the current Ubuntu subversion svn, version 1.7.9 (r1462340).

I need 1.8.x , according to :

http://subclipse.tigris.org/wiki/JavaHL#head-5ccce53a67ca6c3965de863ae91e2642eab537de

Additionnally, eclipse would not let install the right 1.8.x version, because I had a CollabNet merge plugin more recent !!! :(((

So I had to uninstall this CollabNet merge plugin before.

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

http://kcornilleau.hd.free.fr/article6/afficher-les-stations-velib-sur-google-maps

http://www.parisavelo.net/

https://xplr.com/blog/

https://www.google.fr/search?q=moteur+de+recommandation+collaboratif

http://cache-ton-cash.com/

http://sparklingpoint.com/

http://hedleyproctor.com/2012/04/why-java-developers-should-be-learning-scala/

Assistance à la migration Scala

Conversion dans Scala IDE

<jmvanel> Après scalagen, j'essaye la conversion dans Scala IDE :

<jmvanel> conclusion : mieux vaut Scalagen.

<jmvanel> Même si c'est assez pratique.

<jmvanel> Le problème: les continue sont silencieusement avalés par le traducteur dans Scala IDE.

<jmvanel> Alors qu'ils ressortent en commentaires dans scalagen (en fait les seuls commentaires dans le corps des fonctions ).

<jmvanel> Désolé: en fait , en comparant attentivement les traductions, Scala IDE ajoute à la place du continue un else entourant le bloc jusqu'à la fin de la boucle: la modif que je faisais à la main.

scala> import scala.util.control.Breaks._
import scala.util.control.Breaks._

scala> scala> var x = 0 ; breakable { while( x<3) { x += 1 ; break() } }
x: Int = 1

Offre de service

Vous avez toujours voulu passer à Scala, mais vous n'avez pas le temps?

Vous voudriez bien bénéficier des avantages de Scala (aussi concis que Python, mais avec un typage fort), mais personne n'a le temps de se former ?

Sous-traitez la migration!

Les avantages:

  1. gagner du temps (et ne pas avoir à gérer les outils de migration, ce qu'on ne fait qu'une fois)
  2. il est facile d'apprendre Scala par l'exemple en travaillant sur un code déjà connu dans sa version ancienne Java
  3. c'est l'occasion de revisiter et nettoyer le code, car certaines choses ne passent plus en Scala (voir plus bas)
  4. on peut migrer par parties, en évitant les parties en développement actif

Méthodologie:

  1. passer les tests
  2. passer Scalagen et compiler pour un premier diagnostic
  3. facultativement préparer le terrain côté Java
  4. passer Scalagen et compiler
  5. corriger à la main les erreurs de compilation
  6. enlever à la main les //continue; et les //break;
  7. passer les tests
  8. corriger à la main les erreurs résiduelles suite au tests
  9. optionellement:

Au passage cette migration oblige à reprendre à la main des éléments pas propres de Java:

Intervenant:

Jean-Marc Vanel (CV): Développeur senior connaissant de nombreux langages de programmation, dont Prolog qui n'a pas de boucles et oblige à utiliser systématiquement la récursion. Futur lauréat de la formation Coursera "Principles of Reactive Programming", la suite de “Principles of Functional Programming in Scala” . Développe en Scala un environnement de développement en IA , EulerGUI .

Soirée Meetup "apprentissage automatique"

2013-11-12

Soirée JUG "apprentissage automatique"

Thomas Cabrol , de Dataiku

Paris 6 , data science

Machine for the hacker

"click sream"

spark : très "trendy"

wtp1 web tracker

système de recommandation : deezer , allmusic, Amazon (35%)

filtres collaboratifs: basés sur utilisateurs, sur articles, sur modèles

corrélation de Pearson

learning to rank

SVD : Singular Value Decomposition

Livraison de EulerGUI, applications sémantiques

il y a une livraison de EG, et les grandes manœuvres ont commencé pour traduire tout en Scala.

Je vais lancer une initiative pour fédérer les personnes impliquées dans la construction d'applications basées sur le Web sémantique.

2013-11-08

Je deviens un expert en keystore Java.

Une appli qui avait gagné le prix du semantic challenge en 2012...

http://challenge.semanticweb.org/2012/winners.html

Fonctions d'ordre supérieur sur les collections

<jmvanel> Où y a -t-il une liste des Fonctions d'ordre supérieur sur les collections et les maps ?

<alag> vaut mieux pas etre anarchiste ici

<kali> oO

<kali> à cause de l'ordre supérieur ?

<alag> entres autre :)

<jmvanel> :) trouvé une bonne liste sur http://www.scala-lang.org/api/current/index.html#scala.collection.IndexedSeqLike , puis chercher caractère ⇒

http://www.capdigital.com/retour-rencontres-rd/

http://www.levinotik.com/2012/09/14/scala-abstract-classes-traits-and-self-types/

Scalagen un bon outil pour traduire en Scala

Scalagen est un bon outil pour traduire en Scala

Pour EulerGUI le résultat n'a que 96 erreurs de compilation.

Emmanuel: j'imagine qu'il ne rend pas fonctionnel du code qui est impératif ?

Envoyé vendredi à 11:00

moi: il fait certaines choses,

au niveau local

certaines boucles simples

moi: Par example

à partir de :

Java :

@Override
       public List<ITriple> searchByObject(String uriForObject) {
               List<ITriple> result = new ArrayList<ITriple>();
               for (ITriple triple : factsTriples ) {
                       if ( uriForObject.equals( triple.getObject() ) ) {
                               result.add(triple);
                       }
               }
               return result;
       }

il a généré :

Scala:

override def searchByObject(uriForObject: String): List[ITriple] = {
   val result = new ArrayList[ITriple]()
   for (triple <- factsTriples if uriForObject == triple.getObject) {
     result.add(triple)
   }
   result
 }

moi: mais la vraie simplification fonctionnelle ce serait :

( attente )

factsTriples foreach { triple => if uriForObject == triple.getObject() ) result.add(triple) }

qui peut encore se simplifier :

factsTriples filter { uriForObject == _ .getObject() } foreach { result.add( _ ) }

ce qui élimine complètement le besoin de créer une variable triple .

Mais ce n'est pas fini !

SI on replace cette ligne dans son contexte de fonction:

override def searchByObject(uriForObject: String): List[ITriple] = {
   val result = new ArrayList[ITriple]()
   factsTriples filter { uriForObject == _ .getObject() } foreach { result.add( _ ) }
   result
 }

on voit que result est là seulement pour accumuler le résultat de filter. En fait , il ne sert à rien :

override def searchByObject(uriForObject: String): List[ITriple] = {
   factsTriples filter { uriForObject == _ .getObject() }
 }

Maintenant que cette fonction est réduite à une ligne, on pourrait faire une expansion en place (inline) de ses appels, ce qui pourrait à son tour entraîner d'autres simplifications.

Voilà ! Pas mal ?

Emmanuel: tu peux me donner un peu de détail sur le caractère "_" même si je devine un peu

Envoyé vendredi à 12:09

moi: Le caractère _ est une sorte de caractère joker, le compilateur scala est assez intelligent pour le remplacer par la valeur appropriée.

evenNumbers.map(_+1) est par exemple équivalent à evenNumbers.map(x=>x+1)

Collé depuis http://www.alpesjug.fr/?p=774

( l'usage de _ vient de Prolog )

Envoyé vendredi à 13:34

moi: En fait souvent on peut même se passer de _ :

exemple :

List(1,2,3) foreach(println(_))

simplifié en:

List(1,2,3) foreach(println)

Et pleinement expansé:

List(1,2,3) foreach(i => println(i))

mais pas possible:

List(1,2,3) foreach(_ => println(_))

car le 2ème _ est remplacé par une variable distincte

2013-11-07

<jmvanel> mais justement faire du code qui s'auto-diagnostique c fun !

<jmvanel> Quand on écrit en ScalaCheck :

<jmvanel> val propSqrt = forAll { (n: Int) => scala.Math.sqrt(n*n) == n }

<jmvanel> ça veut dire :

<jmvanel> pour tous les entiers n la racine du carré c'est n .

<jmvanel> il suffit à ScalaCheck 1 test pour trouver un contre exemple

<srm`> c'est puissant c'est cool :)

<jmvanel> et récusivement, comme expliqué dans le cours, ScalCheck, peut construire des exemplaires alétoire de n'importe quel type

<jmvanel> enfin les types stadards

<jmvanel> pas Heap :)

<srm`> oui c'est ce que j'ai cru comprendre

<srm`> c'est cool

<jmvanel> :load ne fait pas une vraie compilation on dirait ?

<jmvanel> Heap.scala commence par :

trait IntHeap extends Heap {

<jmvanel> et il dit :

<console>:11: error: not found: type Heap

<jmvanel> alors que scalac ne grogne pas ( mais il est beaucoup + long !)

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

Médecine personnelle, objets connectés ( nos personnes aussi ?) , Open Source : que du bon !

Apparement jffmpeg est dans jffmpeg.sourceforge.net sous CVS, et je l'avais déjà !

Et je lui avais déjà fait un pom.xml !

[ERROR] Failed to execute goal on project Lizzy: Could not resolve dependencies for project Lizzy:Lizzy:jar:1.1.2-SNAPSHOT: 
The following artifacts could not be resolved: 
castor-core:castor-core:jar:1.3.1, castor-xml:castor-xml:jar:1.3.1, 
ffmpeg-java:ffmpeg-java:jar:20070916-0351, 
jna:jna:jar:3.0, maven-plugins:maven-cobertura-plugin:plugin:1.3, maven-plugins:maven-findbugs-plugin:plugin:1.3.1, commons-jelly-tags-xml:commons-jelly-tags-xml:jar:20050823.222913, nanocontainer-ant:nanocontainer-ant:jar:1.0-beta-3, 
qdox:qdox:jar:20051211.114207: 
Could not find artifact castor-core:castor-core:jar:1.3.1
   in central (http://repo.maven.apache.org/maven2) -> [Help 1]

<jmvanel> Regardé la 1ère video "What is Reactive Programming? "

<jmvanel> ça commence doucement ...

traitement de repli == fallback

2013-10-25

http://www.ploss-ra.fr/

La doc de reference GIT : http://git-scm.com/book/fr

Pas mal en effet la doc en french : :http://git-scm.com/book/fr/Les-bases-de-Git-Annuler-des-actions

2013-10-24

m3u playlist java reader library

Mes notes sur cette recherche: m3u playlist java reader library

Lizzy parait un truc sérieux, qui fait tous les formats.

Cela pourrait (devrait?) être une source N3, cf:

http://svn.code.sf.net/p/eulergui/code/trunk/eulergui/src/main/scala/eulergui/project/SourceFactory.scala

A noter que Lizzy est organisé en SPI ( http://fr.wikipedia.org/wiki/Service_Provider_Interface ) , et SourceFactory pas encore.

2013-10-22

http://www.ebics.org/

2013-10-16

http://sourceforge.net/projects/ebics/

2013-10-15

Ajouter dans mon CV + site : Drools, WordNet, dbPedia, TAL

Cap Digital R&D

http://www.capdigital.com/retour-rencontres-rd/

Aujourd'hui je suis à

http://www.capdigital.com/evenements/rencontres-rd-cap-digital/

#rdshow @Cap_Digital

innovation pas seulement technologique

ils ont une base de données d'experts ... comment ça fonctionne ?

serious games

HEVC

Pertimm

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

Xavier Lazarus, Elaia : MVS == produit minimal viable

définition du marché adressé & preuve d'existence

social sustainability : connecter dans le monde réel

prescriptive analytics

+ plateforme open source Clair , e-education : tout le monde à la fois prof et étudiant : 12 personnes, 2 ans , 1.8 M€

+ Dynarchi : métadonnées video

+ egonomy : plateforme de tagging de photos ; réutilise les 300 000 photos de la RNM

+ pacte amélioration capture écriture

+ editup : plateforme serious games

Spirops : dialogue social

approche sémiotique de la fraude

Quaero http://www.quaero.org/ : tr. auto. contenus multiméd. et multi-lingues

suite Avis sémantique pour science & technique

LTU : mise en relation avec les marques à partir d'images sur réseaux sociaux

Vocapia : API Web

Louis Gallois : appels à projets objets connectés, Big data

feedback : simplifier procédures

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

Synapse : analyse sémantique en profondeur

AlvisAE

Patrick Séguéla , Synapse : entités nommées

VoxSigma de Vocapia - Q : performance par rapport à Google API

Patrick Gros : reconnaissance des images

Pistes analyse des projets OSS de Roberto Di Cosmo

MSR mining sotfware repository : cf Wikipedia article; conferences chaque année

http://2014.msrconf.org/

antepedia, antelink ~ ohlo http://www.antepedia.com/

antepedia recherche "semantic"

2013-10-11

camCard : appli ordiphone pour les cartes de visites

https://play.google.com/store/apps/details?id=com.intsig.BCRLite&hl=fr

En plus j'ai découvert qu'on lancer l'installation sur Android depuis l'ordi. :) .

https://www.softwaresemantics.fr/

http://www.google.fr/search?q=java+web+semantic+framework

Cadriciels Web Java

Enquête de notoriété:

gwt framework : Environ 2 030 000 résultats

wicket framework : Environ 1 190 000 résultats

Dans http://stackoverflow.com/questions/745029/which-framework-should-i-choose-seam-wicket-jsf-or-gwt

J'aime ça sur Wicket:

There is nothing new to learn. Its "just java and just HTML"

Le PDF obtenu à partir de cette adresse est intéressant; il étudie 8 cadriciels dont GWT, Wicket et Play.

http://zeroturnaround.com/rebellabs/the-curious-coders-java-web-frameworks-comparison-spring-mvc-grails-vaadin-gwt-wicket-play-struts-and-jsf/#!/

Il passe revue les cadriciels, puis les types d'applications avant de conclure.

2013-10-09

Pas le temps de lire ça, mais ça doit être intéressant :

IBM Unveils Cognitive Systems Institute

http://www.eetimes.com/document.asp?doc_id=1319693

http://mavotation.fr/resultatsl/7a30884a1b5ceb2ee0addf7cb3eb8d50

Montée du niveau de la mer en 2020 ?

Nombre de votants : 1

Reador ++

Mon souhait est sur Twitter :

https://twitter.com/jmvanel/status/387942738320035840

Autrement , les URL générées par le logiciel ne me vont pas :

http://www.reador.net/items?isNew=true&locale=fr&search=777

il vaudrait mieux:

http://www.reador.net/items?f=IA&f=Semantics

Logiciels Open source pour reconstituer la forme 3D des objets à partir de quelques images 2D

Je m'intéresse en particulier aux plantes et insectes.

Réponse de Luka:

En regardent rapidement dans mes archives, je vous passe quelques liens intéressants si vous voulez coder votre propre solution :

http://www.cs.cornell.edu/~snavely/bundler/

http://www.morethantechnical.com/2012/02/07/structure-from-motion-and-3d-reconstruction-on-the-easy-in-opencv-2-3-w-code/

http://pointclouds.org/

Si vous êtes pas vraiment développeur, il y a aussi ceci:

http://www.makerscanner.com/

Regardez aussi du cote de la reconstruction 3D et de la Kinect pour une très grande précision. Je n'ai malheureusement pas de bons liens open source sur ce sujet...

NB: tout mes liens sont en Anglais. Je travaille quais exclusivement en Anglais donc je n'ai pas de liens en Français a vous passer.

En espèrent que cella vous aidera dans vos projets.

Essais avec APE + lexique

cd ~/src/deductions/ape/
ape.exe -ulexfile foaf-lexicon.pl -text \
  'Every Person that has-homepage something is an n:interesting-contact.' \
  -solo owlfsspp

ape.exe -text 'Elisee is the father of JM.' -solo owlfsspp

ape.exe -text 'If someone is the father of a person then he is not an n:orphan.' -solo owlfsspp
Prefix(:=<http://attempto.ifi.uzh.ch/ontologies/owlswrl/test#>)
Prefix(ace:=<http://attempto.ifi.uzh.ch/ace#>)
Ontology(<http://attempto.ifi.uzh.ch/ontologies/owlswrl/test>
   DisjointClasses(
      ObjectIntersectionOf(
         :person
         ObjectSomeValuesFrom(
            :father
            owl:Thing
         )
      )
      :orphan
   )
)

Même modèle, plus simple :

ape.exe -text 'If something is a n:homepage of a person then he is an n:interesting-contact.' -solo owlfsspp
 ...
   SubClassOf(
      ObjectIntersectionOf(
         :person
         ObjectSomeValuesFrom(
            :homepage
            owl:Thing
         )
      )
      :interesting-contact
   )
)

Mélanger les namespaces (préfixes) :

 ape.exe -uri 'http://eulergui.sf.net/contacts.owl.n3#' -ulexfile foaf-lexicon.pl -text 'Every Person that has-homepage something is an n:interesting-contact.' -solo owlxml > ~/ontologies/contacts.owl.n3

2013-10-07

Intéressant article dans Linux Mag sur les caches persistants côté navigateur. Il faudrait avoir un cache qui soit RDF .

J'y ai appris qu'il y a un compilateur C/C++ vers JavaScript dans LLVM.

Vers la construction de worklows pour le fltrage sémantique de nouvelles

http://gpl2012.irisa.fr/sites/default/files/CIEL2012-Desclaux-paper5.pdf

Un article sur les DSI

http://infotechnocratie.blogspot.fr/2013/09/tribune-dans-cio-online-du-9-septembre.html

http://www.cio-online.com/contributions/lire-le-dsi-face-a-la-complexite-653-page-1.html

http://www.cio-online.com/contributions/lire-le-dsi-face-a-la-complexite-653-page-2.html

http://www.cio-online.com/contributions/lire-le-dsi-face-a-la-complexite-653-page-3.html

Léon Lévy-Bencheton ( Expert et dirigeant, Cogitique Systèmes ) distingue 3 profils de DSI:

Vous êtes habités par la passion de l'ingénierie du logiciel

Vous dont la technologie est le cheval de bataille

A FAIRE

2013-10-06

Remarques sur les données RDF de openfoodfacts.org

Remarques en désordre, et je n'ai pas de solutions pour tous les problèmes.

  1. Erreur XML à la ligne 1540401; columnNumber: 8; Element or attribute do not match QName production: QName::=(NCName':')?NCName.

    un # en trop

    (détectée avec Jena via mon outil EulerGUI)

  2. il faudrait utiliser un préfixe pour produit, par exemple :
    @prefix foodp: <http://fr.openfoodfacts.org/produit/> .
  3. tel que c'est, ce n'est pas tellement des données liées (Linked Open Data ), car on ne réfère guère d'URI extérieures à openfoodfacts;

    il conviendrait de réutiliser dbPedia, par exemple pour les ingrédients:

    http://dbpedia.org/resource/Thickening_agent

    ( owl:sameAs http://fr.dbpedia.org/resource/%C3%89paississant )

  4. peu ou pas d'indication sur le fabricant; le vendeur (Auchan etc) est indiqué dans l'URI du produit seulement;

    parfois au début, parfois à la fin

  5. les valeurs de food:name ne sont pas marquées avec la langue (fr)
  6. pas d'horodatage sur le produit qui a été observé
  7. actuellement le préfixe de l'URI de l'ontologie food: est déjà "pris" par une autre ontogie dans prefix.cc ( une référence )

    je l'ai "plussé" à l'instant :)

  8. ingrédients dupliqués: exemple farine-de-graines-de-caroube dans blanc-de-poulet-superieur-corril
  9. classification produits : on ne sait pas si c'est conserve, surgelé, barquette fraîche;

    plat cuisiné, biscuit, charcuterie, etc;

    viande; légume, poisson

  10. Il faudrait réutiliser le vocabulaire GoodRelations pour les aspects généraux sur les produits http://www.heppnetz.de/ontologies/goodrelations/v1.html

2013-10-03

MakoLab Semantic Day

Witold Abramowicz

Paschke

syntax semantics, pragmatics

CURIE (URI compacts)

pragmaticweb.info

Dennis@wisnosky.net

FIDO

Wizdom

Philosophical & social context of the Semantic Web

Meetup

Martin Hepp & GoodRelations

10 years

Agent(2) - Promise - Object

CEO : la page a l'air bien !

semantic SEO

Google checkout ?

2009 : Yahoo adopte GR

2010 Google adopte GR

2011 : schema.org : une gifle !

nov. 2012 integration complète de GR

Looking at GoodRelations V 1.0, Release 2011-10-01 : no Promise class !

Session automobile

L'Argus : gestion de la terminologie (Mondeca)

Servant (Renault) : ontologie de configuration : voiture partiellement définie

Matthieu Jonglez (Audi) SmartLogic http://en.wikipedia.org/wiki/Smartlogic

2013-09-23

http://pro.01net.com/editorial/358862/reduire-les-couts-de-maintenance-du-logiciel/

http://code.google.com/p/robotframework/ test framework

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

http://www.thecosmocompany.com/Contact.php

http://www.temis.com/fr/temis

http://semanticweb.com/semtechbiz-berlin-day-2_b26545#more-26545

http://semanticday.mondeca.makolab.fr/#agenda

http://www.time2marketing.fr/main/keynote-semantique

http://www.youtube.com/watch?v=-IdXwT3D7i8 Keynote "Web Sémantique et Big Data" #T2M2013

2013-09-19

Ce serait bien de pouvoir poser la question à un agent IA: où est implémentée cette fonctionalité ?

Je découvre cette histoire de l'IA : http://www.u-picardie.fr/~furst/docs/6-Age_raison_IA.pdf

<jmv> dont la page de garde est ici : http://www.u-picardie.fr/~furst/IA.php

Aussi: http://www.internenettes.fr/savoir/websemantic.html "Le web sémantique, ou la mort annoncée des moteurs."

Librairies audio Java

Voici les dépendances actuelles dans le lecteur musical Java :

basicplayer3.0.jar jflac-1.2.jar  jogg-0.0.7.jar     kj_dsp1.1.jar vorbisspi1.0.2.jar
eulergui-2.0-SNAPSHOT-jar-with-dependencies.jar  jl1.0.jar  jorbis-0.0.15.jar  mp3spi1.9.5.jar
jaudiotagger-2.0.4-SNAPSHOT.jar jmactritonusspi1.74.jar  jspeex0.9.7.jar    tritonus_share.jar

Je suis d'avis d'attendre les retours des utilisateurs pour mettre à jour tout ça, d'autant que les dépendances chez javazoom.net sont pas explicites.

jflac est maintenant constuit avec Maven :) : http://jflac.sourceforge.net/build.html

git clone git://git.code.sf.net/p/jflac/code jflac-code
mvn install
# ==> créé jflac-codec-1.4.0-SNAPSHOT.jar

http://www.javazoom.net/vorbisspi/sources.html : vorbisspi1.0.2.jar ==> vorbisspi1.0.3.jar

jflac-1.2.jar ==> https://sourceforge.net/projects/jflac/files/jflac/jflac-1.3/jflac-1.3.tar.gz/download

2013-09-17

Machine Learning Meetup#3: Lire dans les pensées grâce à Scikit-learn

http://www.meetup.com/Paris-Machine-learning-applications-group/events/129054632/

challenge Darpa

NetFlix : 1 million de $ : pb résolu

kaggle.com : http://www.kaggle.com/solutions/connect

SciKit Learn, Gaël Varoquaux INRIA

numpy.array : conteneur universel de données structurées

estimateurs

vectorisation

validation croisée

pas d'interface graphique

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

Alexandre.gramfort.org

journée porte ouverte le 13 octobre

Panda en python comme R

danger : overfit

connectome , Human Brain Project

orthog. : en soit , vraissemblance,

2013-09-15

améliorations dans EG

voir http://sourceforge.net/p/eulergui/code/HEAD/log/?path=/trunk/eulergui

[r3713]

Facilite le tagage avec un vocabulaire connu de http://prefix.cc ;

par ex. entrer ces 3 termes :

dbpedia:The_Beatles dbprop:associatedBand dbpedia:Staline

sera correctement expandé en :

<http://dbpedia.org/resource/The_Beatles> <http://dbpedia.org/property/associatedBand> <http://dbpedia.org/resource/Staline> .

[r3709]

permet d'avoir accés aux métadonnées sur les propriétés : labels, domaines , etc

2013-09-08

http://www.music-story.com/buddy-miles

rovi , music story

isrc sur un CD ; isrw

TOC du CD : utilisé dans freedb

chazam

Enregistrer une musique depuis youtube avec VLC

Il suffit de cliquer :

Particulièrement utile quand un album entier est fourni !

2013-08-29

Utilisation de DataGUI pour étiqueter un URI quelconque

  1. Démarrage EulerGUI
  2. Bouton Outils -> Launch DataGUI
  3. Dans le premier champ (URI) on entre n'importe quel URI, un URI d'une musique spotify, par exemple:

    http://open.spotify.com/track/7MiQHmKYzyQJIAjqr3Bgrf

    l'application essaye de télécharcher et d'interprêter l'URI comme des triplets du Web Sémantique, et affiche alors les paires propriétés - valeurs dans le panneau central;

  4. Appuyer sur le bouton "Load URI"

    Il y a un message d'erreur comme quoi l' URI n'est pas du RDF.

    Ce ne fait rien, le contexte (sujet au sens RDF) est quand même établi;

    ==> un champ de saisie et un bouton "CHOOSE this property" apparaissent au centre

    les étapes 3 et 4 peuvent être remplacées par l'utilisation du bouton "CHOOSE this URI" tout en bas (cas où on a chargé un autre URI dans la vue formulaire);

  5. taper ou coller un URI pour une propriété , par ex.

    http://dbpedia.org/property/genre

  6. Appuyer sur le bouton "CHOOSE this property"

    ==> un bouton "Enter URI" apparait à côté

  7. Appuyer sur le bouton "Enter URI"

    ==> une nouvelle fenêtre intitulée "Create new value for http://bla http://dbpedia.org/property/genre" apparait

  8. on a alors 3 choix, qui toutes vont ajouter un nouveau triplet en mémoire ET sur le stockage persistant , (de haut en bas):
    1. entrer ou sélectionner un URI déjà connu dans la session courante ,

      ou taper un nouvel URI, par exemple:

      http://dbpedia.org/resource/Blues

      et appuyer sur le bouton "SAVE triple"

    2. appuyer sur le bouton "Create New triple"

      (ceci crée un nouvel URI)

    3. Entrer du texte dans le champ de saisie, et appuyer sur "save text value"

NOTES:

2013-07-31

Scénario création de triplet (alias "tagage")

Après la Révision 3677 "DataGUI: entering a non-downloadable URI in field "Enter URI or N3 term" does not prevent creating of an (empty) N3 form", on peut réaliser ce scénario:

  1. Entrer ceci ou coller dans le champ de gauche "Enter URI or N3 term"

    http://bla

  2. Appuyer sur le bouton "Load URI"

    ==> un champ de saisie et un bouton "CHOOSE this property" apparaissent au centre

  3. taper ou coller un URI pour une propriété , par ex.

    http://dbpedia.org/property/genre

  4. Appuyer sur le bouton "CHOOSE this property"

    ==> un bouton "Enter URI" apparait à côté

  5. Appuyer sur le bouton "Enter URI"

    ==> une nouvelle fenêtre intitulée "Create new value for http://bla http://dbpedia.org/property/genre" apparait

  6. on a alors 3 choix, qui toutes vont ajouter un nouveau triplet en mémoire ET sur le stockage persistant , (de haut en bas):
    1. entrer ou sélectionner un URI déjà connu dans la session courante ,

      ou taper un nouvel URI, par exemple:

      http://dbpedia.org/resource/Blues

      et appuyer sur le bouton "SAVE triple"

    2. appuyer sur le bouton "Create New triple"

      (crée un nouvel URI)

    3. Entrer du texte dans le champ de saisie, et appuyer sur "save text value"

NOTES:

Pour la Science août

Des choses pratiques:

2013-07-18

Un système expert pour l'apprentissage artificiel

L'idée c'est d'aider à choisir un algorithme, et jusqu'à un logiciel, d'apprentissage artificiel.

Dans une première étape, l'utilisateur répond à des questions sur le type de problème (supervisé ou non, classification et/ou régression, prédiction vs identification...).

On peut alors mettre en jeu des règles a priori issues des experts humains.

On peut aussi apprendre un arbre de décision.

Dans une deuxième étape, le système pourrait interagir avec des résultats partiels d'apprentissage pour affiner le choix.

2013-07-17

Refaire EulerGUI de zéro avec Banana-RDF ?

http://iae.univ-lyon3.fr/la-recherche-a-l-iae-lyon/centre-de-recherche-magellan/groupe-systemes-d-information/

Vous êtes tous invités au barbecue du LOL dans le petit jardin du LOLcal pour passer un bon moment. Nous parlerons de tout, de logiciel libre, pour une culture libre et des solutions alternatives.

Ramenez à manger, à boire et surtout une bonne dose de bonne humeur :)

Voici le framadate des horaires afin de confirmer votre presence.

http://framadate.org/studs.php?sondage=2dvqf3f8r48g59sr

http://www.scub.net/fr/usine-logicielle-java/

http://www.square-solutions.com/fr/

moi: ok; est-ce que ça s'appuie sur SCUB fondation ?

Stéphane: oui, entièrement

tous nos devs persos ou client

même si le client nous demande du "classique" en ce moment

moi: SCUB fondation est logiciel libre, mais pas square je présume ?

Stéphane: si aussi

on fait que du logiciel libre quand on a le choix

moi: très bien !

moi aussi

Stéphane: même si les clients comprennent pas toujours

moi: je trouve le semi open source avec version "communauté" très confusant pour pour toutes parties prenantes.

Mis à part l'aspect moteurs de règles et IA, je peux intervenir pour des traductions syntaxiques et sémantiques de données ou configurations , par exemple XML vers JSON, SQL , etc . Le cas d'utilisation une migration d'infrastructure , par exemple récupérer du Ruby on rails, du Drupal etc ...

moi: Je vais élaborer plus là-dessus.

2013-07-15

Réunion bblfish

monade : calcul dans un contexte ( ex. liste, option )

raisonnement dans un temps limité

url ==> Future

free monad : bypass stack

reasoner dans Banana RDF

rww-play

CORS protection JS

pointed graphs

LPD : 2 pb : 1 acteur par resource; l'acteur ne fait de gestion de la mémoire, pas de références lazy

rdfproxy ?

rdflib.js

Banana : wrapper RDF ==> case class : binders

2013-07-12

Règle métiers, moteur de règle

Dans Wikipedia:

http://fr.wikipedia.org/wiki/R%C3%A8gles_m%C3%A9tier

Une règle métier permet d'influencer une prise de décision. L'objectif est de disposer de règles claires, c'est-à-dire non ambigües et compréhensibles par tous, notamment par les non informaticiens. La méthode est de séparer la logique métier de la logique système ou applicatif dans une application. Ainsi la logique métier pourra évoluer et être maintenue séparément du code de l'application.

Un moteur de règle est généralement fourni comme composant d'un système de gestion de règles qui, parmi d'autres fonctionnalités, permet d'enregistrer, définir, classifier et gérer toutes les règles, vérifier la cohérence de leur définition, définir les relations entre différentes règles, et relier certaines d'entre elles à d'autres applications, qui sont affectées par ces règles ou nécessitées par celles-ci.

2013-07-07

Présentation services en gestion de connaissance

Plan

2013-07-06

Je dois faire de l'infrastructure : comment gérer au mieux un triple store en mémoire avec inférences sans persistance, et un triple store persistant sans inférences ...

2013-07-05

<jmvanel> Scala fait la une chez Oracle : http://www.oracle.com/technetwork/java/index.html !!!

2013-07-02

Thèse Moez Essaidi

OLAP par l'exemple: http://bernard.lupin.pagesperso-orange.fr/exemple.htm

Q:

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

mvanel> Je sais pas si vous avez remarqué, mais le dernier Scala Ide permet d'extraire des méthodes.

https://plus.google.com/u/0/106137725737026245498/posts

L' association dont on a parlé, est l' ALDIL http://www.aldil.org

2013-06-28

Liens Prolog

http://prolog.developpez.com/cours/

http://jfoutelet.developpez.com/

http://pcaboche.developpez.com/

http://jfoutelet.developpez.com/articles/xpce/?page=page_3

new(D, window('Ma Première Fenêtre')) , send(D, open).

new(@d, dialog('Ma première boîte de dialogue.')).
send(@d, size, size(300,50)).
send(@d, append, button(ok, message(@d, destroy))).
send(@d, open).

manpce.

Cours IA

2013-06-27

http://prolog.developpez.com/cours/

Structures et les chemins d'un graphe 2.15

http://translate.google.fr/translate?sl=en&tl=fr&js=n&prev=_t&hl=en&ie=UTF-8&u=http%3A%2F%2Fwww.csupomona.edu%2F~jrfisher%2Fwww%2Fprolog_tutorial%2F2_15.html&act=url

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

* Journées Francophones Planification, Décision, et Apprentissage pour

la conduite de systèmes (JFPDA)

* Journées Francophones sur les Systèmes Multi-Agents (JFSMA)

* Journées francophones sur les Modèles Formels de l'Interaction (MFI)

* Rencontres des Jeunes Chercheurs en Intelligence Artificielle

(RJCIA)

La plate-forme de l'IA intègre par ailleurs 12 ateliers thématiques

représentatifs des thèmes portés par les conférences.

Toutes les informations concernant l'organisation des conférences et

des ateliers (CFP, deadline) peuvent être trouvées sur le site

Internet de la plate-forme : http://pfia2013.univ-lille1.fr.

La plate-forme de l'IA constitue un point de rencontre unique et

convivial pour la communauté IA afin de rapprocher les différentes

disciplines qui la composent et d'établir des passerelles entre elles.

À cette intention, l'AFIA participe activement à faire de cet

événement un lieu qui s'adresse à l'ensemble de la communauté

francophone d'Intelligence Artificielle, notamment au travers de :

2013-06-26

J'ai pas mal travaillé sur l'infrastructure IHM Java :

L' Explorateur Web Sémantique permet à l'utilisateur de naviguer à partir d'un point de départ URI, et affiche le contenu de l'URI comme une vue formulaire, et télécharge un URI en cliquant dessus :

http://svn.code.sf.net/p/eulergui/code/trunk/eulergui/html/documentation.html#L5773

2013-06-21

Cours IA

L'essentiel de l'IA

Représentation des connaissances en Prolog

Les faits (données)

voiture(x).   # apartenance à une classe
moteur(x, y). # relation binaire
puissance(y, 200). # valeur littérale
prenoms(p, ['Simon', 'Witold', 'Albert']). # liste

Règles en une seule partie:

# même abscisse X, donc ligne verticale
vertical( line( point(X,Y), point(X,Z))). # se lit quel que soit X,Y,Z

% Ne compile pas, car il y a 2 clauses:
% aime(jean, TOUT), glace(TOUT). 

Règles

commerce(X) :- supermarche(X). # héritage entre classes
pere(F,C) :- homme(F), parent(F,C).
'SDF'(X) :- \+ adresse(X,A). # négation
parent(X) :- parentDe(X,_Y).  # variable _Y "oubliée"

Limitations de Prolog

Les prouveurs de théorèmes (ex. PTTP) corrigent cela(PTTP, Prover9, ...).

L'exercice de Russell et Norvig

(. Adapté d'un exemple par Doug Lenat) Votre mission est de capturer, en forme logique, suffisamment de connaissances pour répondre à une série de questions sur la simple phrase suivante:

Hier, Jean est allé à Carrefour et a acheté deux livres de tomates et une livre de boeuf haché.

Commencez par essayer de représenter son contenu comme une série d'affirmations. Vous devez écrire des phrases qui ont une structure logique simple (par exemple, des déclarations que les objets ont certaines propriétés, que les objets sont liés à certains égards, que tous les objets répondant à une propriété satisfont autre) ...

  1. De quelles classes individus, relations, etc, auriez-vous besoin? Quels sont leurs rapports conceptuels ?

    (Vous aurez besoin d'événements et ordonnancement temporel, entre autres.)

  2. Où s'inscrivent-ils dans une hiérarchie plus générale
  3. Quelles sont les contraintes et les relations entre eux?
  4. Jusqu'où devez-vous être détaillé sur chacun des différents concepts?

La base de connaissances vous construisez doit être capable de répondre à une liste de questions que nous donnerons prochainement. Certaines des questions portent sur le matériel mentionné explicitement dans l'histoire, mais la plupart d'entre eux nécessitent une connaissance avec d'autres connaissances de base à lire entre les lignes. Vous aurez à faire face à ce genre de choses sont à un supermarché, ce qui est impliqué dans l'achat des choses que l'on sélectionne, ce que les achats seront utilisés pour, et ainsi de suite.

Essayez de faire votre représentation aussi générale que possible. Pour donner un exemple trivial: ne pas dire «Les gens achètent de la nourriture à partir de Carrefour," parce que cela ne vous aidera pas à ceux qui magasinent dans un autre supermarché. dites

Ne dites pas "Joe fait les spaghetti avec les tomates et le boeuf haché," parce que ce ne sera pas vous aider avec quelque chose d'autre à tous. Aussi, ne mettez pas des questions en réponses, «Avez-Jean acheter de la viande», par exemple, la question (c) demande-pas "at-Jean acheter une livre de boeuf haché?"

Dessinez les chaînes de raisonnement que de répondre aux questions. En train de le faire, vous aurez sans doute besoin de créer d'autres concepts, faire des affirmations supplémentaires, et ainsi de suite. Si possible, utilisez un système de raisonnement logique pour démontrer la suffisance de votre base de connaissances. [Note: Ceci n'est pas nécessaire pour nous. DL] Beaucoup de choses que vous écrivez peut seulement être à peu près correcte dans la réalité, mais ne vous inquiétez pas trop;. L'idée est d'extraire le sens commun qui vous permet de répondre à ces questions à tous.

Faites les ajouts / modifications nécessaires à votre base de connaissances de l'exercice précédent ainsi que les questions suivantes peuvent être posées. [Note: N'oubliez pas de noter ces lorsque vous présentez. DL] montrent qu'ils peuvent en effet être répondues par le KB, et inclure dans votre rapport une discussion sur les correctifs, ce qui explique pourquoi ils ont besoin, qu'ils soient mineurs ou majeurs, et ainsi de suite.

· A2. Y at-il d'autres personnes dans Carrefour, tandis que Jean est là? [Oui-personnel!] de captur

· B2. Marie at-elle vu Jean? [Oui]

· C2. Jean est un végétarien? [Non]

· D2. Qui possède le déodorant de Carrefour? [la société Carrefour]nat) Votre mission est de captur

· E2. Jean n'a une livre de boeuf haché? [Oui]

· F2. Est-ce que la station Shell à côté a de l'essence ? [Oui]

· G2. Est-ce que les tomates tiennent dans le coffre de la voiture de Jean? [Oui]

2013-06-13

Les API Wikipedia

Voici par exemple un morceau de code Scala ou JavaScript pour avoir la complétion d'un début de mot :

val urlString = "http://en.wikipedia.org/w/api.php?action=query&list=allpages" +

"&apfrom=" + beginning +

"&aplimit=" + limit +

"&prop=info&inprop=url" +

"&format=json"

Par exemple:

http://en.wikipedia.org/w/api.php?action=query&list=allpages&apfrom=Van&aplimit=9&apnamespace=14&format=json

+ de détails :

http://jmvanel.free.fr/computer-notes.html#L1553

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

http://www.math.u-bordeaux1.fr/~fcaron/lectures/fall2011/docs/lecture1.pdf

2013-06-05

Meetup apprentissage automatique

http://www.meetup.com/Paris-Machine-learning-applications-group/events/117668992/

DMP : alimenter ( ticket de caisse ) Antoine, Jerome

Chef Jerome : Titan ( Hadoop, Cassandra ): serait + puissant que Neo4J, mémoire , Fulgora ( Aurelius )

Reco4J, pas temps réel

shortest path : est-ce de l'apprentissage

Joshua Jenjio , Yan Lecun

Guang bin huang : extreme ml == elm ; code ?

http://www.cs.toronto.edu/~hinton/

http://deeplearning.net/software_links/

http://www.cs.toronto.edu/~hinton/

stackexchange : http://stackexchange.com/sites

En entendant le débat passionné sur la validité des algo promus par www.kaggle.com

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

cours Andrew Ng

CRF : Conditional Markov field

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

http://ai.stanford.edu/~ang/

WiseMetrics

ELKI , MOA (online learning), nitro, mechanize, scrapy, beautifoulsource?, RAKE? RANSAC, oneClassSVM,

Olivier: math+programmation, thérie de la preuve,

SLAM; filtrage particulaire

udacity ~ coursera

Matthieu Perrot http://www.lnao.fr/spip.php?rubrique19

2013-05-30

Cours semweb

Usages

Problèmes techniques restant pour l'informatique et le WS:

perspectives :pour l'informatique et le WS

2013-05-26

http://docs.neo4j.org/lab/manual-french/

https://groups.google.com/forum/?fromgroups#!forum/neo4jfr

2013-05-24

Cours IA

http://mind.sourceforge.net/aisteps.html

http://moxie.oswego.edu/~odendahl/coursework/csc350/eg-programs/keyword-systems/chatbot/

https://speakerdeck.com/ogrisel/trends-in-machine-learning

 ?- use_module(library(http_client)).
%   library(utf8) compiled into utf8 0,00 sec, 9 clauses
%  library(url) compiled into url 0,01 sec, 323 clauses
%  library(option) compiled into swi_option 0,00 sec, 32 clauses
% library(http_client) compiled into pce_http_client 0,02 sec, 409 clauses

Turtle dans Neo4J

J'ai écrit un import qui semble marcher sur une petit fichier Turtle ...

mercredi 22 mai 2013

Ca commence à marcher ; j'avais oublié tx.success();

Je dois maintenant travailler pour que les triplets identiques ne soient pas ajoutés 2 fois (on rajoutés si on relance l'import).

2013-05-20

A la cantine meetup reco4j : Paris Datageeks: Big Semantic Data! Machine Learning on Katascale! GPUs à gogo!

MCMC

Deep learning : deeplearning.net

texte : MVP linéaire est encore le mieux

openreview.net/iclr2013

github : CamDavidsonPilon

https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers#readme

neo4j

Al Adli : cavalier

Euler , ponts de Königsberg

Viadeo : 48 mn contre 48h

Adobe : gérer les droits ; choisi par rapport à Oracle

Telenor : modifier les contrats : gérer une hiérarchie de droits d'accès

2 raisons pour les graphes : performance , et facilité

Cisco : calcul des primes via règles

recherche de meilleur chemin

recherche de modèle

qq'un gère la moitié Facebook avec Neo4J

plutôt que procédures stockées récursives, graphe

Neo4J est ACID

7 juin théatre des variétés dotscale.eu code DATAGEEKS

http://www.reco4j.org/

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

Je viens ce soir au .

http://www.meetup.com/graphdb-france/events/117508722/

Architectures applicatives basées sur le Web Sémantique

Voir architectures_SPARQL

2013-05-17

bases-de-donnees-cours-5-base-de-donnees-deductives : un peu trop théorique.

Lu avec intérêt dans la Recherche l'article sur RoboEarth. C'est une bonne idée; mais je doute que la formalisation des connaissances soit assez générales pour avancer sur des problèmes non prévus à l'avance.

http://www.roboearth.org/

Ils utilisent le language de requêtes SeRQL de Sesame, et donc le Web Sémantique.

http://api.roboearth.org/

2013-05-15

http://www.arte.tv/guide/fr/047954-000/une-contre-histoire-de-l-internet?autoplay=1

UNE CONTRE-HISTOIRE DE L'INTERNET mardi 14 mai à 22h40, 86 min

Retour sur l'émergence des mouvements de défense des libertés sur Internet, nés en réaction à la régulation croissante du Web par les gouvernements et les multinationales. Avec Richard Stallman, l'inventeur des logiciels libres, Rick Falvinge, créateur du Parti pirate suédois, et Julian Assange, fondateur de WikiLeaks.

2013-04-22

khaled ghedira <khaled.ghedira@isg.rnu.tn>

Et voici la version Française de l'ouvrage (version anglaise) paru en janvier 2013 chey Wiley Edts, et intitulé "Constraint Satisfaction Problems - CSP Formalisms and Techniques".

Pour la version français, prière visiter http://editions.lavoisier.fr/notice.asp?ouvrage=2727101

et pour les accros de la langue de Shakespeare, je me permets de vous rappeler le lien http://www.iste.co.uk/index.php?f=a&ACTION=View&id=548

outil de correspondance & cartographie d'ontologies

(également adapté pour ontologie canonique d'un RDB);

http://answers.semanticweb.com/questions/911/ontology-mapping-tools

éventuellement ajouter des règles du moteur d'inférence:

même nom et même domaine: possible alignement;

décomposer CamelCase, séparateurs, -, _

recomposer abréviations

s'appuyer sur DBPedia et WordNet pour synomyms, l'attachement domaine

2013-04-19

Au sujet des demandes de stage

Pour info, je sélectionne les profils qui ont quelque chose d'original.

Par exemple, un projet Open Source, ou une technologie qui sort de l'ordinaire comme les langages fonctionnels ou l'IA.

2013-04-18

A FAIRE, débugger ce Prolog

homme(pierre).
femme(brigitte).
parentDe(brigitte, jean).
parentDe(brigitte, eric).
maries(pierre,brigitte).

parentDe(B, ENFANT) :- maries(A,B) , parentDe(A, ENFANT).
maries(B,A) :- maries(A,B) .
femme(B) :- maries(A,B) , homme(A).

maries(tina,ike). homme(ike).
maries(adam,eve). femme(eve).

Chaînage arrière avec Euler

@prefix math: <http://www.w3.org/2000/10/swap/math#> .
@prefix : <http://ex#> .

:compute :double 4 .

{ :compute :double ?X .
  ( ?X ?X ) math:sum ?Y .
} => {
  :computedResult :double ?Y .
} .

ce n'est pas bon, en cas de calcul de plusieurs résultats.

Correction:

{ :compute :double ?X .
  ( ?X ?X ) math:sum ?Y .
} => {
  :computedResult :double (?X ?Y ) .
} .

Mais l'inconvénient est de stocker tous les résultats en mémoire dans les triplets :computedResult :double (?X ?Y ) .

Le même calcul en chaînage arrière:

{ ?X :double ?Y } 
<= 
{ ( ?X ?X ) math:sum ?Y . }. 

{ 4 :double ?Y } => { ?Y a :Result }. 

# résultat:     8 a :Result. 

2013-04-12

java.lang.NullPointerException
at java.awt.Container.remove(Container.java:1254)
at eulergui.gui.view.SourceFilesView.doAddButtonForSearch(SourceFilesView.java:137)
at eulergui.gui.controller.ProjectGUI_Updater.n3SearchAdded(ProjectGUI_Updater.java:44)
at eulergui.project.ProjectChangeSupport$$anonfun$fireAddN3Search$1.apply(ProjectChangeSupport.scala:63)
at eulergui.project.ProjectChangeSupport$$anonfun$fireAddN3Search$1.apply(ProjectChangeSupport.scala:63)
at scala.collection.mutable.LinkedHashSet.foreach(LinkedHashSet.scala:87)
at eulergui.project.ProjectChangeSupport.fireAddN3Search(ProjectChangeSupport.scala:63)

EulerGUI et NARS ?

Avez vous parlé quelque part (sur votre blog ?) du lien potentiel entre eulergui et NARS ?

Pas vraiment .

Disons que j'ai commencé un traducteur N3 --> NARS en N3;

le but est de pouvoir récupérer les données aux formats du Web Sémantique,

pour pouvoir réaliser quelque-uns des cas d'utilisation là :

http://svn.code.sf.net/p/eulergui/code/trunk/eulergui/html/AGI_use_cases.html

Et accessoirement ajouter NARS comme moteur d'inférence dans EulerGUI.

2013-04-10

Tableau de bord ...

Voici le genre de méthodes pour créer (un des éléments) d'un tableau de bord :

http://fr.wikipedia.org/wiki/Partitionnement_de_donn%C3%A9es

Bien sûr, on a besoin de statistiques de base , tellese que :

number of triples (literal or resource), properties, classes, rdfs:type triples, most used prefixes, average properties per subject, histogram of this, graph properties like path length;

La difficulté pour concevoir l'aspect IHM est d'avoir un équilibre entre une vue immmuable selon des axes génériques, pour qu'on s'y retrouve toujours, tels que:

musiciens, style, instruments, époques, souvent écoutés, etc,

et une dose d'adaptation et de personalisation.

En gestion, il y a beaucoup d'outils et des réflexions :

http://fr.wikipedia.org/wiki/Tableau_de_bord_(gestion)

2013-04-04

Eric Bibb at Blues and Brews

http://www.youtube.com/watch?v=HeDalrFbd94

2013-03-27

Scala morceaux choisis

Instantiation et inférence de type:

val f = new javax.swing.JFrame()
f = new javax.swing.JFrame()  // INTERDIT !!!
var f2 = new javax.swing.JFrame()
f2 = new javax.swing.JFrame()
f2 = new javax.swing.JPanel()  // INTERDIT !!!

Les blocs renvoient une valeur:

def abs(x: Double) = if (x >= 0) x else -x
for (i <- 1 to 10) yield i % 3
// Yields Vector(1, 2, 0, 1, 2, 0, 1, 2, 0, 1)
// 2.8 Default and Named Arguments
def decorate(str: String, left: String = "[", right: String = "]") =
  left + str + right
def fac(n: Int): Int = if (n <= 0) 1 else n * fac(n - 1)
decorate("Hello", right = "]<<<") // Calls decorate("Hello", "[", "]<<<")
// Lire un fichier:
lazy val words = scala.io.Source.fromFile("/usr/share/dict/words").mkString

// Arrays mutable
import scala.collection.mutable.ArrayBuffer
val b = ArrayBuffer[Int]()
// Or new ArrayBuffer[Int]
// An empty array buffer, ready to hold integers
b += 1
// Add an element at the end with +=
b += (1, 2, 3, 5)
// contructeur:
ArrayBuffer(1, 1, 2, 3, 5)
// Add multiple elements at the end by enclosing them in parentheses
b ++= Array(8, 13, 21)

for (i <- 0 until b.length)
    println(i + ": " + b(i))
// 3.4 Transforming Arrays
val result = for (elem <- b) yield 2 * elem

// 3.5 Common Algorithms
Array(1, 7, 2, 9).sum
val b = ArrayBuffer(1, 7, 2, 9)
val bSorted = b.sorted
b.mkString(" and ")

Fonctions d'ordre supérieur (higher order):

http://www.scala-lang.org/api/current/index.html#scala.collection.mutable.ArrayOps

val ss = Array("1", "1", "2", "3", "5555" )
ss.count(s => s.length == 4)
ss.filter(s => s.length == 4) 
ss.exists(s => s == "3")
ss.forall(s => s.endsWith("l"))
ss.foreach(s => print(s))
ss.foreach(print) // the same !!!!!!!
ss.map(s => s + "y")

val thrill = "Will" :: "fill" :: "until" :: Nil

Style Java:

def printArgs(args: Array[String]): Unit = {
 var i = 0
 while (i < args.length) {
  println(args(i))
  i += 1
 }
}

Mieux:

for (arg <- args)
  println(arg)

Encore mieux:

args.foreach(println)

2013-03-18

Mes sujets de prédilection

Voir mon site:

http://deductions-software.com/support-et-services.html

2013-03-06

https://distro-recipes.org/fr/infos-pratiques/ distro-recipes.org 4, 5 avril 2013

Rencontré hier au PSUG:

http://www.yannmoisan.com/

2013-03-05

moi: Je découvre le Windows Power Shell

le > souligné en bas à gauche

Akka au PSUG

http://akka.io/

Assez chaud , API cassées

1 seul thread, garanti, pas de pb de synchronisation

Superviseur<>------acteurs

On peut s'abonner aux messages, par ex. pour débugger

Akka JMX : sondes

alag : appli legacy , 1 million de lignes de codes : modulariser via acteurs

remote acteurs + protobuf

futures : fatigant à programmer asynchorne

collections parallèles de Scala

Akka == grosse boîte à outils: STM, transactors

http://blog.nouhoumtraore.com/

2013-03-04

scala ide / eclipse

<jmvanel> Personne n'utilise scala ide / eclipse ?

<alag> intelij ici

<srm`> sublimetext ici

<kali> vim ici

<jmvanel> sublimetext connais pas ! - bien nommé je présume ...

<alag> tres chouette sublim

<jmvanel> bon j'essaierai quand j'aurai 5 mnn - l'idéal serait un outil qui apprend à partir des frappes

Librairies .NET pour le Web Sémantique

https://www.google.fr/search?q=.net+semantic+web

2013-03-04

Traduction Java -> Scala

Les problèmes dans les constructeurs d'appel de constructeur d'une classe ancêtre ont été résolus de manière évidente.

C à d. en ajoutant en 1er l'appel à un constructeur existant, en général le principal, et en collant intelligemment (!?) le contenu du constructeur de la classe ancêtre .

Voir le commit:

http://code.google.com/p/open-nars/source/detail?r=191

et c'est pas fini car le compilateur voit maintenant 357 erreurs ! :(

Je m'apprête à faire plusieurs rapports de bugs sur Scalagen.

Le premier:

https://github.com/mysema/scalagen/issues/39

( je crois que si on surveille le projet GitHub, on surveille aussi les "issues" )

2013-02-27

Inscrit sur https://sphere.knowledgeplaza.net/dashboard/

Je me suis inscrit , mais c pas très riche ;

pas moyen de dire que nous sommes amis ;

ma quesiton "IA" n'a rien déclenché de particulier ;

ce que fait ce site n'est pas clair d'emblée ...

2013-02-25

https://regfr.devoxx.com/public#FR13

http://blog.objetdirect.com/

Système à artefacts (Multi-Agents)

105. Nous y accueillerons Francesco Belardinelli, actuellement maitre de conférence au laboratoire IBISC de l'université d'Evry, pour un exposé de 40min environ suivi de débats.

http://www-desir.lip6.fr/~sma-site/seminaires

--

Verification of Agent-based Artifact Systems: Abstraction Techniques and Decidability Results

Artifact Systems are a novel paradigm in service-oriented computing, which can be analysed by means of formalisms based on multi-agent systems.

Artifacts combine data and processes in a holistic manner. However, by considering data and processes as equally relevant tenets, the typical questions concerning the verification of these services become inherently more difficult and can no longer be solved by current methodologies. Specifically, the presence of data means that the number of states in artifact systems is infinite in general.

In this talk I will present agent-based abstraction techniques that can be deployed to make the model checking problem amenable, thus obtaining decidability results for specific classes of artifact systems. These results enable the verification of basic temporal-epistemic properties in a first-order setting.

The research presented in this talk is joint work with Prof A. Lomuscio and Dr F. Patrizi and it has received funding within the EU STREP Project ACSI.

-----------

Language de spéc. FO-CTLK , logique épistémique

AC-MAS == Artefact-Centric MAS

étendre MC-MAS http://www-lai.doc.ic.ac.uk/mcmas/ aux AC-MAS (Griesmayer Lomuscio, Gonzalez), ICWS

Les cadriciels de TAL (Trait. Auto. des Langues)

>Oui, j'ai rencontré un utilisateur de opennlp :

Qu'est-ce que tu en conclus ? Est-ce que opennlp est intéressant pour toi ?

I y a pléthore d'outils NLP : Gate , IUMA, Stanford NLP, opennlp . Il faudrait un système expert pour les choisir !

Pour l'heure, je vise l'utilisation de NLP2RDF, un serveur ( donc pas d'installation ) , et qui renvoie déjà du RDF , cf :

2013-02-23

CLIPS, un moteur d'inférence vénérable mais toujours actif

<jmvanel> Je vais travailler un peu sur CLIPS, un moteur de règles en C , ça ouvre toutes les portes de l'embarqué.

<jmvanel> http://fr.wikipedia.org/wiki/Clips_(langage)

<mirsal> Et plus généralement, celles des utilisateurs qui ne veulent / peuvent pas faire tourner une jvm

<jmvanel> exactement

<jmvanel> par exemple mon client actuel fait du C# sur W$ , il veut pas entendre parler d'installer une JMV.

<jmvanel> s/JMV/JVM

<jmvanel> JMV c'est moi :)

<mirsal> heh :)

<jmvanel> mon client actuel gère des comptes SAAS en rapport avec des annuaires,

<jmvanel> et je prépare le terrain pour le faire à l'aide de règles.

Pris dans la page Wikipedia CLIPS :

(deffacts verites
    (est homme mortel)
    (est Socrate homme)
    (est chien mortel)
 )

(defrule translation
    (est ?a ?b)
    (est ?b ?c)
    =>
    (assert (est ?a ?c))
)
(reset) ; indispensable pour (re)charger le deffacts
(run)

2013-02-21

http://fr.wikipedia.org/wiki/Relev%C3%A9_d%27identit%C3%A9_op%C3%A9rateur : numéro spécial 3179

Internet de A à Z - séminaire PPS

pps / univ-paris-diderot / membres

Louis Pouzin, de l'INRIA : réseau Cyclade ; a influencé Vinton Cerf

"best effort"

ATM : très cher , pas interopérable (France Télécom)

machine A --> la route par défaut

table de routage : (préfixe, relai, coût) : on prend la route la + précise

horizon : le maximum de routeur : actuellement 25

startap?? à Chicago, porte de Bagnolet

MTU == Maximum Transport Unit

TTL == Time To Live (couramment 64) : éviter les paquets qui tournent en rond ; utilisé par traceroute et mtr

checksum disparu en IPv6

TCP/IP : 15000 lignes de C , dont TCP 1100 lignes, qui émule une connection fiable au dessus de IP; contrîole de flux, de congestion

CISCO, Juniper : code secret ; pile Windows longtemps publique

pas de preuve de programme, mais "s'il y avait un problème ça se saurait"

protocole Babel sera pas choisi

DARPA choisit, car il met les financements

IPv6: algorithme du postier

7% du trafic en IPv6

multicast:

chiffrement point à point maîtrisé, pas en multicast

mbone : multicast

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

Bonjour François

Hier on a parlé de Drools.

Je peux venir montrer d'autres bestioles IA et web sémantique.

2013-02-20

reçu livre apprentissage artificiel : Antoine Cornuéjols : https://www.lri.fr/~antoine/Papers/papers.html

Scala chez Viadeo

projet IRIS : CRM : 3rd party API ==> Complex Event Processing + machine learning; play 2 + mongoDB (Zenexity)

Q utiliser Drools ?

MongoDB :

ReactiveMongo

GridFS

Prés. DSL à voir

Des performances dans les nuages

avec la virtualisation des langages

Yann Régis-Gianas

yrg@pps.jussieu.fr

Université Paris-Diderot – PPS – INRIA πr

EPITA – Séminaire Performance et Généricité du LRDE

http://seminaire.lrde.epita.fr/slides/2012-02-15/yrg-dsl-virtualization.pdf

Prés. EPITA: représentation d'images 2D discrète, continue et auto-duale

http://seminaire.lrde.epita.fr/

http://seminaire.lrde.epita.fr/archives.php : très bien fait , un PDF et une vidéo pour chaque présentation.

Thierry Géraud, EPITA-LRDE

http://www.lrde.epita.fr/cgi-bin/twiki/view/Main/ThierryGeraud

http://people.csail.mit.edu/fredo/Quad/section3_1.html

fonction u.s.c. == upper semi continous

lignes Laplacien = 0 ==> on travaille au niveau du pixel

théorème des courbes de Jordan ( cf groupe des homologies : il y a une transformation continue avec un disque)

graphes d'adjacence

paradoxe de Rosenfeld & théorème : 4 et 8 connexité "duales"

images bien composées

"morphomath" ???

"passer entre les pixels"

grille de Khalimsky

coupes >= : fermés

coupes > : ouverts

on a les connexités c4 et c8 sur la même structure

fonctions à valeurs d'ensembles (zappées par Bourbaki) alais anlyse multivoque ; cf théorie de la viablilité

Nom officiel ?

code en cours de nettoyage dans olena

2013-02-17

Meepup IA Paris : thèmes

apprendre, partager et discuter sur :

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

LA MORT PROCHAINE DES RAMASSE-MIETTES ?

http://d1diuklg6bhqrg.cloudfront.net/uploads/press_release/attachment/15/010213_Linuxmagazine_OCTO.pdf

2013-02-15

http://www.math-info.univ-paris5.fr/~bonzon/research.htm

Elise Bonzon

I am an Associate Professor in the Department of Mathematics and Computer Science at Paris Descartes University. I am a member of the LIPADE laboratory, within the Distributed Artificial Intelligence Group.

Université Paris Descartes - Paris 5

LIPADE - Equipe IAD

45 rue des Saints Pères,

75006 Paris, FRANCE.

Office 812-I

Phone : (+33)1 83 94 57 75

Email: elise.bonzon@mi.parisdescartes.fr

Présentations IA généralités

https://www.google.fr/search?q=intelligence+artificielle+agants+senseurs+actuateurs+r%C3%A9lexe+logique

http://www.math-info.univ-paris5.fr/~bonzon/Cours/IA/01_IA_agents.pdf

http://gdac.dinfo.uqam.ca/inf4230/Contenu/NotesDeCours/

2013-02-11

Questions pratiques Android

2013-02-07

<jmvanel> evantill, c'est formidable que ma grammaire soit la tienne !

<jmvanel> le contexte est que je cherche à utiliser ce moteur d'inférence dans de vraies applications; j'ai déjà échangé 5 ou 10 mails avec Pei Wang l'auteur de NARS

<jmvanel> Pei Wang est un chercheur en IA et accessoirement :( un développeur , et j'essaye d'améliiorer les choses côté bonnes partiques ;

<jmvanel> Pei ne serait pas opposé à passer à Scala ; il a déjà fait des versions de NARS en Scheme, Prolog .

# jmv: recommande par Maxime :
ssh = $SVN_SSH ssh -q -o ControlMaster=no

CLIPS comme moteur d'inférence

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

Extrait du man de Clips:

CLIPS can be embedded within procedural code, called as a subroutine, and integrated with languages such as C, FORTRAN and ADA. CLIPS can be easily extended by a user through the use of several well-defined protocols.

...

CLIPS is being used by over 5,000 users throughout the public and private community including: all NASA sites and branches of the military, numerous federal bureaus, government contractors, universities, and many private companies.Savely, previous branch chief of the STB and now chief scientist of advanced software technology at JSC

GUI CLIPS

CLIPS is now maintained as public domain software by the main program authors who no longer work for NASA.

There have appeared also derivative works from CLIPS like:

A CHERCHER

2013-02-04

http://scastie.org/ est un bon outil de paste spécialisé Scala :)

2013-02-03

Christine SOLNON

Professor of Computer Science at INSA de Lyon

Member of the LIRIS lab (CNRS UMR 5205)

Assistant coordinator of the M2DisCo team

Programmation par Contraintes - Christine Solnon - 2003

http://liris.cnrs.fr/csolnon/Site-PPC/e-miage-ppc-som.htm

http://liris.cnrs.fr/csolnon/Site-PPC/session5/e-miage-ppc-sess5.htm

2013-01-31

<srm`> je suis pas noob à ce point vu que je code quand même en Scala

<jmvanel> haaaaaaaaaa

<srm`> je fais ça pour le moment http://github.com/oxman/paste

<srm`> ça vole pas haut mais c'est déjà ça

<srm`> :D

<srm`> avec le rendu sur http://paste.bouh.org

<jmvanel> ça marche !!!!!

<jmvanel> http://paste.bouh.org/4898784911554d9fbcb9fbdd6a5e8179

Cours Web Sémantique et règles

Big picture: règles:

Conversation Web Sémantique avec un Scalaïste

<jmvanel> et puis on a accès à plein de données ouvertes: http://linkeddata.org/

<jmvanel> mais je reconnais que c'est un avantage annexe pour une appli web et/ou de gestion classique

<jmvanel> SPARQL c'est un langage ET un protocole standardisé , contrairement à SQL et noSQL

<srm`> mais heu... il y a pas de serveur ?

<srm`> toutes les données sont dans des fichiers à plat du coup ?

<jmvanel> serveur, si bien sûr

<jmvanel> Jena TDB, Virtuoso qui anime dbPedia, Sesame, etc, même Oracle et IBM s'y mettent

<jmvanel> mais pas Microsoft pour l'instant

<jmvanel> et aussi Dassault Système avec Exalead

les inconvénients sont lié aux avantages:

<jmvanel> pas de limitations sur la cardinalité, pas de cascades de suppression

<jmvanel> pour l'instant la grande majorité des applis wemweb sont des sites de consultation

<jmvanel> mais il y a SPARQL 1.1 qui permet les mises à jour

-----------

Scala c'est la concision de Python avec le typage fort !

Java c'est le legacy code !

<jmvanel> Pris le dernier billet pour MongoDB !

<jmvanel> J'avais pas vu le lien vers Google calendar etc :)

<http://dbpedia.org/resource/Buddy_Guy> dbpedia-owl:instrument dbpedia:Guitar

Grammaire NARS comporte un cycle récursif qui pose problème

<jmvanel> je pense que cette grammaire comporte un cycle récursif qui pose problème

<jmvanel> café !!!!!!!!

<jmvanel> pour info , pour les 2 terme récursifs de ma grammaire, j'ai remplacé compoundTerm: Parser[Any]

<jmvanel> par compoundTerm: PackratParser[Any]

<jmvanel> c'est mieux : plus de stackoverflow, mais encore un problème pour matcher la fin de fichier : il veut pas s'arrêter ;

<jmvanel> la doc Packrat offcielle : http://scala-programming-language.1934581.n4.nabble.com/attachment/1956909/0/packrat_parsers.pdf

2013-01-28

Au niveau implémentation, les paradigmes dominants sont les modèles objets et les bases relationnelles. Dans les deux cas cela induit des rigidités sur la gestion fine des propriétés . Avec ces technologies, il n’est pas commode d’ajouter des propriétés à volonté par l’utilisateur, ni de rattacher ces propriétés utilisateur à un sens (sémantique) clair, ni de gérer les valeurs multiples (comme le genre par exemple).

explorations AGI (Artificial General Intelligence)

https://groups.google.com/forum/?hl=en&fromgroups=#!topic/deductions-fr/9ew8TFk8E58

<jmvanel> Je dois d'abord lire le papier de Schwitter

<jmvanel> avant de répondre

<jmvanel> mais en gros tu as répercuté ma pensée

<jmvanel> je pense maintenant qu'on pourrait entraîner en apprentissage automatique directement avec du ACE pur;

<jmvanel> et alors on va pouvoir reconnaitre d'autres textes, qu'il faudra effectivement faire confirmer par l'homme.

<jmvanel> aussi sur #eulergui qq'un a mentionné un papier intéressant sur l'apprentissage sémantique : http://homes.cs.washington.edu/~pedrod/papers/emnlp09.pdf

<ontologiae> j'entend souvent des chercheurs dire que tel ou tel truc est impossible

<ontologiae> et ça ma repelle toujours un papier de Gillede Genes qui expliquait que je sais plus qui avait trouvé un truc essentiel en physique (sur la magnétisme) parce qu'il ne savait pas que c'était "impossible" pour les meilleurs spécialistes du domaine

<ontologiae> c'est comme le C. Ritchie et Kernigan l'ont fait parce qu'ils savaient pas que c'était impossible comme le pensaient tous les spécialistes

<ontologiae> oui, mais justement, en le faisant confirmer on apprendra à la machine

<jmvanel> exact

<jmvanel> tout le truc a toujours consisté à contourner les impossibles, comme les heuristiques pour les pb NP complets comme le voyageur

<jmvanel> ou justement les logiques non axiomatiques qui à la fois contournent la complexité algorithmique de la logique classique, et prennent en compte des contradictions et des révisions

<ontologiae> toujours le principe d'explorer

<jmvanel> voilà , je voudrais un agent pas forcément fut-fut , mais qui explore pour moi les outils AI et autres

<ontologiae> et qui fasse le boulot con

<ontologiae> ya pas mal d'outil pour ça, je suis sur qu'on peut en réutiliser un facilement

<ontologiae> http://code.google.com/p/libra-tk/

<ontologiae> http://www.cunei.org/

<ontologiae> http://en.wikipedia.org/wiki/Example-based_machine_translation

<ontologiae> http://www.openmatrex.org/marclator/

<jmvanel> héhé , récursivement il faudrait un outil pour explorer les explorateurs :)

<ontologiae> ;-)

<ontologiae> cunei a l'air assez mur

<ontologiae> mais en javouille

<ontologiae> -1

<jmvanel> :)

<jmvanel> rime avec bafouille

2013-01-23

http://www.math.ens.fr/cours-apprentissage/index_2012.html

Build EulerGUI; chargement paresseux

240 meg

je pensais que c'etais plus leger

Envoyé mercredi à 16:04

moi: héhé , d'où l'intérêt de suivre les procédures ... quand il y en a !

Gregory: build success

moi: pas léger , car il intègre plein de librairies ... rien que pour ça Maven est très utile

Envoyé mercredi à 16:20

moi: compiler sans maven : c'est parti pour une journée , car en fait télécharger toutes les dépendances depuis leurs sites respectifs; c'est beaucoup de temps.

Envoyé mercredi à 16:22

moi: je voudrais faire un chargement paresseux des dépendances Maven ... j'attends que ça murisse ...

Envoyé mercredi à 16:29

Gregory: ^^

Envoyé mercredi à 16:31

moi: en théorie pas compliqué avec les classloader; je m'étonne que ça se fasse pas plus ; ou alors on utilise la grosse cavalerie : OSGi , et encore il faut souvent redémarrer l'appli, comme avec eclipse.

2013-01-19

http://www.devoxx.com/pages/viewpage.action?pageId=5768113

2013-01-18

Scala a-t-il besoin d'un cadriciel d'injection de dépendences ?

<jmvanel> Est-ce que Scala a besoin d'un fw d'injection de dépendences ?

<srm`> hum... est-ce que le Java en a besoin ?

<jmvanel> Est-ce que les mécanismes décrits là ne suffisent pas : Chapter 27

<jmvanel> Modular Programming Using Objects

<jmvanel> dans "Programming in Scala" d'Odersky

<jmvanel> en Java , ça permet de programmer + facilement uniquement via interfaces

<jmvanel> + concrètement , voici un exemple avec un fw Java :

<jmvanel> chercher "Dependency Injection with Guice" dans http://code.google.com/p/google-guice/wiki/Motivation?tm=6

<jmvanel> j'ai aussi l'impression que Scala peut le faire sans fw

<srm`> je crois que je suis en train de faire n'importe quoi avec mes Future :D

<alag> celui qui controle le present, controle le futur

Maintenant je sais que je dois utiliser ça dans maon application EulerGUI !

La question suivante est : comment faire un chargement d'un module à partir de jar sur Internet?

Java de base permet de faire un ClassLoader depuis un URL: URLClassLoader. Scala a-t-il des facilités particulières pour ça ? Oui, il y un URLClassLoader en Scala.

Plus précisément ce jar sur Internet serait chargé depuis Maven Central.

Aussi il serait commode de réutiliser un fichier Maven POM.

Ce fichier pourrait soit être utilisé pour un build Maven standard, soit pour un chargement dynamique paresseux.

2013-01-17

TODO EG : enregistrer actions ; wizard : créer requête à partir d'une URI.

2013-01-16

<ontologiae> jmvanel: le but c'est de faire un algo à qui on donne sa spec en anglais "normal" et qui crache la même chose en anglais "attempto" ?

<ontologiae> (le mail dans la ML attempto)

<jmvanel> tout à fait

<jmvanel> disons que le but c'est pas de *faire* un algo , plutôt d'en choisir une implémentation

<ontologiae> oui évidemment, ya pléthore de logiciels tout prêts ou presque

<ontologiae> je l'imgaine plutôt comme un assistant, dont il faudra vérifier la sortie

<ontologiae> mais c'estune bonne idée

<jmvanel> ce sera comme ce qui sort de Google translate (car algo simlaires ) ,

<jmvanel> c à d qu'il faudra reprendre le résultat à la main

<ontologiae> mais le gros du boulot est fait

<ontologiae> je fais ça pour traduir de l'anglais

<ontologiae> on tombe sur des contresens mais ça facilite le travail, du moment que la précision n'est pas essentielle

<jmvanel> mais ce qui passe le test APE( P ) = P a de bonnes chang=ces d'être bon

<jmvanel> tout à fait

<jmvanel> hier j'ai expérimenté pour la 1ére fois avec la dictée vocale en fançais : pas mal !

<ontologiae> http://computing.dcu.ie/~mforcada/fosmt.html

<jmvanel> xcellent !

<jmvanel> je connaissais rien de tout ça !

<ontologiae> google;-)

<ontologiae> http://code.google.com/p/giza-pp/

<jmvanel> Bonsoir !

<jmvanel> Je me demande s'il existe une application éditeur de texte qui utilise google speech-api

<jmvanel> utiliser translate.google.fr n'est pas très commode, non plus utiliser wget pour transmettre le fichier flac .

la doc. officielle de speech-api est là : https://gist.github.com/1730160

Cours AI

Récap: avantages de Turtle/N3 ( XML , Json , YAML, .ini , .properties

Pas de véritable alternative!

Suggestions bienvenues !

Suggestions de Suggestions

Le 17 janvier

prochaine fois:

Reflexions AGI

Agents intelligents

java est le langage qui convient pour un agent explorateur sur la machine de l'utilisateur, à cause de son indépendance par apport à la plateforme.

La propriété d'émergence est très importante en physique, théorie des systèmes, biologie.

L'intelligence artificielle générale (AGI) peut être vue comme la capacité résultant automatiquement de l'assemblage d'un certain nombre de composants plus ou moins simples.

Les cas classiques d'émergence sont: les fourmis, les cellules de convection, et autres sytèmes dynamiques, la vie, le cerveau.

Standard d'échange sur les ensembles d'apprentissage

Un standard d'échange sur les ensembles d'apprentissage, c'est à dire les données pour l'apprentissage automatique est très important pour l'intelligence artificielle générale.

On peut réutiliser le même fichier de données avec plusieurs logiciels, tester et combiner différents outils.

Tester et combiner peut alors se faire facilement par un agent intelligent.

Cela peut aussi permettre d'organiser des compétitions entre différents logiciels d'AGI, comme il y en a tous les ans pour les prouveurs de théorèmes grâce au format TPTP.

2013-01-15

Debugger une requête SPARQL

1er essai : rien !!!!!!!!

$TDBROOT/bin/tdbquery --loc=tdb_dbpedia --query type.rq

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

| id_type | title_type | desc_type | type_id_parents |

======================================================

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

pas evident alors

non, c'est une erreur à trouver.

Dans ce cas , la stratégie consiste à enlever des contraintes jusqu'à avoir un résultat .

Gardé que :

?subject a owl:Class ;

==> résultat OK :)

Maintenant je regarde l'un des résultats:

select * where <http://dbpedia.org/ontology/Film> ?P ?V .

---------------------------------------------------------------------------------------------
| P                                                 | V                                     |
=============================================================================================
| <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> | <http://www.w3.org/2002/07/owl#Class> |
| <http://www.w3.org/2000/01/rdf-schema#label>      | "film"@en                             |
| <http://www.w3.org/2000/01/rdf-schema#label>      | "Film"@de                             |
| <http://www.w3.org/2000/01/rdf-schema#label>      | "영화"@ko                               |
| <http://www.w3.org/2000/01/rdf-schema#label>      | "film"@fr                             |
| <http://www.w3.org/2000/01/rdf-schema#label>      | "ταινία"@el                           |
| <http://www.w3.org/2000/01/rdf-schema#subClassOf> | <http://dbpedia.org/ontology/Work>    |
| <http://www.w3.org/2002/07/owl#equivalentClass>   | <http://schema.org/Movie>             |
---------------------------------------------------------------------------------------------

ALORS je vois ce qui va pas :

il manque dans la donnée ci-dessous ..... rdfs:comment

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

Tu connais pas les framapad ?

c'est très partique; c un éditeur collaboratif !!!!!

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

Présentation Cinequant à labo ENST

Movie success predictions

gaussian copula; regularization

log logistic model : casting , director , genre

Q: combine 2 models: NO, OSS: NO(Java+Python), volume: 2000 movies x 500 data for each (number of occurences per week, director, genre), exploiter les news, courbe x, y

Q recommendations: NO

it's more a showcase

X-data: mix EDF, Orange, etc private data

Real Bidding

add exchange, e.g. App Nexus

vendors are not very sophisticated

auction parameter: min price

partnership with publishers (Le Monde)

Hadoop for data crunching; Redis in memory fast DB

reinforcement learning ?

may perturbate the functioning of the market

Criteo is very cleaver

RTB : low prices

STORM : big data in real time

add policy for user : possible

2013-01-14

http://en.literateprograms.org/Quicksort_(Haskell)#chunk def:partition function

* Le sujet de #framasoft est : http://wiki.framasoft.org Le nouveau WiKi de Framasoft a besoin de votre participation | http://fr.wikipedia.org/wiki/Rue_du_logiciel_libre

* Sujet de #framasoft défini par sobralnet!~luis@andlu.info le Sat Apr 9 20:42:43 2011

Jean-Luc Ancey sur Haskell

http://www.parinux.org/content/conference-sur-haskell-par-jean-luc-ancey

Sur Java : "On comprend tout de suite mais on s'amuse pas" .

Miran Lipovaca http://learnyouahaskell.com/chapters

Yaet another Haskell tutorial

Rosetta Code

Haskell IO for imperative programmers

H amuse bouche , vidéo de Mark Lentczer

parallélisation ? contesté !

monades : pour les E/S

doubleMe x = x + x
valAbs x = if x < 0 then (x* (-1)) else x 

liste en compréhension

pourquoi les lambda fonctions sont introduites par \ en Haskell alors qu'il y a rien en Scala ?

foldl 

http://en.literateprograms.org/Quicksort_(Haskell)#chunk def:partition function

Python est fonctionnel

JavahoScript serait fonctionnel

OCaml : on peut générer des applications Web en JS

Erlang : programmation fonctionelle distribuée

évaluation

Essai des démos cinequant

Essayé sur http://www.cinequant.com/rumr

La mise en scène est contestable, les acteurs très approximatifs.

Ca ne marche pas !

Dommage !

La sémantique des liens n'est pas claire (jolie démo cependant) :

http://www.cinequant.com/satiata

2013-01-13

Ca marche !!!!!

wget --header='Accept: text/n3, application/n3, text/rdf+n3, text/turtle, application/rdf+xml; q=0.9, text/xml; q=0.9, text/plain; q=0.8, text/xhtml; q=0.8, text/html; q=0.8' \
  -O- --save-headers \
  http://www.w3.org/TR/skos-reference/skos.rdf |less

wget --header='Accept: text/n3, application/n3, text/rdf+n3, text/turtle, application/rdf+xml, text/xml, text/plain; q=0.8, text/xhtml; q=0.8, text/html; q=0.8' \
  -O- --save-headers \
  http://www.w3.org/TR/skos-reference/skos.rdf |less

_________________________________

http://wiki.opencog.org/w/Atomspace_visualizer

_____________________

moi: je sors 10000 mail en N3

ça dure assez longtemps ...

Envoyé dimanche à 17:40

luc: spam ?

moi: j'en ai peu , car G purge bien

non , je veux alimenter une base TDB locale

afin de gérer agenda, mail ,etc

( cf mail sur liste EG )

2013-01-12

Mail aux experts TAL

extraction de mots saillants (ontologie, logiciels Open Source)

Jean-Marc Vanel <jeanmarc.vanel@gmail.com>

13:21 (Il y a 2 minutes)

à nils.grunwald, Yohan, Gil, Gilles, Stéphane, Ruset, Cédric

Bonjour à tous

En fait ce n'est pas dur de comprendre une ontologie, mais c'est dur

de savoir quelle ontologie utiliser.

Il n'y a pas d' "annuaire" des ontologies. C'est comme la carte des

glaces, il y en a beaucoup. Il y a plutôt des moteurs de recherche,

mais traditionnels, pas conceptuels, comme swogle , falcons [1] ...

C'est tellement ouvert, qu'il est dur pour Mr tout le monde de choisir

les bonnes ontologies.

Pour remédier à cela, ce que j'ai en projet, c'est de créer des outils

pour aider les auteurs, utilisateurs ou développeurs à annoter les

ontologies avec des concepts de dbPedia ou WordNet, à l'aide

d'analyseurs TAL.

Donc ce qu'il faudrait, c'est un outil d'extraction de mots saillants

à partir de l'anglais, qui sorte 5 à 10 mots pertinents, typiquement à

partir d'un rdfs:comment. Ces mots saillants seraient ensuite (si

nécessaire) désambigüés par exemple à l'aide d'un service Web

Wikipedia (celui que vous utilisez comme Mr Jourdain en tapant dans le

champ recherche de Wikipedia).

Ces mots saillants (ici music) , seront mis dans des triplets tels que :

<monOntologie> skos:subject dbpedia:Music .

qui pourront alors être mis dans l'ontologie elle-même (c'est le

mieux), on ajoutés dans des documents Turtle ou RDF en ligne, ou dans

des bases SPARQL, et/ou dans des sites collaboratifs genre prefix.cc

[2] .

Ainsi un human, ou un programme agent, pourrait trouver un composant

logiciel plus précisément.

La problématique sur les ontologies est similaire pour les programmes

Open Source, et bien d'autres types de resources.

Idéalement, le composant logiciel TAL pour l'extraction serait en Java

et Open Source, ce qui faciliterait l'ajout dans l'environnement

EulerGUI [3] .

[1] Finding ontologies on the Web :

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html#Finding2

[2] site collaboratif pour les ontologies et leurs préfixes : http://prefix.cc

2013-01-11

Rencontré Gil F de Tagmatica, un expert en TAL. Hélas, il n'y a pas d'Open Source chez eux.

2012-12-21 ?

http://code.google.com/p/django-rdf/

Envoyé vendredi à 17:15

Eric: ça semble permetre d'exposer son modele relationel en rdf

2012-12-20

Retour de Londres , AGI 2012

Je commence à penser que le bon métier pour moi, et Déductions, serait de conseiller sur les outils et problématiques en IA, apprentissage automatique, Traitement Automatique du Langage, et algorithmique numérique.

rencontré Mark Proctor à Londres ( le dev. principal de Drools )

Envoyé jeudi à 13:19

moi: du coup je m'intéresse à l'apprentissage automatique, et aussi au fw OpenCog , dont le chef de projet Ben Goertzel était aussi l'organisateur de la conf.

2012-12-17

Explorer DBPedia

il y a des exemples SPARQL sophistiqués ici : http://wiki.dbpedia.org/OnlineAccess#h28-6

Un problème est que la date de fin d'un évènement n'est pas accessible simplement.

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

SELECT (count(?A) as ?count) WHERE { ?A a dbpedia-owl:Person }

on dbPedia : guess how many ?

Karima Rafes 17:46:39

200 000 ?

jeanmarc. vanel 17:46:58

très loin du compte !

J'obtiens bien 39582868^^http://www.w3.org/2001/XMLSchema#integer

Karima Rafes 17:52:33

Hein... tu parles des comptes user

jeanmarc. vanel 17:52:35

mais c'était avec

SELECT DISTINCT (count(?A) as ?count) WHERE {?A a dbpedia-owlerson ; ?P ?V }

17:52:37

donc 39582868 est le nb de triplets concernant des personnes

et 763644 le nb de personnes 17:53:48

obtenu avec 17:53:54

SELECT DISTINCT (count(?A) as ?count) WHERE { ?A a dbpedia-owl:Person }

17:54:24

Karima Rafes 17:54:41

Ok

jeanmarc. vanel 17:54:59

tu étais dans l'ordre de grandeur

et 28616 , si on ajoute la contrainte 17:56:27

?A dbpedia-owl:birthPlace dbpedia:United_States 17:56:49

2012-12-03

http://www.systematic-paris-region.org/en/projets/timco

http://fing.org/?page=evenement&id=418

équipe robotique de Karima: http://www.davincibot.net/

2012-11-30

http://paris.leweb.co/2012/agenda/social-business-track-plenary-2

Sauté le pas vers Scala

Je suis vraiment d'avoir sauté le pas vers Scala; c'est un langage et une communauté qui me va bien .

Vous me suivez sur Twitter ?

https://twitter.com/jmvanel

C'est un bon moyen d'être au courant de ce que je fais . Et que des messages de 140 caractères !

Aussi : EulerGUI en anglais :

consulter : http://sourceforge.net/mailarchive/forum.php?forum_name=eulergui-user

s'abonner : https://lists.sourceforge.net/lists/listinfo/eulergui-user

Déductions et EulerGUI en Français : https://groups.google.com/forum/?fromgroups#!forum/deductions-fr

Trying github network

This runs forever :(

https://github.com/droolsjbpm/drools/network

Runs fine :

https://github.com/prova/prova/network

http://blog.yjl.im/2012/05/github-following-and-watching-graph.html

Enter melvincarvalho or jmvanel or bblfish

I'd also like to see *my* watched repos, because I know no way on GitHub to do this.

Scala, numerics, scientific

http://code.google.com/p/kiama/

http://stackoverflow.com/questions/6042340/computer-algebra-system-cas-for-scala

https://www.google.fr/search?q=+scala+algebra

https://github.com/dlwh/breeze

https://github.com/scalala/Scalala

http://www.scalanlp.org/

https://github.com/dlwh/breeze/wiki/Tour

https://github.com/dlwh/breeze/wiki/Quickstart :

val f = Figure()
val p = f.subplot(0)
val x = linspace(0.0,1.0)
p += plot(x, x :^ 2.0)
p += plot(x, x :^ 3.0, '.')
p.xlabel = "x axis"
p.ylabel = "y axis"
f.saveas("lines.png")

Not bad! But using regular Scala function notation would be better (reuse!):

p += plot( x => x ^ 2.0)

Scala indeed has abstraction that are close to mathematical functions, except for domain and range that can be added.

NOTE that by default Scala only has Java's pow function: Math.pow(x, 2) , but breeze could provide familiar math operators.

I'd like to try Breeze-Learn / breeze.classify . Breeze provides 4 classifiers: a standard Naive Bayes classifier, an SVM, a Perceptron, and a Logistic Classifier (also known as a softmax or maximum entropy classifier).

Scala, process and shell

http://stackoverflow.com/questions/9886123/executing-shell-commands-from-scala-repl

you can use dot notation to refer to the last result:

scala> List(1,2,3,4)
res0: List[Int] = List(1, 2, 3, 4)
scala> .sum
res1: Int = 10

Just get the result status of the process:

import sys.process._

"ls /home".!
guest
jmv
h: Int = 0

Keep result in a variable:

scala> val dirContents = "ls /home".!!
dirContents: String = 
"guest
jmv
"

From scala/sys/process/package.html : building a pipeline of commands such as this:

import scala.sys.process._
"ls" #| "grep .scala" #&& "scalac *.scala" #|| "echo nothing found" lines

using a Seq[String] with each parameter to bash in its own String, or the scala library will just split the String at every space character.

scala> Seq("bash", "-c", "echo `date`")!!
warning: there were 1 feature warnings; re-run with -feature for details
res0: String = 
"vendredi 30 novembre 2012, 10:21:34 (UTC+0100)
"

2012-11-29

https://www.w3.org/Bugs/Public/buglist.cgi?product=Amaya&query_format=advanced&order=changeddate%20DESC%2Cbug_status%2Cpriority%2Cassigned_to%2Cbug_id&query_based_on=

Comment on fait pour lancer comme un script du Scala interactif ?

Devoxx à la marmite

http://www.duchess-france.org/

3400 personnes, 200 speakers

Google drive: application hello fax, o-auth

angular-js : MVC , on touche plus au DOM ; le buzz!

Dart par Google : le relais de JS (navigateur == Dartium )

Android 4.2 : affichage dans les différentes résolutions

track initié âr Tacha Carl "domotique, robotique" : Noa, Arduino, Raspberry

prés. disponibles sur parleys.com (en HTML5 bientôt), comme le JUG

un gars de Atlassian : trucs pour les équipes: kudo; méthodologies: pomodoro : itérations de 25mn ; scrumodoro !!!!

keep drop start

String : endormant ( Hadoop, Pig )

Jigsaw , OSGi

modularité : Turtle all the way down

garbage collector

José Pommard

//isme

collections

optional

logs

Daniel Spivak : compilateur en Scala

play : couper avec des mauvaises pratiques

Utiliser Scala comme un shell

def cat( file:String ) ={ Source.fromFile(file).getLines.toList.foreach(println(_)) }

"contextualisé" : technique ?

2012-11-28

alcatel onetouch modem hspa

Les types en Scala

David Galichet david.galichet@gmail.com

mes slides : http://fr.slideshare.net/dgalichet/demystifying-scala-type-system

Pour ceux qui ne suivent pas mes tweets ( et qui lisent cette ML ;-) ), la série d'article d'Eugene Yokota commence ici : http://eed3si9n.com/learning-scalaz-day1

Maintenant en 2.10 on peut créer des AnyVal

trait Juice[+A <: Fruit]
// trait Juice[+Fruit]

exemple JMV 1 : R inclus dans C ; on a une fonction f1:R-->R : on peut pas en faire une fonction C-->R ;

mais à l'envers si on a une fonction f1:C-->R : on peut pas en faire une fonction R-->R par restriction.

exemple JMV : Nourriture_vegetale --> Nourriture

class Nourriture
class Nourriture_vegetale extends Nourriture
def mange_vegetarien( n: Nourriture_vegetale ) : String = "mmmm"
def mange_de_tout( n: Nourriture) : String = "crunch"

La fonction mange_de_tout peut être considérée naturellement, par restriction (comme disent les mathématiciens), comme une fonction portant sur Nourriture_vegetale;

Mais pour mange_vegetarien l'inverse n'est pas vrai: cette fonction ne peut pas accepter n'importe quelle Nourriture.

La catégorie des fonctions

Nourriture => String

est donc contenue dans la catégorie des fonctions

Nourriture_vegetale => String

Ce qui veut dire que les arguments de fonctions sont naturellement contravariants: l'héritage est en sens inverse de la classe.

Ce qu'on voit dans la définition de Function1 :

trait Function1[-T1, +R] extends AnyRef 

---------

NOTE: on ne peut pas faire usage du type Function1 avec + - devant les paramètres :

scala> val f2 : Function1[Nourriture,String] = x => "eee"
f2: Nourriture => String = <function1>

scala> val f2 : Function1[-Nourriture,String] = x => "eee"
<console>:1: error: identifier expected but ',' found.
       val f2 : Function1[-Nourriture,String] = x => "eee"

Car Function1 est déjà défini avec - ainsi :

trait Function1[-T1, +R] extends AnyRef 

Conseil de David : Commencer par faire des types invariants; mettre de la variance ou covariance au fur et à mesure des besoins.

Joindre meetup / SemanticCampParis

http://www.meetup.com/SemanticCampParis

Introduction

Je m'intéresse à tout ce qui est à l'intersection de l'Intelligence Artificielle et du développement logiciel.

Donc tout ce qui permet d'écrire moins de code, de faire du déclaratif au lieu du procédural, d'obtenir une application intelligente.

----------

Question : Avez-vous un projet Linked Data ?

plusieurs:

- exploitation de dbPedia pour enrichir des données musicales

- gestion de mails et de contacts avec SPARQL, enrichis avec des données liées

- gestion d'identités numériques

Introduction non utilisée

Mes racines sont dans la simulation, l'algorithmique et le génie logiciel.

A partir d'une réflexion sur utilisation de l'IA en développement logiciel, j'ai assemblé des briques logicielles Libres afin d'écrire moins de code, de faire du déclaratif au lieu du procédural, d'obtenir une application intelligente.

- constats: concepts communs: IHM, réseaux, languages;

- visions :

Dans EulerGUI, l'innovation ne consiste pas à développer un n-ième moteur d'inférence ou autre algorithme ou base de données, mais dans le choix et l'intégration de composants en Logiciel Libre: inférence, Web Sémantique, Langages Naturels Controlés, Apprentissage Automatique, ...

système expert extrême: plus systématique, liaison Web Sémantique, intégration à plateforme Java

spécificités : OSS, logique formelle (des prédicats)

Les points essentiels du framework (cadriciel) sont:

Tout cet aspect déclaratif apporte de la flexibilité par rapport au déploiement, la persistance, et l'IHM.

2012-11-27

Tout n'est pas dans Meetup !

Le calendrier des conférences et des user groups:

http://jduchess.org/duchess-france/les-autres-actions/#calendrier

L'Agenda du Libre

http://www.agendadulibre.org/

Mes groupes IRC et vidéos:

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html#L3298

2012-11-26

Meetup : 78 Hackers / Test the waters

http://www.meetup.com/78-Hackers/events/88776512/

Kris: ops5 , finance , jusqu'en 2005; topic : no API? ; 4 enfants ; utilisateur de Reuters ; le web ?

octave == statistical; joshfire : templates ;

Barthelemy : Ingesup

Ali : tedx == unofficial TED : Paris : octobre ; writing a book : HTML5; China : brassard; Valeo : rencontré en Chine; SEO; application : montrer l'environnement d'un mot; sogeti ; spaz ?

2012-11-23

Prochaine séance à la Marmite : devoxx 2012

http://www.devoxx.com/display/FR12/Accueil

simile-widgets.org timeline

Qu'est-ce que tu penses de ça : http://simile-widgets.org/timeline/

plutôt sympa, non ?

à Emmanuel

Merci pour contribuer à ma R&D !

Je connaissais pas simile-widgets.org; mais Simile je connaissais un peu , notamment les RDFizers:

http://simile.mit.edu/wiki/RDFizers

Il est clair que la ligne de temps est un composant à avoir , comme la carte géo; lundi j'ai vu une intéressante démo avec les deux, à partir de données dbPedia:

http://hdalab.iri-research.org/hdalab/facettes/

2012-11-21

https://www.getrefinder.com/home/

<jmvanel> Y aurait-il une traduction fr de http://www.w3.org/DesignIssues/LinkedData.html ?

<jmvanel> truc fondamental au sens propre du mot :)

Cours Web Sémantique

Thèmes du cours jeudi 22 / 11 / 2012

Travaux à la maison pour demain:

Travaux pratiques demain

Installations:

Architecture du Web Sémantique : les principes

w3c/Design Issues/Linked Data , par Tim Berners-Lee

  1. Utilisez les URI comme des identifiants pour les choses
  2. Utilisez les URI HTTP pour que les gens peuvent les regarder

    un URI HTTP est d'abord un nom (et aussi une adresse, on espère )

  3. Quand quelqu'un regarde un URI, fournir des informations utiles, en utilisant les normes (RDF*, SPARQL)
  4. Inclure des liens vers d'autres URI. afin qu'ils puissent découvrir plus de choses.

la tasse Linked Data

Architecture du Web Sémantique : les URI avec #

Cet URI ( qui représente Tim Berners ) :

http://www.w3.org/People/Berners-Lee/card#i

peut être récupéré par l'URL sans le #i .

Là -dedans toutes les occurences de l' URI (ciomplet représentent Tim .

Architecture du Web Sémantique : Graphes navigables (Browsable graphs)

Le langage de requêtes SPARQL

http://fr.slideshare.net/LeeFeigenbaum/sparql-cheat-sheet

http://en.wikipedia.org/wiki/SPARQL#SPARQL_implementations

la spec. SPARQL query

la spec. SPARQL update

RDF : les avantages de XML

Essayer DBpédia en français

http://fr.dbpedia.org/

% host fr.dbpedia.org 
fr.dbpedia.org has address 138.96.19.66
% host dbpedia.org 
dbpedia.org has address 194.109.129.58
dbpedia.org has IPv6 address 2001:888:2000:36:1::1
dbpedia.org mail is handled by 100 mxlb.ispgateway.de.

http://fr.dbpedia.org/sparql

construct {
  <http://fr.dbpedia.org/resource/Algorithme> ?P ?V .
} where {
  <http://fr.dbpedia.org/resource/Algorithme> ?P ?V .
}

Result:

@prefix dcterms:<http://purl.org/dc/terms/> .
@prefix category:<http://fr.dbpedia.org/resource/Cat\u00E9gorie:> .
dbpedia-fr:Algorithmedcterms:subjectcategory:Algorithmique .
@prefix dbpedia-owl:<http://dbpedia.org/ontology/> .
dbpedia-fr:Algorithmedbpedia-owl:wikiPageWikiLinkdbpedia-fr:Instruction ,
dbpedia-fr:Philippe_Flajolet ,
dbpedia-fr:Algorithmique ,
<http://fr.dbpedia.org/resource/Algorithme_(sport)> ,
category:Algorithmique ,
dbpedia-fr:Al-Khawarizmi ,
dbpedia-fr:Algorithme_Anytime ,
<http://fr.dbpedia.org/resource/Rubik\u0027s_Cube> ,
dbpedia-fr:Recette_de_cuisine ,
<http://fr.dbpedia.org/resource/Instance_(algorithmique)> ,
dbpedia-fr:Civilisation_islamique ,
dbpedia-fr:Interstices .
@prefix ns6:<http://interstices.info/> .
dbpedia-fr:Algorithmedbpedia-owl:wikiPageExternalLinkns6:algo ,
<http://www.scriptol.fr/programmation/algorithme-definition.php> .
@prefix foaf:<http://xmlns.com/foaf/0.1/> .
@prefix ns8:<http://fr.wikipedia.org/wiki/> .
dbpedia-fr:Algorithmefoaf:isPrimaryTopicOfns8:Algorithme .
@prefix ns9:<http://dbpedia.org/resource/> .
dbpedia-fr:Algorithmedbpedia-owl:wikiPageInterLanguageLinkns9:Algorithm ;
dbpedia-owl:abstract"Un algorithme est une suite finie et non-ambigu\u00EB d\u2019op\u00E9rations ou d'instructions permettant de r\u00E9soudre un probl\u00E8me. Le mot algorithme vient du nom latinis\u00E9 du math\u00E9maticien arabo-musulman Al-Khawarizmi, surnomm\u00E9 \u00AB le p\u00E8re de l'alg\u00E8bre \u00BB. Le domaine qui \u00E9tudie les algorithmes est appel\u00E9 l'algorithmique. On retrouve aujourd'hui des algorithmes dans de nombreuses applications telles que la cryptographie, le routage d'informations, la planification et l'optimisation de ressources, la bio-informatique, etc..."@fr .

2012-11-19

http://www.exoplatform.com/company/fr/company/events

Présentations SémanticPedia

progamme-definitif-de-la-journee-de-presentation-de-semanticpedia-19-novembre-2012/

Fabien Gandon

Tagging sémantique

Cité de la musique, Rodolphe Bailly

Milan Stankovic, Hypios: hyproximity

Alex Monnin: WikiSocialEdit

izipedia - Hicham Tahiri (Vocal Apps) http://izipedia.com/news/?author=1

Discovery hub

JMV : les règles, les raisons des choix, l'utilisation des données personelles ou contextuelles sont souvent opaques dans les moteurs de recherche.

2012-11-17

Message aux spécialistes TAL

En fait ce n'est pas dur de comprendre une ontologie, mais c'est dur de savoir quelle ontologie utiliser.

Il n'y a pas d' "annuaire" des ontologies. C'est comme la carte des glaces , il y en a beaucoup. Il y plutôt des moteurs de recherche, mais traditionnels, pas conceptuels, comme swwogle , falcons ... C'est tellement ouvert, qu'il est dur pour Mr tout le monde de choisir.

Pour rémédier à cela, ce que j'ai en projet, c'est d'annoter les ontologies avec des concepts de dbPedia ou WordNet, à l'aide d'analyseurs TAL.

2012-11-15

Apparently no IRC chat for dbpedia

La prochaine session du PSUG devrait avoir lieu le mercredi 28 novembre à 19:30 chez Xebia.

David Galichet nous fera une présentation magistrale sur "Demystifying Scala Type System".

Xebia

156 boulevard Haussmann à Paris

Immeuble A

7e étage

http://rockette-libre.org/

<jmvanel> Scala IDE est un peu instable ; après un mvn eclipse:eclipse ,

<jmvanel> j'ai dê faire 2 ou 3 fois "ajouter les librairies Scala au projet" ;

<jmvanel> autrement il arrivait pas à mélanger le Java et le Scala ( réferences non satisfaites)

<jmvanel> là ça marche , je touche plus !

<fanf> jmvanel: dis moi, tu utilise bien scala-maven avec ?

<fanf> https://github.com/davidB/scala-maven-plugin

<fanf> si oui, tu ne devrais pas avoir à faire de mvn eclipse:eclipse (et au contraire, ca casse en général)

<fanf> si non, tu devrais utiliser ce plugin, c'est a peu près la seul solution pour avoir eclipse+maven+scala qui fonctionne correctement ensemble

<jmvanel> fanf, je te rassure , j'utilise scala-maven-plugin ;

<jmvanel> et ça roule !

<jmvanel> mais j'ai besoin aussi d'un IDE

<fanf> ok, alors dans eclipse, fait plutôt "import maven project"

<jmvanel> pour éditer le code , même si les annotatoin d'erreurs de Scala IDE sont un peu branlantes, et pas très rapides

<jmvanel> oui, c'est une solution ; j'ai été déçu il y 2 ans + par le plugin Maven pour eclipse ; jamais rééssayé depuis

<jmvanel> pour l'instant ça roule; si je suis re-coincé , je garde ça sosu le coude .

<fanf> ca c'est largement amélioré (même si c'est quand même une daube infame - mais c'est peut être plus dû à maven)

<jmvanel> :)

essayer jatran

<jmvanel> pour l'instant je m'apprête à essayer jatran : http://code.google.com/p/jatran/source/checkout

<jmvanel> cf intro de l'auteur ; http://scala-programming-language.1934581.n4.nabble.com/scala-jatran-java-to-scala-tool-td1991975.html

svn checkout http://jatran.googlecode.com/svn/trunk/ jatran-read-only
cd jatran-read-only/
ant
time ./jatran.sh --input ~/src/eulergui/src/main/java
Invalid type:22
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

<jmvanel> Il a fait un out -of-memory, mais il a pondu pas mal de classes sur les 60000 lignes que je lui ai donné.

<jmvanel> Les commentaires sont perdus, pourtant il part du source Java :(

envoyé mail à l'auteur de Jatran ; il est au Ghana, donc il doit pas être francohone .

https://github.com/eokyere

http://eokyere.blogspot.fr/

Pagaille dans mes instanciations de classes génériques

Sur IRC psug:

<jmvanel> Bonjour

<jmvanel> pour info, après avoir corrigé la compil sur Maven ET sur eclipse, j'ai un comportement erroné sur Maven ;

<jmvanel> sur Maven c'est Scala 2.9.2 , sur eclipse je ne sais pas trop .

<jmvanel> En tous cas, c'est dû à typage différent de classes génériques, ce qui fait qu'une méthode ancêtre qui ne fait rien est appelé à place d'une vraie.

<jmvanel> Au moins, ça m'a pointé sur la pagaille dans mes instanciations de classes génériques!

<jmvanel> je vois qu'il y a des pages web sur "Scala override java abstract generic method"

<jmvanel> http://scala-tools.org/repo-releases n'existe plus ?

<jmvanel> En effet : http://www.scala-lang.org/node/12437

problèmes résolus sur EG + Scala :)

<jmvanel> Scala IDE est un peu instable ; après un mvn eclipse:eclipse ,

<jmvanel> j'ai dê faire 2 ou 3 fois "ajouter les librairies Scala au projet" ;

<jmvanel> autrement il arrivait pas à mélanger le Java et le Scala ( réferences non satisfaites)

<jmvanel> là ça marche , je touche plus !

2012-11-12

Je commence à arriver au point où je dois trouver des moyens de tourner dans des environnements variés. Par exemple mon prospect de ce matin tourne sur C# .

2012-11-10

Rencontre "Bonnes pratiques du développement logiciel"

Moi:

Pour ma part, je voudrais aborder les thèmes de ceci :

https://docs.google.com/document/pub?id=1P6OG9kbPzbxoT8G1GlsDYlCylFvTLv4ArEpxB_l6Re8

ainsi que la stratégie générale de dév. :

  1. créer un langage pour le domaine (DSL) en N3, suivant les bonnes pratiques du Web Sémantiques
  2. écrire des règles logiques qui vont préciser et contraindre le modèle métier
  3. même choses pour l'application, ses événements, entrées et sorties

Patrice:

Pour ma part, je comptais aborder les bonnes pratiques en logiciel, et parler un peu ce que j'ai fait ces dernières années.

La problématique était "le développement piloté par les tests" et la solution utilisée était "l'architecture hexagonale" de Cockburn

http://alistair.cockburn.us/Hexagonal+architecture

Discussion

2012-11-09

En ce moment je relis Scala. C'est à dire quand j'ai un un moment en lançant une suite de tests, etc.

P.S. 2 : Toujours sur ma suite de tests pour EulerGUI pour la release.

Langages de markup: RestructuredText, markdown et mediawiki

Le 9 novembre 2012 10:54,

Emmanuel a écrit :

Jean-Marc,

Un cherchant une livre gratuit sur python je suis tombé sur le document suivant:

http://www.fil.univ-lille1.fr/~marvie/download/initiation_python.pdf

Je l'ai trouvé très bien sur le fond et également sur la forme.

Notamment les extraits de code sont colorisés.

En cherchant un peu j'ai appris que cette doc à été construite à l'aide de http://sphinx-doc.org/

Il s'appuie sur le langage de markup RestructuredText : http://docutils.sourceforge.net/rst.html

On peut générer plein de format: HTML, pdf, Latex, etc

Par exemple pour le PDF on peut passer par Latex ou générer direcement en PDF:

https://code.google.com/p/rst2pdf/

==> Pourquoi pas ? Sans être un expert de ces langages de texte riches, il me semble que les deux notables sont markdown et mediawiki .

Je viens d'installer Ubuntu 2012.10

<jmvanel> Je viens d'installer 2012.10 , et suite à une erreur d'exécution, j'ai enlevé un truc de ma config.;

<jmvanel> maintenant je n'ai plus les icones en bas ( je suis avec Ubuntu classic )

<jmvanel> rien trouvé avec Google

<jmvanel> trouvé ! avec Alt-click j'ai accédé au réglages du tableau de bord , puis ajouté "liste des fenêtres"

2012-11-08

TODO fails:

eg http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/examples/kings_of_France-genealogy_smart.rq

Cours Ingesup : Web Sémantique

installer 2 outils

Pour l'instant, on va installer 2 outils :

1. EulerGUI: un environnement de développement pour le Web Sémantique et les règles, en Java:

Le manuel est là :

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

Le téléchargement est là :

http://eulergui.sourceforge.net/maven2/eulergui/eulergui/1.12-SNAPSHOT/

Prendre le plus récent jar-with-dependencies, actuellement :

eulergui-1.12-20121108.080913-12-jar-with-dependencies.jar

2. un client pour IRC (Internet Relay Chat)

Par exemple : Pidgin sur Windows, XChat sur Linux

Après installation, configurer le serveur freenode ( voir freenode.net ) .

Les supports sont ici :

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/fr/ia2_semantique.xhtml

Autres liens ici :

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html#L5890

Mes vidéos à OSDC 2012 :

http://www.dailymotion.com/relevance/search/eulergui/1

Première séance

Démo:

eg http://jmvanel.free.fr/jmv.rdf http://bblfish.net/people/henry/card.n3
cd ~/src/eulergui/examples
eg kings_of_France-genealogy_smart.rq 

2012-11-06

billets en plusieurs langues sur Twitter.com ? RIEN TROUVE' !!!!!!

2012-11-05

Quelles sont les pratiques utilisées / recommandées pour s'exprimer en plusieurs langues sur Tweeter ?

avoir plusieurs comptes? Mais comment rendre claire le rapport entre ces comptes?

- utiliser le même compte, mais avoir un tag pour la langue?

rockette-libre.org : rendez-vous libre, organisé par des bénévoles de divers associations de la culture libre, tous les vendredis soirs. Tantot exposé d'actualité, tantot atelier technique, la forme de la soirée n'est pas prédéfinie.

2012-11-01

hier j'ai montré EG à Tim Berners Lee, il a aimé.

2012-10-30

TPAC-Lyon-2012: WebID+RWW+SocialWeb meeting

Je suis à TPAC-Lyon-2012: WebID+RWW+SocialWeb meeting :

http://www.w3.org/community/rww/wiki/TPAC-Lyon-2012

avec Tim Berners-Lee !

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

A FAIRE: proposer une prés. pour sudweb.fr

2012-10-24

2012-10-20

Liste chaînée de commentaires en RDF

J'aimerais faire d'une pierre deux coups.

Il y a une préoccupation immédiate: exprimer en RDF les discussions sur les pages Wikipedia, comme dans http://en.wikipedia.org/wiki/Talk:Notation3 :

I should mention that I'm the main developer of EulerGUI, for which I just entered a link. --Jmvanel (talk) 18:28, 19 October 2012 (UTC)

Mon autre préoccupation est de modéliser le versionnement d'un triplet précis. C'est dans l'optique d'un site basé sur une base SPARQL, où on met à jour des données, données sous forme de triplets bien sûr.

Cependant ça ne marche que pour les propriétés de multiplicité 1.

Dans les deux cas on a une liste chaînée de commentaires, chacun associé au minumum à un contenu, un auteur et un horodatage.

Le premier cas peut en fait se ramener aux deuxième.

Via le triplet suivant :

<http://en.wikipedia.org/wiki/Talk:Notation3> currentComment "I should mention ...".

Mais ça a l'air en peu tiré par les cheveux.

----

Or rdfs:comment a une valeur par langue.

2012-10-19

Gestion (sémantique?) des contacts : comment faites vous ?

Publié sur groupe deductions-fr :

cf Gestionnaire de tâches Sémantique avec des règles métier.

Publié sur plexus-logos-calx.blog

http://plexus-logos-calx.blogspot.fr/2009/11/a0037-calcul-litteraire.html

Cher Plexus

J'aime bien l'idée du langage naturel plus structuré que les données SQL ou même RDF "classiques".

Il y a en fait un moyen terme dans la complexité, qui exclut l'ambiguïté du langage naturel, tout en restant très expressif.

Cette ambiguïté tient surtout à deux choses: les ambiguïtés du lexique, et les références anaphoriques ( http://fr.wikipedia.org/wiki/Repr%C3%A9sentation_(grammaire)#Anaphore ). Ces deux traits ne sont pas essentiels au langage humain (sauf dans la poésie et l'humour!). Si on garde l'essentiel du langage naturel, et on enlève l'ambiguïté, il reste quelque chose, c'est ce qu'on appelle les Langages Naturels Contrôlés (CNL : http://fr.wikipedia.org/wiki/Langue_contr%C3%B4l%C3%A9e ).

Et ce qu'on peut obtenir alors est similaire à la logique des prédicats, qui est utilisée classiquement en Intelligence Articielle pour modéliser la connaissance, et en Mathématiques.

Parmi les dialectes CNL, j'utilise ATTEMPTO ACE ( http://attempto.ifi.uzh.ch ), qui possède une série d'outils en logiciel libre: ligne de commande, client simple Web Ajax, client Java Swing (via Protégé), Wiki Sémantique, raisonneur, traduction en ontologie OWL, ...

Avec Attempto, on peut même aller plus loin que la logique des prédicats, on peut exprimer des logiques modales, voir les exemples: ACE: http://attempto.ifi.uzh.ch/site/docs/ace_nutshell.html

Pour ceux qui aiment moins lire ;) , il y a 3 vidéos intéressantes sur ACE.

Invitation envoyée sur le groupe deductions-fr

Bonjour

Ceci est un groupe à petit débit, où on parle d'applications du Web Sémantique; dans la perspective de remplacer la pile techno-"logique" conventionnelle à base de SQL + Orienté Objet par une pile 100% Web Sémantique.

2012-10-17

L’hébergement PaaS de Clever Cloud s’ajuste à votre consommation automatiquement et rapidement, pour vos applications en PHP, Java, Scala ou Ruby.

http://www.clever-cloud.com/

http://www.segorama.fr/internet-et-reseaux-sociaux/conseil-et-formation/2998-twitter-search-ou-comment-trouver-plus-facilement-une-information-utile-dans-twitter#Accueil

At bonitasoft presentation

<jmv_> 90 employees , 1.5 m downloads

cahier des charges transf. en spécifications

collaboration, gérer priorités,

rapport et tableau de bord personalisables

BPM prédéfinis: demande de congé, etc

Historique

Exemples

Amélioration de processus: roue de Deming PDCA

Clients : Hotela: assurance, b-process: dématérialisation facturation SAAS (aCcor), Konica-Minolta : propositions commerciales

KPI ?

conduite du changement : si pas lancé par la direction générale, il y a des freins

prix <= open source

autres solutions plus SI, technique; Bonita : plus orienté utilisateur finals

ESB ( Enterprise Service Bus ): données pivot : démarche urbanisation, désiloïser

Démo: variables processus versus ???

Remarques JMV:

2012-10-16

Compétences Prolog en France

Parmi les "1259 Schools Worldwide That Have Adopted AIMA"

http://aima.cs.berkeley.edu/adoptions.html

c'est à dire le livre "Artificial Intelligence: A Modern Approach" ,

il y a celles-ci en France :

http://aima.cs.berkeley.edu/adoptions.html#France

American Univ. of Paris

Caen, Univ. de @

Descartes Univ., Paris @

Ecole Normale Superieure de Lyon @

Ecole des Mines de Nancy

Lille, Univ. des Sciences et Technologies de @

Lyon 2, Univ. of

Montpelier 2, Univ.

Mulhouse, Univ. of

Nantes, Univ. de

Orleans, L'Univ. d' @

Paris, Univ. of @

St. Etienne, Univ. de

Telecom Bretagne

C'est une piste à laquelle je n'avais pas encore pensé.

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

IA en Perl

Au sujet de Perl en IA, j'ai trouvé ces projets:

http://search.cpan.org/search?query=inference+engine&mode=all

Toby Inkster est membre connu de la communauté du Web Sémantique ; http://www.perlrdf.org/

2012-10-15

A Semantic-Web based Framework for Developing
Applications to Improve Accessibility in the WWW
Christos Kouroupetroglou Michail Salampasis Athanasios Manitsaris
Dept. of Applied Informatics, Department of Informatics, Dept. of Applied Informatics,
University of Macedonia T.E.I. of Thessaloniki University of Macedonia
Thessaloniki, Greece Thessaloniki, 57 400, Greece Thessaloniki, Greece
+30 2310 791604 +30 2310 791284 +30 2310 891898
kourou@teithe.gr cs1msa@it.teithe.gr mantis@uom.gr
NESSTAR: A Semantic Web Application
for Statistical Data and Metadata
Pasqualino ‘Titto’ ASSINI (titto@nesstar.com)
Nesstar Ltd - U.K.

foaf:currentProject foaf:knows foaf:maker

<jmv> foaf:homepage <http://jmvanel.free.fr>.
<jmv> foaf:knows <http://jmvanel.free.fr>.

oct. 15, 2012 1:47:41 PM eulergui.project.Project translateN32Drools
Infos: >>>> after cacheObject( "file:/home/jmv/src/eulergui/examples/table_app.n3p#rulebase" )
DeferredMethodCall.assign() : argument not ready: <jmv>
DeferredMethodCall.assign() : argument not ready: <jmv>
java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at eulergui.inference.drools.impl.JavaObjectsRetractionListener.invokeRemoveMethod(JavaObjectsRetractionListener.java:98)
at eulergui.inference.drools.impl.JavaObjectsRetractionListener.objectRetracted(JavaObjectsRetractionListener.java:37)
at org.drools.event.WorkingMemoryEventSupport.fireObjectRetracted(WorkingMemoryEventSupport.java:78)
at org.drools.common.NamedEntryPoint.retract(NamedEntryPoint.java:599)
at org.drools.common.AbstractWorkingMemory.retract(AbstractWorkingMemory.java:936)
at org.drools.common.TruthMaintenanceSystem$LogicalRetractCallback.execute(TruthMaintenanceSystem.java:320)
at org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:993)
at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1447)
at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710)
at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:674)
at eulergui.inference.drools.impl.N3SourcetoDrools.launchDroolsKeepWM(N3SourcetoDrools.java:718)
at eulergui.inference.drools.impl.N3SourcetoDrools.launchDrools(N3SourcetoDrools.java:628)
at eulergui.inference.drools.impl.N3DroolsEngineFacade.launchDrools(N3DroolsEngineFacade.java:64)
at eulergui.project.Project.doRunDrools(Project.java:755)
at eulergui.project.Project.runDroolsTriples(Project.java:701)
at eulergui.inference.drools.DroolsInferenceEngine.launch(DroolsInferenceEngine.java:31)
at eulergui.gui.inference.InferenceSwingWorker.doInBackground(InferenceSwingWorker.java:49)
at eulergui.gui.inference.InferenceSwingWorker.doInBackground(InferenceSwingWorker.java:18)
at javax.swing.SwingWorker$1.call(SwingWorker.java:296)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at javax.swing.SwingWorker.run(SwingWorker.java:335)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
DeferredMethodCall.assign() : argument not ready: <jmv>

Apache Clerezza

http://incubator.apache.org/clerezza/architecture/

BBC Music / SPARQL endpoint

http://thedatahub.org/dataset/bbc-music/resource/1395894f-f2e2-4ff4-80b5-144d499066e7

2012-10-12

Erlang : on peut changer le code sans arrêter l'exécution

dans Linux : CouchDB, XMPP serveur

YAT

HTML5 : WebRTC

Example d'un langage propriétaire : Plivo : playSound, hangUp.

Livre numérique avec exemples interactifs: Eloquent JavaScript

"langage symbiotique"

https://github.com/neo4j/sparql-plugin

http://blog.neo4j.org/2010/02/top-10-ways-to-get-to-know-neo4j.html

http://cloud-ide.com/

A OSDC 2012

http://culturelabs.culture.fr/

http://www.dil.univ-mrs.fr/~chris/

http://www.europeana.eu/portal/europeana-providers.html

http://webinfra.gistoire.fr/

Incanter

https://groups.google.com/forum/?fromgroups=#!topic/incanter/BKZeFrRIx1c

http://data-sorcery.org/

roassal

http://www.pharocasts.com/2012/09/roassal.html

Moose : meta- modélisation : permet d'analyser Java, JS, etc

en perspective : systèmes dynamiques, données biologique

Cascalog

Datomic stockage de triplets

Cascalog == Cascading + Datalog

thèse : liaison avec Web sémantique

http://nathanmarz.com/blog/introducing-cascalog-a-clojure-based-query-language-for-hado.html

https://github.com/nathanmarz/cascalog#readme

Stanford CoreNLP

Clojure

OpenNLP chez Apache; rattrapé son retard

CoreNLP utilise MaxEntropy pour le POS-tagging

règles appliquées via un automate

ZeroMQ

Rudder

Gestion de configuration

savoir faire distillé sur la config des outils

vrai open source

basé sur CFEngine

Big data

Hadoop == Linux du Big Data

Langages + haut niveau que Java : Hive, Pig,Cascalog

"j'en parlais avec des gens du voyage"

Social Gaming

détecter les robots

ETL fw en Python : PyBabe

utiliser R qui s'appuie sur Hadoop

Gephi : clusters and graphs

dashboard: NodeJS, MongoDB, D3

Dataïku : Data Science

Moteurs de recherche et Big Data

Structures en arbres

Pentaho

Java trop lent

sys. de fichiers : XStreemFS, Sector / Sphere , Oracle Cluster,

Disques SSD

SEO

Hadoop + Pig ( 5 lignes == 150 lignes de Java )

Pig : traitement de flux

Hive : SQL sur Hadoop

Neo4J

Langage Cypher

Viadeo, opérateur mobile

Le cloud - Serge Labourey

Ex. Lose It! 2 développeurs, 2 commerciaux

versus Weight watchers

SaaS: Salesforce.com , ZenDesk, NetSuite

IaaS: le Méccano habituel

PaaS: le niveau d'abstraction est plus élévé

EXO CLoud IDE

cȟacun a ses API

Google App Engine

business logic endpoint

2012-10-10

Prés. OSDC

2012-10-09

:cyril2 a foaf:Person ; foaf:name "cyr." ; foaf:homepage <http://www.softwaresemantics.fr/>.

http://www.cambridgesemantics.com/semantic-university/sparql-by-example

Séminaire PPS

Jeudi à 11h,

Salle 1D06

175 rue du Chevaleret, Paris 13ème.

Laboratoire Preuves, Programmes et Systèmes 25/10 ( high scientific level ! ) :

<jmv> Gérard Berry (Collège de France) parlera de la notion de "temps et d'événements en informatique".

<jmv> http://www.pps.univ-paris-diderot.fr/seminaire/sem2012/abstracts/Berry

2012-10-08

http://www.grammaticalframework.org/lib/doc/synopsis.html

2012-10-07

Configuration application générique

> Idéalement le double clic devrait être configurable: soit jouer le morceau afficher la fenêtre propriété (qui n'existe pas aujourd'hui). Mais rendre ça configurable est peut-être couteux et complexe à implémenter ?

Disons que ce sont des choses génériques qui devraient être "sur étagère" et qui n'y sont pas .

Je note .

Inférer des chaînes d'algo

Parlé à un développeur (SC) qui a fait une thèse en reconnaissance des formes. il est intéressé par le fw pour sélectionner des chaînes d'algo. C'est intéressant.

2012-09-30

Décalé mais peut être intéressant : http://tinytocs.org/

Exemples de règles en N3 : la généalogie

On a récupéré depuis Wikipedia tous les triplets avec ces propriétés concernant Henri_IV, Louis, 13, 14 , 15 et 16.

dbpedia-owl:parent
dbpedia-owl:spouse
dbpprop:father
dbpprop:mother

Ca donne ceci :

kings_of_France.n3

D'abord, ceci n'est pas une incohérence (dbpprop:father veut dire Henriette a comme père Henri_IV :

<http://dbpedia.org/resource/Henrietta_Maria_of_France>
      dbpprop:father <http://dbpedia.org/resource/Henry_IV_of_France> .

Ensuite on veut exhiber les relations de frère ou soeur (sibling en anglais):

???

Il y a une difficulté pour le sexe: dbpedia n'indique rien directement là-dessus.

Mais on peut inférer le sexe à partir de dbpprop:mother et dbpprop:father

@prefix genea: <http://www.owl-ontologies.com/generations.owl#>.

{ ?P dbpprop:mother ?FEMME
} => {
  ?FEMME a genea:Woman.
}.

{ ?P dbpprop:father ?HOMME
} => {
  ?HOMME a genea:Man.
}.

A partir des relations de frère ou soeur , on peut construire les oncles et les tantes:

???

Puis les cousins et cousines. Je laisse les grand-parents à tire d'exemple.

???

On peut même, par une règle récursive, définir la notion d'ancêtre:

???

On peut détecter des contradictions et des cas limites, par exemple la bigamie (ce qui implique de savoir que 2 URI sont différents):

???

Ou bien définir des notions avec un comptage, comme fils unique:

???

2012-09-28

Site collaboratif sur les projets Open Source

J'envisage un site collaboratif sur les projets Open Source, disons "forgiciel" .

Ca pourait (devrait!) faire l'objet d'un financement par un projet FUI, ANR, etc .

Motivation : Ouvrir l'Open Source

Sous Linux, on peut trouver et installer très facilement des milliers d'applications.

Mais pour le développeur qui cherche des composants logiciels, ce n'est pas aussi facile.

Même en faisant abstraction de la diversité des langages de programmation (la "Babélisation"), il reste les problèmes suivants :

Pour remédier aux deux problèmes ci-dessus nous proposons :

  1. la description des fonctionnalités dans un langage formel (Web Sémantique: RDF / N3 ),
  2. raisonnement et requêtes dans une base de données de composants logiciels;
  3. formaliser l'interface entre un composant et l'application, permettant d'automatiser l'intégration en générant du code de "jointure"

Nous pensons qu'ainsi tout le pouvoir des milliers de logiciels et composants du Logiciel Libre et Open Source pourra pleinement se réaliser, et laisser sur place le logiciel commercial.

La technique implique d'annoter les bibliothèques, les classes et fonctions. L'annotation première est l'objectif, c'est à dire les fonctionnalités fournies et requises. L'utilisateur peut annoter l'élément logiciel avec le objectif lui-même, mais nous pouvons également récupérer l'objectif par plusieurs autres manières : analyse d'échantillons de programmes et de modèles, analyse linguistique.

L'autre annotation concerne les flux de données; c'est une généralisation des paramètres d'entrée et de retour des fonctions. Cela signifie indiquer une ou plusieurs séquences d'appel typiques échangeant des données entre un conteneur et des composants. C'est comme une machine d'état de protocole en UML 2. Une analyse d'échantillons de programmes peut également permettre de retrouver ces informations, au moins suggérer des flux de données à l'utilisateur.

D'autres outils de développement logiciel peuvent tirer parti de l'approche sémantique et déclarative: appliquer et identifier des modèles de conception, inférer des protocoles, analyser et comparer les modèles pour trouver des redondances.

Fonctionnalités

Forgiciel ajouterait des informations aux projets existants dans les différentes forges (GitHub, SourceForge, etc), et autres sites moins sémantiques comme http://freecode.com/

Cet ajout se ferait de plusieurs manières:

  1. par analyse du code, et des tests et échantillons (samples)
  2. par analyse TAL (Traitement du Langage Naturel) du site et de la documentation
  3. par entrée de données des utilisateurs, et analyse de leurs choix, clics et parcours dans le logiciel

Les points 1 et 2 serviront à initialiser le processus de création d'information

Feuille de route

Une première version pourrait (et c'est déjà très bien) être basée sur un site collaboratif générique qui gére un graphe d'objets au sens du Wen Sémantique (CRUD sur des triplets, mais aussi via des phrases en saisie guidée (éditeur prédictif) comme dans ACE Wiki.

On ajouterait ensuite les fonctionalités 1 et 2.

Implémentation

Techniquement , il serait appuyé sur :

2012-09-27

les présentations OSDC

Je pense que ce découpage en 3 sujets est bon, par contre les présentations sont toutes à revoir.

D'ailleurs elles n'ont pas été retenues, alors que 40 sont déjà acceptées.

Je vais réutiliser le matériel existant en fonction quelques messages simples (? enfin le plus possible) à faire passer.

EulerGUI + SemWeb: messages à faire passer:

ACE : messages à faire passer:

Cadriciel: messages à faire passer:

2012-09-26

OSDC : élaguer: montrer règles en ACE, en N3 : rôles des variables,

déclanchement règles isolée,

déclanchement entre règles ,

différence entre règle et requête

GT OCDS system@tic

Outils de Conception Développement Système

TIC et ville durable; ITIC et santé
pas de bizz angels pour l'instant
90% des labos
Développement d'outils génériques !!! moi aussi !!!
exemples systèmes embarqués: pas chers pas pas toujours fiables
14 FEDER, 61 ANR, 45 FUI, 4 FSN, 2 Web 2.0, 2 OSEO, ...
ROADMAP
Communication : déterminante; archi. standardisée
OLDP ?
IRT SystemX
Roapmap
accent sur interopérabilité
Europe : Isabelle de Sutter

Cesames

Conférence Digital Enterprise Design & Management : quand ???
soirées thématique 4 à 5 fois /an
livre blanc sur compléxité va sortir
Conférences Complex Systems Design & Management 12-14 décembre csdm2012.csdm.fr

MICADO

salon physique & virtuel, Reims virtual-plm.com

Campus Teratec

à terme 800 à 1000 personnes
toute la chaîne

IRT SystemX

3 sites: Paris 13, Saclay, Teratec
objectif : 200 chercheurs
40 partenaires acad. & indus.
Kalray, Renault, Alcatel, Oxalya, AdaCore, Univ. de Versailles, deveryware, PSA, Safran, Mentor Graphics, Gemalto, Genigraph
simulation multi-physique
transports multi-modal: optimiser, simuler

Complex Sytem Design Lab

Consortium
simulation stochastique, évènements rares
climatisation d'avion
surrogate ?
modelica
culasse
conception collaborative multi-utilisateurs
Oxalya
DOE ? plan d'expériences ?
optimisation: contraintes probabilistes: défi scientifique

Open GPU

codes de calcul pour systèmes hybrides + GPU
outils d'aide à la parallélisation
Wallix, AS+, Numtech, CEA LIST
OpenCL : standard en gestation
module d'optimisation polyèdrale
PIPS
plugin MELT pour OpenCL
HMPP
INRA: métagénomique (MPI+CUDA)
NUMTECH: dynamique des fluides x 60 !


JMV

projets génériques et transversaux
mes racines dans la simulation, génie logiciel

au départ: réflexion sur utilisation de l'IA en dév. logiciel:
- constats: concepts communs: IHM, réseaux, languages;
- visions :
bon serviteur (garder l'info, pas Alzeihmer, montrer à chacun la vue qui lui convient)
modularité intelligente: laissez des valences se relier
boucler la boucle, utiliser des outils logiciels pour créer d'autres outils
raisonner sur les concepts informatiques soit en temps réel, soit en phase de conception

EulerGUI: innovation == intégration de composants OSS: inférence, Web Sémantique, CNL, ...

système experts extrèmes: + systématique, liaison Web Sémantique, intégration  à plateforme Java
spécificités : OSS, logique formelle (des prédicats)
------------
Les points essentiels du framework (cadriciel) sont:
    ne plus coder la logique et les modèles métier dans un langage prodédural tel que Java,
    la logique métier est interprétée directement par un moteur d'inférence,
    les données et leur stockage utilisent les technologies du Web Sémantique, de bout en bout
    la logique et les modèles métier sont exprimées par des ontologies au format OWL du W3C (WordWide Web Consortium),
    la logique applicative est exprimée par des règles en logique formelle
    le moteur d'inférence traite en parallèle des règles métier pures, et des règles de bas niveau, mixtes, i.e. mélangeant des critères métier avec des conséquences agissant sur les objets Java
Tout cet aspect déclaratif apporte de la flexibilité par rapport au déploiement, la persistance, et l'IHM.
------------
simulation, PLM : pas que des nombres, mais sémantique aussi : interopérabilité, 
exprimer via règles logiques: choix d'algorithmes, validation et cohérence des données
workflow, annotations, traçabilité, le tout via les technos du Web sémantique

écosystème du Web sémantique: FOAF, dbpedia, data.gov, biologie et santé
standards emergeants dans differents domaines: vocabulaires/ontologies
sources de données
avantages par rapport à UML : classes définies par leurs propriétés, pas de mélange entre artéfacts informatiques et concepts du domaine
avantages par rapport à XML : 

-------------------
partenaires: LIM Rennes, Zürich, SSII (seeks, scub)
recherchés : partenaires établis dans un domaine d'application, labo et universités, 
modèle économique: Logiciel Libre 100%, services (cadriciel, modélisation et gestion de la connaissance, sélection d'algo et outils en IA et algorithmique)


2012-09-25

COMMIT

initial versions of presentations for osdc 2012 Paris

TODO:

cadriciel: slides and demo

semweb: slides and translate in fr

ATTEMPTO: demo, translate in fr and integrate http:///jmvanel.free.fr/presentations/pres-owl-anglais-controle.odp

2012-09-23

http://barcamp.org/w/page/59104391/ParisTechtoolForEventCamp

http://barcamp.org/w/page/402984/FrontPage#France

<jmvanel> Avant de refactorer le générateur de formulaires, je dois documenter les prédicats, et au passage arranger le documenteur .

2012-09-19

Présentations OWF - OSDC

Explorer le Web Sémantique avec EulerGUI

<jmvanel> submitted : http://act.osdc.fr/osdc2012fr/talk/4324

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/fr/pres_osdc_2012_resumes.xhtml

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/fr/pres_osdc_2012_semweb.xhtml

L'environnement  EulerGUI a été créé pour le développement de règles logiques.

Mais au cours du temps, il a intégré des fonctionalités pour importer des données et des modèles de différents formats.

Le Web Sémantique (WS) est au coeur d'EulerGUI. Le WS forme un ensemble de spécifications du W3C qui visent à gérer et partager une information où la sémantique des données est apparente et interopérable, beaucoup plus que dans les bases relationnelles, orientées objet, NoSQL, ou en XML. Ces spécification sont utilisées dans le mouvement des Données Ouvertes (Linked Open Data): DBpedia, profils FOAF, data.gov, ....

Les concepts sont présentés par une utilisation de l'outil: éditeur pour la syntaxe N3, langage universel pour les DSL (Domain Specific Languages); glisser déposer d'un URL; naviguer à travers les liens via menu contextuel dans l'éditeur; visualiser les pages web associées; accéder au catalogue de vocabulaires prefix.cc; vue arborescentes des classes inférées, requêtes SPARQL; création d'un squelette d'ontologie.

EulerGUI est aussi un cadriciel qui permet de créer des applications autour des technologies du WS et d'un moteur d'inférence; c'est le sujet d'une autre présentation.

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

Exploration de DBpedia : on peut forger un URI facilement : http://dbpedia.org/resource/B.B._King

A partir d'un préfixe (foaf, bio, geo, ...) importer l'URI correspondante via prefix.cc

Via menu contextuel dans l'éditeur:

visualiser l'ontologie via la vue arborescente ( Lancement raisonneur OWL)

écrire une ontologie à partir de zéro, en utilisant l'éditeur

écrire des données en utilisant l'éditeur : Ex.: création d'un profil personnel FOAF en N3:

interroger le projet: tout ce qui a «internet» dans ses rdfs:label ou rdfs:comment

explorer le Web sémantique (via Swoogle,

visualiser les ontologies via D'N'D: FOAF depuis EG manuel, à partir de mots-clés dans Swoogle

arbre de classe avec des tooltips

mini-application depuis l'arbre de classes

consulter des sources de données

Formaliser les règles métier en Anglais Contrôlé avec Attempto

Lisible par l'homme, lisible par la machine, on peut dire que l'Anglais Contrôlé, et plus généralement les Langages Naturels Contrôlés, sont les formats ultimes indépendants de toute technologie.

Ces langages sont très expressifs, ça n'a rien à voir avec les langages à base de patrons comme Cucumber, Ilog, ... Ils sont utilisés pour modéliser un domaine métier par des petites phrases, formelles, sans en avoir l'air, et non ambiguës

Parmi les implémentations Open Source, on s'intéressera à Attempto Controled English (ACE), développé à l'Université de Zürich. Attempto est bien interfacé avec les formats du Web Sémantique : ontologies OWL, règles SWRL et N3, voir la présentation sur le Web Sémantique .

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

relations de famille

cf présentation des differentes "tournures" OWL en ACE : http:///jmvanel.free.fr/presentations/pres-owl-anglais-controle.odp

Le framework EulerGUI pour créer des applications avec une spécification formelle

Le cadriciel (framework) permet de sous-traiter la logique métier à un moteur d'inférence.

Les systèmes experts traditionnels gèrent une partie de la logique métier (généralement complexe et sujette à changements). EulerGUI est conçu pour gérer 100% de la logique métier, de bout en bout, de la persistance à l'IHM. C'est plus simple sur la platefome JVM, mais il y a aussi des moteurs en Python, et un serveur REST qui donne accès au moteur d'inférence compatible Web Sémantique.

Grâce aux règles métier en Anglais formel, c'est comme si les règles lisibles par l'homme étaient directement interprétées dans le logiciel en production (spécifications exécutables).

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

cf http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/fr/cadriciel_eulergui.html

Les propriétés et les règles métiers sont emprisonnées dans les classes: libérons -les !

2012-09-18

Dialogue avec O.

<jmvanel> donc je peux préparer un article sur une mini-appli de type généalogie ?

<<jmvanel> l'avantage est que tout le monde comprend la sémantique de ce domaine

<jmvanel> sinon on est obligé d'expliquer un domaine métier , ou alors les choses ne seront pas précises comme elles doivent être

<jmvanel> il faut essayer d'expliquer l'intérêt de l'approche logique formelle, sans être vague, et sans thémes superflus;

<jmvanel> par exemple les ontologies on peut laisser de côté, juste mentionner qu'iil en a plein ,

<jmvanel> et des standard émergents dans leur domaine

<jmvanel> aussi juste mentionner l'existence de framework qui aident à construire une appli. basée sur les règles

<jmvanel> et montrer l'aspect presse-bouton qui existe, mais sans rentrer dans les détails.

<jmvanel> Après avoir discuté avec plusieurs développeurs curieux, je me suis rendu compte que c'est la notion même de règle qui bloque, donc si on explique pas bien ceci :http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/rules-examples.html#L492

c'est perdu .

<jmvanel> et il semble que 2 choses rebutent : 1) l'aspect matheux, un vrai blocage chez beaucoup

<jmvanel> 2) l'usage concret dans un projet concret n'est pas évident (pour le lecteur moyen ;) )

2012-09-15

osdc 2012

Chaque année, plusieurs associations francophone (Python,

Perl, Ruby, PHP, Smalltalk) organisent une conférence pour développeur

avec comme double objectifs de parler de langages alternatifs» et peu

mis en avant la plupart du temps et d'avoir des sessions très

techniques.

Si vous souhaitez parler à des personnes d'autres horizons, c'est le moment :).

Voici l'annonce officielle :

http://act.osdc.fr/osdc2012fr/cfp.html

Guava

articles sur guava qu' AB avait bookmarkés:

http://www.touilleur-express.fr/2010/11/03/google-guava-partie-1/

http://marxsoftware.blogspot.fr/2011/10/guavas-objects-class-equals-hashcode.html

http://blog.zenika.com/index.php?post/2011/10/13/Guava-par-l-exemple-%283/3%29-%3A-I/O

http://tomaszdziurko.pl/2012/02/google-guava/

http://insightfullogic.com/blog/2011/oct/10/eventbus/

2012-09-14

http://wiki.agile-france.org/cgi-bin/wiki.pl?DojoDeveloppement

http://2012.openworldforum.org/

http://www.scilab-enterprises.com/products/scilab/features/application_development

cours en ligne: "Learning scalaz"

Henry Story henry.story@gmail.com

à paris-scala-us.

Il y a aussi la serie de blog récement "Learning Scalaz"

http://eed3si9n.com/

que je trouve tres utile.

Social Web Architect

http://bblfish.net/

2012-09-13

Gestionnaire de tâches Sémantique avec des règles métier.

cf Gestionnaire de tâches Sémantique avec règles

Une des idées que j'ai est de réaliser un gestionnaire de tâches Sémantique avec des règles métier.

On peut réutiliser des outils existants, comme Google Agenda, et ajouter des annotations suivant les technologies du Web Sémantique aux

tâches, mails, contacts ( pourvu que Google fournisse des URI pour cela ). On doit pouvoir récupérer les données via des services Web ou

IMAP. Après on peut ajouter des annotations comme :

2012-09-10

Présentation sur MongoBD Meetup

Interessé par le Web Sémantique (bases SparQL==triple store),

et par les moteurs d'inférences

http://www.meetup.com/SemanticCampParis/events/36545432/

2012-09-04

SemanticCamp au PULV

Projet:Web sémantique sur Wikipedia

Wikimedia Labs

déployer l'extension LinkedWiki

4store : un des seuls libres

bordercloud.github.com/pear/

Wikiversité : cours

2012-08-24

DIalogue avec AB

moi: les états d'une logique c'est un status particulier par rapport à vérité d'une proposion

la vérité

moi: par exemple :

celle du monde ouvert du Web Sémantique:

les logiques modales: http://fr.wikipedia.org/wiki/Logique_modale

les logiques floues,

où on accorde un coefficient de vérité entre 0 et 1

Arié: ok

en tout cas, au final

toute la logique du jeu

se décide à partir de la combinaison de ces etats

Arié: mais c'est peut etre pas de la logique au sens où on l'entend

moi: si

tout à fait

moi: mais en général , en programmation classique, cette logique n'est pas exprimée de manière déclarative, indépendemment du codage procédural

moi: c'est un apport essentiel de l'IA depuis les années 60 : séparer la logique métier du moteur d'inférence

Arié: oui, ça parait etre de bon sens

mais en gros, c'est créer un cerveau capable d'apprendre

moi: les tous premiers "systèmes experts" étaient codés en dur pour la médecine par exemple

Envoyé vendredi à 11:45

moi: une approche classique, que je pratique avec EulerGUI, est d'expliciter toue la connaissance nécessaire pour faire les inférences dont on a besoin

Arié: tu as vu que Google a ouvert son knowledge graph ?

moi: oui, mais pas eu le temps d'explorer

Arié: moi non plus

j'ai juste lu l'annonce

moi: l'option "créer un cerveau capable d'apprendre" , ça existe aussi :

moi: ça s'appelle "apprentissage automatique"

( machine learning )

bon, ben y'a du boulot

mais j'ai l'impression

que l'intelligence pour une machine

faudra qu'elle sache désobéir

et c'est pas gagné ça pour une machine

Envoyé vendredi à 11:50

moi: disons que c'est un peu comme un enfant :

on fournit à la machine des infos à partir desquelles elle apprend;

déjà avec des moteurs comme ceux d'EulerGUI c'est ainsi,

sauf qu'on leur mâche la besogne ,

ces moteurs ne savent pas faire : généralisation, remise en cause ,etc.

2012-08-23

>> Puis on ajoute des règles du genre

>> { triplets_pour_un_onglet } => { <GUI> javam:addTab ( ?QUERY ) }.

>> où <GUI> représente l'application , et a été pré-ajouté dans la KB .

>>

Pour l'instant je n'ai pas essayé cette voie, prometteuse à moyen terme, car écrire trop de code Java qui interagit avec la KB est complexe.

Toutefois, il y a déjà des création d'objets et des méthodes qui se déclenchent via des règles , dans :

eulergui/src/main/resources/eulergui/gui/controller/project-java-rules.n3

il faut aller plus loin, vers une appli. où :

Il y a une classe qui ajoute dans la KB les évènements utilisateur, c'est GUIKBAdapter, qui est utilisée dans le générateur de formulaires. Mais elle est trop liée à cette fonctionalité.

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

>> D'après ce que j'ai compris il faudra que je remplace

>> ITripleStoreRETE tripleStoreRETE qui dans ApplicationKBPlayer

>> par TripleStoreTDB et faire les changements nécessaire.

>>

>> C'est bon ou je fais fausse route ?

> Non, c'est pas ça .

Je pensais que tu pouvais simplement utilliser TDB comme un fichier de persistance.

Mais tu peux faire ce que tu dis .

Alors tout sera stocké dans TDB : persistance de l'apppli. , et aussi les métadonnées lues .

L'avantage sera qu'on pourra gérer des gros volumes de métadonnées lues .

L'inconvénient est :

- 1. il faudra réécrire les requètes N3 en SPARQL

- 2. tu ne pourras pas dans l'avenir utiliser les capacités de type ECA ( http://en.wikipedia.org/wiki/Event_condition_action ) du cadriciel EulerGUI

A moyen terme le plan est de pouvoir combiner les avantages des 2 solutions :

- 1. pouvoir écrire les requêtes en N3 quel que soit le tripleStore

- 2. tenir compte des règles et ontologies lors de la génération des requêtes SPARQL, cf

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/backward_chaining_sparql.html#L185

- 3. pouvoir alimenter directement la KB Drools à partir de TDB via une règle

2012-08-22

Session (singleton) <==> EulerGUI

Query <=>Project

Ou plutôt ontologie

Java ==> KB

KB ==> Java

KB ==> TDB

TDB ==> KB

Dans EulerGUI: fonctionnalités:

  1. lors de la fermeture sauver projets ouvert;
  2. lors du démarrage , re-ouvrir dernier projets ouvert;
  3. lors de l'ouverture d'un projet, sauver dans l'historique des projets.
  4. montrer l'historique des projets dans un sous- menu de "Fichiers"

Graphe nommé pour la persistance applicative: devrait être donné par une chaîne N3.

Appeler persistance ici :

    public static Project restoreAny( URI uri, boolean inactivateListeners ) {

/** Helper class for application_persistance */
public class Persistance extends TripleStoreFromNamedModel {
  private Persistance _instance;
  private Persistance() {
   super("http://eulergui.sourceforge.net/engine.owl#application_persistance"); }
  Persistance instance() {
    if( _instance == null ) {}
    return instance;
  }
}

2012-08-20

Réflexions sur accès TDB via API EulergUI

Une voie serait d'intercepter tous les objets Action qui provoquent l'état de l'IHM;

un objet Action est caractérisé par son nom , sa classe, sa source.

Mais en fait comme on peut aussi défaire une action (enlever un onglet ) , ce n'est pas la bonne voie .

Donc comme je disais, pour l'instant , tu ajoutes dans un graphe nommé (unique) le fichier d'état de l'IHM en N3 que tu as déjà .

Puis, au démarrage, on copie ce graphe nommé dans la KB.

Puis on ajoute des règles du genre

{ triplets_pour_un_onglet } => { <GUI> javam:addTab ( ?QUERY ) }.

où <GUI> représente l'application , et a été pré-ajouté dans la KB .

2012-08-14

DSL : avantages comparatifs de N3 , et plus généralement du Web Sémantique

- possibilité de vérifications (sémantique et logique) génériques par des outils génériques (autrement on se rend dépendant d'outils spécifiques comme Xtext etc);

- on récupère tous les bienfaits du Web sémantique :

* mécanisme simple pour documenter les propriétés et classes (via URI et négotiation de contenu)

* interopérabilité sémantique (réutiliser des vocabulaires),

* source de données nombreuses,

* outils génériques: parsers, éditeurs, visualiseurs, bases de données SPARQL, moteur d'inférence

- bienfaits de la syntaxe N3: difficile de faire plus simple:

x appartient à la classe C ==> x a C.

x a la valeur "v" pour la propriété p ==> x p "v".

la valeur pour la propriété p est une liste ordonnée ==> x p ("v", "w", "x" ).

etc.

2012-08-02

Réflexions sur accès TDB via API EulergUI

On voudrait une API de requêtes SPARQL avec TDB qui soit utilisable à la fois dans dans le player , le fw EG , et EG lui-même;

a priori ce serait une extension de la façade RuleBasedApplicationStarter.

Utilisations:

Notes:

Implémentation:

Si on utilisait de bout en bout l'API Jena, ce serait plus simple et efficace.

http://jena.apache.org/documentation/tdb/

http://jena.apache.org/documentation/tdb/datasets.html

http://jena.apache.org/documentation/tdb/java_api.html

http://jena.apache.org/documentation/tdb/tdb_transactions.html

2012-08-01

<jmvanel> amélioration des formulaires générés : ça va mieux sur plusieurs cas :

<jmvanel> https://deductions.svn.sourceforge.net/svnroot/deductions/n3_nojs/person-app.n3p

<jmvanel> ( il y avait une erreur de prefixe )

<jmvanel> mais sur pricing et d'autres ça boucle :(

<jmvanel> bon, j'ai enlevé le truc générique nouveau, je verrai + tard pourquoi ça boucle;

<jmvanel> je commite avec juste l'erreur corrigée ,

<jmvanel> et en effet sur pricing et d'autres,

<jmvanel> les labels sont correctement générés à partir de l'URI quand il n'y a pas de rdfs:label

2012-07-31

Quelques avantages par rapport au MVC traditionnel

2012-07-28

Bonjour Michel

On est dans un monde web sémantique, pas vrai ? Le Modèle est un graphe d'objets (métiers).

Et c'est un graphe dynamique.

Ca veut dire, non seulement qu'on peut ajouter et enlever des triplets, mais que les inférences sont réévaluées suite aux modifications.

Ainsi, chaque règle joue le rôle d'un Contrôleur.

Quand aux vues, ça peut être n'importe quelle classe Java.

Prenons un cas typique "MVC" :

eulergui/src/test/java/samples/TableApp.java

Tout se joue ici, ligne 41:

tripleStoreRETE.store( new Triple( "<jmv>", Triple.wrapAsURI( "foaf", "name" ), "JM Vanel"));

tripleStoreRETE.store( new Triple( "<jmv>", Triple.wrapAsURI( "rdf", "type" ), Triple.wrapAsURI( "foaf", "Person" )));

tripleStoreRETE.fireAllRules();

Quand on déclenche les règles ( fireAllRules ) , une cellule est ajoutée dans la table.

La règle en question a un antécédent métier, et une conséquence en Java; c'est que ce j'appelle une règle mixte.

La table N3TableModel + N3TableView est un composant graphique orienté Web Sémantique.

Si tu décortiques cet exemples (il y en a d'autres si tu veux ), tu comprendras le coeur de la démarche .

J'essaye d'expliciter quelques avantages par rapport au MVC traditionnel:

- les relations entre objets sont automatiquement prises en compte grâce à l'aspect "base de données" de la KB N3 (qu'on retrouve en Prolog); on n'a pas l'effet pervers du pointeur, unidirectionnel par défaut en C, Java et ailleurs (alors qu'on le voudrait bidirectionnel)

- aucun besoin de générer des classes métier POJO (qui seraient facilement obsolètes); on reste pour le métier 100% dans le paradigme du web sem.

- pas besoin de souscrire un abonnement du contrôleur vis à vis du modèle, ni du contrôleur par rapport à la vue, toute cette tuyauterie OO sujette à erreurs

- on peut ajouter dynamiquement des règles

- voir aussi : http://deductions-software.com/technologie.html

2012-07-13

TODO

Downloading a HTML in Euler lasts forever :( ; like

http://www-sop.inria.fr/edelweiss/software/corese/v2_4_0/data/human_2007_09_11.xhtml

Trying Corese

There a language similar to N3, but the N3 rule is wrapped in strings :( .

[]    a       cos:rule ;
      cos:if  """
PREFIX humans: <http://www.inria.fr/2007/09/11/humans.rdfs#>
      { ?x rdf:type humans:Male
      ?x rdf:type humans:Person }
    """ ;
      cos:then """
      { ?x rdf:type humans:Man }
    """ .

techno TODO:

Essais avec ATTEMPTO

./ape.exe -text 'Every person who has a n:homepage and a current project is an interesting contact.' -solo owlfsspp

ne marche pas ;

j'essaye un adjectif seulement:

./ape.exe -text 'JMV is an interesting contact.' -solo owlfsspp

Prefix(:=<http://attempto.ifi.uzh.ch/ontologies/owlswrl/test#>)

Ontology(<http://attempto.ifi.uzh.ch/ontologies/owlswrl/test>

ClassAssertion(

:contact

:JMV

)

ClassAssertion(

:interesting

:JMV

)

)

Ca marche !

Donc les adjectifs sont interprétés comme des classes.

En revenant en arrière, ceci marche :

./ape.exe -text 'Every person who has a n:homepage is an interesting contact.' -solo owlfsspp

Prefix(:=<http://attempto.ifi.uzh.ch/ontologies/owlswrl/test#>)

Ontology(<http://attempto.ifi.uzh.ch/ontologies/owlswrl/test>

SubClassOf(

ObjectIntersectionOf(

:person

ObjectSomeValuesFrom(

:have

:homepage

)

)

ObjectIntersectionOf(

:contact

:interesting

)

)

)

./ape.exe -text 'Every person who has a n:homepage and a n:current-project is an n:interesting-contact.' -solo owlfsspp

<?xml version="1.0" encoding="UTF-8"?>

<messages>

<message

importance="error"

type="owl"

sentence="1"

token="8"

value="homepage"

repair="A reference to this noun either does not exist or is illegal."/>

<message

importance="error"

type="owl"

sentence="1"

token="13"

value="current-project"

repair="A reference to this noun either does not exist or is illegal."/>

There is a difference in DRS where in english there is none.

./ape.exe -text 'Every person who has a n:homepage and a n:current-project is an n:interesting-contact.' -solo drspp

more complex; APE add an intermediary node connected with 2 has_part predicates.

./ape.exe -text 'Every person who has a n:homepage and who has a n:current-project is an n:interesting-contact.' -solo drspp

[]

[A,B,C,D,E]

object(A,person,countable,na,eq,1)-1/2

object(B,homepage,countable,na,eq,1)-1/8

predicate(C,have,A,B)-1/4

object(D,current-project,countable,na,eq,1)-1/15

predicate(E,have,A,D)-1/11

=>

[F,G]

object(F,interesting-contact,countable,na,eq,1)-1/20

predicate(G,be,A,F)-1/16

A FAIRE lire JBehave

Evenja

J'ai regardé Evenja

il y a un point positif commun à l'orientation règle et aussi aux archi. de plugin: on n'a pas besoin de modifier l'existant pour ajouter une fonctionalité.

Quand on regarde le C++:

Finalement, il y a du bon dans ce fw; je serais surpris qu'il n'y ait pas d'autres fw similaires. Mais ce qui serait bien ce serait une re-impémentation en Scala, pour éviter les casts, et bénéficier de l'écosystème JRE.

2012-07-12

En dehors de ce client qui a plusieurs experts métiers ( modélisation physique + économique ), j'ai un client qui travaille sur les métadonnées musicales. Cela m'a permis d'utiliser le cadricel EulerGUI sur un projet en vraie grandeur (un lecteur musical sémantique). J'ai des contacts avec 2 laboratoires en informatique médicale.

Au sujet de ATTEMPTO, j'irai à la conférence fin août à Zürich. Dernièrement j'ai fait l'exercice de créer un lexique pour ATTEMPTO correspondant aux concepts FOAF [3] . Ce n'est pas pleinement satisfaisant, mais ça a montré concrètement à l'équipe Attempto qu'il y encore du travail pour réutiliser des vocabulaires RDF existants (et aussi que c'est nécessaire pour nombre de vrais projets ).

Comme par hasard, sur l'IRC EulerGUI on me parle à l'instant d'une librairie dotnet pour RDF [2] ; vous devez avoir ça dans votre radar, mais on ne sait jamais.

[1] http://fr.wikipedia.org/wiki/Jean_Pic_de_la_Mirandole

[2] http://www.dotnetrdf.org/

[3] https://lists.ifi.uzh.ch/pipermail/attempto/2012-June/thread.html

2012-07-11

Etudiant en 2ème année de Master Ingénierie en Intelligence Artificielle à

l'université Montpellier 2.

Responsable de la rubrique Web

sémantique<http://web-semantique.developpez.com>de Developpez.com.

Mes projets Web sémantique: http://data.lirmm.fr

Page personnelle: http://jplu.developpez.com

Fichier FOAF (version RDF): http://jplu.developpez.com/julien

Fichier FOAF (version RDFa): http://jplu.developpez.com/julien.html

Adresse mail personnelle: julien.plu@redaction-developpez.com

Adresse mail universitaire: julien.plu@etud.univ-montp2.fr

2012-07-08

Remarques de Michel sur l'IHM EG

2012-07-07

moi: A noter que pour avoir un bénéfice, la modélisation logique ne demande pas d'être appliquée dans toute l'application

( contrairement à l'approche UML, assez globale )

2012-07-05

http://www.w3.org/TR/owl2-profiles/#Reasoning_in_OWL_2_RL_and_RDF_Graphs_using_Rules

seeks.info

weka

Gödel ; nombre premiers

prover9

SCOM :

agnostique : génie logiciel : le minimum d'hypothèses sur le contexte et l'utilisation future

JavaCampParis8

Voilà un évènement intéressant : http://barcamp.org/w/page/54826845/JavaCampParis8

Envoyé jeudi à 01:01

Michel: merci!!

moi: inscrit !

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

#goos non-fonctionnel == lities

1M transaction / s + sécurité

EMMA ==> Jacoco

méthode AAA

ADD, BDD

infinitest

test acceptation =/= t. fonctionnel

TDD == technique de design

2012-06-21

RunActionGeneric runAction = new RunActionGeneric(inferenceEngineFactory, projectGUI);

Bilan prés. LIM

2012-06-20

Présentation LIM Rennes

Plan

Nouveautés environnement EulerGUI

Ecosystème:

Feuille de route : Roadmap for EulerGUI

Missing features in EulerGUI

Fonctionalités:

Change Log

[EulerGUI 1.11 2012-06]

- EulerGUI Minimal 

- add selected URI to project from editor

- open selected URI in web browser from editor

- library upgrade: Euler 2012-06, Drools 5.5.0.SNAPSHOT, Jena 2.70.incubating, OWL API 3.3.0

FIX :

[EulerGUI 1.10 2012-04.22]

FEATURES:

- N3 RETE Drools inference engine:

* more builtins : math:difference, math:quotient, math:remainder,

string: contains, equalIgnoringCase, containsIgnoringCase, endsWith, greaterThan, lessThan, startsWith

* Reuse a variable in another math expression now works , e.g. :

{ (1 2) math:sum ?R . (?R 4) math:product ?P . } => { ... }

* log:uri : case when object is bound or literal, and subject is computed ( and not bound )

* EulerGUI Search (Drools query) enhancement: Now builtins are taken in account

* kb:replaceValue and kb:retract : also work in ordinary triples (not only in rules )

* Leverage on Drools to automatically retract GUI components: calls remove when add is retracted

- add buttons to show N3/RDF graph as a Table : each N3 source ; inference Result

- several fixes for SPARQL:

* sometimes query was run twice

* Progress Frame when query runs

* result buttons are disabled until query is done

* use the SPARQL parser to determine dynamically query type (SELECT, CONSTRUCT, ...),

instead of string search

- now EulerGUI identifies itself by HTTP header User-agent

- extension point capabilities in N3 configuration files (similar to Spring config. but more powerful)

- library upgrade: Euler 2012-04

FIX : Euler with --wcache : obs from JoS de Roo

[EulerGUI 1.9 2012-01-22]

FEATURES:

- N3 RETE Drools inference engine:

* embedded Java objects (Java object react to rules in real time)

* thus Java AWT FocusEvents in generated application are processed

* Java package separator "-" in URI's

* value of a Java property call in a rule consequent assigned to an N3 variable

* RDF list in antecedent : e.g. this works : { ?X :a ( 1 2 ) } => { ?X :b :ok } .

* static Java method calls

* remove insertlogical for project main query

- N3 sources from Internet: download, converting to N3 (if necessary), parsing, feeding the user KB

in parallel threads (one thread per N3 source) => quick application start ; set timeout

- use threads in LaunchOWLReasonerAction, SPARQL

- N3 cache for all N3 sources from Internet (possible to run cached projects after stopping network access)

- library upgrade: Euler 2012-01, Drools 5.3.1.Final

- N3 shell (command line) :

* add N3 shell in the GUI (in menu "tools")

* Jline library for completion, history, like a real shell

- preference file in N3, allowing to add features like eclipse extension points

- OWL class tree :

* view properties in tooltips; use rdf:label when available

* take in account language in literals with application language or "en"

- new "N3 source" button, with pre-filled N3 prefixes; to save user clicks, the editor is opened on the fly.

- use jEdit for dump of KB (internal and user KB)

- save and reload project as N3: work in progress

- when uninstalled, external programs are in grey: CWM, FuXi, GraphViz

- show a Dialog When there are Unsaved N3 Source(s), before launching: (rule) inference engines, OWL inference, Add Referred Ontologies Action

- provide a feedback with ProgressFrame when loading an N3 source

- N-Triples parser for big data

- simplified file relative paths e.g. ../dir/rules.n3

- report Duplicate diverging URI Prefix when opening result in N3 editor

FIXES:

- now any big file can be opened in EG and editor (unactivate N3 parser and KB population)

- can now add N3 URL source that has JSON as default; set the Accept header fro N3 consistenly, also open in the editor the local N3; TESTED with http://graph.facebook.com/jmvanel

- a directory with spaces was crashing the app.

- change default project file name "Unnamed!" that caused crashes on Windows

- was impossible to create a file on Mac, because there was no way to enter a file name in JFileChooser

- when clicking on N3 source button, the editor was not always in foreground

KNOWN ISSUES:

-opening Editor with a large file (like a 20M bytes RDF) lasts long

-opening EulerGUI with a large file may freeze the application

ATTEMPTO avec un vocabulaire OWL

Propriété RDF(OWL) <--> verbe transitif (singulier, pluriel, pp)

tv_finsg('has-homepage',  iri('http://xmlns.com/foaf/0.1/homepage') ).
tv_infpl('have-homepage', iri('http://xmlns.com/foaf/0.1/homepage') ).
tv_pp('homepage-of',      iri('http://xmlns.com/foaf/0.1/homepage') ).

Classe RDFS(OWL) <--> nom commun (singulier, pluriel)

noun_sg( 'person',  iri('http://xmlns.com/foaf/0.1/Person'), neutr ).
noun_pl( 'persons', iri('http://xmlns.com/foaf/0.1/Person'), neutr ).

Lancer APE (Attempto Parse Engine) en ligne de commande, puis EulerGUI:

./ape.exe -uri http://eulergui.sf.net/contact.owl \
          -ulexfile foaf-lexicon.pl -text \
  'If P is a person that has-homepage something then P is an n:interesting-contact .' \
  -solo owlxml > interesting-contact3.owl
eg interesting-contact3.owl

Cadriciel

Vue d'ensemble

Diagramme de flux de données:

ACE --> OWL+SWRL --> N3(ontologie+règles) --> Drools
                            |                   |
                            v                   v
                     Euler, CWM, FuXi         Drools
                            |
                            v
                           N3

2012-06-03

tests EulerGUI

Arié: j'ai relançé les tests

y'a 12 minutes

Results :

Failed tests: testFormFromClass(deductions.runtime.TestRulesForUserEvents): form and field as expected

Tests in error:

test_SaveExistingProjectAsN3(eulergui.gui.TestN3FormatForProject): JFileChooser's window

Tests run: 183, Failures: 1, Errors: 1, Skipped: 0

et donc, sur mon poste j'ai encore une erreur et un échec...

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

moi: au fait, qu'as tu fait pour avoir aterm dans le build EG ?

un truc crad

mais pas aussi crad que de le mettre dans mon .m2

<repository>
<id>biordf</id> <url>http://dev.biordf.net/maven/</url>
</repository>

maintenant il peut y avoir des problèmes dus aux multiples serveurs HTTP qui sont appelés dans les tests;

ce qui est prévu depuis longtemps, je voudrais utiliser un proxy,

Arié: tu lances des tests en paralllèle ?

moi: aussi bien pour éviter les faux négatifs ,

que pour accélérer ?

non

à cause des fenêtres générées

moi: je voudrais utiliser un proxy comme un enregistreur lors d'un premier test qui passe

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

J'ai passé la journée hier à enregistrer une vidéo sur EG mini, et ça coince avec un bug de pitivi :(

2012-05-26

<jmvanel> lcpvrr, pour info, je commence une video :

<jmvanel> https://eulergui.svn.sourceforge.net/svnroot/eulergui/trunk/eulergui/html/ideas-videos.html

<jmvanel> pendant que je regardais la doc de pitivi ( éditeur vidéo ) , j'ai vu ça http://www.youtube.com/watch?feature=player_embedded&v=GXdhHd_bh2A

<jmvanel> et je me suis dit que je pouvais faire mieux :)

<lcpvrr> vous faites du cinéma ;-)

<jmvanel> je fais un peu de montage pour mes vidéos

<jmvanel> vidéos enregistrées par capture d'écran

<jmvanel> mais oui, ça me plairait d'en faire sur la nature

<jmvanel> l'intro est dans la boîte :)

2012-05-25

Problème de micro Logitech USB sur Ubuntu : résolu

<jmvanel> bonjour j'ai un problème de micro; c'est un micro Logitech USB ; j'essaye avec l'enregistreur de son ; il y a un bruit permanent de moteur électrique

<jmvanel> Snarf, pour info, mon pb est résolu : en enlevant et remettant le cable USB, un autre périphérique est apparu dans la fenêtre son : AK5370 ... convertisseur mono analogique ==> plus de vrombissement :))))))

<jmvanel> ( précédemment c'était "audio intégré stéréo analogique " )

Après la soirée playframework au PSUG

Le framework play est impressionnant , et au premier abord , c'est "juste" l'utilisation aprofondie du typage appliqué aux types MIME et autres.

La notion de Promise ( Future en Akka) permet de gérer l'asynchronisme à un niveau conceptuel plus élevé que les callbacks. De plus comme c'est implémenté via des timers, on n'a pas à supporter le coût des threads.

Le cadriciel décide au niveau controleur juste après les entêtes HTTP. Mais on ne nous a pas montré la gestion de l'entête Accept et la négociation de contenu.

Tout est fait pour éviter de lire le corps HTPP si on n'en a pas besoin.

L'utilisation systématique de flux (streams) permet par exemple de faire suivre un flux vers Amazon S3 sans rien stocker localement.

Ce serait intéressant de voir ce qu'on peut faire avec EulerGUI + play .

Ca permettrait niveau conceptuel plus orienté utilisateur et spécification fonctionnelles, via des règles de correspondance :

spécification => composant IHM haut niveau => composant IHM bas niveau

On pourrait utiliser un modèle qui soit une base de connaissance EulerGUI/Drools (KB).

Pour la vue , on pourrait utiliser Wicket, déjà envisagé, et géré aussi par la KB ( cf faire marcher Wicket avec EulerGUI ) .

Et le contrôleur, ce serait juste un truc générique qui transcrit la requête en N3 et l'insère dans la KB (comme ce que fait actuellement le formulaire Swing généré).

2012-05-24

PSUG

Dojo : 5 juin

recrutement : demander

Guillaume sur play2

play new psug

type classes : forme de polymorphisme

crud existe plus

reviendra sur mongodb, etc ; RDF ?

2012-05-23

Corrigé https://eulergui.svn.sourceforge.net/svnroot/eulergui/trunk/eulergui/html/fr/cadriciel_eulergui.html#L574

séminaire Performance et Généricité du LRDE (Epita)

La prochaine session du séminaire Performance et Généricité du LRDE

(Laboratoire de Recherche et Développement de l'EPITA) aura lieu le

Mercredi 20 juin 2012 (14h00-16h00).

Au programme:

* 14h00: GPU Computing : début d'une ère ou fin d'une époque ?

-- Eric Mahé, responsable du projet OpenGPU

http://seminaire.lrde.epita.fr/

http://lrde.epita.fr/

Ontologie des outils cryptographiques

Je travaille dans le domaine de la cryptographie et, afin de me familiariser avec les ontologies, je souhaiterais réaliser une ontologie des outils cryptographiques.

Bonne idée.

Dans une première étape, vous pouvez faire à la UML , ou à la POJO, c à dire une classification.

Puis ensuite ajouter, si besoin est, des classes définies par AllValuesFrom , SomeValueFrom, et autres primitives OWL.

Vous pouvez aussi attaquer via ATTEMPTO, comme ça vous n'avez pas besoin de savoir les primitives OWL ( mais ça aide, cf http://jmvanel.free.fr/presentations/pres-owl-anglais-controle.odp ).

2012-05-16

SIAAP : assainnissement ?

Aspect complémentaire par rapport au Cloud de l'avenir de l'IT

[...] J'aimerais discuter avec vous d'un aspect, parfaitement complémentaire par rapport au Cloud, de l'avenir de l'IT: l'utilisation et la réutilisation des sémantiques, modélisations logique, et données sémantisées.

Cela demande des compétences qui intègrent et dépassent les autres manières de modéliser: systèmes experts et décisionnels, BRMS, BPM, UML et Orienté Objet, documents XML, relationnel.

Cela demande aussi des efforts d'infrastructure. Ce que nous avons fait c'est d'intégrer le moteur Drools, mais sans le langage Drools, trop lié à l'Orienté objet, et pas du tout relié au standards du Web Sémantique ( à la place le langage N3 du W3C ).

On a ainsi le moyen d'exprimer toute la logique métier sans coder, de manière déclarative, en réutilisant des ontologies, et en écrivant des règles métiers dans un langage formel qui est un sous-ensemble de l'anglais standard. Autant de gagné pour l'indépendance par rapport à la plate-forme.

Et on peut se débarraser de deux technologies obsolètes et modérément compatibles: l'Orienté Objet et le relationnel.

De plus, non seulement on peut raisonner en temps réel sur les données métier, mais en plus on peut raisonner sur l'infrastructure, en particulier bien sûr sur le Cloud.

Plaquette Déductions + images

logique et expertise métier : anglais formel ACE ==> ontologie+règles ==> interprété par moteur d'inférence Drools

spec. fonctionnelles

(saisie, visualisation) ==> moteur d'inférence

Notes:

- validation fait partie de la logique métier

- suggestions fait partie de visualisation

- le stockage suit un chemin logique:

tout ce qui vient de l'utilisateur ayant les droits, validé, est automatiquement sauvé

2012-05-15

Spotify sous Linux

Pour le moment au stade de pré-version, cette application Linux ne bénéficie pas encore de support officiel. Mais sachez que nous l’utilisons nous- mêmes et que nous avons nous aussi à cœur qu’elle soit en phase avec ses équivalents Mac et Windows. Il est à noter que nous n’avons pas encore trouvé de moyen fiable d’afficher des publicités sous Linux. C’est pourquoi cette version n’est pour le moment accessible qu’aux abonnés Premium et Unlimited.

Comment l'installer ?

http://www.spotify.com/fr/download/previews/

2012-05-12

http://vimeo.com/9276531 : Sarah apparait à la minute 1

This is an old, rough trailer for The Beginner with amazing music by Benji Cossa. If you'd like to see the whole movie, it's available here: epixhd.com/the-beginner/

Dialogue avec Marc Henri

Je connais mal les langages de programmation, mais il me semble que les boucles conditionnelles de Javascript par exemple sont plus tournées vers des "actions" simples, tandis que votre langage est vraiment un langage "décisionnel".

En effet N3 , et ACE/ATTEMPTO, sont des langages "décisionnels".

Ce qui est amusant est que jusqu'à récemment je n'avais pas fait le rapprochement entre ce que je fais et l'adjectif "décisionnel".

Par ailleurs, l'intérêt de RDF/N3/Turtle et OWL (les standards W3C du Web Sémantique) est d'avoir des vrais formats d'échange de modèles "sémantisés", avec qui + est des données et des modèles concrets disponibles en quantité et qualité. Ce qu'on n'a jamais eu avec les écosystèmes UML, ou IA, ou règles métier (BRMS).

A faire: EulerGUI

Démos

EulerGUI :

2012-05-11

Inscrit séminaire EPITA "performance et généricité"

http://seminaire.lrde.epita.fr/archives.php

À propos du séminaire

La modélisation orientée objet permet la classification des problèmes de calcul scientifique, et par conséquent, par la factorisation qu'elle rend possible, elle fournit un excellent support pour la fédération d'efforts de développement. Malheureusement les performances en pâtissent souvent. De nouveaux langages, de nouvelles techniques de programmation réconcilient performance et généricité, permettant la naissance de bibliothèques de nouvelle génération (Olena, Vaucanson, VIGRA, BGL etc.).

2012-05-09

Sortie de Minimal EulerGUI 1.11 + logique floue

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

<jmv_> grâce à une collaboration avec INSERM, une forme de logique floue dans EG :) .

On peut faire un D'n'D de cbfcmInst002.n3 et cbfcmKnow002.n3

depuis :

https://deductions.svn.sourceforge.net/svnroot/deductions/fcm/

2012-05-08

http://prefix.cc/fcm

http://prefix.cc/fl

Version EulerGUI minimale (CBFCM)

Ajouter dans EulerGUI des marqueurs:

DroolsEngine (commande aussi search et KB dans outils), CWMEngine, FuXiEngine, XMIInput, JavaInput, XMLInput

2012-05-07

21:28:19 [AWT-EventQueue-0] [error] AWT-EventQueue-0: java.lang.NullPointerException
21:28:19 [AWT-EventQueue-0] [error] AWT-EventQueue-0: at eulergui.project.N3Source.manageParseN3(N3Source.java:465)
21:28:19 [AWT-EventQueue-0] [error] AWT-EventQueue-0: at eulergui.project.N3Source.update(N3Source.java:402)
21:28:19 [AWT-EventQueue-0] [error] AWT-EventQueue-0: at eulergui.project.N3Source.parseResult(N3Source.java:488)
21:28:19 [AWT-EventQueue-0] [error] AWT-EventQueue-0: at eulergui.gui.view.TextEditor$7.getToolTipText_KB(TextEditor.java:583)
21:28:19 [AWT-EventQueue-0] [error] AWT-EventQueue-0: at eulergui.gui.view.TextEditor$7.getToolTipText(TextEditor.java:568)
21:28:19 [AWT-EventQueue-0] [error] AWT-EventQueue-0: at org.gjt.sp.jedit.textarea.ExtensionManager.getToolTipText(ExtensionManager.java:135)

Version EulerGUI minimale (CBFCM)

Je propose d'avoir ces fonctionalités seulement :

Entrée de données:

- un bouton pour entrer du N3 (données ou règles)

- un bouton pour entrer du RDF ( OWL/RDF par exemple ), ou du OWL/XML

- un bouton pour entrer n'importe quoi par un URL

SPARQL

Moteurs d'inférence:

- Euler seulement

Sorties - visualisations

- pareil

Pour l'implémentation, je ne sais pas encore si je vais récupérer des morceaux dans EulerGUI, ou bien réduire EulerGUI.

2012-05-05

Liste de diffusion sma@loria DOT fr

http://www.loria.fr/~chevrier/ListeSMA.html

Objectif et principe de fonctionnement

Cette liste a pour vocation d'être un moyen d'information entre les personnes qui s'intéressent à la problématique des systèmes multi-agents et de l'intelligence artificielle distribuée.

2012-05-04

j'attends le fix du problème Drools pour avancer sur pricing

<jmvanel> je pesne qu'ils vont le faire avant lundi .

<jmvanel> en attendant je travaille sur la vue tabulaire

<jmvanel> J'aurais besoin d'une liste Java, mais qui aussi maintient une correspondance valeur ==> indice

2012-05-03

The rule :

rule "pricing.n3 0"
when
  $Triple_1 : Triple( $PR : subject, predicate == "<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>", object == "<http://deductions.sf.net/samples/princing.n3p.n3#Pricing>" )
  $Triple_2 : Triple( subject == $PR, predicate == "<http://deductions.sf.net/samples/princing.n3p.n3#theConsummerType>", $CT : object )
  $LIST : java.util.List( )
    from accumulate(   $Triple_3 : Triple( subject == $PR, predicate == "<http://deductions.sf.net/samples/princing.n3p.n3#theExpectedConsummerNumber>", $CN : object )
 and   $Triple_4 : Triple( subject == $CN, predicate == "<http://deductions.sf.net/samples/princing.n3p.n3#number>", $N : object )
 and   $Triple_5 : Triple( subject == $CN, predicate == "<http://deductions.sf.net/samples/princing.n3p.n3#consumerType>", $consumerType1 : object )
 and   $Triple_6 : Triple( subject == $consumerType1, predicate == "<http://deductions.sf.net/samples/princing.n3p.n3#value>", $value2 : object )
 and   $Triple_7 : Triple( subject == $CT, predicate == "<http://deductions.sf.net/samples/princing.n3p.n3#value>", $value3 : object )
 and   Triple( this == $Triple_7 , Double.parseDouble( Triple.n3ValueToNumeric($value2 )) >= Double.parseDouble( Triple.n3ValueToNumeric($value3 )) )
    , collectList( $N  ) )
  $NUMBER : Number()  from accumulate(
    $NUMBER_STRING_ : String() from $LIST
    , sum( Double.parseDouble( $NUMBER_STRING_)) )
then
  Triple newTriple;
  TripleResult newTripleResult;
  String $CNP = Triple.resource("CNP") ;
  newTriple = new Triple(  );
  newTriple.setSubject( $CNP );
  newTriple.setPredicate( "<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>".toString() );
  newTriple.setObject( "<http://deductions.sf.net/samples/princing.n3p.n3#ConsumerNumberProfit>" );  insertLogical( newTriple );
  newTriple = new Triple(  );
  newTriple.setSubject( $PR );
  newTriple.setPredicate( "<http://deductions.sf.net/samples/princing.n3p.n3#consumerNumberProfit>".toString() );
  newTriple.setObject( $CNP );  insertLogical( newTriple );
  newTriple = new Triple(  );
  newTriple.setSubject( $CNP );
  newTriple.setPredicate( "<http://deductions.sf.net/samples/princing.n3p.n3#consummerType>".toString() );
  newTriple.setObject( $CT );  insertLogical( newTriple );
  newTriple = new Triple(  );
  newTriple.setSubject( $CNP );
  newTriple.setPredicate( "<http://deductions.sf.net/samples/princing.n3p.n3#number>".toString() );
  newTriple.setObject( $NUMBER );  insertLogical( newTriple );

end

Drools is looping forever here in class FromNode in public void updateSink(final LeftTupleSink sink,

final PropagationContext context,

final InternalWorkingMemory workingMemory ) :

                for ( RightTuple rightTuple = rightTuples; rightTuple != null; rightTuple = (RightTuple) rightIter.next( rightTuples ) ) {
                    boolean isAllowed = true;
                    if ( this.alphaConstraints != null ) {
                        // First alpha node filters
                        for ( int i = 0, length = this.alphaConstraints.length; i < length; i++ ) {
                            if ( !this.alphaConstraints[i].isAllowed( rightTuple.getFactHandle(),
                                                                      workingMemory,
                                                                      memory.alphaContexts[i] ) ) {
                                // next iteration
                                isAllowed = false;
                                break;
                            }
                        }
                    }

                    if ( isAllowed && this.betaConstraints.isAllowedCachedLeft( memory.betaMemory.getContext(),
                                                                                rightTuple.getFactHandle() ) ) {
                        sink.assertLeftTuple( sink.createLeftTuple( leftTuple,
                                                                    rightTuple,
                                                                    null,
                                                                    null,
                                                                    sink,
                                                                    this.tupleMemoryEnabled ),
                                              context,
                                              workingMemory );
                    }                                      
                }

leftTuple contains :

pricing a Pricing.
pricing theConsummerType CT2 .

{
 ?PR a Pricing.
 ?PR theConsummerType ?CT.
 # ?NUMBER : sum of the ?N such that :
 # ?PR theExpectedConsummerNumber ?CN . ?CN number ?N .
 # ?CN!consumerType!value >= CT!value
  _:d e:findall ( ?N {
    ?PR theExpectedConsummerNumber ?CN.
    ?CN number ?N.
    ?CN!consumerType!value math:notLessThan ?CT!value .
    # cf Paths in http://www.w3.org/DesignIssues/Notation3
  } ?LIST ).
  ?LIST math:sum ?NUMBER.
} => {
 ?CNP a ConsumerNumberProfit.
 ?PR consumerNumberProfit ?CNP.
 ?CNP consummerType ?CT.
 ?CNP number ?NUMBER.
}.

AND[Pattern type='[ClassObjectType class=n3_project.helpers.Triple]', index='0', offset='0', identifer='(ValueType = 'Object') $Triple_1', Pattern type='[ClassObjectType class=n3_project.helpers.Triple]', index='1', offset='1', identifer='(ValueType = 'Object') $Triple_2', Pattern type='[ClassObjectType class=java.util.List]', index='2', offset='2', identifer='(ValueType = 'Object') $LIST', Pattern type='[ClassObjectType class=java.lang.Number]', index='9', offset='3', identifer='(ValueType = 'Object') $NUMBER']

Daemon Thread [SwingWorker-pool-4-thread-1] (Suspended)
System.identityHashCode(Object) line: not available [native method]
DefaultFactHandle.determineIdentityHashCode(Object) line: 168
DefaultFactHandle.<init>(int, Object, long, WorkingMemoryEntryPoint) line: 90
ReteooFactHandleFactory.newFactHandle(int, Object, long, ObjectTypeConf, InternalWorkingMemory, WorkingMemoryEntryPoint) line: 79
ReteooFactHandleFactory(AbstractFactHandleFactory).newFactHandle(int, Object, ObjectTypeConf, InternalWorkingMemory, WorkingMemoryEntryPoint) line: 80
ReteooFactHandleFactory(AbstractFactHandleFactory).newFactHandle(Object, ObjectTypeConf, InternalWorkingMemory, WorkingMemoryEntryPoint) line: 65
RightInputAdapterNode.assertLeftTuple(LeftTuple, PropagationContext, InternalWorkingMemory) line: 117
FromNode.updateSink(LeftTupleSink, PropagationContext, InternalWorkingMemory) line: 455
RightInputAdapterNode.attach(InternalWorkingMemory[]) line: 209
BuildUtils.attachNode(BuildContext, BaseNode) line: 150
AccumulateBuilder.build(BuildContext, BuildUtils, RuleConditionElement) line: 77
PatternBuilder.attachPattern(BuildContext, BuildUtils, Pattern) line: 122
PatternBuilder.build(BuildContext, BuildUtils, RuleConditionElement) line: 76
GroupElementBuilder$AndBuilder.build(BuildContext, BuildUtils, RuleConditionElement) line: 126
GroupElementBuilder.build(BuildContext, BuildUtils, RuleConditionElement) line: 73
ReteooRuleBuilder.addSubRule(BuildContext, GroupElement, int, Rule) line: 152
ReteooRuleBuilder.addRule(Rule, InternalRuleBase, IdGenerator) line: 123
ReteooBuilder.addRule(Rule) line: 110
ReteooRuleBase.addRule(Rule) line: 441
ReteooRuleBase(AbstractRuleBase).addRule(Package, Rule) line: 821
ReteooRuleBase(AbstractRuleBase).addPackages(Collection<Package>) line: 555
ReteooRuleBase.addPackages(Collection<Package>) line: 458
ReteooRuleBase.addPackage(Package) line: 465
N3SourcetoDrools.droolsCompile(String, String) line: 425
N3SourcetoDrools.translate(IRDFIterator, String, boolean, boolean, boolean) line: 320
N3SourcetoDrools.translate(N3Source, boolean, boolean, boolean) line: 262
N3DroolsEngineFacade.translate(N3Source, boolean, boolean, boolean) line: 91
Project.doTranslateN32Drools(boolean, boolean) line: 944
Project.translateN32Drools(boolean) line: 895
Project.prepareDrools(boolean) line: 873
Project.doRunDrools(boolean) line: 827
Project.runDroolsTriples(boolean) line: 778
DroolsInferenceEngine.launch() line: 30
InferenceSwingWorker.doInBackground() line: 48
InferenceSwingWorker.doInBackground() line: 1
SwingWorker$1.call() line: 296
FutureTask$Sync.innerRun() line: 334
SwingWorker$2(FutureTask<V>).run() line: 166
InferenceSwingWorker(SwingWorker<T,V>).run() line: 335
ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1110
ThreadPoolExecutor$Worker.run() line: 603
Thread.run() line: 722

1 an du Paris Android User Group: Barcamp Android

http://www.paug.fr

Cherché sur stackoverflow : [android] list of java libraries running on android

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

NFC == Near Field communication

Startup

Geoloc

Interface graphique

geniemobile

avoir des distributions Android

automobile : Android stratégique

100 000 smartphone chez la poste

machine to machine

2012-05-02

Pourquoi l'orienté objet, UML et le relationnel sont mauvais

cf dialogue avec Claude F sur G doc.

Pourquoi l'orienté objet est mauvais par rapport à aux règles logiques + ontologies :

Pourquoi le relationnel est mauvais par rapport aux bases SPARQL du Web Sémantique :

2012-04-27

http://www.praxeme.org/index.php?n=Modus.GeneralGuide

http://www.praxeme.org/index.php?n=Syllabus.Trainings

2012-04-25

Idée : robot réparateur de toit

Idée:exporter son historique de navigation

Idée:exporter son historique de navigation, de sorte qu'un autre voie mon passage quand il navigue sur une page que j'ai vue. La page pourrait être cornée; il faudrait aussi montrer la fréquence et la durée de mes consultations. Il faudrait aussi avoir une vue mosaïque, ou diagramme de Gantt, de mes navigations. Bien sûr ces vues sont intéressantes aussi pour moi-même. Il faut aussi que les marque-pages apparaissent d'une façon particulière.

Deux sortes de sources N3

  1. - priorité à l'extension,
  2. - au type de contenu

1 correspond aux sources qui n'ont pas de type de contenu, ou dont on n'est pas sûr que les serveurs HTTP renseignent correctement le type.

2 correspond aux types qui ont un type de contenu qui est largement employé, mais on utilise l'extension pour le cas où le serveur HTTP ne renseigne pas correctement le type.

2012-04-22

http://www.lirmm.fr/xml/fr/lirmm.html

Annonce EulerGUI 1.10 sur ma liste de courrier

Bonjour

J'ai le plaisir d'annoncer la livraison 1.10 de EulerGUI, un outil de développement et un cadriciel pour le Web Sémantique et les règles.

Les améliorations concernent surtout le moteur d'inférence N3 RETE avec Drools, et les requêtes SPARQL.

Le moteur d'inférence Drools, adapté au language de règles N3 pour le Web Sémantique, permet de construire des applications dont toute la logique métier est directement interprétée par le moteur (voir synthèse ici : le cadriciel EulerGUI ; voir video ).

On a ajouté plus de fonctions intégrées : mathématiques, chaînes de caractères.

D'autre part, on s'appuie sur Drools pour rétracter automatiquement des composants d'interface graphique quand une donnée métier est supprimée voir Leverage on Drools to automatically retract GUI components ).

On a travaillé sur les capacités de point d'extension dans les fichiers de configuration N3, à la eclipse ou Spring, mais plus puissant (voir configure EulerGUI in N3 ).

Les requêtes SPARQL font partie des fonctionnalités "outil graphique pour explorer le Web Sémantique, utilisable par les usagers de ces technologies, et aussi pour l'enseignement.

Il y a plusieurs correctifs pour SPARQL:

On a ajouté des boutons pour afficher le graphe N3/RDF comme un tableau.

Téléchargement:

https://sourceforge.net/projects/eulergui/

Documentation :

http://eulergui.sourceforge.net/documentation.html

Journal des changements:

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

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

Brut de G translate:

- N3 moteur d'inférence RETE Drools:

* Les commandes intégrées plus: mathématiques: différence, mathématiques: quotient, reste, les mathématiques:

chaîne: contient, equalIgnoringCase, containsIgnoringCase, endsWith, GreaterThan, LessThan, startsWith

* Réutilisation une variable dans une autre expression mathématique travaille aujourd'hui, par exemple, :

{(1 2) mathématiques: somme R?. Mathématiques (R 4?): Produit P?. } => {... }

* Log: uri: cas où l'objet est lié ou littérale, et sous réserve est calculée (et non lié)

* EulerGUI Recherche (Drools requête) amélioration: Maintenant builtins sont prises en compte

* Ko: replaceValue et ko: rétracter: aussi travailler dans triples ordinaires (non seulement dans les règles)

L'effet de levier * sur Drools à rétracte automatiquement les composants d'interface graphique: les appels enlever quand add est rentré

- Ajouter des boutons pour afficher le graphique N3/RDF comme un tableau: chaque source N3; résultat de l'inférence

- Plusieurs correctifs pour SPARQL:

* Parfois requête a été exécutée à deux reprises

Cadre d'avancement * lorsque la requête s'exécute

Boutons résultats * sont désactivées jusqu'à ce que la requête est faite

* Utiliser le parseur SPARQL pour déterminer le type de requête dynamique (SELECT, construire, ...),

au lieu de chercher à cordes

- Maintenant EulerGUI s'identifie par en-tête HTTP User-agent

- Les capacités de point d'extension dans les fichiers de configuration (. N3 similaires à Spring config, mais plus puissant)

Mise à jour la bibliothèque -: Euler 2012-04

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

<jmvanel> j'ai depuis longtemps une exception socket "Connexion reset" qui perburbe mes tests

<jmvanel> je soupçonne plusieurs threads de se connecter au même URL

<jmvanel> ( je sais, c'est pas propre )

<jmvanel> j'ai contourné le pb, en mettant un sleep de 20s entre la construction de l'IHM et le lancement du moteur Drools ( dnas les tests ).

<jmvanel> ça m'a permis de passer les tests pour la release ...

2012-04-12

2012-03-30

http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?reload=true&arnumber=6007710

http://www.metacarto.fr/

2012-03-26

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

musée Edouard Branly

2012-03-24

Inférence et connaissance négative

<jmvanel> quand je dis qu'on ne peut pas utiliser une connaissance négative, il faut dire aussi que c'est rarement utile en pratique

<jmvanel> 1. parce que cette connaissance négative est souvent pas disponible ( en particulier si on considère le monde ouvert de la toile )

<jmvanel> 2. parce que ça intervient dans des raisonnements pas fréquents; on général on fait avec ce qu'on a , pas avec ce qu'on n'a pas

2012-03-23

http://www.youtube.com/elections2012

http://www.les-infostrateges.com/article/1109383/le-web-30-etat-des-lieux-et-perspectives-d-avenir

Voilà les liens que je vous ai montré sur VAMP et Sonic Annotator

http://www.vamp-plugins.org/

http://omras2.org/SonicAnnotator

Voilà le lien qui ne voulait pas se charger dans EulerGUI avec la fonction drag and drop

http://139.91.183.30:9090/RDF/VRP/Examples/tap.rdf

http://www.clubic.com/internet/google/actualite-481850-web-semantique-google-moteur-recherche.html

"Tour d'horizon des Fab Labs" sur le site de la Fing.

http://www.fing.org/?Tour-d-horizon-des-Fab-Labs,866

http://fing.org/?Participez-au-Carrefour-des

2012-03-22

Qui peut le plus peut le moins!

Si les systèmes ont fait leurs preuves pour des logiques complexes, il peuvent aussi traiter les logiques assez simples des applications de gestion courantes.

Séminaires franciliens intéressants du point de vue logiciel

Cachan, lip6, lri, lipn villetaneuse, ENS

Abitebol Saclay

http://www.lip6.fr/carte/carte.php

Listes des équipes:

http://www.lip6.fr/informations/mots-cles.php

site:lip6.fr séminaire

Envoyé un mail pour être averti des séminaires SMA (" Système Multi-Agents ") :

http://www-desir.lip6.fr/~sma/seminaires/index.php

Le LORIA (Nancy) gère une liste de diffusion (sma@loria.fr) à laquelle tout le monde peut s'abonner pour s'informer des principales activités des groupes, proposer des sujets de réflexions ou des présentations, accéder aux annonces de thèses, de congrès, etc. Envoyez un email à sympa@loria.fr avec comme sujet les mots subscribe sma pour vous inscrire ou unsubscribe sma pour vous désabonner.

http://www-desir.lip6.fr/~sma/Csma/actualites.php

Principales Conférences Internationales:

Du 4 au 8 Juin 2012 AAMAS 2012 Valencia, Spain. The 11th International Conference on Autonomous Agents and Multiagent Systems.

Du 27 au 31 Aout 2012 ECAI 2012 Montpellier, France. The 20th European Conference on Artificial Intelligence.

Principales Conférences Francophones:

Du 19 au 21 Octobre 2012 JFSMA 2012 Honfleur, France. 20 èmes Journées Francophones sur les Systèmes Multi-Agents.

Séminaire PPS: les dilatateurs, par Michele Abrusci

le jeudi 22 Mars, 11h, salle 1D23

Michele Abrusci (Roma 3)

va nous donner le premier cours d'une mini-serie sur les dilatateurs:

le jeudi 22 Mars, 11h, salle 1D23: Dilatateurs

le mardi 27 Mars, 10h, salle 5C03: Pi^1_2-logique

-------

introduits par JY Girard vers 1970

liés aux ordinaux de Cantor

catégorie des ordinaux: ON

foncteurs

|- : prononcé tes ?

sémantique dénotationelle

"pure base" ?

motivation des dilatateurs: preuve de cohérence des systèmes formels: forme canonique;

coder par des nombres (ou suites de nombres) les démonstrations

passer par l'infini aide à traiter le fini, dans lequel sommes "scotchés"

2012-03-21

web-semantique-google-moteur-recherche

http://www.clubic.com/internet/google/actualite-481850-web-semantique-google-moteur-recherche.html

A ce que j'ai lu de l'article, il ne pense pas le déployer sur la totalité du moteur de recherche, mais sur des cas bien spécifique.

Igor

2012-03-20

Séminaire PPS : Watermarking

non-removable embedding

point fixe

sémantique dénotationnelle

Coq, librairie ALEA

projet SCALP

2012-03-19

ACE (Attempto Controled English) Français Type de

règle

Everybody that manages something is a manager. Tout ce qui gère quelque chose est un gestionnaire. Structurelle
If there is an order O then there is a demand-for-payment D, and D is associated-to O . S'il y a une commande O, alors il y a une facture D, et D est associée à O . Gestion
If a busLine X1 has-as-departure a town X2,

and X1 has-as-arrival a town X4,

and the town X4 belongs-to a country X3,

and the town X2 belongs-to the country X3

then the busLine X1 is a nationalBusLine .

Si une ligne de bus X1 a comme départ une ville X2,

et X1 a comme arrivée une ville X4,

et la ville X4 appartient à un pays X3,

et le ville X2 appartient à un pays X3,

alors la ligne de bus X1 est une ligne de bus nationale.

Structurelle
'If there is an alert A then A is-displayed in the dashboard. S'il y a une alerte A, alors A est affiché dans le tableau de bord. Applicative

http://www.rim-conference.org/

cela peut être intéressant

Envoyé lundi à 17:36

Lynda: cela parle de la gestion du relationnel

mais c payant:(

2012-03-18

Lecture de "la méthode CommonKADS - application au calage de codes de calcul"

la tâche de calage a été décrite à l’aide du formalisme

CML (Schreiber et al., 1994) et fait apparaître trois étapes majeures : l’initialisation,

l’adaptation et la validation.

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

pas mal !

Beaucoup de sigles que je connais pas !

Mais classer UML et d'autres dans la catégorie "interfaces humaines" c'est exagéré .

Tous ces langages, il faut en apprendre la syntaxe , la sémantique,

mais surtout la modélisation est un art difficile, et il y besoin d'une collaboration entre un experts métier et un modéliseur, parfois appelé knowledge engineer.

Quand même, il y a un avantage énorme des Langages Naturels contrôlés sur tout le reste, c'est que c'est lisible par l'homme.

Mais pour en écrire , ça reste une affaire d'expérience.

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

https://www.google.com/search?as_q=commonkads&lr=lang_fr

trois organismes de recherche publics (CETMEF, CEA, EDF-LNHE),

qui développent et utilisent de manière régulière des logiciels de simulation dans leurs

domaines scientifiques de prédilection, ont décidé de grouper leurs efforts, avec

d’autres partenaires universitaires (UPJV/LaRIA, UTC/Divergent) et privés (société

DELTACAD), pour tenter de définir et développer un atelier d’assistance au calage

des codes de calcul. Ces réflexions ont été concrétisées à travers le projet RNTL

CLACIC (CaLAge de Codes par Ingénierie des Connaissances) qui a été labellisé en

novembre 20021.

2012-03-15

Vous avez vu passer la rétractation auto dans l'IHM avec EG ?

2012-03-13

moi: Il faut installer un client IRC , tel que pidgin , xchat, empathy

c'est très bien IRC

par exemple sur freenode.net il y a #swig

(semantic web interest group )

où on rencontre plein de beau monde comme timbl

2012-03-12

http://labolyon.fr/emplacement.php

si vous voulez dialoguer avec LOL

irc.lyonopenlab.net/6667#LOL

Avancé avec le framework EulerGUI ce we

J'ai avancé avec le framework EulerGUI ce we, pour automatiquement propager dans l'IHM les rétractations de triplets (les ajouts, c'est déjà fait ).

Je pars à Lyon tout à l'heure.

Cyril

Avez vous vu http://www.i-programmer.info/news/112-theory/3900-a-better-way-to-program.html

Les demos des premiers 25 minutes de la video sont intéressantes, mais malheureusement ne font qu'ouvrir des pistes et ne resolvent pas tous les problèmes...

2012-03-11

Pour aider Corentin dans son stage, j'ai installé PDT (PHP) depuis le site central eclipse.

Effetivement on a des infobulles sur les méthodes, et on peut naviguer vers la déclaration d'une méthode par F3,

mais pour ce qui concerne les variables globales non déclarées, eclipse ne peut faire de miracles. Elles devraient être en rouge.

Le point important est l"existance ou non de tests unitaires et applicatifs.

A FAIRE videos sur EulerGUI

Les chercheurs en logique sont concentrés sur des aspects démonstration

jeanmarc. vanel 10:47:04

J'ai un contact avec un chercheur en logique d'une école d'ingénieurs .

je vais les voir la semaine du 23

10:47:24

Je travaille là dessus : Leverage on Drools to automatically retract GUI components

10:47:44

jeanmarc. vanel 10:53:28

mon impression est que les chercheurs en logique sont concentrés sur des aspects démonstration, et pas branchés sur les application en IA . Ce sera bien de discuter avec eux .

luc 10:57:00

c'est le classique problème théorie et application

2012-03-08

Séminaires : PPS , ..

http://www.agendadulibre.org/showevent.php?id=6760

Tout à l'heure séminaire PPS ( haut niveau mais stimulant )

https://www.pps.jussieu.fr/seminaire/

La réécriture est tout à fait possible avec EulerGUI.

2012-03-07

[parisjug-annonce] Soirée java.next()

http://www.parisjug.org/xwiki/bin/view/Meeting/20120313,

2012-03-03

TODO EulerGUI

2012-03-02

Jaxe, un éditeur XML original:

http://jaxe.sourceforge.net/fr/

Conception de bases de règles en Anglais Contrôlé

Deux choses importantes à dire :

- 1. l'essence de la modélisation en IA, c'est d'expliciter des évidences (évidences du point de vue humain). Et ce afin d'arriver aux déductions que l'on souhaite, mais sans inclure de règles ad hoc. Par exemple: "Si des gens se sont rencontrés, alors ils se connaissent." est une de ces évidences. Et pour modéliser ainsi, on a besoin d'une collaboration entre un expert métier ET un modélisateur (knowledge engineer).

- 2. il existe une méthodologie pour les systèmes experts qui part des besoins réels, du Systèlme d'Information pré-existant, et des cas d'utilisation : CommonKADS: http://www.commonkads.uva.nl/frameset-commonkads.html

Il y a aussi cette présentation de moi :

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/fr/ia2_semantique.xhtml#(27)

Et plusieurs exemples de phases ici en Anglais contrôlé ici :

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

2012-02-28

> Mais je te propose les règles suivantes :

  1. cela fait plus de X mois que je ne l'ai pas contacter
  2. son blog a changé
  3. sa société a plus de X de CA

Actuellement dans EulerGUI on peut obtenir un graphe GraphViz automatique pour le résultat d'une requête, donc une extraction d'un modèle. Et il serait possible de donner des directives à GraphViz pour mieux mettre le graphe en page.

je peux aporter des suggestions :

>>- 1. comme déjà mentionné, si des classes ont une définition

>>contradictoires, le modèle est à rejeter

>>- 2. plus intéressant: l'expert peut formuler des conclusions à partir

>>des données de test qu'il croit devoir être conséquence du modèle: il

>>suffit de vérifier que ces conséquences ont bien lieu; et alors on a

>>un test de non-régression portant sur le modèle. Et cela peut rentrer

>>dans une suite de tests automatisables.

2012-02-27

De Luc : Data modelling versus Ontology engineering

http://lsdis.cs.uga.edu/SemNSF/SIGMOD-Record-Dec02/Meersman.pdf

rapporté de mon dernier voyage dans le monde des ontologies ....

Le voyage a commencé par un simple problème de mapping xml/java que j'ai abordé comme un problème plus général mapping d'un model vers un autre model.

2012-02-23

vidéo EG génération de formulaire: dire config. à la Spring

2012-02-22

http://www.bigdataparis.com/fr-conference.php

2012-02-20

Applications basées sur les technologies Sémantiques

La majorité des applications sont basées sur des technologies anciennes: Orienté Objet, SQL, ORM (Object Relational Mapping). Si on ajoute encore un indrédient, le web sémantique, et un mapping (correspondance), on ajoute à la complexité et à la lourdeur.

En tant qu'architecte, ce que je préconise, c'est une application collaborative 100% basée sur le web sémantique et SPARQL. La simplicité va avec l'innovation! Mais il y a des briques dans ce domaine :

http://aksw.org/Projects

http://incubator.apache.org/clerezza/

Le tout c'est de bien choisir. Je suis en train de regarder cela.

2012-02-18

Hier intéressante réunion sur un projet FSN .

http://www.caissedesdepots.fr/activites/investissements-davenir/le-fonds-national-pour-la-societe-numerique-fsn-services-usages-et-contenus-numeriques.html

Suite et fin de mon cours IA:

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/fr/ia2_semantique.xhtml

TODO

semantic-mediawiki.org

Le 18 février 2012 09:37, Cyril Hansen <cyril.hansen@gmail.com> a écrit :

Ca sert à quoi ? C'est lié à DBPedia ?

Je ne crois pas.

Jamais eu le temps de pencher dessus.

Mais la liste des sites est longue :

http://semantic-mediawiki.org/wiki/Sites_using_Semantic_MediaWiki

éditeurs HTML

Installé http://www.kompozer.net/ : avantage : on peut coller depuis depuis Firefox (dans un document XHTML), et coller dans Amaya en vue source.

j'ai essayé aussi un éditeur Java HTML simple :

<jmv> simplyhtml.sf.net

Vidéos Web Sémantique

Après avoir publié ma 1ère video sur EulerGUI , j'ai regardé ce qui existe sur le sujet.

SemanticCamp Paris 2 - 1/10 - Introduction au Web Sémantique
http://www.youtube.com/watch?v=1kFAzYDbCiI
SemanticCamp Paris 2 - 2/10 - Le Web Sémantique en pratique
http://www.youtube.com/watch?v=OuFm52TeeRY

Débat : intéressante intervention de Jean Rohmer de Thales qui replace les choses dans un contexte vaste: la recherche sientifique, l'IA, etc. C'est remarquable comment il dit d'abord que le Web sémantique n'apporte aucune solution, puis 2 minutes après parle du  "génie" du Web Sémantique.
http://www.youtube.com/watch?v=2UrqNLZTUPU&feature=channel

A propos de "connaissance sensuelle du monde" : les webcam, les videos, les images, les sons aussi fournissent les senseurs" .
http://www.youtube.com/watch?v=_FlqYclxnM4&feature=channel
On pourrait créer un agent parcoureur de Web, comme Jane, l'intelligence artificielle que Orson Scott Card a imaginé dans les Enfants de l'esprit, (Children of the Mid). Au lieu de la vue assez anthropomorphique de Card, la "motivation" de cet agent pourrait être "en faisant de la catégorisation à priori (aprentissage non supervisé), trouver des catégories nouvelles ou peu connues" .
Je devrais prendre le temps de lire les chapitres sur l'aprentissage dans AIMA.


Scribo ? Y'a pas ! Circulez, y'a rien à voir:
http://www.lrde.epita.fr/cgi-bin/twiki/view/Projects/WebSearch?search=scribo&scope=text
Encore un exemple de projet "Open Source" sur fonds publics, dont il ne reste rien pour la communauté des développeurs.


http://www.youtube.com/results?search_query=theorem+prover&oq=theorem+prover&aq=f&aqi=&aql=&gs_sm=3&gs_upl=3719l5645l0l6051l8l8l0l0l0l0l156l1053l0.8l8l0

Liens de Henry Story :
http://bblfish.net/blog/
http://bblfish.net/tmp/2011/05/09/ Friending on the Social Web
http://www.proxem.com/Default.aspx?tabid=64

http://bblfish.net/
http://bblfish.net/people/henry/card.rdf

http://www.proxem.com/Default.aspx?tabid=64

2012-02-16

vidéos en projet:

navigation via foaf et EulerGUI

laissez venir les données : RDFa, conversions XXX => RDF

montrer la KB utilisateur; cas lumière; N3 shell

heuristiques, A*

AIMA code

EG: hyperlien webapp.html, backward.html

roadmap : RDFa,

2012-02-15

Bonsoir

je me dis qu'il devrait exister une application Web générique qui permet de mettre à jour une base SPARQL 1.1 .

Comme les outils d'administration dans le relationnel, par exemple PhpMyAdmin, phpPgAdmin ou http://www.squirrelsql.org/ ( client lourd ) .

Mais je n'en trouve pas !!!! il est possible que ça existe pas . C pas la première fois que je cherche.

2012-02-13

A ajouter à ma vidéo

ma vidéo : démo cadriciel EulerGUI : mélanger règles métier et règles Java

Si vous voulez voir comment entrer une logique métier sans écrire du N3, voici une intéressante vidéo sur AceWiki, qui est un Wiki sémantique :

http://attempto.ifi.uzh.ch/acewiki/

EulerGUI est capable de traduire et d'interpréter le format OWL+SWRL produit par AceWiki.

Un autre outil pour saisir une logique métier en Anglais formel, avec une vidéo :

http://attempto.ifi.uzh.ch/aceview/

2012-02-10

Proposition de Luc pour intégration EulerGUI serveur Web

J'ai mis le diagramme dans un ordre qui me semble plus logique:

web-server                                                EG
   
    |                                                     |
    |  pageDelivered(String path)                         |
    |---------------------------------------------------->|
    |                                                     |
    |  pageEvent(IPageEvent event)                        |
    |---------------------------------------------------->| (1)
    |                                                     |
    |  getHtmlDocument(String path)                       |
    |<----------------------------------------------------|
    |  HtmlDocument                                       |
    |....................................................>|
    |                                                     |
    |                                                     | (2)
    |                                                     | (3)
    |  pageExited(String path)                            |
    |---------------------------------------------------->|
    |                                                     |
    |                                                     |

Restera à voir les régles techniques:

- quels triples générés pour les événements sur la page

==> le modèle objet de DOM HTML; ou le mapping RDF "standard" de XML

- quels triples comme modèle html avec synchronisation avec le html document

==> le modèle objet de DOM HTML

Un essai de feuille de route:

Je dois interagir avec un stagiaire qui s'occupe de la partie HTML5, et je préfère ne rien lui demander de compliqué.

  1. Pour moi, la priorité, c'est de transmettre les évènements HTML génériquement (en N3 de préférence) : point (1) ;
  2. ensuite, point (2) , le moteur d'inférence (ou du code quelconque utilisant l'API DOM HTML, va modifier l'arbre, ajouter et / ou enlever un élément,

    soit sans déclarer lequel au fw web,

    soit en envoyant un couple ( id, nouvel élément ) au fw web,

  3. point (3) le fw web envoie la modification au navigateur

http://fr.wikipedia.org/wiki/Cadre_d'Application_AJAX

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

http://fr.wikipedia.org/wiki/Ajax_(informatique)#Exemples

2012-02-09

http://linuxfr.org/forums/g%C3%A9n%C3%A9ralcherche-logiciel/posts/cherche-algorithme-de-devinette

http://3615cricri.over-blog.fr/article-akinator-le-genie-et-intelligence-artificielle-64280322.html

Regardez plutôt cette version, avec qualité d'image améliorée :

http://www.youtube.com/watch?v=KMmo9dvJEKI

http://www.youtube.com/watch?v=OuFm52TeeRY

http://www.youtube.com/watch?v=1kGa120ISYs

http://fr.wikipedia.org/wiki/S%C3%A9mantique_des_langages_de_programmation

2012-02-08

Discussion avec Ch. - 1ère video sur EulerGUI

> Merci, c'est une super vidéo avec un aspest pratique très claire.

:)

> Je me demande maintenant comment se crée l'interaction entre ces règles

> métier et un logiciel standard.

Typiquement, on instancie une base de connaissance pour chaque

session, et on relance le moteur de règle à chaque évènement extérieur

(pas coûteux).

Il y a pas mal de possibilités pour peupler la base de connaissance :

- 1. on écrit à la mano du code qui va peupler la base de connaissance

avec les données du contexte, du genre :

tripleStore.insert( "<URI1>", "<URI2>", "\"valeur\"" );

- 2. on a des fichiers ou URL fixes dans un format du Web Sémantique

(N-Triples, N3, RDF, OWL/XML), comme les ontologies et règles.

- 3. on a des bases SPARQL (standard du Web Sémantique ) et on écrit

des requêtes fixes ou variables là-dessus

- 4. on a des bases SQL , on utilise un des wrappers opensource ou

commerciaux pour les faire apparaitre comme SPARQL

La contrainte est que la base de connaissance doit tenir en mémoire.

Par exemple, dans le domaine médical, ce sera la totalité du dossier

patient, plus peut-être des généralités sur ses maladies et ses

médecins traitants.

Dans le domaine réseau social, ce sera toutes les connaissances de

l'utilisateur courant avec leurs propriétés, éventuellement au 2ème

niveau, plus toutes les publications, celles de l'utilisateur courant

et de ses connaissances.

Ensuite, pour mettre à jour le stockage persistant, on peut le faire

en SPARQL 1.1 .

On peut emballer le stockage via SPARQL 1.1 dans un prédicat spécial,

ce qui permet de l'appeler via une règle. Et il y aura une règle

d'implémentation qui va appeler le code Java qui va bien quand ce

prédicat spécial est instancié.

> Pragmatiquement, d'où et comment provient l'information de la pression

> sanguine du patient dans l'exemple que tu mets en avant.

>

> parceque dans ton exemple la valeur est dans la règle :

Voir + haut.

Il est évident que dans un vrai projet, les données sont à part .

> @prefix math: <http://www.w3.org/2000/10/swap/math#>.

> @prefix : <http://eulergui.sourceforge.net/examples#> .

...

> :BloodPressure :val 72 .

...

> Je me demande également si tu as un représentation graphique (algorithmique)

> de tes règles

Oui, il y a un bouton pour lancer un diagramme Graphviz pour chaque

document du projet.

Et les règles sont traités spécialement.

Dans la feuille de route on pense à verbaliser à la ATTEMPTO les

règles. A noter que ça marche déjà dans l'autre sens: si on a une

phrase en anglais ATTEMPTO, EulerGUI sait la transformer en règles N3.

Ma 1ère video sur EulerGUI

twitté :) démo cadriciel EulerGUI : mélanger règles métier et règles Java

Vous êtes invités à regarder ( et à plusser ) la 1ère video sur EulerGUI :

http://www.youtube.com/watch?v=KMmo9dvJEKI

Déjà twitté ! https://twitter.com/#!/jmvanel/status/167190742505226240

C'est intitulé : démo cadriciel EulerGUI : mélanger règles métier et règles Java

Cette démonstration montre comment on peut séparer rigoureusement la

partie logique métier (système expert ) du reste de l'application.

Or, une séparation rigoureuse entre métier et infrastructure est

reconnue comme un élément capital de la qualité du logiciel et de la

traçabilité.

Explications complètes ici :

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/fr/cadriciel_eulergui.html

Cette première video sur EulerGUI sera suivie par d'autres:

La vidéo a été faite avec gtk-recordmydesktop sur Ubuntu sous Gnome sans effets ( attention, pas Unity ! ). J'ai fait un petit montage avec pitivi .

Enjoy !

2012-02-06

Ma 1ère video sur EulerGUI

http://www.youtube.com/watch?v=KMmo9dvJEKI

<jmvanel> pas encore twitté :)

démo cadriciel EulerGUI : mélanger règles métier et règles Java

Cette démonstration montre comment on peut séparer rigoureusement la partie logique métier (système expert ) du reste de l'application.

Or, une séparation rigoureuse entre métier et infrastructure est reconnue comme un élément capital de la qualité du logiciel et de la traçabilité.

Explications complètes ici :

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/fr/cadriciel_eulergui.html

http://support.google.com/youtube/bin/answer.py?hl=fr&msrcid=fupldvs&answer=132460

Mettez en ligne une vidéo 16:9 dans son format d'origine (le format 1280 x 720 est recommandé).

2012-02-05

Videos de EuLerGUI

Scénarios: Getting started

EulerGUI : nettoyage de printemps ;)

EG cadriciel Web : Echo ? discussion relancée avec la liste :

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

jEdit,test suite: actuellement les erreurs alétoires semblent disparues!

Réunion dévelopeurs et techniques à Paris

https://sites.google.com/site/duchessfr/calendrier-conferences

Vous pouvez aussi l'ajouter sur votre agenda Google ici :

http://jduchess.org/duchess-france/les-autres-actions/mettre-a-jour-le-calendrier-des-conferences/

aussi : http://www.agendadulibre.org/

et http://sparklingpoint.com/

2012-02-01

http://jduchess.org/duchess-france/blog/participez-a-la-battle-langag/

2012-01-30

je propose une prés. sur le Web sémantique et les moteurs de règles, et comment les faire marcher ensemble .

Récents documents sur EulerGUI

https://eulergui.svn.sourceforge.net/svnroot/eulergui/trunk/eulergui/html/fr/cadriciel_eulergui.html

https://eulergui.svn.sourceforge.net/svnroot/eulergui/trunk/eulergui/html/fr/connaissances_DL_CNL_regles.xhtml

https://eulergui.svn.sourceforge.net/svnroot/eulergui/trunk/eulergui/html/fr/ia1_logique.xhtml

2012-01-28

Les Lyonnais de LOL

la mailing list, lyon-hackerspace@lists.hackerspaces.org

==> inscrit à : http://lists.hackerspaces.org/mailman/listinfo/

<jmvanel> ok, merci

<mirsal> pour te renseigner: http://www.labolyon.fr

<jmvanel> ok

<mirsal> et http://wiki.lyonopenlab.org

<jmvanel> bien

<mirsal> on est sur IRC à irc.lyonopenlab.net:6697 (SSL) #LOL

<mirsal> on se réunit les mardis soir à notre local, c'est le meilleur moment pour nous rencontrer dans le meatspace

<jmvanel> :)

<jmvanel> jeu de mots pas mal

<mirsal> ^_^

Tue, 19:00 ; 7 Place Louis Chazette, 69001 Lyon

<mirsal> Mais demande sur la mailing list / irc, parce qu'on a quelques universitaires / chercheurs parmis nous avec les contacts qui vont bien pour organiser des trucs du genre en dehors du LOL

<jmvanel> ok, merci

<jmvanel> irc.lyonopenlab.net:6697 c pas immédiat de se connecter , mais je veux pas t'embêter avec ça

<mirsal> SSL

<mirsal> /newserver -ssl irc.lyonopenlab.net 6697

<jmvanel> hélas :

<jmvanel> Recherche de irc.lyonopenlab.net

<jmvanel> * Connexion à lyonopenlab.net (178.79.141.108) port 6697...

<jmvanel> * Connecté. Identification en cours...

<jmvanel> * Déconnecté (Connexion ré-initialisée par le correspondant).

<jmvanel> mais c pas grave, je vais écrire sur la liste

<mirsal> en SSL oO

<mirsal> c'est ce qui se passe quand tu te connectes en clair sur un port crypté

<mirsal> sinon 6667 en clair

<mirsal> (dans tous les cas, plus de monde verra les mails sur la liste)

2012-01-27

Formation IA à Ingésup Paris

proxy.etudiant.insia.org port 3128

COMMIT : première partie d'une formation IA ( en français )

Donné ce matin à http://www.ingesup.com/

http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/fr/ia1_logique.xhtml

On peut voir l'évolution du document sur le dépôt .

2012-01-25

http://geekandpoke.typepad.com/

Formation IA

Pourquoi l'IA est très importante

Les domaines de l'IA

Modéliser la connaissance

Logique formelle

Web sémantique

Notion d'ontologie , Logiques de Description , OWL

Moteurs en chaînage avant RETE (alias moteurs de règles, systèmes de production)

Langages naturels contrôlés (CNL)

Réutilisation de modèles, ontologies, vocabulaires, données

De la connaissance au logiciel: différentes chaînes de traitement, implémentation, déploiement

Avantages par rapport à un développement classique

Idées pour formation IA

Assomptions Prover9 :

man(x) -> mortal(x).   % open formula with free variable x
  man(socrates).

But:

mortal(socrates).

Assomptions Prover9 :

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) ) ).

But Prover9 :

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

___________________________________________________________________________________

Je suis en train de rédiger une synthèse en Français sur le cadriciel.

Visualisation d'information

Voici les slides de Christophe et Raphaël : http://www.slideshare.net/Rencontres_Web_de_donnees/christophe-tricot-et-raphal-velt

2012-01-24

Les outils :

- Web Sémantique ( le Web of Data, alias Linked Open Data == LOD ) , et EulerGUI comme outil d'exploration

- les ontologies OWL et les règles , et EulerGUI et Protégé comme outil

- EulerGUI comme framework (cadriciel) pour développer des applications

centrées sur un système expert

- l'anglais contrôlé, un moyen de saisir des ontologies et règles, avec les outils AceWiki et AceView

Le coeur est une base de connaissance (KB) Drools avec état ( et truth maintenance == système de maintien de la cohérence ). Cette base de connaissance locale en mémoire (Drools/N3) héberge les ontologies et règles applicatives.

Via des règles logiques, la KB communique avec des modules internes qui implémentent les fonctionalités (enfin celles qui ne sont pas commodes à implémenter via règles logiques ).

Via des règles logiques, la KB aiguille les messages avec les processus externes.

Il s'agit d'un d'outils de développement en Logiciel Libre, analogues au MDA (Model Driven Architecture).

2012-01-23

Formation reçue sur Git

http://gitfr.net/blog/

Perforce

Redis, memcached

~/src/w/test1/

http://www-poleia.lip6.fr/~zucker/

2012-01-22

EulerGUI 1.9 : livraison

outil d'exploration du Web Sémantique

- EulerGUI comme framework (cadriciel) pour développer des applications centrées sur un système expert

PSUG #19

Where:156 boulevard Haussmann à Paris

A cette occasion Stephane nous fera la présentation de Gatling https://github.com/excilys/gatling un stress tool opensource code en scala. Ce sera l'occasion de voir un vrai projet qui s'appuie sur scala avec un retour d'experience enrichissant (point fort/faible de scala, DSL, perf, etc).

2012-01-21

Concours Google DataViz, etc

http://www.meetup.com/paris-web-of-data/events/43967882/

http://www.metacarto.fr/

concours Google DataViz

jeanmarc. vanel: https://sites.google.com/site/concoursdataviz2012/widgets

La caisse à outils de la visualisation d'information

https://docs.google.com/present/view?id=0ARkHGYuoOzWEZGQ0c2pyeHZfMTIxaHJ3YmdnZGM&hl=fr

google : récup mails, contacts, adresses

se brancher sur n'importe quel logiciel, par ex. ERP

2012-01-19

genymobile

API Google

http://code.google.com/intl/fr-FR/apis/contacts/

http://code.google.com/apis/calendar/

http://code.google.com/intl/fr-FR/apis/tasks/

Java Media Framework

Java/Java Media Framework dans OpenOffice.org

http://scideralle.org/wiki/doku.php/productions/jmf-ooo

Prez Android

http://www.meetup.com/Android-Paris/events/46922312/

NFC

Hackaton 17 février

un hackathon mondial Android en février?

Plus d'infos: http://www.paug.fr/2012/01/du-17-au-19-fevrier-participez-landroid.html

AOSP

Code source == 6Go ; mémoire conseillée 16 Go

Avec Luc

ça y est: mon server sert du mp3 ou ogg selon le navigateur

conversion mp3 en ogg en parallèle de l'envoi au browser

via quelle librarie ? JFFMPEG ?

3 lib:

http://www.javazoom.net/javalayer/javalayer.html

http://www.javazoom.net/mp3spi/mp3spi.html

http://www.tritonus.org/plugins.html

non 4

http://xiph.org/downloads/

et JMF ?

pas de Java Media Framework API (JMF) dans le paysage ? http://www.oracle.com/technetwork/java/javase/tech/index-jsp-140239.html

Il faudrait qu'on parle de génération de pages Web .


guitar tuner open source

http://www.medici.tv/#!/event-pierre-henry-paroxysms http://www.dimeadozen.org/ http://www.familyzen.fr/tarifs-formule

2012-02-13

Dépêches d'agence pour exercices IA

http://www.afp.com/afpcom/fr/

LONDRES (AFP) - L'islamiste jordanien Abou Qatada, souvent considéré comme l'ancien bras droit de Ben Laden en Europe, a été libéré de prison mardi au Royaume Uni.

WASHINGTON (AFP) - Le vice-président chinois et probable prochain numéro un chinois, Xi Jinping, est arrivé lundi aux Etats-Unis pour une visite clé d'une semaine destinée à améliorer les futures relations entre les deux puissances du Pacifique, a indiqué un responsable américain.

ABIDJAN (AFP) - Trois personnes ont été tuées et près d'une dizaine blessées dans des affrontements impliquant des communautés locales et des militaires à Arrah, dans l'est de la Côte d'Ivoire, a-t-on appris lundi de sources sécuritaire et médicale.

WASHINGTON (AFP) - Le régime syrien a "intensifié la violence" dans certaines villes du pays en utilisant notamment "l'artillerie" contre des civils, a déploré lundi la secrétaire d'Etat américaine Hillary Clinton.

http://www.reuters.fr/article/topNews/idFRPAE81C06H20120213

LYON (Reuters) - Le groupe Monsanto, géant américain des pesticides, a été condamné lundi pour la première fois en France, pour l'intoxication d'un agriculteur charentais.

Le groupe a été jugé responsable par le tribunal de grande instance de Lyon, qui a ordonné une expertise des préjudices subis par Paul François, un céréalier de 47 ans, afin d'établir le montant des dommages et intérêts.

Intoxiqué après avoir inhalé en 2004 du "Lasso", un pesticide aujourd'hui interdit, Paul François a subi de graves troubles neurologiques. Il se bat pour faire reconnaître en France la toxicité de ces produits.

2012-01-16

Arié Bénichou à paris-scala-us. T'as essayé Mimesis Republic ?

2012-01-08

http://fr.wikipedia.org/wiki/Radio-identification

2012-01-05

Il y a un bug dans EulerGUI qui fait que le bouton pour ouvrir l'éditeur reste grisé en cas d'erreur de syntaxe.

2012-01-03

Cette règle ne passe pas avec Drools (ligne 68 ) :

{?C1 @has owl:equivalentClass ?A. ?A owl:onProperty ?P1; owl:someValuesFrom ?C3. ?P1 @has rdfs:domain ?C1; @has rdfs:range ?C3; @has rdf:type owl:FunctionalProperty; owl:inverseOf ?P9. ?C1 @has owl:equivalentClass ?B. ?B owl:onProperty ?P3; owl:someValuesFrom ?C5. ?P3 @has rdfs:domain ?C1; @has rdfs:range ?C5; @has rdf:type owl:FunctionalProperty; owl:inverseOf ?P7. ?C5 @has owl:equivalentClass ?C. ?C owl:onProperty ?P2; owl:someValuesFrom ?C3. ?P2 @has rdfs:domain ?C5; @has rdfs:range ?C3; @has rdf:type owl:FunctionalProperty; owl:inverseOf ?P8. ?C5 @has owl:equivalentClass ?D. ?D owl:onProperty ?P7; owl:cardinality ?X1. ?X1 @has owl:sameAs ?Y1. ?C3 @has owl:equivalentClass ?F. ?F owl:onProperty ?P8; owl:cardinality ?X2. ?X2 @has owl:sameAs ?Y2. ?C3 @has owl:equivalentClass ?G. ?G owl:onProperty ?P9; owl:cardinality ?X3. ?C3 @has owl:oneOf ?E. ?E rdf:first ?Z; rdf:rest rdf:nil. (?Y1 ?Y2) math:product ?Z3. ?Z3 math:equalTo ?Y3} => {?X3 owl:sameAs ?Y3}.

Le triplet en rouge parait inutile, et en plus c'est là que la traduction en Drools échoue :

  eval(  new Double( Double.parseDouble( Triple.n3ValueToNumeric($Y1 )) * Double.parseDouble( Triple.n3ValueToNumeric($Y2 )) ) == Double.parseDouble( Triple.n3ValueToNumeric($Y3 )) )
then
  Double $Z3 =  new Double( Double.parseDouble( Triple.n3ValueToNumeric($Y1 )) * Double.parseDouble( Triple.n3ValueToNumeric($Y2 )) );
  Triple newTriple;
  TripleResult newTripleResult;
  String $Y3 = Triple.resource("Y3") ;
  newTriple = new Triple(  );
  newTriple.setSubject( $X3 );
  newTriple.setPredicate( "<http://www.w3.org/2002/07/owl#sameAs>".toString() );
  newTriple.setObject( $Y3 );  insertLogical( newTriple );

end

2012-01-02

http://xlinfo.fr/ : un voisin à Lyon

Utilisons Wordnet et des ontologies pour nos modèles de données

Utilisons Wordnet et des ontologies pour nos modèles de données ( softwaresemantics.fr )

Mis mon grain des sel:

http://www.softwaresemantics.fr/?p=205&amp;lang=fr#comment-2

Fonc tion nant avec SUMO , il y a MILO (alias Mid-Level ontol ogy) du même auteur.

Je dirais que les ontolo gies de référence grosses, comme Word Net, ser vent à aligner l’ontologie applica tive, de manière à assurer une meilleure interopéra bil ité au niveau des don nées pour l’application.

Mais en fait, la démarche est plutôt de s’adosser sur des ontolo gies nota bles et con nues du domaine métier (réu tiliser et éten dre). Et ce sont ces ontolo gies nota bles qui doivent (ou devraient) s’aligner sur WordNet.

Il me sem ble que cet aligne ment ne sert pas *directe ment* l’application batie sur l’ontologie applica tive; mais elle four nit, via les général i sa­tions de classes et pro priétés, et via les stan dards du Web Séman tique, des pos si bil ités sup plé men­taires d’interaction au niveau des don nées avec d’autres appli ca tions manip u lant ces con cepts plus généraux.

Ca c’est plutôt si on fait une appli ca tion pro duc­trice de don nées (comme un ges tion naire de tâches ou de con tacts). Mais le point de vue est dif férent si on fait une appli ca tion con som ma­trice de don nées (comme un agent cher chant sur Inter net ). Dans ce dernier cas un aligne ment du domaine métier sur Word Net, Wikipedia, SUMO, et d’autres est très utile.

2011-12-17

Demain, New York pour toute l'année !

2011-12-16

A la recherche d'une manière de communiquer entre une app. Java et une IHM HTML5

jeanmarc. vanel: A la recherche d'une manière de communiquer entre une app. Java et une IHM HTML5

Cyril Hansen: si le code client HTML5 est en js, alors il semble logique d'utiliser du JSON

Cyril Hansen: http://fr.wikipedia.org/wiki/JavaScript_Object_Notation

Cyril Hansen: si votre client est en GWT, j'imagine qu'il faut utiliser protocol buffers (http://code.google.com/p/protobuf/)

- 21:14 -

Cyril Hansen: http://code.google.com/p/google-gson/

jeanmarc. vanel: OK, mais JSON est iun fomrat , pas un protocole ou une couche de comm

Cyril Hansen: http://code.google.com/p/google-gson/

Cyril Hansen: pardon http://json.org/

Cyril Hansen: il y a pléthore d'implémentation

Cyril Hansen: mais vous cherchez quelque chose de plus haut niveau ou plus structurant ?

Cyril Hansen: les ihm en js utilisent il me semble json "à la main"

Cyril Hansen: enfin quand tout le js est fait à la main evidemment

jeanmarc. vanel: je veux échanger en asynchrone des évènements entre le coeur en Java et l'IHM HTML5

Cyril Hansen: si vous voulez quelque chose de plus sophistiqué, ca dépendra de vos choix pour l'IHM

Cyril Hansen: je ne vois rien de standard au delà

- 21:21 -

Cyril Hansen: Pour smartclient vous avez un peu de javadoc qui peut vous donner une idée de comment ca fonctionne : http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/data/RestDataSource.html

Cyril Hansen: les widgets savent sérialiser/déserialiser leurs données contenues au format JSON ou XML

Cyril Hansen: si vous dites asynchrone, moi je comprend "AJAX"

jeanmarc. vanel: choix pour l'IHM ? comment ça ? Ce ne sera qu'une vue, et tout ce que le JS doit faire c'est envoyer les ébènements utilisateur et mettre à jour la vue

Cyril Hansen: choix ihm = choix de framework js par exemple

Cyril Hansen: dojo, jquery, etc.

Cyril Hansen: si votre page est simple, faites tout à la main, ca marche

Cyril Hansen: json est supporté nativement par javascript

jeanmarc. vanel: json *est* du javascript

Cyril Hansen: oui mais il a son propre acronyme

jeanmarc. vanel:

- 21:27 -

Cyril Hansen: http://www.webreference.com/authoring/languages/html/HTML5/index.html

Cyril Hansen: New Features in HTML 5

Native JSON

JSON, or JavaScript Simple Object Notation is a popular alternative to XML, which was almost the de-facto standard before the existence of JSON. Until HTML 5, you needed to include libraries to encode and decode JSON objects. Now, the JavaScript engine that ships with HTML 5 has built-in support for encoding/decoding JSON objects.

jeanmarc. vanel: Plutôt quier le populaire JSON, je préfère utiliser N-triples ; de toute façon le JSON messager il faut le le traduire dans les structures finale

Cyril Hansen: comme vous voulez, ca dépend dans quelle couche vous voulez gérer vos spécificités et votre complexité métier

Cyril Hansen: personellement j'aimerai en faire le minimum en javascript pour 2 raisons : le code est moins maintenable (et doit donc rester court) et le runtime est moins performant

jeanmarc. vanel: pour l'instant i l me semble qu'un peu de code socket à la main en JS d'un et Java de l'autre fera le travail .

jeanmarc. vanel: JS d'un côté

Cyril Hansen: socket js ??

Cyril Hansen: vous me faites vraiment peur là

jeanmarc. vanel: HTTP socket au moins il y a ça

Cyril Hansen: j'aime mieux ça

Cyril Hansen: coté serveur vous traiter une requête type web service

Cyril Hansen: avec un mapping json ou XML

Cyril Hansen: coté client c'est une requête HTTP programmatique

jeanmarc. vanel: heu non , N-Triples

- 21:33 -

jeanmarc. vanel: on ouvre la socket au début, et après le messages circulent dans les 2 sens

Cyril Hansen: si vous ne vous ramener pas à un mapping standard, vous devrez implémenter une servlet qui fournira un résultat "brut" (texte ou binaire)

jeanmarc. vanel: en gros de l'Ajax mais mais pas XML

Cyril Hansen: je comprends mieux votre question, vous voulez éviter xml

Cyril Hansen: car vous voulez une structure différente

jeanmarc. vanel: Et on n'a pas besoin de la lourde infra servlet pour ouvrier une socket servlet

jeanmarc. vanel: Et on n'a pas besoin de la lourde infra servlet pour ouvrier une socket.

Cyril Hansen: là vous êtes vraiment à contre courant : un serveur de servlet (tomcat ou jetty) ce n'est vraiment pas ca que j'appelerais du bloat de nos jours

Cyril Hansen: industrialisation / réutilisation ??

Cyril Hansen: faites attention, gérer le réseau au niveau de la socket c'est vraiment pas simple !!

Cyril Hansen: TCP est tres efficace mais tres complexe

Cyril Hansen: sinon comme protocole pour virer xml vous pouvez regarder hessian

Cyril Hansen: http://hessian.caucho.com/

Cyril Hansen: mais cela ne doit pas etre trop utilisé en hs

Cyril Hansen: en js

- 21:38 -

jeanmarc. vanel: je ne sais pas si j'ai dit , mais je ne considère pour l'instant qu'un serveur parlant à 1 client sur la même machine

Cyril Hansen: il semble que jetty puisse se configurer en pur http pour utiliser très peu de mémoire

Cyril Hansen: fonctionnellement vous n'avez pas besoin d'http je suis d'accord, mais coté js, il sera bcp plus difficile d'accéder au réseau hors http

jeanmarc. vanel: Dans ce contexte précis, quel est l'avantage d'utiliser Jetty ou un autre serveur servlet ?

Cyril Hansen: donc http est quelque part imposé techniquement par la couche cliente

jeanmarc. vanel: peut-être bien , en effet

Cyril Hansen: et d'autre part, implémenter un serveur http sur TCP est très complexe...

Cyril Hansen: donc il est nécessaire d'utiliser l'implémentation existante fiable la plus légère -> jetty

jeanmarc. vanel: implémenter un serveur http sur TCP est très complexe... pas sûr

- 21:47 -

Cyril Hansen: je vous laisse étudier des exemples de code existant

Cyril Hansen: http://jetty.codehaus.org/jetty/jetty-6/xref/index.html

Cyril Hansen: http://redmine.lighttpd.net/projects/lighttpd/repository/show/trunk/src

jeanmarc. vanel: Il me semble que ceci est fait pour moi : http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17

- 21:54 -

jeanmarc. vanel: http://en.wikipedia.org/wiki/WebSocket

Cyril Hansen: je vois que ca répond à notre besoin/souhait d'éviter http

Cyril Hansen: mais cette spec me semble encore assez complexe

Cyril Hansen: le handshake est compatible avec les serveur http

jeanmarc. vanel: oui

Cyril Hansen: la gestion d'erreur reste assez sophistiqué

Cyril Hansen: ée

Cyril Hansen: vous pouvez vous en inspirer, mais je reste persuadé que cela va vous couter bcp de temps coté serveur de ne pas utiliser http sans parler de la complication coté client

jeanmarc. vanel: un protocole est forcément un peu complexe, si il veut bien faire les choses pour les aspectes exceptions et fermetire, mais il faut utiliser des libs

jeanmarc. vanel: Sur les inconvénients de HTTP, vous avez vu l'intro de http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17 ?

jeanmarc. vanel: URL déjà citée )

Cyril Hansen: il y a une polémique de sécurité sur websocket qui a repoussé son déploiement

Cyril Hansen: sinon en java vous avez effectivement une implémentation

Cyril Hansen: mais pas coté client : c'est donc coté client que cela va être dur !

jeanmarc. vanel: http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations

- 22:00 -

Cyril Hansen: je suis d'accord que cela serait plus propre, mais coté client vous faites quoi ?

Cyril Hansen: il n'y a aucun support pour IE

Cyril Hansen: et aucun support officiel pour les autres navigateurs

jeanmarc. vanel: oui, c'est clairement un peu jeune

jeanmarc. vanel: mais ça viendra sans doute

Cyril Hansen: la culture js n'est pas orientée architecture

Cyril Hansen: tout le monde fait du http car c'est la seule chose qui passe les firewall

Cyril Hansen: et puis apres il y a l'habitude

jeanmarc. vanel: et puis l'aspect HTTP / versus WebSocket ne change rien au reste de l'archi.

Cyril Hansen: le web est clairement un monstre en terme de conception technique, je suis d'accord avec Alan Kay sur ce point

Cyril Hansen: le fait que websocket ne soit meme pas normalisé est un symptome clair

Cyril Hansen: c'est un besoin qui est apparu à la fin des années 1990..

jeanmarc. vanel: jsi je comprends bien , une fois la socket HTTP normale établie, le massages passent bien dessus

Cyril Hansen: je ne pense pas...

- 22:05 -

Cyril Hansen: la compatibilité c'est coté serveur : pour avoir un serveur web en frontal qui "reconnait" les requetes websockets et les dispatche correctement

Cyril Hansen: enfin c'est ce que j'ai compris

jeanmarc. vanel: j'ajoute que pour moi, les messages qui vont passer seront un peu les mêmes que ceux de mon appli en ligne de commande N3 .

Cyril Hansen: l'idée c'est que websocket ne nécessite pas un support d'http coté serveur, mais peut etre implémenté par un serveur http

jeanmarc. vanel: Jettyy semble le faire

Cyril Hansen: en tout cas c'est ce que je vous conseille, d'utiliser jetty comme frontal http coté serveur

jeanmarc. vanel: frontal WebSocket

Cyril Hansen: peut etre mais reste toujours le problème du client si je ne me trompe pas

jeanmarc. vanel: je pourrais toujours revenir à HTTP le moment venu

- 22:11 -

jeanmarc. vanel: au fait , j'ai vu joli truc en HTML5 : http://www.youtube.com/watch?v=XhMN0wlITLk&feature=player_embedded

jeanmarc. vanel: enfin , joli techniquement

2011-12-12

Besoin d'un développeur Java pour EulerGUI (EDI et cadriciel)

Finalement, il n'est pas indispensable d'être un expert Java (d'ailleurs la migration à Scala est en cours).

Bien sûr, un minimum de connnaissance Java est nécessaire.

Ce qui fera la différence, c'est une familiarité avec n'importe quel genre de programmation logique: Prolog, Drools, Ilog, autres moteurs de règles, SWRL, Prova, Sumo / SigmaKee, KIF, CLIPS, CHR, OpenCyc, etc .

Ou la volonté d'apprendre la programmation logique.

Egalement les qualités de curiosité, facilité d'expression écrite et orale sont importantes.

Et la volonté d'investir du temps dans un projet Open Source durable, la communauté et les projets voisins.

Je propose le scénario suivant.
ces projets sont Open Source,et que c'est une dimension essentielle, pour plusieurs raisons.J'ai été déçu une fois par un développeur qui ne connaissait pas lachose, et qui a simplement profité de l'aubaine pendant un contrat; iln'avait jamais participé aux projets avant, ni après d'ailleurs.Ce n'est pas grave si vous n'avez pas d'expérience de projets OSS.Ce que je veux dire, c'est que si vous avez compris les objectifs duprojet, et les approuvez suffisamment, alors vous devriez avoir enviede commencer à l'utiliser tout de suite. Quand j'étais salariéailleurs, sur des technos qui m'intéressaient moyennement, jetravaillais en // sur plein de choses, et je continue à le faire.N'y voyez pas une tentative de profiter d'un travail non rétribué, cen'est pas ça du tout . C'est simplement donner une préférence à ceuxqui sont déjà dans la communauté, et qui ont fait un peu leurs

preuves.

2011-12-09

http://xlinfo.fr/

2011-12-08

Bonjour Alexandre

Je serai du 18 au 1 janvier à Brooklyn.

En fait je viens surtout voir ma fille ainée.

Mais je serai ravi d'avoir des contacts avec des acteurs notables du Web Sémantique.

Si tu penses à des gens ...

Une autre idée est de proposer un exposé ou une séance de code avec le cadriciel EulerGUI (SemWeb+règles+Java), après d'un User Group ou autres.

J'ai une prés. où je parle de toute la chaîne :

http://jmvanel.free.fr/presentations/connaissances_DL_CNL_regles.xhtml

mais en fait ça serait bien en fonction des publics de séparer au moins 3 sujets:

- EulerGUI comme outil d'exploration du Web Sémantique

- EulerGUI comme framework (cadriciel) pour développer des application centrée sur un système expert

- l'anglais contrôlé, un moyen de saisir des ontologies et règles

2011-12-07

GdMap est un logiciel qui permet l'exploration graphique de vos disques.

2011-12-06

un article très intéressant intitulé "A Taxonomy of musical genre".

J'ai alors visité le site de l'auteur : http://www.csl.sony.fr/~pachet/

Sebastien Douche ( sdouche@gmail.com ) donne régulièrement des présentations sur le sujet. Il anime aussi le site Gitfr ( http://gitfr.net/blog/ et https://twitter.com/#!/gitfr).

Des fonctionnalités à l'architecture avec le cadriciel EulerGUI

Prenons le cas d'une application de gestion des contacts FOAF.

Les choses en vert sont spécifiques à FOAF; le reste est largement générique.

Sur l'ontologie des actions de l'utilisateur

Des spécifications à l'application

Une fois que l'on a une ontologie des concepts "métier", il convient de lister les actions effectuées par l'application en réponse aux actions de l'utilisateur. D'une façon générale, ces actions vont consister à :

A ce stade, on ne préjuge pas de l'apparence visuelle de l'application, ni du mode de stockage.

Cela permet justement de créer une interface en ligne de commande, qui permet :

Liste des actions de l'application

On écrit une telle liste pour une application qui gèrerait des profils FOAF Friend Of A Friend ).

Voici une première liste des actions effectuées par l'application en réponse aux actions de l'utilisateur.

Le symbole ==> indique que l'action renvoie quelque chose. URI désigne un URI (on pourrait écrire owl:Thing ou rdfs:Resource ).

Cet URI typiquement sera un URL ; cela pourra être un fichier local absolu ou relatif si on gére des fichiers locaux (textes, images, audiovisuel).

?, + et * désignent, classiquement, un argument facultatif, de multiples arguments, de multiples arguments ou rien.

display(URI) ==> les données sont affichées
speech(URI) ==> des sons résonnent (via un outil de prononciation ( text to speech)

query(xsd:string) ==> rdf:Resource
create(owl:Class) ==> rdf:Resource
    créer un individu avec classe donnée; affiche un formulaire pour les propriétés
remove(rdf:Resource)
    supprimer tous les triplets ayant cet URI comme sujet ou objet

L'application en ligne de commande

Voici l'allure générale des commandes qui seront disponibles, correspondant aux actions ci-dessus. On s'appuie sur le langage N3 ( Primer: Getting into RDF & Semantic Web using N3 ) .

@prefix foaf:  <http://xmlns.com/foaf/0.1/> .
@prefix fa:    <http://eulergui.sf.net/ontology/foaf-application.owl.n3#> .
@prefix files: <http://eulergui.sf.net/ontology/system.owl.n3#> .

<dir/subdir> files:list ?F . # liste les fichiers locaux sous forme URI
<> <owl:import> <???> .
<Jos> ?P ?V . # implémente display(URI) ==> les données sont affichées
# la complétion serait utile pour les noms de fichiers ...
?P a foaf:Person ; foaf:homepage ?S ; foaf:currentProject ?CP .  # recherche les personnes ayant un site Web et un projet courant

Architecture basée sur le cadriciel EulerGUI

On se base sur un système expert intégré à Java, basé sur le moteur d'inférence Drools ( on dit aussi moteur d'inférence, moteur de règles, système de production).

La génération de classes métier POJO est inutile, car les données de la session hébergées dans le moteur sous forme de triplets RDF.

Les règles métiers et applicatives sont interprétées directement par le moteur.

Références:

Notes sur les librairies Java pour les métadata MP3 et Cie

<jmvanel> http://www.id3.org/Implementations indeed interesting; there are 3 Java libs , but are they 100% Java ? not sure ...

<jmvanel> https://github.com/mpatric/mp3agic#readme this one is 100% Java

<jmvanel> http://java.net/projects/jaudiotagger/ : has many Tags: tagger, mp3, mp4, id3, flac, ogg, music

<jmvanel> since it comes from Oracle :( , it should be 100% Java , but there is no doc. on the site .

<rszeno> this is new wave, if is hard to write it must be also hard to use it, :)

<jmvanel> :)

<jmvanel> This one has a GUI, and even a doc in French : http://entagged.sourceforge.net/index.php#news , BUT last release is 2008

<rszeno> http://www.linuxjournal.com/content/music-notation-software-linux-progress-report-part-1

<rszeno> http://www.linuxjournal.com/content/music-notation-software-linux-progress-report-part-2

* rszeno searching and indexing must be part of renfield jobs

<jmvanel> :)

<rszeno> dave phillips have also an three parts article for linux jurnal about Java Sound & Music Software

http://www.linuxjournal.com/users/dave-phillips?page=6

2011-12-05

Notes architecture EulerGUI / lecteur sémantique

use case semplay : extraction d'une tranche par style danse, réputation

* constituer une liste d"écoute à partir de l'extraction

* écouter une piste; utilisation du clavier, comme dans mplayer

2011-12-01

proposer un échange de savoirs Scala <==> règles

chercher un développeur Java ouvert à la programmation logique

Requêtes en mémoire avec cadriciel EulerGUI

Je dois avancer sur les requêtes en mémoire avec un million de triplets ou plus.

J'ai fait un premier test concernant l'empreinte mémoire. Pour un

graphe aléatoire de 1 million de triplets, la mémoire utilisée est de

53Mo, ce qui est raisonnable. Le chargement initial prend moins d'une

seconde. Cela correspondrait à 10 000 morceaux ayant chacun 10

attributs. Même avec une machine bas de gamme récente ( ne pas

concevoir du logiciel pour les machines dépassées ! ) on peut

multiplier la mémoire utilisée par 20, atteignant 1 Go et 200 000

morceaux.

Je dois encore valider les performances des requêtes et déclenchements

de règles sur un cas réaliste. Comme cas test, on devrait pouvoir

trouver des données du côté de la BBC. On pourrait alors tester :

1. La recherche full texte avec un mot-clé

2. La recherche avec un mot-clé interdit

3. Recherche sur plusieurs critères.

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

Avec C.H.

environnement de dév ---- importer ontologie

importer code Java

éviter la duplication

2011-11-30

http://www.softwaresemantics.fr/?p=183&lang=fr

2011-11-28

Un petit "dialogue" sur le chat SFR

Alex : Bonjour, je suis à votre disposition.

Alex : Comment puis-je vous aider ?

Client: interruption de service ASDL depuis plusieurs heures;

Client: relancé plusieurs fois la box

Client: NEUF_9A94 - tél 01 71 60 88 50

Client: problème connu ?

Alex : Vous êtes bien Madame Dorota Vanel ?

Client: son époux :)

Client: informaticien, 20 ans d'expérience

Alex : Je vous remercie pour les précisions.

Client: ;)

Alex : Pour faciliter la navigation sur notre site tout en poursuivant notre échange, je vous invite à déplacer la fenêtre de chat en cliquant sur « Oui ».

Client: je suis pas chez moi

Alex : Pouvez vous me donner plus de détails à ce sujet ?

Client: y a -t-il sur sfr.fr un endroit où les problèmes réseau sont répertoriés ?

Client: le wifi , et c'est tout

Client: vous êtes pas un bot ?

Alex : Non, je suis un technicien niveau I.

Client: :)

Alex : Je vous prie de me préciser plus en détail votre demande.

Client: pas de réseau

Alex : Je viens juste de vérifier voter dossier.

Client: et alors ?

Alex : Monsieur il y a actuellement un dysfonctionnement sur le réseau impactant plusieurs clients SFR.

Client: ça m'apprend rien

Alex : Cela implique une indisponibilité de vos services.

Alex : Nos techniciens terrain sont déjà au courant et travaillent à sa résolution. Au nom de SFR je m’excuse pour ce désagrément et je vous invite à ne pas débrancher vos équipements et à tester régulièrement vos services.

Client: réparation prévue quand ?

Alex : Le dysfonctionnement est apparu aujourd'hui à 15:50.

Client: ok

Alex : Malheureusement je ne dispose pas d’un délai de résolution précis, mais rassurez vous nous faisons de notre mieux pour limiter cette indisponibilité.

Alex : Je vous remercie de votre compréhension.

Client: je m'en doute

Client: y a -t-il sur sfr.fr un endroit où les problèmes réseau sont répertoriés ?

Client: Pouquoi les infos réseau comme ceci ne sont pas sur mon espace client ?

Alex : Veuillez m’excuser pour ce délai d’attente.

Client: Est-ce que cette fonctionnalité est prévue ?

Alex : Ce type d'information ne se trouve pas sur noter Espace Client.

Client: je sais

Client: mes yeux fonctionnent assez bien ;)

Client: Est-ce que cette fonctionnalité est prévue ?

Alex : Très bien.

Client: ?

Alex : SFr prend en considération toutes les demandes de nos clients.

Client: et puis ?

Alex : Pour le moment, je ne dispose pas d'un temps de mise en oeuvre de cette fonctionnalité.

Client: Allez vous remonter cette suggestion à qui de droit ?

Client: Je signale que c'est très important pour la qualité du service,

Client: et ça évite de déranger l'assistance ... comme je fais en ce moment

2011-11-26

Une idée qui simplifie l'ajout de commandes dans le shell N3

Au réveil j'ai eu une idée qui simplifie ...

Je pensais depuis longtemps qu'il fallait implémenter une sorte de verrue pour ajouter des commandes dans le shell N3;

J'ai réalisé qu'il y a ce qu'il faut pour le faire, même au niveau utilisateur.

Si on connait les les appels Java qui vont déclencher l'action, il suffit d'ajouter un règle du genre :

 :session :maCommande ( "argument1" ) => { les appels Java ... } .

Ca peut se faire dans les préferences utilisateur, ou dans une base de règles lue au démarrage de la KB utilisateur .

<jmvanel> Je devrais peut-être citer Spring comme analogie.

<lcpvrr> si { :a :b :c } => { _:PANE javam:add _:LAB }

<lcpvrr> que se passe t-il si :a :b :c est est retracté

<jmvanel> rien

<jmvanel> même en Drools pur rien ne se passerait,

<jmvanel> car il faut "apprendre" au système quel est le contraire de l'opération javam:add ;

<jmvanel> Drools (et Drools/N3 ) savent retirer un objet qui a été ajouté , et c'est tout ce qu'il savent faire par défaut.

<jmvanel> C'est un domaine inexploré ...

<jmvanel> en attente d'intuition géniale ...

<jmvanel> si on { :a :b :c } => { ?LAB a java:javax-swing-JLabel . _:PANE javam:add ?LAB . } .

<jmvanel> et qu'on retracte :a :b :c , le ?LAB créé sera bien retiré de la KB, mais dans l'IHM rien ne se verra bien sûr .

<jmvanel> Il faudrait que l'opération _:PANE javam:add ?LAB . soit représentée par un objet ,

<jmvanel> et que lors de la rétractation de cet objet , l'opération _:PANE javam:remove ?LAB . se fasse .

<jmvanel> je vais poser une question sur #drools

2011-11-25

Visite utilisateur EulerGUI

Voilà le lien qui ne voulait pas se charger dans EulerGUI avec la fonction drag and drop

http://139.91.183.30:9090/RDF/VRP/Examples/tap.rdf

Voilà des liens sur VAMP et Sonic Annotator

http://www.vamp-plugins.org/

http://omras2.org/SonicAnnotator

TODO

2011-11-24

Problèmes avec Music Ontology

Elle ne peut pas s'ouvrir avec Protégé 4.1 . Il y a au moins 3 problèmes.

Je tâche de mettre ça au clair avec Yves Raymond, l'éditeur de cette ontologie, sur le canal IRC swig sur freenode.fr .

Je dois pouvoir créer une version ouvrable avec Protégé.

Je commence par remplacer les préfixes tout nus qui ne passent pas avec OWL API :

.,$s=mo: =<http://purl.org/ontology/mo/> =

Je dois aussi "grogner" apr`de la liste de courrier Prot) 4 .

2011-11-23

Extraction ID3 en RDF

zazi (Bo Ferri)

https://github.com/zazi

http://smiy.wordpress.com/

https://github.com/zazi/pmkb-id3-tag-extractor/issues/1

Je vais regarder ce qu'on peut faire avec ceci :

https://github.com/zazi/pmkb-id3-tag-extractor#readme

[ERROR] Plugin org.semanticdesktop.aperture:aperture-vocabulary-maven-plugin:1.1 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.semanticdesktop.aperture:aperture-vocabulary-maven-plugin:jar:1.1: Could not find artifact org.semanticdesktop.aperture:aperture-vocabulary-maven-plugin:pom:1.1 in central (http://repo1.maven.org/maven2) -> [Help 1]

2011-11-18

Test requ5ery de Luc

declare namespace jf = 'http://joafip.sourceforge.net/schema';
for $x in
  //jf:field [ jf:reference [ @id = itemObjectIdentifier ]
                            [ @name='value' ]
             ]
    /ancestor::jf:object [ @class = 'net.sf.joafip.java.util.PTreeMapEntry' ]
return <l>{$x/@id}</l>

2011-11-17

Exemple règle N3 SKOS

{ ?C a skos:Concept ;
  :session :proposedTerm ?TERM .
  ?C skos:prefLabel ?L .
  ?TERM string:substring ?L .
} => {
  :session :printConfirmMessage (
    "proposed Term" ?TERM "is similar to existing concept" ?L
  ) ; :printHyperlinkTo ?C
  . 
}.

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

TODO

- put internal KB features in an expert mode

- show internal KB in pres. ; in video

_____________________________________________________

marmite: femmes codeuses

société matriarcale en Inde

modèle MBTI

effet miroir

Cora how to be a woman - girls' club

barbara Liskoff

Sarah

marissa mayer

esprit criminel : geeckette

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

Test WordNet avec Protégé et EulerGUI

généralités : thésaurus maître

SKOS, WordNet , WN fr

example de requête N3 pour validation et recherche de candidats

1 mn 1.9Go -rw-rw-r-- 1 jmv jmv 100428111 2006-10-09 15:18 wordnet-wordsensesandwords.rdf

% wc wordnet-*rdf
...
3831369 5897699 174782582 total

Pour un total de 175 Go , Protégé utilise 2.5 Go de mémoire; chargé en 1mn 53 .

<> a owl:Ontology ;
  owl:imports
      <wordnet-similarity.rdf>
    , <wordnet-partmeronym.rdf>
    , <wordnet-classifiedby.rdf>
    , <wordnet-pertainsto.rdf>
    , <wordnet-membermeronym.rdf>
    , <wordnet-derivationallyrelated.rdf>
    , <wordnet-hyponym.rdf>
    , <wordnet-synset.rdf>
    , <wordnet-glossary.rdf>
    , <wordnet-wordsensesandwords.rdf>
 .

% Using OWL API version 3.2.3.1824
Rebuilding entity indices...
 ... rebuilt in 1 ms
loading Anonymous-4 from file:/home/jmv/ontologies/wordnet_all.n3
Error logged
java.lang.IllegalArgumentException: URI is not absolute
        at java.net.URI.toURL(URI.java:1095)
        at org.protege.editor.owl.model.io.WebConnectionIRIMapper.getDocumentIRI(WebConnectionIRIMapper.java:41)
        at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.getDocumentIRIFromMappers(OWLOntologyManagerImpl.java:951)
        at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.loadOntology(OWLOntologyManagerImpl.java:650)
        at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.loadImports(OWLOntologyManagerImpl.java:1084)
        at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.makeLoadImportRequest(OWLOntologyManagerImpl.java:1112)
        at org.coode.owlapi.rdfxml.parser.TPImportsHandler.handleTriple(TPImportsHandler.java:88)
        at org.coode.owlapi.rdfxml.parser.OWLRDFConsumer.handleStreaming(OWLRDFConsumer.java:1626)
        at org.coode.owlapi.rdfxml.parser.OWLRDFConsumer.statementWithResourceValue(OWLRDFConsumer.java:1581)
        at uk.ac.manchester.cs.owl.owlapi.turtle.parser.OWLRDFConsumerAdapter.handleTriple(OWLRDFConsumerAdapter.java:86)

2011-11-15

Recherches:

SKOS alignement; SKOS import

https://gforge.inria.fr/projects/lingwb

Inscrit sur http://data.sncf.com/

2011-11-15

mondecalabs ; freebase

europeana

mulesource.org ESB

Scala Check; parallélisation facile avec par ???

Weka

2011-11-14

Demain je participe à un séminaire de développement avec un client prometteur .

Pour le 18 je dois répondre à un appel d'offre avec semweb et gestion documentaire.

En plus jeudi j'ai donné un séminaire à Rennes sur EulerGUI etc, qui a induit un peu de maintenance.

Une communauté française qui communique au travers d’un planet : http://uima-fr.org/planet/

Scala pro con

langage fonctionnel non strict

il y a de la concision , du naturel partout ; operateurs

pas de null ; retour de fonction multiple; fonctions anonymes (lamdba) , curying

trouver une erreur au + tôt : moins cher

un autre langage pour la VM Java

On peut avoir un logiciel et une équipe mixte Java-Scala.

monde des langages faiblement typés: concision; monde des langages typés : lourdeur

Scala : le meilleur des deux ( aussi interface en liste de commande )

écosystème: sbt, Maven, PSUG

manque environnement: compilateur et EDI trop lents, refactoring, libraries

J'ai expérimenté le "extract local" (variable) du menu refactor sur : x / boxThickness - Hélas eclipse ne repère pas la deuxième occurence de l'expression.

j'aprécie les infobulles (tooltips) sur le type

j'aprécie d'avoir le typage propagé et inféré, d'avoir l'information dans les infobulles, et de ne pas avoir le code encombré par ça.

preuve de programme

risque d'un langage multiparadigme , comme C++

on a besoin d'un sous-ensemble simplifié de Scala (cf C++), renforcé par un compilateur / vérificateur

peut être en fait plus simple que Java

triple store, Web Sémantique

Questions pour appel d'offre

Python ?

corpus existant ?

important d'indexer les expressions ?

N-Gram UIMA catégorisation <--- FP

2011-11-13

Who's who du Web Sémantique Francophone

Faire tourner Sulci (suite)

il faut configurer le projet django maintenant

<ybon> pour ça, cd sulcisite

<ybon> et gvim settings.py

<ybon> là, il faut faire deux choses: ajouter "sulci" dans INSTALLED_APPS

<ybon> et configurer la DB

<ybon> normalement, il faut mettre HOST: "localhost"

<ybon> "USER": "jmv"

<ybon> pas de password, ni de port

<ybon> et utiliser psycopg comme routeur, mais il me semble que c'est la valeur par défaut

Questions à Yohann

Que signifie exactement count dans la table sulci_trigger ?

2011-11-11

http://www.economie.gouv.fr/economie/poles-competitivite-lancement-treizieme-appel-a-projets-0

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.lang.reflect.Array.newArray(Native Method)
at java.lang.reflect.Array.newInstance(Array.java:70)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1649)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1341)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1685)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1341)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at net.sf.parser4j.parser.service.data.ParserDataIO.readFromInputStream(ParserDataIO.java:103)
at net.sf.parser4j.parser.service.data.ParserDataIO.readFromClassPath(ParserDataIO.java:75)
at eulergui.parser.n3.impl.parser4j.service.N3Parser.initialize(N3Parser.java:71)
at eulergui.drools_engine.ParserLink.makeN3Parser(ParserLink.java:175)
at eulergui.drools_engine.ParserLink.doParse(ParserLink.java:148)
at eulergui.drools_engine.ParserLink.parse(ParserLink.java:113)
at eulergui.project.N3Source.doParseN3(N3Source.java:458)
at eulergui.project.N3Source.manageParseN3(N3Source.java:402)
at eulergui.project.N3Source.update(N3Source.java:378)
at eulergui.project.N3Source.parseResult(N3Source.java:439)
at eulergui.inference.drools.impl.N3SourcetoDrools.translate(N3SourcetoDrools.java:255)
at eulergui.inference.drools.impl.N3DroolsEngineFacade.translate(N3DroolsEngineFacade.java:91)
at eulergui.project.Project.doTranslateN32Drools(Project.java:934)
at eulergui.project.Project.translateN32Drools(Project.java:899)
at eulergui.project.Project.prepareDrools(Project.java:863)
at eulergui.gui.controller.ApplicationKB.<init>(ApplicationKB.java:99)
at eulergui.gui.controller.ApplicationKB.instance(ApplicationKB.java:77)

2011-11-10

Séminaire à Rennes

connaissances_DL_CNL_règles, EulerGUI

lexevs : NCI

Valérie B : sur Windows :

problématique Drools:

général:

Maintenant, je voudrais aussi faire tourner l' exemple de Pascal VH de l'autre façon: en interprétant l'ontologie OWL via les règles de Jos.

eg family.n3
Exception in thread "doN3SourceAdded: family-rewritten.n3" Exception in thread "doN3SourceAdded: family.n3" java.lang.RuntimeException: Erreur pendant  re-parsing N3 source "family-rewritten.n3"
        at eulergui.project.N3Source.manageParseN3(N3Source.java:415)
        at eulergui.project.N3Source.update(N3Source.java:378)
        at eulergui.gui.controller.N3ConversionRefesher.updateN3(N3ConversionRefesher.java:120)
        at eulergui.gui.controller.UpdateN3Thread.run(UpdateN3Thread.java:40)
Caused by: java.lang.NullPointerException
        at net.sf.parser4j.parser.service.Parser.parseTerminalValue(Parser.java:727)
        at net.sf.parser4j.parser.service.Parser.readTerminalValueAndParse(Parser.java:645)
        at net.sf.parser4j.parser.service.Parser.parse(Parser.java:387)
        at eulergui.parser.n3.impl.parser4j.service.N3Parser.parseN3(N3Parser.java:177)
        at eulergui.drools_engine.ParserLink.doParse(ParserLink.java:150)
        at eulergui.drools_engine.ParserLink.parse(ParserLink.java:113)
        at eulergui.project.N3Source.doParseN3(N3Source.java:458)
        at eulergui.project.N3Source.manageParseN3(N3Source.java:402)
        ... 3 more

2011-11-08

Application musiques

méthodologie CommonKads pour les systèmes experts ?

«Music Ontology Specification2» : insuffisances

orthographe/correcteur-francais

Pour info, ce site est pas mal : http://www.reverso.net/orthographe/correcteur-francais/ ;

<jmvanel> Il a corrigé ceci : De plus, les danseurs sont à l’affût des nouveautés, et aime bien danser sur des musiques actuelles .

En effet LanguageTool est prometteur ; lancé

java -jar LanguageToolGUI.jar

mais on peut aussi le mettre dans LibreOffice.

2011-11-07

fonctions mathématiques désactivés dans EulerGUI (réactivées)

J'ai découvert horrifié que depuis la révision 2349 du sam. 09 avril 2011, "WIP : simplifying the N3 - Java mapping (working on updating the KB on focus lost events) : large commit" , les tests sur les fonctions mathématiques sont désactivés.

Je pense que ce n'est pas une grosse modif. cependant.

2011-11-04

Inscrit PSUG 22 nov

http://www.doodle.com/nu8bpks6aua4rkx2#table

http://groups.google.com/group/paris-scala-user-group/browse_thread/thread/f88a55e0cd76a705

Idées-forces en développement logiciel sémantique

Présentation à Rennes LIM le 10 novembre . Avenue du Pr Léon Bernard 35043 Rennes Cedex

En partant d'une réflexion sur l'automatisation du développement logiciel, on est arrivé à l'idée de développement logiciel sémantique. Cela recouvre deux usages: 1) tirer le meilleur parti de modèles métier pour créer des applications quelconques, 2) utiliser les formats du Web Sémantique pour tous les artefacts logiciels hors programmation: configuration, DSL.

  1. N3 est un format pour presque tout. La syntaxe N3 est un langage de convergence qui permet d'exprimer les données, les classes et les propriétés, et des règles. N3 est le langage principal de facto pour le Web sémantique, étant beaucoup plus lisible et concis que RDF (Resource Description Format).

    L'outil Open Source EulerGUI est centré sur l' édition textuelle de sources N3.

  2. règles:
  3. l'Anglais Contrôlé est un langage logique formel dont la syntaxe (non ambigüe) est tirée de l'anglais

Ces technologies interopérent grâce des passerelles incluses dans l' IDE EulerGUI, et d'autres outils Open Source comme Protégé de l'Université Stanford, et Attempto ACE de l'Université de Zürich.

Notes:

2011-10-30

Blocage de EulerGUI sous Windows

bah j'ai rien fait de compliquer : lancer eg, sauver projet par défaut, nouveau N3 copier la ligne, cocher "référencer ontologies" sauvegarder

22:16:39

jeanmarc. vanel : y'a que le "quoi' qui m'interesse22:16:44

jeanmarc. vanel : et quel comportement anormal suite à ça ?22:17:45

cyril.hansen@gmail.com : je ne vois aucune ontologie referencée dans la fenetre principale et aussi le fichier n3 n'est pas référencé22:19:06

cyril.hansen@gmail.com : je recommence22:19:20

jeanmarc. vanel : copier quelle ligne ?22:20:08

cyril.hansen@gmail.com : You just write in the editor :

22:20:38

jeanmarc. vanel : ok

22:20:59

cyril.hansen@gmail.com : cette ligne après avoir supprimé toutes les références d'ontologies par défaut

2011-10-28

Doap, ontologie multilangues

L'ontologie Doap est intéressante, aussi parce qu'elle a des rdf:label dans plein de langues, et mon tree view doit montrer ça comme il faut.

Pour l'instant c toutes les langues à la fois . CORRIGE' !

Semantic Software Engineering

<jmvanel> j'ai forgé l'expression "Semantic Software Engineering" http://deductions.svn.sourceforge.net/viewvc/deductions/html/sse.html

<jmvanel> peut-être pas assez frappante comme expression ?

<jmvanel> il y a en effet pas mal de choses : http://www.google.fr/search?sourceid=chrome&ie=UTF-8&q=Semantic+Software+Engineering

Il faudra les contacter après la sortie de EulerGUI 1.9 .

2011-10-27

Présentation RDF - N3 - Web Sémantique

Pour une prés. duchess, je propose de me limiter au Web Sémantique :

- principes

- syntaxe N3 - Turtle ( sans aborder les règles )

- notion de vocabulaire et vocabulaires connus (sans entrer dans les détails des ontologies OWL )

- exploration via moteurs de recherches variés

- le mouvement Linked Open Data

- requêtes SPARQL

Je pense utiliser mon outil EulerGUI pour les démos; pour l'aspect

démo avec code , il y a un shell N3 :) .

Si vous voulez utiliser EulerGUI, prenez plutôt la version snapshot ici :

http://eulergui.sourceforge.net/tmp/

User Manual for the EulerGUI IDE:

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


Durant le week end , j'ai pensé à cette prés. .

Il faudrait comparer le (méta)modèle de données RDF à ce qui est connu de tous: POJO, relationnel, NoSQL, de façon à montrer qu'on ne perd rien à voir le monde en triplets, et même qu'on gagne : annotations et hyperliens en tous sens.


Il faudrait aussi comparer avec XML de base , et montrer que XML est

centré sur la structure au détriment de la sémantique:

Bref, je m'oriente vers un mini-cours pratique sur RDF et N3, en limitant les envolées lyriques sur le semweb.

Un des buts étant de monter que les fichiers ordinaires de config., de données métiers, dans les protocoles REST , etc , sont plus exploitables en N3 qu'en XML , .properties ou JSON .

Je pense montrer l'API Jena .

2011-10-26

<jmvanel> avec unity sur 11.10 , je voudrais que chaque icone de gauche indique si l'appli. a déjà été lancée ...

Récupéré mon compte websemantique.org

http://websemantique.org/JeanMarcVanel2

http://websemantique.org/ActionListUsers

La marmite : exercice Flex

http://code.google.com/p/duchess-france/wiki/FlexForMobileFrench


https://github.com/harrah/xsbt/issues/59

https://github.com/harrah/xsbt/commit/69fec711be8daf77f7a1f52fbe6eb7abd0379bf0

Tous les .so mis en place par Euler sont des 32 bits :

file /tmp/eye/linux/lib/Yap/socket.so

/tmp/eye/linux/lib/Yap/socket.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped

L'éditeur de liens dynamique doit trouver toutes les libraries 32 bits requises par Euler, et pour ça il faut installer ia32-libs .

ia32-libs-multiarch

2011-10-24

Bases de règles vin + nourriture

occasion(X) => proposition(vin(X))

If there is a an occasion-type X, and here is a a wine W of type X, then there is a proposition for wine W.

X=ordinaire, ou X=grand , ou X=exceptionnel

plat(poisson) => vin(blanc)

limite_consommation(Vin, Debut, Fin) , date_présente(annee=Fin) => proposition(Vin)

date_limite_périmée(Vin), occasion(ordinaire) => proposition(Vin)

Présentation RDF

Le fil conducteur à travers les tendances du développement logiciel pourrait être : comment on va (plutôt cahotiquement ) vers plus de sémantique.

On voit ceci dans les domaines couverts par le logiciel d'entreprise:

  1. logique métier
  2. IHM
  3. stockage persistant
  4. échange de données

Le point 1 est le parent pauvre, car dans le courant dominant aujourd'hui, on code cela dans un langage procédural, typiquement Java (ou alors on délègue ça à un progiciel comme SAP, ce qui revient au même).

langage procédural ( et non logique ) => non composable, dépendance au language

Le point 4 est aussi un parent pauvre, car on pense en terme d'extraction (ETL), exportation et importation, le plus souvent en XML, parfois en temps réel via des services réseau.

2011-10-23

Notes: bases de règles

voir R ; classification non supervisée; article Danbri (R)

Vérifier la cardinalité max en N3

C'est un exemple d'un règle qui suppose UNA et monde fermé; il devrait y en avoir plein d'autres.

<jmvanel> l'exemple d'hier marche !

<jmvanel> eulergui/examples/maxCardinality.n3

<jmvanel> en fait c'était math:memberCount au lieu de math:listCount

* _4strO (~quassel@AStrasbourg-157-1-42-103.w90-40.abo.wanadoo.fr) a rejoint #eulergui

<lcpvrr> quel est le nom du projet n3p pour tester ?

<jmvanel> y'a pas, il suffit de lancer eg avec arguments --pass examples/maxCardinality.n3 ,

<jmvanel> ou bien utiliser le 2 bouton pour charger le N3

<jmvanel> et alors ajouter --pass dans le champ pour les args Euler

<jmvanel> A noter que j'ai une base de règles pour vérifier que les propriétés sont bien déclarées, ce qui évitera les erreurs comme ci-dessus; mais il faut l'appliquer dans EG;

<jmvanel> et c'est pour faire des choses comme ça que je travaille sur l'aspect framework.

2011-10-22

A FAIRE journées pro du Web Sémantique

http://forum.doctissimo.fr/viepratique/informatique-photo-video-mp3/imprimante-reservoir-externe-sujet_5880_1.htm

2011-10-21

Cyril Hansen: résumé rapide en fr : http://www.blog-nouvelles-technologies.fr/archives/7107/google-dart-a-ete-devoile-aujourdhui/

jeanmarc. vanel: ha opui

jeanmarc. vanel: sorti officiellement ?

Cyril Hansen: ca n'a rien de miraculeux, ca remplace juste javascript par un langage plus proche de java mais sans brevet oracle

Cyril Hansen: principal intéret : permettre d'utiliser des outils type complétion / refactoring eclipse

Cyril Hansen: http://www.dartlang.org/

Cyril Hansen: http://code.google.com/p/dart/

- 12:59 -

jeanmarc. vanel: ok

jeanmarc. vanel: la babelisation progresse

https://www.redhat.com/wapps/ugc/register.html?_flowExecutionKey=_cECD5AF73-EB65-65DF-2566-290DB0E6749D_k1CD05400-01F4-D2C1-3BF6-9627A2F8A5A7

https://www.redhat.com/wapps/sfconnector/partner/login.html?redirect=/wapps/sfconnector/protected/partner.html

http://www.newel.net/contact/

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

http://www.pps.jussieu.fr/seminaire/

Jeudi à 11h, Salle 1D23

175 rue du Chevaleret, Paris 13ème.

Responsables: Claudia Faggian, Jean Krivine, et Alexis Saurin.

2011-10-19

http://www.linkedin.com/in/adileg

2011-10-18

TODO: m à j. plaquette Déduction: être plus clair sur le cadriciel qui permet d'interpréter directement la logique métier.

Configurer une extension à EulerGUI en N3

J'arrive à configurer une extension à EG en N3 .

jeanmarc. vanel: je sais que ce n'est pas votre tasse de thé, mais il y a des avantages par rapport à Spring, ou eclipse

lcpvrr@gmail.com: ma tasse de thé ?

lcpvrr@gmail.com: ya juste à comprendre comment cela marche ....

- 17:27 -

lcpvrr@gmail.com: entre nous, dur de voir la rapport entre moteur d'inférence et spring

- 17:35 -

jeanmarc. vanel: he bien, le coeur de métier de Spring est de configurer les classes clés de votre application ; et si on peut le faire avec un minimum de logique, c'est tout bénéfice. Par exemple ceci marche :

{ ?P a java:n3_project-ProjectGUI .
} => {
  ?P javap:sourceFilesManagement ?SFM .
  _:ACTION a java:n3_project-LocalAction .
  ?SFM javam:addInToolbarAndMenu ( _:ACTION ) .
}.

ça répond aussi aux fonctionalités de types "point d'extension" dans eclipse.

En activant cette règle dans la KB interne , j'ajoute un button - JAction dans EG.

Ca se verbalise ainsi:

pour tout objet ProjectGUI ?P ,

alors

soit ?SFM son champ sourceFilesManagement ,

on crée un objet de classe n3_project-LocalAction ,

et on l'ajoute à $SFM via la méthode addInToolbarAndMenu

FINI

2011-10-17

J'ai fait la mise à jour vers Drools 5.4-SNAPSHOT (il y avait une erreur dans le noyau Drools). Je présume que la correction sera aussi dans le prochain Drools 5.3.0 .

Une release d'EulerGUI est imminente.

Par ailleurs Mark Proctor a attiré mon attention sur cette nouvelle fonctionnalité de Drools: l'assignation dynamique d'inferfaces :

http://blog.athico.com/2011/07/traits-duck-typing-and-dynamic-semantic.html

Je ne pense pas que ce soit la panacée pour faire du Web Sémantique avec Drools, mais ça peut être intéresssant .

Notes: prés. RDF, EulerGUI, Agents

Présentation RDF:

à quoi ressemblerait EulerGUI basé sur le cadriciel

Agents

2011-10-14

Notes

2011-10-05

PSUG #16 Lundi 24 octobre 19h30

A cette occasion Jean Helou animera un Kata TDD détaillé sur Mastermind. Je cite :

"L'idée c'est de partir d'une forme simple reconnaissable par des javaistes et d'amener doucement les formes fonctionnelles par les refactorings. ça marche plutôt bien même si ça n'utilise pas de concepts avancés (pas d'implicites par exemple). Ca montre quand même pas mal de trucs qu'on ne peut pas faire en java et qu'on peut faire en scala."

http://www.doodle.com/8cefvmwuqf9zb938#table

Motivations des utilisateurs potentiels d'EulerGUI

Je cherche à comprendre les motivations des utilisateurs potentiels d'EulerGUI.

L"apect règles ne semble pas être utile aux développeurs côté infrastructure. En effet les règles, et le websem sont plutôt pour ceux qui travaillent sur des aspects logique métier.

Et même parmi ces derniers, j'ai l'impression que beaucoup de développeurs n'ont pas conscience de cet aspect de leur travail , surtout s'ils ont jamais pratiqué UML. D'autant plus que les règles métiers sont pas toujours distinguées des règles applicatives ( l'affichage , la saisie ).

2011-10-03

http://www.softwaresemantics.fr/?lang=fr

Le métier de développeur (11/10/2011)

http://parisjug.org/xwiki/bin/view/Meeting/20111011

2011-10-02

Jemmy 2 et 3

Bonjour Fred

Je te fais suivre un message récent de la liste Jemmy .

L'URL Subversion à la laquelle il fait allusion est :

https://svn.java.net/svn/jemmy~svn/trunk

Et le site du projet est :

http://java.net/projects/jemmy

You need to download the source from svn and open www/index.html

It's all there.

Shura

On peut aussi ouvrir directement la doc. à partir du serveur Subversion:

https://svn.java.net/svn/jemmy~svn/trunk/www/index.html

2011-09-28

http://fr.wikipedia.org/wiki/Apache_Solr ?

Adrien: Un projet apache pour faire de la recherche textuelle et à facette

2011-09-24

Notes Open World Forum

sklearn

loadpy

Emmanuel

mahout

machine learning

apprentissage

empreinte d'un volume de données

classification

élément du même corpus ==> distribution de proba

supervisées : données + label ou classe

non supervisées: segmentation : K cluster

offline

online

active learning ( ex common sense )

Dirichlet latent allocation LDA

Manna et Pnueli

freeplane

2011-09-25

Notes Open World Forum

Systèmes Intelligents NFP212 Plan

Année 2010-2011

!! Motivations

!! Définitions

!! Concepts

OWL !! Types d'ontologies

!! Méthodologies

F.-Y. Villemin (f-yv@cnam.fr)!

http://acmeism.org/projects/

payrard steph cognominal

2011-09-22

Executer le jeu de la vie en Scala

Signalé par Alex Bertails;

Petite video sympa, dédiée à tous ceux qui prétendent que Scala c'est

compliqué :-) En plus le code a l'air fonctionnel !

http://www.youtube.com/watch?v=6RwrT6N43lY&feature=youtu.be

Il a 11 ans , mais ça fait quand même 1 an qu'il fait du Scala :).

Moi ça fait beaucoup moins ; et chez moi ça ne compile pas immédiatement sur eclipse .

git clone https://github.com/shadaj/GameOfLife.git

J'ai téléchargé le jar manquant de Processing.org :

http://processing.org/download/

A noter que l'import non satisfait donnait naissance à d'autres erreurs concernant une méthode héritée.

Ensuite mon souci ç'a été d'exécuter la classe dans eclipse. Il y a bien un main mais, de prime abord, pas moyen qu'eclipse le reconnaisse comme tel :

object ConwaysGameProcessing extends PApplet {
  def main(args: Array[String]) {

Il a fallu une combinaison de clean, fermer le projet, relancer eclipse pour avoir enfin "run as Scala" , et encore la première fois il n'y avait que "run as Java" .

Ensuite à l'exécution , taper sur n'importe quelle touche pour lancer le "jeu" .

J'ai expérimenté le "extract local" (variable) du menu refactor sur :

x / boxThickness

Hélas eclipse ne repère pas la deuxième occurence de l'expression.

Autrement j'aprécie les infobulles (tooltips) sur le type ; par exemple sur cette déclaration:

var current = GameOfLife.init(gridSize, gridSize)

on peut voir :

private var current:

scala.collection.mutable.IndexedSeq[scala.collection.mutable.IndexedSeq[Boolean]]

Et, bien sur, j'aprécie d'avoir le typage propagé et inféré, d'avoir l'information dans les infobulles, et de ne pas avoir le code encombré par ça.

2011-09-21

http://fanf42.blogspot.com/ A blog about Scala, Java ecosystem and personal stuff

Scala + RETE + RDF

J'ai repéré un intéressant projet de moteur d'inférence en Scala : rooscaloo; le blog de l'auteur est aussi intéressant.

Maintenant sur https://github.com/daveray/rooscaloo .

Je crois que j'ai à apprendre en lisant ce code; et ça peut éventuellement remplacer le moteur Drools, dont l'implémentation Java n'est pas des plus propres.

Il y a aussi Hammurabi - A Scala Rule Engine, mais il ne fait pas de RETE.

Egalement il y a un bout de code pour traiter du RDF ( signalé par bblfish sur la liste Linking Open Data <public-lod@w3.org> ):

If you want code for which people can get an overview, you could check out Dan Connolly Scala project started a year and a half ago:

http://code.google.com/p/swap-scala/

I think it could do the minimum that you are looking for. It is less than 10 pages of code too written by an expert in the semantic Web, Dan Connolly wrote the cwm python semweb tool. He was trying his hand out at Scala for this. Perhaps this is a project to take over and build on.

a lui-même écrit un bout de code RDF : un DSL peut écrie en plusieurs format, mais apparement pas d'analyseur syntaxique :

Une petite bibliothèque pour écrire du RDF en Scala http://bit.ly/jo2UJE

Ca permet d'écrire du RDF comme ca:

  val ez = new EasyGraph()
   // example using arrows
   (
     ez.b_("reto").a(FOAF.Person)
       -- FOAF.name --> "Reto Bachman-Gmür".lang(rm)
       -- FOAF.title --> "Mr"
       -- FOAF.currentProject --> "http://clerezza.org/".uri
       -- FOAF.knows --> (
           ez.u("http://bblfish.net/#hjs").a(FOAF.Person)
                -- FOAF.name --> "Henry Story"
                -- FOAF.currentProject --> "http://webid.info/".uri
                -<- identity -- (
                         ez.bnode.a(RSAPublicKey) //. notation because of precedence of operators
                             -- modulus --> 65537
                             -- public_exponent --> (bblfishModulus^^hex) // brackets needed due to precedence
                         )
                -- FOAF.knows -->> List(ez.b_("reto").ref,ez.b_("danny").ref)        )
       -- FOAF.knows --> (ez.b_("danny").a(FOAF.Person)
                -- FOAF.name --> "Danny Ayers".lang(en)
               -- FOAF.knows --> "http://bblfish.net/#hjs".uri //knows
                  -- FOAF.knows --> ez.b_("reto")
       )
   )

Mais aussi en d'autre formats. Voir les exemples http://bit.ly/kiapch

Ce serait intéressant de faire travailler ensemble moteur d'inférence en Scala : rooscaloo avec swap-scala .

Pour l'instant, j'ai créé un projet Scala dans eclipse à partir du répertoire de Rooscaloo :

svn checkout http://rooscaloo.googlecode.com/svn/trunk/ rooscaloo-read-only

J'ai d'abord eu cette erreur , mais en cliquant qulque part il n'a proposé d'ajouter les librairies Scala au projet :

Error in Scala compiler: object scala not found. rooscaloo Unknown Scala Problem

Ensuite j'ai dû ajouter des import qui manquaient ; ça doit être lié à une difference de versions de Scala ; là avec eclipse j'ai 2.9.1 .

Le dernier problème restant est cet import pas trouvé :

import scala.tools.nsc.InterpreterResults._

Migration Java => Scala

Je me réponds, en espérant intéresser les débutants comme moi, sans

embêter les experts.

Après avoir configuré Maven pour Scala : voir :

http://stuq.nl/weblog/2008-11-26/4-steps-to-add-scala-to-your-maven-java-projects ,

voir aussi :

http://www.assembla.com/wiki/show/scala-ide/With_Maven_CLI

J'ai pu compiler le source "traduit" par IntelliJ .

He bien , pas très intelligent ! Ce Java

private static String f(String uri) {

devient:

private def f(uri: Nothing): Nothing = {

Certains champs Java (mais pas tous !? ) sont typés Nothing aussi.

Tous les champs sont déclarés val, alors que certains devraient être var.

Les return inutiles sont gardés.

Bref, c'est vraiment une traduction grossière.


Un peu déçu par IntelliJ, en tout cas par sa traduction vers Scala, je reviens à eclipse et installe le plugin Scale d'eclipse .

Ca ne va pas tout seul ! Quand je lance comme d'habitude,

mvn eclipse:eclipse

il ajoute bien

sr/main/scala

aux sources , MAIS avec le motif **/*.java . De plus , il a enlevé

sr/main/java

En corrigeant ces 2 choses à la main , ça va.

J'ai donc versionné un nouveau POM , pour éviter les problèmes avec mvn eclipse:eclipse :

https://eulergui.svn.sourceforge.net/svnroot/eulergui/trunk/eulergui/pom_scala.xml

Je crois que, pour éviter les problèmes d'EDI , et ne sachant exactement ce qu'ils font et comment, je vais compiler soit avec Maven , soit avec scala/scalac de base installés avec Debian (peut-être trop vieux mais on verra). Grâce à cette incantation Maven je peux sortir le classpath :

mvn dependency:build-classpath

J'ai pris soin de configurer le POM avec la même version que celle de Debian :

% scala -version
Scala code runner version 2.7.7final -- (c) 2002-2008 LAMP/EPFL

Voilà , je suis maintenant au pied du mur pour écrire des nouvelles fonctionalités en Scala et/ou traduire l'existant Java .


Réponse de François alias Fanf :

Pour eclipse, je te conseille d'installer les plugin m2e ( http://www.eclipse.org/m2e/ ) et m2e-scala ( https://www.assembla.com/spaces/scala-ide/wiki/With_M2Eclipse ).

Ensuite, tu peux importer des projets maven directement dans eclipse, sans passer par "mvn eclipse:eclipse" (qui n'a jamais fait ce que je voulais pour moi).

> Scala code runner version 2.7.7final -- (c) 2002-2008 LAMP/EPFL

Ah ouais, là c'est quand *TRES* vieux. Je te conseille d'au moins passer à une 2.8, et mieux encore une 2.9.1. Le saut 2.7/2.8 est vraiment important, et en particulier, toute l'API collection a été refaite. Comme on passe son temps à faire des boucles, je pense que c'est quand même mieux d'apprendre directement avec une API non dépréciée.

Tiens, je viens de vois que Twitter avait mis en ligne les cours qu'ils dispensent à leurs employés, il y a peut-être de bonnes choses dedans: http://twitter.github.com/scala_school/

http://twitter.github.com/scala_school/advanced-types.html

2011-09-20

Migration Java => Scala

Après avoir absorbé la sagesse des membres du JUG Paris, lu quelques PDF, et poussé par des tendances matheuses, je suis prêt à migrer par petits bouts mon application, EulerGUI. C'est un environnement (Swing, Open Source) dédié au moteurs de règles et au Web Sémantique. Le projet est piloté par Maven. Il y a peu d'algorithmes, puisuqye les moteurs d'inférences sont dans des bibliothèques (Drools, etc). L'application est assez stable, même s'il y a un wagon de fonctionalités en projet.

Sur la suggestion (intelligente) d'un développeur de l'IRC Scala , j'ai essayé la traduction Java => Scala d'IntelliJ (version 10.5 community). Ca marche plutôt bien.

Je pense traduire par morceaux, à l'occasion d'ajouts de fontionalités.

Maintenant j'ai plein de questions que je vais envoyer dans des mail séparés, pour la clarté de la discussion.

D'abord que faire à la main après la la traduction automatique Java => Scala d'IntelliJ ? Le but est d'avoir un code Scala plus compact , plus dans l'esprit du langage.

http://stackoverflow.com/questions/2484064/automated-java-to-scala-source-code-conversion

http://www.assembla.com/wiki/show/scala-ide/With_Maven_CLI

Mais ceci ne semble pas à jour :

http://scala-tools.org/mvnsites/maven-scala-plugin/usage.html

2011-09-19

jaya

Dispatch

Anti XML

spec : framework de tests en Scala

CITCON

Devoxx 14-18 novembre

2011-09-18

Question sur Scala:

Error mounting: mount exited with exit code 13: Did not find any restart pages in $LogFile and it was not empty.
The file system wasn't safely closed on Windows. Fixing.
ntfs_attr_pread_i: ntfs_pread failed: Input/output error
Failed to read NTFS $Bitmap: Input/output error
NTFS is either inconsistent, or there is a hardware fault, or it's a
SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows
then reboot into Windows twice. The usage of the /f parameter is very
important! If the device is a SoftRAID/FakeRAID then first activate
it and mount a different device under the /dev/mapper/ directory, (e.g.
/dev/mapper/nvidia_eahaabcc1). Please see the 'dmraid' documentation
for more details.
Failed to sync device /dev/sdb1: Input/output error
Failed to close volume /dev/sdb1: Input/output error

je passe à Java 7 et Drools 5.3.0Beta1 .

La suite de tests Maven passe sur Debian avec Java 7 ??? .

A noter que Drools 5.2.0 Final n'acceptait pas Java 7 .

2011-09-17

Passer à Scala

Déjà en remplaçant partout

MaClasse x = new MaClasse();

par

val x : MaClasse

je diminue mécaniquement le volume de code de 30% . C'est un exemple élémentaire de l'inférence de type.

2011-09-15

Dialectes Prolog

J'ai trouvé trouvé une explication claire des dialectes Prolog ici : http://www2.csusm.edu/patrick/Introducing%20Prolog%20II.pdf

Finally, we must warn you that this book is not about Turbo Prolog (PDC Prolog), nor about Colmerauer's

Prolog II and Prolog ill. Turbo Prolog is Prolog with data type declarations added. As a result, programs run faster but

are largely unable to examine and modify themselves. Colmerauer's Prolog II and ill are CONSTRAINT LOGIC

PROGRAMMING languages, which means they let you put limits on the value of a variable before acb1ally giving it a

value; this makes many new techniques available.

Jean-François PIQUE ; cours Prolog , etc

http://www.dil.univ-mrs.fr/~jfp/

2011-09-13

Inscrit pour débat sur Scala et Python

2011-08-20

JMS

Un résumé de JMS : http://rangiroa.essi.fr/cours/car/02-jms.pdf

J'ai l'impression que la difficulté n'est pas tant d'assimiler un nouveau cadriciel que le bon usage d'un système à base de messages.

2011-08-12

Plongez au coeur de Python

Chez J, il ont un département innovation: apprentissage, logique floue (application fiches de bibliothèque, code source).

Argumentaire pour un responsable développements

En quelques mots:

Solutions Open Source pour l'ingénierie de la connaissance, intégrée avec le développement logiciel.

Qu'entend-t-on par connaissance?

Règles métier, modèles, structures de données , expertise technique, formules et algorithmes

Avantages pour les développements informatiques:

Avantages pour l'entreprise:

Avantages pour les experts techniques:

Sémantique

2011-08-05

méthodologie de knowledge engineering ; common Kads

apparemment assez utilisée en enseignement

j'ai vu l'auteur Guus à la conférence Protégé à Amsterdam

2011-08-02

Liens de Luc

http://magazine.developpez.com/

http://mediationtechnique.blogspot.com/2011/02/lontologie-un-outil-pour-structurer-les.html

http://www.ontopedia.net/pepper/papers/ELIS-TopicMaps.pdf

Feedback sur EulerGUI

Je commence à avoir un peu de feedback sur EG.

Ce sont des choses toutes bêtes : par exemple la fenêtre dans certains cas est + grande que l'écran.

Aussi un Français qui s'intéresse à l'apect Drools + semWeb , qui m'a écrit directement; lui il est tombé sur un pb aussi assez bête : il est en Drools 5.2.0, et ED est toujours en Drools 5.1.1 .

2011-07-29

Comparer UIMA, GATE, etc

Jhe lis ceci dans "Étude des frameworks UIMA, GATE et OpenNLP : 1.1.3 Description des composants dans UIMA" :

En se basant sur la description XML des composants, on peut effectuer une recherche de composants et une agrégation selon les critères définis.

C'est ce que je veux faire dans la "modularité intelligente" !

2011-07-20

conf OSDC.fr

la conf OSDC.fr, qui a pour objectif (rare) de se faire brasser des hackers de *toutes* les communautés

(Scala, Erlang, Clojure, Python, Ruby, Javascript, Perl, Brainfuck)

mais aussi théorie des langages, étude de compilateur, vm... Bref, du

velu ! Une conférence Scala serait la bienvenue :).

C'est par ici pour se proposer : http://act.osdc.fr/osdc2011fr/cfp.html

2011-07-19

Ajouté dans logiciel_libre sur ce site :

Nous ne produisons et utilisons que du logiciel Libre et Open Source.

Nous jouons à fond le jeu du libre: code source versionné disponible sur SourceForge, pas de version commerciale plus avancée, pas de logiciel imparfaitement documenté qui rend l'utilisateur dépendent du prestataire qui maîtrise le logiciel (conformément à l'éthique), pas de projets alibis non maintenus.

http://blog.octo.com/maven-zsh-completion/

2011-07-17

http://maven-guide-fr.erwan-alliaume.com/maven-guide-fr/site/reference/public-book.html

2011-07-09

<abki_> jmvanel__, l'année derniere j'ai travaillé sur un parser de Earley, si ça t'interresse n'hésite a fouiller https://bitbucket.org/abki/c-earley-parser/src & https://bitbucket.org/abki/python-earley-parser/src c'est dans le cadre de http://pageperso.lif.univ-mrs.fr/~alexis.nasr/macaon/index.html

<abki_> je suis tombé sur ce site pendant mes recherches http://www.mendeley.com/

<jmvanel__> abki_, que de liens !

<ybon> abki_, dans la même famille : http://readitlaterlist.com/digest/

j'utilise ça aussi http://www.readability.com/ surtout sur le site de libé :p

<ybon> hé hé

<ybon> J'ai au programme de me pencher sur leur algo de parsing des pages, mais pas encore eu le temps

http://ontology.univ-savoie.fr/condillac/membres/christophe-roche : Le délai d'attente est dépassé

WordNet, WOLF

- l'interface Web de WordNet : http://wordnetweb.princeton.edu/perl/webwn?s=sport

- l'article qui explique tout WordNet : http://wordnetcode.princeton.edu/5papers.pdf

Note: il existe maintenant un WorNet pour le Français en Logiciel Libre : WOLF . Je ne l'ai pas encore essayé, mais comme il vient de l'INRIA c'est sûrement bien, et je suis très intéressé par cette ressource.

Outils Web Semantique : listes

Pour info, Sur les outils Web Semantique, il y a des listes:

Je suis en train de les re-parcourir . Il y a une alternative à Protégé ( aussi outil Java en local, Open Source ) , c'est Neon (basé sur eclipse), qui gagne en qualité et en nombre de plugins depuis que je l'ai essayé il y a 2 ans , mais qui ne me semble pas encore dépasser Protégé en maturité .

2011-07-08

Mise à jour présentation "Représentation des connaissances avec Anglais contrôlé, ontologies et règles"

Règles logiques inhérentes ==> ergonomie supérieure

Liens de Utopia (Fabien)

http://www.oup.com/us/catalog/general/subject/Psychology/CognitivePsychology/CognitiveNeuroscience/?view=usa&sf=toc&ci=9780199744282

<hivemind-sb> Title: Oxford University Press: Heuristics: Gerd Gigerenzer (at www.oup.com)

<Utopiah> Heuristics, The Foundations of Adaptive Behavior OUP March 2011

does http://mizar.org/qed/ have a successor?

<hivemind-sb> Title: The QED Project - Home Page (at mizar.org)

<Utopiah> aims of being the "single, distributed, computerized repository that rigorously represents all important, established mathematical knowledge."

<jmvanel> Utopiah, I don't know but Jean-Luc Delahaye should know;

<jmvanel> http://www.lifl.fr/~delahaye/ Jean-Paul soory

<hivemind-sb> Title: Jean-Paul Delahaye (at www.lifl.fr)

<Utopiah> thanks, I discovered his work after http://www.franceculture.com/emission-science-publique-la-complexite-impose-t-elle-la-pluridisciplinarite-2010-12-03.html

<hivemind-sb> Title: La complexité impose-t-elle la pluridisciplinarité ? - Sciences - France Culture (at www.franceculture.com)

http://images.math.cnrs.fr/Parcours-de-Mathematiciens.html

<hivemind-sb> Title: Parcours de Mathématiciens - Images des mathématiques (at images.math.cnrs.fr)

http://www.rbjones.com/rbjpub/logic/qedres04.htm (Ill read more about QED before asking him anything ;)

<hivemind-sb> Title: QED Manifesto - The Relationship of QED to Artificial Intelligence (AI) and to Automated Reasoning (AR) (at www.rbjones.com)

2011-07-07

Ouvrir avec LibreOffice un document dézippé

Est-ce qu'il y a moyen d'ouvrir avec *office un document dézippé ? Mon but est de gérer les versions et les différences avec Subversion.

g la solution ; merci à <Jbfaure> . Il faut installer le package libreoffice-dev , et alors apparaît un nouveau format de fichier "Open Document Presentation Flat XML .fodp" , etc

2011-07-05

Utopia est un Francophone ! http://fabien.benetou.fr/

2011-07-04

Cours de compilation - Luc Maranget

http://pauillac.inria.fr/~maranget/X/compil/poly/index.html

Bienvenue sur la page web d'Alpage - Analyse Linguistique Profonde A Grande Echelle https://www-roc.inria.fr/alpage-wiki/tiki-index.php?page=Accueil

http://hal.archives-ouvertes.fr/view_by_stamp.php?&halsid=6f0cc0s8bud4ni5sjcd66d79g2&label=I3S&langue=fr&action_todo=view&id=inria-00553260&version=1#labo_id1

corpus linguistiques français

http://abu.cnam.fr/DICO/mots-communs.html

http://www.lif.univ-mrs.fr/spip.php?article353

http://www.cnrtl.fr/corpus/

2011-07-02

http://catalog.elra.info/search.php?page=1&affichage=long&restrict=;exclude=products_all;config=htdig_elra_cat;method=and;format=normal;sort=score;matchesperpage=;words=eurowordnet

Research Use 227.45 EUR 3411.75 EUR

Commercial Use 5686.25 EUR 5686.25 EUR

Evaluation Use 454.90 EU

Petit dialogue avec yohanboniface sur son bébé sulci , un outil d'exploration de texte (text mining) .

corpus linguistiques français gestion

Générateur de formulaires de Déductions

Bonjour Jean Marc,

Qu'ais je tenté de faire dans deductions\samples\pricing\pricing.n3

Une classe Pricing qui est un modèle regroupant les données paramètres, intermédiaire, et résultat.

Les données paramètres:

Des instance de classes ConsumerType associées à l'instance de Pricing:

Ici on peut définir des types de consommateur

Des instances de classes ConsumerTypeNumber associées à l'instance de Pricing:

Ici on définit un ensemble de types de consommateurs sur lesquels on veut faire le calcul en associant à ceux selectionnés un nombre pour le nombre de clients attendus.

Les données intermédiaire:

Des instances de ConsumerNumberProfit associées à l'instance de Pricing:

Le profit pour chaque type de consomateurs sélectionné.

Les données résultat:

Une instance de la classe MaxProfit associés à l'instance de Pricing:

Ce résulta va nous donner le premier type de consommateur pour lequel on a le maximum de profit, et la valeur du profit.

Les règles: Il y en a 2:

Calcul des instances de ConsumerNumberProfit à partir des instances de ConsumerType et ConsumerTypeNumber

Calcul de MaxProfit à partir des instances de ConsumerNumberProfit

Que manque t'il pour faire une application ?

C'est bête comme chou:

1: créer/supprimer/editer les instances de ConsumerType et ConsumerTypeNumber

2: en fonction des instances de ConsumerType et ConsumerTypeNumber définit afficher le résultat qui est l'instance de MaxProfit

2011-07-01

Moteurs de règles : exemple règles famille

Idée de présentation

family relationships

Soit une base de règles sur la parenté avec :

Ajoutons quelques faits dans la base de connaissance:

Elisee hasParent Joanny ; a Male .
Jean-Marc hasParent Elisee ; a Male .
Pierre hasParent Elisee ; a Male .
Sarah hasParent Jean-Marc .
Hector hasParent Pierre .

On pourrait générer du code Java à partir des règles. Mais alors il serait nécessaire de faire une grande boucle qui applique toutes les règles à toutes les données jusqu'à "saturation" . C'est précisément ce que que fait un moteur RETE, et efficacement.

Comparaison moteur logique - moteur RETE

Exemple

en Prover9 ?????????????????????????? grandparent ( voir mail à Jos )

2011-06-28

http://developpef.blogspot.com/2010/11/premiers-pas-avec-scala.html

Try OpenNARS

svn checkout http://open-nars.googlecode.com/svn/trunk/ open-nars-read-only
cd open-nars-read-only
java -jar nars-dist/NARS.jar

FAIT

A FAIRE

2011-06-24

http://www.educnet.education.fr/dossier/francais-tice/usages/cartes-heuristiques/roue-magique-de-google

Quoi de neuf ?

J'ai découvert des nouveaux outils: Jason, Mozart/Oz, Kawa (que je ne sais pas placer dans l'existant EG) , et une intéresante communauté #genifer. Le projet genifer existe depuis 2004, et est mené par Yan King Yin de Hong Kong. La communauté est plus vaste que EulerGUI/Déductions; et il y a des discussions intéressantes sur IRC et mail. Mais il n'y a pas de fil conducteur pour ce qui est des outils. Il y a un peu de code LISP. Aussi le projet est encore plus vaste: IA forte, agents, langage naturel ... Le site de YKY : https://sites.google.com/site/cyberneticorganism01/biz-personal .

L'autre soir je suis allé au PSUG , il y avait une prés. sur le cadriciel Play adapté à Scala ; c'est intéressant de voir que des logiciels établis passent à Scala.

Installés sur le portable

openssh-server, ia32-libs-dev, emacs, swi-prolog, mercurial, gftp

Savoir à quel package appartient un fichier

C'est comment l'incantation pour savoir à quel package appartient un fichier ?

<jmvanel> ( je savais sur Fedora )

http://www.commentcamarche.net/faq/6947-trouver-a-quel-paquet-appartient-un-fichier

<jmvanel> Ceci marche :

dpkg -S `which ssh`

Ceci NE marche PAS :

apt-file search `which ssh`

2011-06-23

Pour présentation demain partenaire ST de S :

humain

flux de données : ACE - OWL+ SWRL - N3 - Drools

Euler : capacités d'explication et de génération modèles et contre-modèles

réutiliser les ontologies : interopérabilité, économie de conception

démo : montrer :

2011-06-22

Merci. Votre demande va être traité rapidement.

http://www.gnu.org/software/kawa/

gestionnaire de tâches Sémantique avec règles

Je rêve d'un gestionnaire de tâches Sémantique avec règles.

En fait on peut garder les outils existants, comme Google Agenda, et ajouter des annotations RDF aux tâches, mails, contacts ( pourvu que Google fournisse des URI pour cela ). On doit pouvoir récupérer les données via des services Web ou IMAP. Après on peut ajouter des annotations comme :


http://local.joelonsoftware.com/wiki/Les_dangers_des_%C3%A9coles_Java

Très intéressant articles; je lui donne raison.

Je fréquente de + en + de gens pour Java est ringuard ...

Et là le lis le bouquin de Van Roy et Haridi, qui brasse tout à la fois .

Le chapitre "Graphical User Interface Programming" est très prometteur.

Bonjour Je viens de passer d'Ubuntu à Debian sur mon portable, et je n'ai pas perdu le peu de config. que j'avais, car j'ai fait un double boot .

<jmvanel> J'en viens à ma question : où se cache ma config. Wifi ?

2011-06-21

Oz - Mozart

A propos de cet exemple Oz:

fun {ShiftLeft L}
  case L of H|T then
    H|{ShiftLeft T}
  else [0] end
end

Ce qui est remarquable , dans tous ces langages functionnels, c'est que:

Ces petites choses syntaxiques raccourcissent les pragrammaes notablement.

Si je compare la version Oz :

fun {Pascal N}
  if N==1 then [1]
  else
    {AddList {ShiftLeft {Pascal N-1}}
    {ShiftRight {Pascal N-1}}}
  end
end

avec une version Scala du triangle de Pascal:

http://en.literateprograms.org/Pascal%27s_triangle_%28Scala%29

je vois que Oz me plait plus , peut-être par sa ressemblance avec Mercury...

Je compare Oz avec Mercury

Si je compare Oz avec Mercury, je note :

On pourrait développer un traducteur vers un langage de haut niveau qui ait déjà la plateforme Java , comme: Scala, Mercury, Kawa (Scheme) .

La fonctionalité "Dataflow concurrency" est très intéressante. Je ne connais aucun langage qui l'aie .

Bouquins: Scala, nombres surréels, IA Résolution de problèmes

Bouquins recommandés par AB :

Programming in Scala, 2nd edition - Martin Odersky

(le bouquin de référence pour Scala, j'en suis à la moitié, c'est un des meilleurs bouquins sur un langage que j'ai pu lire)

https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B1aUABDz2cFPZWNjZWQ3MjYtYzRlMC00ZTNkLTgwMzEtNDcxNzAzMWUzNmMz&hl=fr

Roman / Introduction aux nombres surréels - Donald E. Knuth

(une des inventions de Conway...)

https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B1aUABDz2cFPY2NhZTUwZTUtN2VjNy00OGE2LTkxZmItODY4OWI5NmQ4Yjkw&hl=fr

Intelligence Artificielle: Résolution de problèmes par l’Homme et la machine - Jean-Louis Laurière

(pas encore lu, mais il a l'air génial !)

https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B1aUABDz2cFPNDRiOGFhODgtY2I0OS00ZTg5LWI5ZWItMDc1Y2MzMjk0ZTEy&hl=fr

https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B1aUABDz2cFPNDRiOGFhODgtY2I0OS00ZTg5LWI5ZWItMDc1Y2MzMjk0ZTEy&hl=fr

Logique, Informatique et Paradoxes - Jean-Paul Delahaye

(c'est le bouquin qui m'a donné envie de faire l'informatique)

https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B1aUABDz2cFPN2VjYTVjM2EtZDI1NS00YjU1LWEyZWEtMmVmNTgwMDQxMmY1&hl=fr&authkey=CNmI2bMJ

2011-06-20

installer Mozart

Tentative d'installer Mozart pour x86_64 ( en fait n'existe pas pour x86_64 ) :

E: Impossible de corriger les problèmes, des paquets défectueux sont en mode « garder en l'état ».
E: Erreur, pkgProblemResolver::Resolve a généré des ruptures, ce qui a pu être causé par les paquets devant être gardés en l'état.
E: Impossible de corriger les dépendances

En fait le remède est d'installer la version 486 , et de faire :

cd platform
cp -r linux-i486 unknown-unknown
cd ..
bin/oz &

Maintenant j'aimerais télécharger le maximum d'exemples.

PSUG #13 Play Framework

Guillaume Bort qui nous presentera "Play Framework" http://www.playframework.org/ et son utilisation avec Scala.

Rencontré bblfish, et fait connaissance avec Arié.

Génération intelligente de formulaires

Quelques réflexions pour re-concevoir la génération intelligente de formulaires dans Déductions: des règles pour diviser le travail:

https://www.aaai.org/Papers/ICMAS/1995/ICMAS95-042.pd

http://cartewifi.sfr.fr/

2011-06-13

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

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 Représentation des connaissances avec Anglais contrôlé, ontologies et 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 de 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

Jean 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 seulement 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

http://drupal-frioult.perso.info.unicaen.fr/index.php

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

<JeannyL> 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'est 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 systè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 :