Putting Web Semantic into your Web App

Yoan BlancSun, 10 Dec 2006, , , , ,

Guys who are talking about the Web 3.0 are talking about web semantic. But what is this so hoped upcoming web. Just another hype buzzword of course.

The idea of Web Semantic is to have a knowledge network you can browse, a big picture you can navigate in and discovering resources. This big picture, a graph, is achieved by added data to data, also knows as metadata. The standard way to describe resources is to use RDF. RDF isn’t a syntax. And one way to discover informations is SPARQL, a SQL-like for RDF. Let’s start with a example you can run on the Opera’s Community SPARQL querying tool:

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?weblog WHERE  {
 ?hakon foaf:name "Håkon Wium Lie" .
 ?user foaf:knows ?hakon .
 ?user foaf:name ?name .
 ?user foaf:weblog ?weblog .
}

This query can be translated to : For every user who knows a guy named “Håkon Wium Lie” give me their name and weblog URL. Let’s decrypt it line after line.

PREFIX foaf: <http://xmlns.com/foaf/0.1/>

Define the foaf namespace, after this foaf:name is the same as http://xmlns.com/foaf/0.1/name.

SELECT ?name ?weblog WHERE  {

Select the variables called name and weblog.

 ?hakon foaf:name "Håkon Wium Lie" .

Define the variable hakon to be the user(s) who his name is “Håkon Wium Lie”.

 ?user foaf:knows ?hakon .

Define the variable user to be the user(s) who knows (foaf:knows) hakon.

 ?user foaf:name ?name .

Define the variable name to be the foaf:name of the user

 ?user foaf:weblog ?weblog .

Define the variable weblog to be the foaf:weblog of the user.

}

End of the WHERE statement.

Is there some prolog users, quite similar no?

Now go back to a web application, based on a kitchen-sink-included web framework. There is a powerful tool called ActiveRDF (if you know ActiveRecord, you’ll understand) that enable you to use a Triple Store backend (Redland, SQLite, SPARQL, ...) for your web app. I need to experiment it much more to explain it to you soon.

Watch this presentation to dive a little more into this.

Le web 3.0 est déjà dans certaines bouches, beaucoup espère voir arrivé le tant espéré Web Sémantique. Un buzzword en plus pour briller en société.

L’idée du Web Sémantique est d’avoir un réseau de connaissances que l’on peut naviguer pour en extraire de l’information. Pour ce faire, il faut ajouter des données sur des données, des métadonnées. Ces métadonnées s’appliquent à une ressource (identifiée par son URL) et se composent d’une clé, le titre de la métadonnée (prédicat) et d’une valeur qui peut être un élément littéral ou une autre ressource. Le résultat de ça est un graphe où les éléments sont décris et liés entre eux. Ce type de graphe peut-être retranscrit de manière à ce qu’une machine (un ordinateur) puisse en faire le traitement, le format choisit est RDF, qui peut s’écrire avec de multiple syntaxe. RDF/XML étant la plus courante sur le net. L’outil d’extraction d’information se nomme SPARQL, un langage de requête proche de SQL appliqué aux graphes.

Ci-contre, un exemple à essayer sur le site de la communauté d’Opera. RDF semble parfait pour l’idée du communautarisme où ce qui fait la force d’une communauté sont les liens entre les gens, les ressources. Le coeur de LinkedIn est un magnifique graphe je n’en doute pas, les relations sont hélas un peu pauvres à mon goût dans son état actuel.

Ensuite intégrer ceci dans son application web, n’est pas chose aisée même si au jour d’aujourd’hui, des outils existent. ActiveRDF (pour ceux qui connaissent ActiveRecord) permet d’avoir un backend RDF pour son site Ruby On Rails où une quelconque application Ruby (ActiveRecord n’étant pas lié à Rails). C’est un peu tricky mais ça fonctionne. Je vais tâcher de continuer mon exploration de la question afin de tenter de vous présenter une petit application Web faisant un usage intensif de RDF.

Approfondissez votre point de vue sur ce qu’il est possible de faire avec SPARQL avec cette présentation des auteurs de ActiveRDF.