Envoi de mails et attachements

En me baladant sur le site du W3C, je viens de tomber sur cette page.

Ca ne concerne sans doute pas beaucoup de monde ici, mais :

 Avoid unnecessary email attachments.  Use an attachment only when it is likely to benefit to recipients.  Otherwise, place the information (in plain text format) in the body of your message.

A retenir ! N’oubliez pas que si vous avez fait une lettre ou un document .doc que vous voulez envoyer, la personne en face n’a pas forcément l’outil pour le lire – ou même le temps de le lancer – , et que c’est donc beaucoup plus simple de copier / coller le contenu directement dans le mail (si possible en texte seul, ou en tout cas en évitant des polices ou couleurs agressives).

Interroger le Web Sémantique

En supposant que vous ayez suivi l’article de Got sur RDF, ou tout autre tutoriel du même genre, vous voyez sans doute – j’espère ;) – l’intérêt de disposer de données RDF pour représenter des resources sur le Web[1] .

Et apres ? Parcequ’on a beau avoir des données, encore faut-il les exploiter, l’interrogation étant un moyen d’en tirer profilt.

Première étape que j’évoquerai dans ce billet: SPARQL. Ce langage – et protocole – de requête pour RDF est supporté par le W3C et s’impose comme le langage de référence pour exprimer des requêtes sur des données RDF, malgré certaines limites (par exemple, pas de support de fonctions d’agrégation: MAX, COUNT …), mais avec une grande facilité puisqu’on retrouve dans une clause WHERE la notion de graphe et de triplets.

Par exemple, à partir de mon profil FOAF, pour connaitre l’ensemble des personnes que je connais, je peux utiliser la requête suivante:

  PREFIX foaf: <http://xmlns.com/foaf/0.1/>  SELECT ?who  WHERE {    ?x foaf:primaryTopic ?me    ?me foaf:knows ?who  }

qui retournera les connaissances (URIs) définies dans mon profil de façon à ce qu’un lien foaf:knows existe entre moi (i.e. le noeud identifié comme foaf:primaryTopic) et ces URIs.

Une API comme redland permet de charger plusieurs graphes en mémoire et d’effectuer une requête unique, cependant, si l’on souhaite interroger un grand nombre de document, la pratique commune est de centraliser ceux-cis dans un triple store.

Pour faire simple, il s’agit d’un système stockant les données sous forme de triplets, et proposant une API pour ajouter / supprimer ceux-cis et différents moyens de les requêter (par ex. avec SPARQL). La plupart reposent sur une base de donnée relationnelle[2] et il existe donc de nombreux systèmes, avec des spécificités (contexte, inférence …) et langages différents. J’utilise personnelement Joseki pour stocker des triplets sans contextualisation et 3store, qui gère le contexte, dans le cas contraire.

Problème(s): il est nécessaire de connaitre à l’avance les données à interroger, et en cas de modification de documents sources, il faut mettre à jour l’entrepôt (en utilisant par exemple Ping The Semantic Web).

Toutes ces explications pour en arriver à la librairie que j’évoquais dans le billet précédent: Semantic Web Client Library. A partir d’un document source et en utilisant les liens qui peuvent exister entre les différents documents présents sur le Web via l’utilisation de rdfs:seeAlso, la librairie va en fonction de la requête – toujours en SPARQL – récupérer d’autres documents qui pourraient la satisfaire – moyennant quelques précautions dans la définition de celle-ci – , à la manière du Tabulator.

Donc, d’une part, plus besoin de disposer d’entrepôt pour des requêtes sur plusieurs documents, mais surtout le fait que les document requêtés n’ont pas besoin d’être connus à l’avance, puisqu’ils seront recupérés au fur et à mesure du parcours des liens si l’algorithme juge nécessaire de les utiliser, pour ensuite lancer la requête sur le graphe “global”. On peut ainsi en pointant un seul graphe effectuer une requête comme “Quels sont les amis de mes amis”. Le temps de traitement est nettement plus long qu’une requête sur un entrepôt, puisque chaque graphe doit être récupérer puis chargé en mémoire, cependant, c’est un excellement moyen de parcourir un Web Sémantique “ouvert”, à quelques détails près qui évoluront sans doute en fonction des besoins utilisateurs.

