I. Comparaison▲
Personnellement j'ai un faible pour Sesame. Sesame propose des fonctionnalités proches de Jena, moins complètes, mais sans doute un peu plus faciles à intégrer ; la philosophie de son API est différente, et s'il s'agit de faire simplement de la manipulation de données RDF (sans inférence compliquée, sans gestion d'ontologie OWL), le choix entre les deux est essentiellement une question de goût ! Son interface d'administration vous facilitera par contre énormément le travail s'il s'agit de configurer rapidement un triplestore et d'y charger des données RDF.
On donne ci-dessous un tableau comparatif des fonctionnalités entre Jena et Sesame, au 1er mai 2012 ; il faut noter que, là où Jena propose d'emblée un certain nombre de modules avec beaucoup de fonctionnalités, pour Sesame ces fonctionnalités peuvent être présentes dans l'« écosystème » autour de Sesame : OWLIM ou Ali Baba.
Fonctionnalité |
Sesame 2.6.5 |
Jena (core 2.7.0-incubating, IRI 0.9.0-incubating, ARQ 2.9.0-incubating, TDB 2.9.0-incubating) |
Existe depuis |
2004 |
2000 |
Licence |
BSD-style (http://www.opensource.org/licenses/BSD-3-Clause) |
Apache (http://www.apache.org/licenses/LICENSE-2.0) |
Mis à jour régulièrement |
Oui |
Oui |
Entrées/Sorties |
||
Entrées/Sorties aux formats RDF/XML, N3, Turtle, N-Triples |
Oui |
Oui |
Entrées/Sorties en TriG, TriX |
Oui |
Non |
Sortie en RDF/XML-ABBREV |
Non |
Oui |
SPARQL |
||
Query en SPARQL 1.0 |
Oui |
Oui |
Query en SPARQL 1.1 |
Oui |
Oui |
SPARQL Update |
Oui |
Oui |
Autres langages de requêtes supportés ? |
SeRQL |
Non |
Création de requêtes SPARQL programmatiquement |
Oui (package org.openrdf.query.parser.sparql.ast) |
Oui (module ARQ) |
Serveur SPARQL |
Oui (de base à travers le serveur Sesame) |
Oui (module Fuseki) |
Utilitaire en ligne de commande pour exécuter une requête SPARQL |
Oui, via la commande « console » |
Oui |
Indexation plein texte des données du graphe RDF par Lucene |
Non, mais possible en utilisant Ali-Baba ou l'extension « LuceneSail » :http://dev.nepomuk.semanticdesktop.org/wiki/LuceneSail |
Oui, module LARQ |
Gestion du RDF |
||
Gestion du RDF en mémoire |
Oui |
Oui |
Stockage RDF dans une base relationnelle |
Oui |
Oui (module SDB) |
Stockage RDF dans des fichiers binaires |
Oui (Native RDF repository) |
Oui (module TDB) |
Support des graphes nommés |
Oui |
Oui |
Support des transactions (commit, rollback) |
Oui |
Oui |
Paramétrage de graphes RDF via un fichier de configuration |
Non |
Oui (module Assembler) |
Inférence |
||
Inférence RDFS native |
Oui |
Oui |
Inférence OWL-Lite native |
Non, mais possible en utilisant OWLIM |
Oui |
Inférence OWL-DL |
Non, mais possible en utilisant OWLIM |
Non, mais possible en connectant le moteur Pellet |
Inférence à base de règles |
Non, mais possible en utilisant OWLIM |
Oui |
OWL |
||
API de manipulation OWL et RDFS : manipulation des classes, propriétés, domaines, ranges, restrictions, etc. |
Non |
Oui, natif |
Administration |
||
Interface utilisateur d'administration : créer un stockage RDF, ajouter des données, naviguer, etc. |
Oui (sesame-workbench) |
Non |
Divers |
||
Mécanisme de listeners pour monitorer les événements sur le RDF |
Oui |
Oui |
Génération de fichiers de constantes Java à partir d'une ontologie |
Non, mais possible en utilisant Ali-Baba |
Oui (module schemagen) |
Utilitaire de vérification de données RDF |
Non |
Oui (module eyeball) |
II. Remerciements▲
Article original de Thomas Francart que nous remercions pour son autorisation de reproduire son article sur Developpez.com. Merci à Julien Plu pour la mise en page et à Claude Leloup et jacques_jean pour leur relecture orthographique.