Nous allons voir comment héberger une instance de serveur RDF Fuseki sur OpenShift, l’hébergement de RedHat.
Vous devez avoir un compte sur OpenShift (possibilité de comptes gratuits).
Sur la console d’administration OpenShift, créez une application de type ‘Do It Yourself’. Cela va prendre quelques minutes. Ici, je nomme l’application fuseki.
Chargez l’outil RHC , outil RedHat qui facilitera la configuration (attention: à la date d’écriture de cet article, rhc ne fonctionne bien qu’avec la version 1.9.3 de ruby, pas avec les versions ultérieures).
Dans une fenêtre de ligne de commande Windows, en tapant
rhc show-app fuseki
Vous verrez les caractéristiques de l’application créée, dont l’URL du git distant utilisé pour gérer l’installation de l’application. Comme vous avez créé l’application à partir de la console web, vous devez la cloner localement. Créez un directory pour contenir l’application (fuseki pour l’exemple), puis clonez le git
git clone <url du git distant> fuseki
Allez dans ce directory.
Pour récupérer sur github une installation de base toute prête, tapez
git remote add fuseki -m master git://github.com/semfact/openshift-fuseki.git
puis
git pull -s recursive -X theirs fuseki master
Vous avez localement une version 0.2.7 de Fuseki (qu’il faudra mettre à jour).
Poussez-la sur OpenShift
git push
L’application est alors accessible à l’URL
http://fuseki-$youropenshiftaccountname.rhcloud.com
On ne va pas essayer tester de façon approfondie cette version ancienne, mais plutôt faire dès maintenant une mise à jour.
Mise à jour de Fuseki
Sur la page Apache Fuseki, on trouve un zip à télécharger; on va se limiter à la version 1.4, car la version 2.4 nécessite Java 8 qui n’est pas encore disponible en standard sur OpenShift et nécessite pas mal d’ajustements (la version 2.4 permet notamment un meilleur contrôle des autorisations). On va le décompresser dans le dossier de notre application. Cela va créer un dossier jena-fuseki-1.4.0.
Dans le dossier .openshift/action_hooks, dans le fichier start, modifier la ligne
cd $OPENSHIFT_REPO_DIR/fuseki
par
cd $OPENSHIFT_REPO_DIR/jena-fuseki1-1.4.0
Ajouter et commiter les modifications faites à votre application:
git add * git commit -a -m "Ajout de la version 1.4.0 de Fuseki"
Pousser le tout sur OpenShift
git push
Cela peut être assez long.
Quand c’est terminé, retournez sur
http://fuseki-$youropenshiftaccountname.rhcloud.com
Tests avec Fuseki
Dans le fichier start du dossier .openshift/action_hooks sont indiquées les commandes exécutées par OpenShift au lancement de votre application.
Sur la ligne
nohup java -jar fuseki-server.jar --jetty-config ../conf/jetty.xml --config ../conf/services.ttl > $OPENSHIFT_DIY_LOG_DIR/fuseki.log 2>&1 &<br>
se trouve l’option –config suivie du chemin du fichier de configuration de Fuseki.
Remplacez ce chemin par config.ttl:
nohup java -jar fuseki-server.jar --jetty-config ../conf/jetty.xml --config config.ttl > $OPENSHIFT_DIY_LOG_DIR/fuseki.log 2>&1 &
Commitez et poussez le résultat.
En allant à l’adresse, http://fuseki-$youropenshiftaccountname.rhcloud.com vous voyez l’interface d’utilisation de Fuseki. Clic sur Control Panel, puis sur books.
Apparaît une page avec une interface d’interrogation (query), une interface de mise à jour (update) et une interface de chargement de données (upload); ces deux dernières ne fonctionneront pas car, comme nous le verrons plus, la base n’est configurée qu’en lecture pour le moment.
Tapez une requête sparql dans la première interface, par exemple:
select * where { ?s ?p ?o }
et vous obtiendrez une série de triplets définis dans le dataset books.
Ces données sont accessibles sur votre instance OpenShift de Fuseki parce qu’un ‘service’ est défini dans le fichier config.ttl:
<#service2> rdf:type fuseki:Service ; fuseki:name "books" ; fuseki:serviceQuery "query" ; fuseki:serviceReadGraphStore "get" ; fuseki:dataset <#books> ; . <#books> rdf:type ja:RDFDataset ; rdfs:label "Books" ; ja:defaultGraph [ rdfs:label "books.ttl" ; a ja:MemoryModel ; ja:content [ja:externalContent <file:Data/books.ttl> ] ; ] ; .
Le format est du Turtle générique. les spécificités sont -modérément- documentées sur le site de Fuseki.
Il est indiqué ici
- qu’un dataset du nom de books va être mis en place,
- qu’il sera accessible par les commandes query et get,
- que les données sont définies dans le dataset <#books> qui suit
suit la description du dataset:
- il est associé au label Books
- il sera exploité en mémoire
- le contenu initial proviendra du fichier books.ttl du sous-dossier Data du dossier de lancement de fuseki
Vous pouvez sur ce modèle exploiter vos propres données en mettant à jour sur votre instance locale le fichier Turtle de vos données et en le référençant dans le fichier config.ttl. Cela permet d’éviter de laisser votre instance OpenShift ouverte en écriture et de publier vos données via git à partir de leur représentation locale.
Pour une utilisation par logiciel, vous avez le service query, par exemple, la requête de tout à l’heure peut être appelée avec l’URL
http://fuseki-onsem.rhcloud.com/books/query?query=select+*+where+%7B+%3Fs+%3Fp+%3Fo+%7D&output=text&stylesheet=
On voit l’URL de l’instance, le nom du dataset, la commande query, suivie de paramètres, ici:
- query: la requête proprement dite, formattée pour une URL
- output: le format de sortie
- stylesheet: une éventuelle feuille de style pour mettre en forme la sortie si elle est au format xml
Vous y êtes: vous avez un entrepôt de triplets en place. A vous de jouer avec vos propres données!