Plus d’informations sur la page du projet.

Notes

[1] J’avait évoqué des posts en français sur le Web Sémantique lors de la création de la planète, voila le premier :) J’essayerai donc d’écrire des posts de “vulgarisation” sur le sujet régulièrement en fonction du temps.

[2] C’est d’ailleurs assez marrant de voir les transformations SPARQL / SQL et de retrouver des bonnes requêtes de 15 lignes avec moults jointures :)

SIOC Exporter pour Dotclear, v.1.4.3

Quelques corrections dans l’API d’export SIOC afin de régler des problèmes de RDF/XML mal formé ainsi qu’un problème d’identification du blog dans les différents fichiers (cf ce thread), et donc une nouvelle version du plugin:

Le format RDF/XML produit est ainsi accessible en utilisant la Semantic Web Client Library, sur laquelle je reviendrai un peu plus tard dans la soirée.

Weblogs sur le Web Sémantique

Je connaissais les blogs de Karl, Gautier et David qui traitent – plus ou moins fréquemment – de Web Sémantique. J’ai redécouvert récemment celui de Pascal et de Charles.

Il y en a sans doute d’autres, donc afin de recenser les blogs “francophones” (du moins leurs auteurs) traitant du Web Sémantique, j’ai ouvert une page sur le wiki websemantique.org.

Dites, un planet, ca vous branche ?

Back from BlogTalk Reloaded

Back from BlogTalk Reloaded a few days ago, where I enjoyed a lot of interesting talks and presentations[1] about social software and weblogging, especially :

  • danah boyd’s keynote and especially remarks about relations between users and the way social networking websites are currently developped (hacks, reaction to users demands …);
  • talks by Lee Bryant / Headshift and by Rod Smith / IBM about social software and use of open APIs and “Web 2.0” technologies as AJAX, Google Maps … in corporate contexts;
  • social aspects of blogging; even if I attended the conference mostly for its technical and corporate talks, it as a good opportunity to get different views about its impacts;
  • monday evening meeting, and discussions with zeroK, Ton Zijlstra, bazaar guys, and more. A nice way to know more about activites and interests of everyone;
  • Matt Mullenweng’s keynote. I was wondering since the program was published what what this “Jazz” about: new API ? Framework ? … No, simply music. Nice jazzmen quotes and pictures to describe the life of a software project – and maybe life itself ? The kind of keynote to relax after lunch !

Regarding my talk – apologizes for the english ;) – what I felt is that Semantic Web still fears people (especially using and maintaining ontologies / knowledge bases), but I hope attendees were interested in the approach. I also got this feeling during SIOC presentation (.ppt) by Uldis and John, especially regarding the questions about microformats and SIOC differences and advantages. John wrote some ideas about creating links between both communities.

So, thanks again to Thomas, Jan and BlogTalk organizers for these two days.

Just a few suggestions:

  • let speakers choose between different formats for their talks. While some presentations are indeed more appropriate for a 10 minutes talk and a debate, others are better with a more formal talk and Q/A way;
  • proceedings. Even if a book is planned, it would be nice to get the papers at the beginning of the conference;
  • shirts, please provice blogtalk shirts for us geeks next year :)

Finally, for those that didn’t attend, there’s a lot of stuff to look at on BlogTalk wiki, Technorati, Flickr

Notes

[1] All talks where video-recorded and uploaded a few minutes after, and are still available on the program page.

OSX, ssh, screen and irssi

I’m using ssh + screen + irssi to go on IRC. I recently switched to a MacbookPro, and didn’t see how I could pageup in irssi.

I’ve finally got the answer yesterday, thanks to #mac and this post:

  • When using iTerm, the combination is simply fn + pgup;
  • When using Terminal.app, the combination is shift then fn + pgup.

Now, I’m still confused with making it work on vim: while the second one works fine, the first is mapped to a vim sequence. Any hint ?