« SPARQL Protocol and RDF Query Language/Travail pratique/Faire un serveur SPARQL » : différence entre les versions

Contenu supprimé Contenu ajouté
Obsolete
m Robot : Remplacement de texte automatisé (-(<|</)source([ \t>]) +\1syntaxhighlight\2)
Ligne 54 :
==== Fedora 17 x86_64 ====
* Installer les dépots Sparql.pro and Epel :
<sourcesyntaxhighlight lang="bash">wget http://repo.sparql.pro/fedora/sparql-pro-1.0.0-1.noarch.rpm
rpm -ivh sparql-pro-1.0.0-1.noarch.rpm</sourcesyntaxhighlight>
 
* Puis installer 4Store :
<sourcesyntaxhighlight lang="bash">yum install 4store</sourcesyntaxhighlight>
 
* La première fois, il faudra créer la base de données par défaut : DefaultKB
** Vous pourrez changer son nom mais il vous faudra alors changer les fichiers /etc/4store.conf et /etc/init.d/4store.
<sourcesyntaxhighlight lang="bash">4s-backend-setup DefaultKB</sourcesyntaxhighlight>
 
Vous pourrez désinstaller 4Store mais la base de données ne sera pas détruite (en théorie)
 
* Pour démarrer le service HTTP :
<sourcesyntaxhighlight lang="bash">service 4store start</sourcesyntaxhighlight>
 
* Le service utilise le port 8181 : <code>http://localhost:8181/status/</code>
** Vous pourrez changer le port 8181 (lire la documentation : man 4store.conf )
* Et vous pouvez lancer au démarrage du serveur le service avec la commande :
<sourcesyntaxhighlight lang="bash">chkconfig --level 345 4store on</sourcesyntaxhighlight>
 
==== CentOs 6 x86_64 ====
* Installer les dépots Sparql.pro and Epel :
<sourcesyntaxhighlight lang="bash">wget http://repo.sparql.pro/centos/sparql-pro-1.0.0-1.noarch.rpm
wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh sparql-pro-1.0.0-1.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm</sourcesyntaxhighlight>
 
* Puis installer 4Store :
<sourcesyntaxhighlight lang="bash">yum install 4store</sourcesyntaxhighlight>
 
* La première fois, il faudra créer la base de données par défaut : DefaultKB
** Vous pourrez changer son nom mais il vous faudra alors changer les fichiers /etc/4store.conf et /etc/init.d/4store.
<sourcesyntaxhighlight lang="bash">4s-backend-setup DefaultKB</sourcesyntaxhighlight>
 
Vous pourrez désinstaller 4Store mais la base de données ne sera pas détruite (en théorie)
 
* Pour démarrer le service HTTP :
<sourcesyntaxhighlight lang="bash">service 4store start</sourcesyntaxhighlight>
 
* Le service utilise le port 8181 : <code>http://localhost:8181/status/</code>
** Vous pourrez changer le port 8181 (lire la documentation : man 4store.conf )
* Et vous pouvez lancer au démarrage du serveur le service avec la commande :
<sourcesyntaxhighlight lang="bash">chkconfig --level 345 4store on</sourcesyntaxhighlight>
 
==== Ubuntu ====
Il faut insérer dans le fichier /etc/apt/sources.list le dépôt (en France) qui va contenir le package, par exemple :
<sourcesyntaxhighlight lang="text">deb http://mirror.ovh.net/ubuntu precise main restricted universe</sourcesyntaxhighlight>
 
Ensuite, il faut mettre à jour apt-get avec ce nouveau dépot :
<sourcesyntaxhighlight lang="bash">
sudo apt-get update
</syntaxhighlight>
</source>
 
Vous pouvez maintenant installer 4Store via la commande suivante sur '''Ubuntu''':
<sourcesyntaxhighlight lang="bash">
sudo apt-get install 4store
</syntaxhighlight>
</source>
 
=== Installation manuelle ===
Ligne 122 :
'''Ubuntu'''
Voici la commande à exécuter pour installer les premières dépendances :
<sourcesyntaxhighlight lang="bash">
sudo apt-get install automake libtool gtk-doc-tools flex bison libxml2-dev libglib2.0-dev libpcre3-dev avahi-daemon libavahi-client-dev libavahi-glib-dev libreadline-dev git-core
</syntaxhighlight>
</source>
 
'''Fedora'''
Voici la commande à exécuter pour installer les premières dépendances :
<sourcesyntaxhighlight lang="bash">
yum install gcc glib2-devel libxml2-devel pcre-devel avahi avahi-devel avahi-glib-devel readline-devel ncurses-devel termcap libtermcap-devel expat-devel zlib-devel libtool automake flex gtk-doc bison git-core
</syntaxhighlight>
</source>
 
==== Installation des librairies Redland : Raptor, Rasqal ====
Ligne 138 :
 
'''Ubuntu'''
<sourcesyntaxhighlight lang="bash">
sudo apt-get install redland
</syntaxhighlight>
</source>
 
