jeudi 28 juillet 2011

Silk...

... est un personnage de la série "La belgariade" & "La malloré" de David & Leigh Eiddings. Mais je ne vais vous parler de ce bon vieux prince Kheldar.

En réalité, le Silk dont je veux vous parler (certes brièvement) est un framework sous licence Apache qui permet de lier des ressources de différents Endpoints. Cet outil est écrit en Scala (oh zut je vais devoir m'y mettre! =D) et semble relativement simple d'utilisation. (En tout cas pour la version "Simple Machine", il existe également une version "MapReduce" et une version "Server").

Le principe est le suivant.

A l'aide d'un fichier XML (le Silk LSL pour Silk Link Specification Language), on définit deux EndPoints comme DataSource. Nous définissons ensuite le type de ressource à comparer dans ces EndPoints avec des méthodes d'évaluation. (Calcul de similarité, définition des seuils d'acceptation...) On lance Silk et HOP!
nous obtenons un fichier RDF qui relie les ressources jugées identiques par un type de relation définie dans le fichier Silk LSL (owl:sameAs par exemple).

Depuis la version 2.4.2, il est possible d'intégrer directement ces liens dans un triplestore à l'aide de requêtes SPARQL Update.

Cet outil est à évaluer plus en détail mais le principe me plaît bien...

Je posterai un prochain article sur le sujet avec des exemples.

lundi 18 juillet 2011

Présentation de Apache UIMA

Apache UIMA (prononcé You-eee-muh) est un framework sous licence Apache distribué initialement par IBM et qui est désormais arrivé dans la Fondation Apache.

Ce framework implémente la spécification UIMA proposée par l'OASIS depuis 2009 qui a pour but de fournir un cadre de travail pour extraire des informations d'un document non structuré pour les présenter dans une structure bien définie.

Le fonctionnement général consiste en un ensemble de composants que l'on intègre dans un workflow pour extraire une série d'éléments d'un document et ce en vue d'un traitement final comme de l'indexation.

Il y a principalement 6 types de composants dans UIMA :
- Les CAS/JCAS (Common Analysis Structure / Java Common Analysis Structure ): ces éléments sont propagés d'un composant à l'autre, ils sont en quelque sort le contexte de traitement d'un document. Ils contiennent d'ailleurs une référence à ce document.
- Les Analysis Engines (AE) : ces composants analysent l'artefact pour en extraire/déduire des informations (ils peuvent produire des CAS)
- Les annotators : éléments de base des AE, ils contiennent la logique d'analyse pour créer les métadonnées. Un AE peut contenir un à plusieurs Annotators, on parle alors de "Primitive Analysis Engine" ou de "Aggregate Analysis Engine".
- Les collections reader qui lisent le/les documents à traiter pour fournir un CAS initiale aux AE.
- Les CAS consumers : ces éléments traitent en sortie du workflow les CAS produit par l'application. (il ne peuvent pas produire de CAS)
- Le Collection Processing Manager (CPM) qui gére un peu tout ce petit monde.

Chacun de ces éléments est décrit dans un fichier XML dans lequel il est précisé :
- les entrées/sorties du composant
- les paramètres de configuration
- le workflow entre composant (exemple : quel est l'ordre de passage des Annotators dans un aggregate analysis engine)
- ...

 High-Level UIMA Component Architecture (source)

Il existe trois modes de déploiement.

- Intégrated : tous les éléments sont dans une même JVM
- managed : le CPM est dans une JVM et les AE sont déployés dans un autre JVM mais présent sur la même machine.
- non-manager : même principe que le mode managed sauf que les AE sont déployés sur des machines distantes. les processus communiquent entre eux via un protocole spécifique appelé Vinci. Des AE deployés à distance peuvent également être interrogé via SOAP. Pour finir, un add-on permet de faire communiquer les différents composant via des file JMS. (Apache UIMA AS)

Voila pour aujourd'hui.
Lorsque j'aurai pratiqué un peu plus, je posterai des informations complémentaires et des exemples.

Je pense utiliser ce framework pour développer un projet de peuplement d'ontologie.... wait and see...

jeudi 7 juillet 2011

Sémantique RDF

Un lien sur le RDF qui contient un tas de définitions et de lemmes sur les graphes.

Cependant certains passages sont un peu difficile à lire...

Pour ma part, je ne pense pas avoir besoin de rentrer à ce point dans la théorie...

Mais pour ceux qui sont en mal de démonstrations mathématiques je suis tenté de dire : "bonne lecture !"


http://web-semantique.developpez.com/tutoriels/specifications-w3/rdf-mt-semantique-rdf/