Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
enseignement:bdav:projet:2015 [2015/11/03 09:54]
ecoquery créée
enseignement:bdav:projet:2015 [2015/11/04 18:49]
ecoquery [Modalités de rendu]
Ligne 29: Ligne 29:
  
 ^Table^Attributs utilisés\\ pour construire l'IRI^IRI^ ^Table^Attributs utilisés\\ pour construire l'IRI^IRI^
-|Recette|nom|<nowiki>http://www.recettes.com/Recette/</nowiki>//__nom__//+|Recette|nom|<nowiki>http://www.recettes.com/Recette/id/</nowiki>//__nom__//
-|Ingredient|nom|<nowiki>http://www.recettes.com/Ingredient/</nowiki>//__nom__//+|Ingredient|nom|<nowiki>http://www.recettes.com/Ingredient/id/</nowiki>//__nom__//
-|Quantite|recette, ingredient|<nowiki>http://www.recettes.com/Quantite/</nowiki>//__recette__//<nowiki>/</nowiki>//__ingredient__//+|Quantite|recette, ingredient|<nowiki>http://www.recettes.com/Quantite/id/</nowiki>//__recette__//<nowiki>/</nowiki>//__ingredient__//
-|Instruction|recette,ordre|<nowiki>http://www.recettes.com/Instruction/</nowiki>//__recette__//<nowiki>/</nowiki>//__ordre__//|+|Instruction|recette,ordre|<nowiki>http://www.recettes.com/Instruction/id/</nowiki>//__recette__//<nowiki>/</nowiki>//__ordre__//|
  
 +Pour chaque table //T//, pour chaque attribut //A// qui est une clé étrangère, pour chaque tuple de //T//, on considère que le triplet //K// <nowiki><http://www.recettes.com/</nowiki>//T//<nowiki>/</nowiki>//A//<nowiki>></nowiki> //F// fait partie des triplets de la vue RDF; où //K// est l'IRI associée à la valeur de la clé primaire pour le tuple considéré et //F// est l'IRI associée à la valeur de la clé étrangère dans la table cible.
  
 +<note tip>
 +**Exemple:** si le tuple ('gateau',3,'enfourner a 180 degres') est dans la table Instruction, le triplet suivant devra être dans la vue: <nowiki><http://www.recettes.com/Instruction/id/gateau/3> <http://www.recettes.com/Instruction/recette> <http://www.recettes.com/Recette/id/gateau></nowiki>
 +</note>
 +Pour chaque tuple de la table //T//, pour chaque attribut //A// qui **n'est pas** une clé étrangère, on considère que le triplet //K// <nowiki><http://www.recettes.com/</nowiki>//T//<nowiki>/</nowiki>//A//<nowiki>> "</nowiki>//V//<nowiki>"^^</nowiki>//S// fait partie des triplets de la vue RDF; où //K// est l'IRI associée à la valeur de la clé primaire pour le tuple considéré, //V// la valeur de l'attribut et //S// le type XML Schema le plus proche du type SQL utilisé.
  
- quantités et instructions, on se réfère +<note tip>**Exemple:** si le tuple ('gateau',3,'enfourner a 180 degres') est dans la table Instruction, le triplet suivant devra être dans la vue: <nowiki><http://www.recettes.com/Instruction/id/gateau/3> <http://www.recettes.com/Instruction/ordre> "3"^^xsd:integer</nowiki> (avec ''xsd:'' qui est un préfixe correspondant à l'URL associée à XML Schema, i.e. http://www.w3.org/2001/XMLSchema)</note>
-  Chaque recette sera identifiée par <nowiki>http://www.recettes.org/Recette/</nowiki>//nom// où //nom// est le nom de la recette. +
-  * Chaque recette sera identifiée par <nowiki>http://www.recettes.org/Recette/</nowiki>//nom// où //nom// est le nom de la recette.+
  
 ===== Liens utiles ===== ===== Liens utiles =====
Ligne 47: Ligne 50:
   * [[https://jena.apache.org/documentation/javadoc/jena/index.html?org/apache/jena/rdf/model/ModelFactory.html|ModelFactory.createModelForGraph(Graph)]] pour créer un Model à partir d'un Graph   * [[https://jena.apache.org/documentation/javadoc/jena/index.html?org/apache/jena/rdf/model/ModelFactory.html|ModelFactory.createModelForGraph(Graph)]] pour créer un Model à partir d'un Graph
  
-On considère le schéma relationnel du [[enseignement:tp:bd:tp-orm:2015|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: {{:enseignement:bdav:projet: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 [[http://liris.cnrs.fr/emmanuel.coquery/dokuwiki.old/doku.php?id=enseignement:bdav:tp-apis-xml-jdbc|XML-JDBC]] de 2011. 
- 
-===== Import/Export RDF ===== 
- 
-L'import/export au format RDF s'appuiera sur la bibliothèque [[http://jena.apache.org/documentation/query/index.html|ARQ]], en particulier sur [[http://jena.apache.org/documentation/io/riot.html|l'API RIOT]]. 
  
 ===== Projet de départ ===== ===== Projet de départ =====
  
-Un projet de départ est fourni dans l'archive {{:enseignement:bdav:projet: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.+Un projet de départ est fourni dans l'archive {{:enseignement:bdav:projet:prj-mif18-2015.zip|}}. Il s'agit d'un projet maven incluant les dépendances vers le driver H2 et la bibliothèque Jena. Il contient un test JUnit ''SPARQLTest'' avec du code exemple pour une requête SPARQL sur une graphe.
  
-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: <code shell>java -jar chemin/vers/prj-mif18-1.0-SNAPSHOT-jar-with-dependencies.jar arg1 ... argn</code>C'est la classe ''App'' fournie dans ce projet qui sert de point d'entrée.+Le projet fourni est préconfiguré pour générer une archive ''target/prj-mif18-2015-1.0-SNAPSHOT-jar-with-dependencies.jar'' exécutable directement avec: <code shell>java -jar chemin/vers/prj-mif18-2015-1.0-SNAPSHOT-jar-with-dependencies.jar arg1 ... argn</code>C'est la classe ''App'' fournie dans ce projet qui sert de point d'entrée.
  
 ===== Modalités de rendu ===== ===== Modalités de rendu =====
Ligne 77: Ligne 64:
   * Un fichier README.txt contenant:   * Un fichier README.txt contenant:
     * le noms et numéros d'étudiants du/des membre(s) du groupe.     * 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.     * 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//+La date de rendu est fixée au **Dimanche 6 décembre 2015**
- +
-==== 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: ''.xml'' -> XML, ''.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 +