'''Fedora'''
<sourcesyntaxhighlight lang="bash">
sudo yum install redland
</syntaxhighlight>
</source>
 
{{remarque|contenu=
Ligne 151 :
 
Afficher le nombre de triplets et les erreurs s’il y en a.
<sourcesyntaxhighlight lang="bash">
rapper -c myFile.RDF
</syntaxhighlight>
</source>
 
Convertir le fichier "ontology.owl" en entrée (format automatiquement détecté) dans le format NTriples pour être enregistré dans le fichier "ontology.n3".
<sourcesyntaxhighlight lang="bash">
rapper ontology.owl -o ntriples > ontology.n3
</syntaxhighlight>
</source>
 
Voir les formats possibles en entrée et en sortie.
<sourcesyntaxhighlight lang="bash">
rapper --help
</syntaxhighlight>
</source>
}}
 
Ligne 170 :
 
Cependant '''pour Fedora uniquement''', il faut ajouter une ligne dans le fichier /etc/sysconfig/iptables (attention : il faut ajouter cette ligne juste après la dernière ligne qui commence par "-A INPUT") :
<sourcesyntaxhighlight lang="text">
-A INPUT -m state --state NEW -m udp -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
</syntaxhighlight>
</source>
Cette ligne est nécessaire au logiciel Avahi qu'utilise 4Store.
 
Pour prendre en compte cette modification sous Fedora :
<sourcesyntaxhighlight lang="bash">
service iptables restart
</syntaxhighlight>
</source>
 
==== Compilation & installation ====
4Store est encore un jeune logiciel et ne peut pas encore être installé via des packages. Le plus simple est encore de le compiler à partir des dernières sources avec la méthode suivante :
 
<sourcesyntaxhighlight lang="bash">
cd ~/projets
git clone https://github.com/garlik/4store.git
Ligne 202 :
#create the folder of logs
sudo mkdir /var/log/4store
</syntaxhighlight>
</source>
 
'''Ubuntu'''
<sourcesyntaxhighlight lang="bash">
sudo make install
</syntaxhighlight>
</source>
 
'''Fedora'''
<sourcesyntaxhighlight lang="bash">
su -
make install
</syntaxhighlight>
</source>
 
Pour tester (attention : seule la première série de tests doit passer au vert, les autres tests concernent la partie en cours de développement) :
<sourcesyntaxhighlight lang="bash">
make test
</syntaxhighlight>
</source>
 
== Mode d’emploi du serveur ==
Ligne 224 :
=== Créer une base de données ===
 
<sourcesyntaxhighlight lang="bash">
sudo 4s-backend-setup test
</syntaxhighlight>
</source>
 
=== Démarrer le serveur SPARQL ===
Ici, nous exécuterons le service sur le port 8081 (paramètre -p) et nous désirons voir les erreurs en sortie (paramètre -D, mode debug).
<sourcesyntaxhighlight lang="bash">
sudo 4s-backend test
sudo 4s-httpd -D test -p 8081
</syntaxhighlight>
</source>
 
=== Vérifier l'état du serveur SPARQL ===
Ligne 243 :
=== Arrêter le serveur SPARQL ===
 
<sourcesyntaxhighlight lang="bash">
sudo killall 4s-httpd
sudo killall 4s-backend
</syntaxhighlight>
</source>
 
=== Supprimer une base de données ===
 
<sourcesyntaxhighlight lang="bash">
sudo killall 4s-httpd
sudo killall 4s-backend
sudo 4s-backend-destroy test
</syntaxhighlight>
</source>
 
== Service automatique ==
Ligne 263 :
=== Installation (niveau expert) ===
On commence par créer notre base de données, ou silo de données, qui contiendra nos graphes. On va l'appeler "DefaultKB" (KB pour KnowledgeBase).
<sourcesyntaxhighlight lang="bash">
sudo 4s-backend-setup DefaultKB
</syntaxhighlight>
</source>
 
On va maintenant fabriquer rapidement un service 4Store pour démarrer et arrêter le service SPARQL avec la base de données "DefaultKB".
Ligne 271 :
==== Debian/Ubuntu ====
On fabrique le script pour lancer le service automatiquement au démarrage du serveur :
<sourcesyntaxhighlight lang="bash">
sudo vim /etc/init.d/4s-httpd
</syntaxhighlight>
</source>
 
Copier dans ce fichier le code suivant pour un système débian:
<sourcesyntaxhighlight lang="bash">
#! /bin/sh -e
DAEMON_BACKEND="/usr/local/bin/4s-backend"
Ligne 329 :
esac
exit 0
</syntaxhighlight>
</source>
On autorise l'exécution de ce script :
<sourcesyntaxhighlight lang="bash">
sudo chmod 0755 /etc/init.d/4s-httpd
</syntaxhighlight>
</source>
 
On teste le service :
<sourcesyntaxhighlight lang="bash">
sudo service 4s-httpd start
</syntaxhighlight>
</source>
 
On vérifie que les processus 4s-httpd et 4s-backend ont démarré (il peut y avoir plusieurs processus 4s-httpd ou backend) avec la commande suivante :
<sourcesyntaxhighlight lang="bash">
ps -AL | grep 4s
</syntaxhighlight>
</source>
 
