Skip to content
marminthibaut edited this page Nov 7, 2012 · 5 revisions

Utilisation de D2RQ

D2RQ est une plateforme permettant d'accéder à des données stockées dans une base de données relationnelle comme un graphe rdf (en lecture seule). D2RQ est basé sur Jena, et peut être utilisé soit en tant qu'API enrichissant Jena, soit en tant que serveur autonome. C'est cette deuxième solution que nous avons choisi.

Modèle de données relationnelle

La première étape consiste en la définition du modèle de données coté relationnel. Nous avons fait le choix de stocker les données dans une base de données relationnelle afin de profiter des avantage de cette dernière, notamment sur la possibilité de garantir l'intégrité des données.

Diagramme de classe des données stockées en base de données relationnelle

Diagramme de classes

Ontologie

Nous avons définit une ontologie propre à nos données rdf générées par D2RQ. Celle-ci est disponible à l'adresse suivante : http://ontology.um2opendata.thibautmarmin.fr

Mapping

L'accès aux données via le graphe rdf généré à la volée par D2RQ nécessite la configuration du serveur via un mapping, rédigé en turtle. Chaque classe est typée, et chaque attribut des classes est mappé avec un champ d'une table en base de données. Il est également possible d'effectuer des jointure, et de créer des nœuds blancs.

Exemple de Mapping de la table Course

################
# Course table #
################

map:Course a d2rq:ClassMap;
	d2rq:dataStorage map:database;
	d2rq:uriPattern "Course/@@Course.id@@";
	d2rq:class mo:Course;

	d2rq:classDefinitionLabel "Course";
	d2rq:classDefinitionComment "Course class";
	d2rq:dataStorage map:database;
.

map:Course_label a d2rq:PropertyBridge;
	d2rq:belongsToClassMap map:Course;
	d2rq:property rdfs:label;
	d2rq:column "Course.libelle";
.

map:Course_comment a d2rq:PropertyBridge;
	d2rq:belongsToClassMap map:Course;
	d2rq:property rdfs:comment;
	d2rq:column "Course.comments";
.

map:Course_managedby a d2rq:PropertyBridge;
	d2rq:belongsToClassMap map:Course;
	d2rq:property mo:managedby;
	d2rq:refersToClassMap map:Person;
	d2rq:join "Course.managed_by = Personne.id";
.

Clone this wiki locally