Tutoriel : exemple avec l’API Sesame RDF

Tutoriel : exemple avec l’API Sesame RDF

Sesame dispose d’une API Java permettant de manipuler du RDF en mémoire, d’interroger un serveur Sesame (voir la procédure d’installation d’un serveur Sesame), ou d’interroger un endpoint SPARQL distant. Voici un « quickstart » permettant de commencer à travailler avec l’API en quelques minutes, en ajoutant les dépendances adéquates et avec un exemple de code complet. Vous pouvez également vous référer à la documentation de l’API Sesame.

Jars nécessaires

Pour utiliser l’API Sesame de manipulation de RDF dans votre programme Java, récupérer les jars suivants :

  • Depuis openrdf.org, suivez « Download > Sesame 2.x releases > here > [numéro de version de Sesame] » et téléchargez le fichier openrdf-sesame-x.y.z-onejar.jar. Attention de bien prendre le « onejar », pas le sdk ;
  • Téléchargez SLF4J, dézippez-le, et extrayez slf4j-api-a.b.c.jar et slf4j-jdk14-a.b.c.jar ;
  • Ajoutez à votre classpath openrdf-sesame-x.y.z-onejar.jar, slf4j-api-a.b.c.jar et slf4j-jdk14-a.b.c.jar ;

Optionnellement, seulement si vous voulez vous connecter à un serveur Sesame distant, ou un endpoint SPARQL (en utilisant la classe HTTPRepository), ajoutez les étapes suivantes :

  • Téléchargez httpclient, en prenant le fichier commons-httpclient-3.0.zip. (Attention de ne pas confondre avec httpcomponents-client), et dézippez commons-httpclient-3.0.jar ;
  • Téléchargez commons-logging et dézippez commons-logging-1.1.1.jar
  • Téléchargez commons-codec et dézippez commons-codec-1.6.jar ;
  • ajoutez à votre classpath commons-httpclient-3.0.jar, commons-logging-1.1.1.jar et commons-codec-1.6.jar ;

Démarrage rapide

L’exemple de code Java ci-dessous illustre l’initialisation d’un Repository, le chargement de données RDF, l’écriture de RDF dans un fichier, et l’interrogation d’un serveur Sesame distant ou d’un endpoint SPARQL public. Les commentaires dans le code parlent d’eux-mêmes.

// I : création du Repository
// création du Repository en mémoire.
Repository repository = new SailRepository(new MemoryStore());
// initialisation du Repository : cet appel est obligatoire une fois et une seule
repository.initialize();
// II : chargement de fichier RDF
// le fichier RDF contenant les données à charger
File fileToAdd = new File("/fichier/à/charger.rdf");
// charger les données dans le Repository
repository.getConnection().add(
 // référence au fichier à charger
 fileToAdd,
 // namespace par défaut à utiliser pour les URIs relatives contenues dans le RDF
 RDF.NAMESPACE,
 // format du fichier RDF à charger (RDF/XML, N3, TRIG, etc.)
 // le format est déterminé dynamiquement à partir de l'extension du fichier
 // (.rdf, .n3, .trig, etc.)
 RDFFormat.forFileName(fileToAdd.getName())
);
// III : écriture de fichier RDF
// on utilise RDFXMLWriter qui génère du RDF/XML
repository.getConnection().export(new RDFXMLWriter(new FileOutputStream("/fichier.rdf")));
// on peut remplacer par N3Writer pour sortir du N3
// dans ce cas, bien mettre l'extension du fichier à .n3
// repository.getConnection().export(new N3Writer(new FileOutputStream("/fichier.n3")));
// IV. connection à un serveur Sesame ou un endpoint SPARQL distant
// pour se connecter à un serveur Sesame : utiliser le constructeur avec 2 String
// en donnant l'adresse du serveur et le nom du repository
Repository sesameServer = new HTTPRepository("http://localhost:8080/openrdf-sesame","Test");
sesameServer.initialize();
// pour se connecter à un endpoint SPARQL public : utiliser le constructeur avec 1 String
// en donnant l'adresse du endpoint
Repository dbpedia = new HTTPRepository("http://dbpedia.org/sparql");
dbpedia.initialize();
Next Post:
Previous Post:
There are 4 comments for this article
  1. Sr_m at 12 h 28 min

    Bonjour,
    svp où dois-je mettre ce code ? c’est dans une classe java ? comment faire si je veux interroger mon ontologie(rdf ou owl) depuis une page jsp (web app) ?
    Merci !

    • Thomas Francart Author at 21 h 18 min

      Oui, il s’agit de code Java. Dans une application web, ce type de code s’insère dans une servlet.

  2. Pingback: Tutoriel : exemple de query SPARQL avec l’API Sesame | Thomas Francart
  3. SAM at 15 h 59 min

    Bonjour,
    s’il vous plait aidez moi je n’arrive a exécuté ce code malgré que j’ai importé les jars nécessaire mais à chaque fois j’exécute il m’affiche cette erreur

    Exception in thread « main » java.lang.ArrayIndexOutOfBoundsException: 0
    at org.openrdf.sail.nativerdf.btree.BTree.runDebugTest(BTree.java:2522)
    at org.openrdf.sail.nativerdf.btree.BTree.main(BTree.java:2463)

    aidez moi svp et Merci !

Répondre à Thomas Francart Cancel comment reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>