Ceci est une ancienne révision du document !


Projet MIF18

Ce projet est un projet alternatif au projet multimif, à destination des étudiants qui ne font no MIF17, ni MIF16, ni MIF13.

On souhaite interroger une base de données relationnelle comme un graphe RDF en utilisant le langage SPARQL. Le but de ce projet est d'écrire un wrapper autour de l'accès à la base relationnelle. On ne veut pas copier les données en les écrivant sous forme d'un graphe, mais permettre d'interroger la base de donnée comme une vue ayant la forme d'un graphe.

Pour cela, on s'appuiera sur l'API Jena qui permet de manipuler les graphes RDF en Java. En particulier ARQ permet d'exécuter des requêtes SPARQL. ARQ permet de requêter des modèles, mais il est plus simple d'implémenter l'interface Graph de plus bas niveau .

Projet à rendre

Le rendu consistera en un projet Java/Maven hébergé sur la forge Lyon 1. Ce projet comprendra un exécutable en ligne de commande qui lira la requête SPARQL sur l'entrée standard et qui pourra prendre en argument:

  • l'URL JDBC de la base de donnée
  • le nom d'utilisateur
  • le mot de passe

Cet exécutable écrira les réponses à la requête sur la sortie standard, au format SPARQL Query Results XML Format comme présenté en cours, p.7 .

Schéma et vocabulaire RDF

Schéma relationnel

Le schéma relationnel à exposer sous forme de graphe RDF est le schéma du TP ORM

Vocabulaire RDF

Le vocabulaire RDF sera constitué sur les bases suivantes. Pour chaque tuple des relations Recette, Ingredient, Quantite, Instruction, on construit une IRI à partir de sa clé primaire selon le tableau suivant:

TableAttributs utilisés
pour construire l'IRI
IRI
Recettenomhttp://www.recettes.com/Recette/nom
Ingredientnomhttp://www.recettes.com/Ingredient/nom
Quantiterecette, ingredienthttp://www.recettes.com/Quantite/recette/ingredient
Instructionrecette,ordrehttp://www.recettes.com/Instruction/recette/ordre

quantités et instructions, on se réfère

  • Chaque recette sera identifiée par http://www.recettes.org/Recette/nomnom est le nom de la recette.
  • Chaque recette sera identifiée par http://www.recettes.org/Recette/nomnom est le nom de la recette.

Liens utiles

On considère le schéma relationnel du TP ORM.

L'objectif du projet est de créer une application permettant l'import/export de ces données au format XML et RDF/Turtle.

On supposera que les volume des données nécessite un traitement de celles-ci en flux, c'est à dire qu'on ne veut pas avoir toute la base de données chargée en mémoire.

Import/Export XML

Les fichiers XML lu à l'import et générés par l'export doivent être valide vis-à-vis du schéma suivant: films.xsd.

On utilisera l'API SAX pour lire ces fichiers. Voir les packages org.xml.sax et org.xml.sax.helpers. Ajout de faits en base de donnée se fera au choix via JDBC ou via l'ORM.

Pour l'écriture des fichiers, on passera par la génération de XML via les fonctions SQL. Pour récupérer les données côté Java, on pourra s'inspirer du TP XML-JDBC de 2011.

Import/Export RDF

L'import/export au format RDF s'appuiera sur la bibliothèque ARQ, en particulier sur l'API RIOT.

Projet de départ

Un projet de départ est fourni dans l'archive prj-mif18-2012.zip. Il s'agit d'un projet maven incluant les dépendances vers le driver PostgreSQL et la bibliothèque ARQ. Il contient un test JUnit ARQTest avec du code exemple pour les entrées/sorties RDF utilisant ARQ/RIOT.

Le projet fourni est préconfiguré pour générer une archive target/prj-mif18-1.0-SNAPSHOT-jar-with-dependencies.jar exécutable directement avec:

java -jar chemin/vers/prj-mif18-1.0-SNAPSHOT-jar-with-dependencies.jar arg1 ... argn

C'est la classe App fournie dans ce projet qui sert de point d'entrée.

Modalités de rendu

Le projet est à réaliser par groupes de un à deux étudiants (pas trois). Il est demandé d'envoyer un fichier .zip1) à emmanuel.coquery@liris.cnrs.fr contenant:

  • Le projet Java pour l'application à réaliser (cf ci-dessous)
  • Un fichier README.txt contenant:
    • le noms et numéros d'étudiants du/des membre(s) du groupe.
    • La liste des prédicats RDF utilisés, ainsi que les conventions de nommage permettant de fabriquer les URI des objets du graphe RDF.
    • Tout commentaire qui vous semble utile à porter à la connaissance du correcteur.

La date de rendu est fixée au 10 décembre 2012 à 23h59. Une soutenance aura éventuellement lieu le 10/12/2012, à confirmer.

Application Java à réaliser

Il s'agit d'une application en ligne de commande ayant le comportement suivant:

  • Si le switch –import <fichier> est utilisé, importer les données du fichier dans la base de donnée
  • Si le switch –export <fichier> est utilisé, exporter les données de la base de données vers le fichier dans le format dépendant de l'extension du fichier: .xmlXML, .n3 → NTriples.
  • Si le switch –dburl <url> est utilisé, remplacer la connexion à la base de donnée par défaut par celle fournie via l'url
1)
pas de rar ou autre format d'archive