La revue "ArABESque" publie dans son numéro 83 un dossier…
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: Data Is King !
Previous Post: Tutoriel : exemple de query SPARQL avec l’API Sesame
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 !
Oui, il s’agit de code Java. Dans une application web, ce type de code s’insère dans une servlet.
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 !