On vérifie que le serveur fonctionne avec le lien : <code>http://localhost:8081/status</code>
<sourcesyntaxhighlight lang="bash">
sudo service 4s-httpd stop
</syntaxhighlight>
</source>
 
On vérifie que le serveur s'est arrêté avec le même lien, qui doit afficher "serveur inconnu" ou "incapable de se connecter".
 
On déclare le service 4s-httpd au système et on le lance pour la dernière fois manuellement.
<sourcesyntaxhighlight lang="bash">
sudo update-rc.d 4s-httpd defaults
sudo service 4s-httpd start
</syntaxhighlight>
</source>
 
==== RHEL/CentOS ====
Exemple de code pour un système Archlinux:
<sourcesyntaxhighlight lang="bash">
#! /bin/bash
. /etc/rc.conf
Ligne 422 :
esac
exit 0
</syntaxhighlight>
</source>
 
On autorise l'exécution de ce script :
<sourcesyntaxhighlight lang="bash">
sudo chmod 0755 /etc/init.d/4s-httpd
</syntaxhighlight>
</source>
 
On teste le service :
<sourcesyntaxhighlight lang="bash">
sudo service 4s-httpd start
</syntaxhighlight>
</source>
 
On vérifie que les processus 4s-httpd et 4s-backend ont démarré (il peut y avoir plusieurs processus 4s-httpd ou backend) avec la commande suivante :
<sourcesyntaxhighlight lang="bash">
ps -AL | grep 4s
</syntaxhighlight>
</source>
 
On vérifie que le serveur fonctionne avec le lien : <code>http://localhost:8081/status</code>
<sourcesyntaxhighlight lang="bash">
sudo service 4s-httpd stop
</syntaxhighlight>
</source>
 
On vérifie que le serveur s'est arrêté avec le même lien, qui doit afficher "serveur inconnu" ou "incapable de se connecter".
 
On déclare le service 4s-httpd au système et on le lance pour la dernière fois manuellement.
<sourcesyntaxhighlight lang="bash">
sudo /sbin/chkconfig 4s-httpd on
sudo service 4s-httpd start
</syntaxhighlight>
</source>
 
=== Désinstallation ===
Pour désinstaller ce service voici la commande :
<sourcesyntaxhighlight lang="bash">
sudo update-rc.d -f 4s-httpd
</syntaxhighlight>
</source>
 
=== Mode d’emploi ===
Ligne 462 :
 
==== Démarrer le service ====
<sourcesyntaxhighlight lang="bash">
sudo service 4s-httpd start
</syntaxhighlight>
</source>
==== Arrêter le service ====
<sourcesyntaxhighlight lang="bash">
sudo service 4s-httpd stop
</syntaxhighlight>
</source>
==== Redémarrer le service ====
<sourcesyntaxhighlight lang="bash">
sudo service 4s-httpd restart
</syntaxhighlight>
</source>
==== Voir les logs du service ====
Cette commande va vous permettre de suivre en temps réel les logs de votre service et ainsi voir les requêtes SPARQL.
<sourcesyntaxhighlight lang="bash">
sudo tail -f /var/log/4store/query-DefaultKB.log
</syntaxhighlight>
</source>
 
== Tests du service avec PHP ==
Ligne 485 :
=== Installation ===
Pour installer la dernière version de PHP4store :
<sourcesyntaxhighlight lang="bash">
sudo apt-get install curl php5-curl
sudo pear channel-discover bordercloud.github.com/pear
sudo pear install bordercloud/php4store
</syntaxhighlight>
</source>
 
=== Tests ===
Ligne 495 :
 
On va créer un projet test4store et ouvrir un nouveau fichier query.php :
<sourcesyntaxhighlight lang="bash">
cd ~/projets
mkdir test4store
cd test4store
vim query.php
</syntaxhighlight>
</source>
 
On copie dans le fichier query.php le code suivant :
<sourcesyntaxhighlight lang="php">
<?php
 
Ligne 591 :
}
var_dump($res);
</syntaxhighlight>
</source>
 
Ce code est un des exemples de la [http://bordercloud.github.com/pear/doc/php4store-0.4.4/Bourdercloud-PHP4store/Endpoint.html documentation de PHP4Store].
 
On exécute notre exemple :
<sourcesyntaxhighlight lang="bash">
php query.php
</syntaxhighlight>
</source>
 
Si tout fonctionne, la dernière ligne devrait ressembler à ceci :
<sourcesyntaxhighlight lang="text">
ASK :bool(true)
</syntaxhighlight>
</source>
 
Vous pouvez également voir les logs du serveur et ainsi voir toutes les requêtes SPARQL envoyées par votre programme PHP :
<sourcesyntaxhighlight lang="bash">
sudo tail -f /var/log/4store/query-DefaultKB.log -n100
</syntaxhighlight>
</source>
 
Maintenant, tout est en place pour apprendre à utiliser SPARQL !