Mise en place d`un SPARQL EndPoint

publicité
Mise en place d'un SPARQL EndPoint
Servir du RDF via HTTP avec Jena & Fuseki
Julien Barde & Wilfried Heintz
jRBDD_2015
(http://creativecommons.org/licenses/by-nc-sa/3.0/)
Introduction
Des outils génériques pour servir et partager ses données
Réutilisation des travaux de Julien Barde, UMR IRD Marbec
· Décrire toutes les ressources d'une unité de Recherche :
- agents, publications, bases de données, images ...
· S'appuyer sur des standards pour diffuser ce patrimoine
- OGC ? EML ? Open-data !
2/34
›
HIE DES CONTRÔLES CNIL EN 2014 (/FR/…
REATED)
graphiques) (/fr/reuses/carte­des­nouvelles­regions­
4/34
Présentation de Jena
Un Framework pour le Web sémantique
Source : http://jena.apache.org (http://jena.apache.org)
Composé de différentes APIs pour implémenter et servir du RDF :
· API RDF : noyau du framework
- API Sparql : interroger et mettre à jour du RDF avec SPARQL
- API Ontology : intégrer des modèles OWLdans Jena
· API Store pour stocker les données
· Serveur Fuseki pour représenter du RDF et exécuter des
requêtes SPARQLvia HTTP
6/34
Présentation de Jena
7/34
Pourquoi Fuseki ?
· Projet de la fondation Apache
- Open-source
- Communauté importante de développeurs (HP)
- Expérience reconnue
· Déploiement dans Tomcat
· Persistance des données
· 3e génération du logiciel
8/34
Pré-requis indispensables
Machine connectée + Java + Tomcat
· Exemple avec un serveur Linux Ubuntu
· Port 8080 ouvert
· Droits d'administration
9/34
Préparation de la machine
Installation de Java
Source : https://wolfpaulus.com/journal/software/tomcat-jessie (https://wolfpaulus.com/journal/software/tomcat-jessie)
# java -version
# su root
# echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main"
> /etc/apt/sources.list.d/webupd8team-java.list
# echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main"
> /etc/apt/sources.list.d/webupd8team-java.list
# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
# apt-get update
# apt-get install oracle-javax-installer
10/34
Préparation de la machine
Installation de Java
Pour changer la version de java :
# update-alternatives --config java
11/34
Préparation de la machine
Installation de Tomcat
Création d'un utilisateur Tomcat :
# sudo adduser \
--system \
--shell /bin/bash \
--gecos 'Tomcat Java Servlet and JSP engine' \
--group \
--disabled-password \
--home /home/tomcat \
tomcat
12/34
Préparation de la machine
Installation de Tomcat
Installation des paquets :
# mkdir -p ~/tmp
# cd ~/tmp
# wget http://www.us.apache.org/dist/tomcat/tomcat-8/v8.0.28/bin/apache-tomcat-8.0.28.tar.gz
# tar xvzf ./apache-tomcat-8.0.28.tar.gz
# rm ./apache-tomcat-8.0.28.tar.gz
# sudo mkdir -p /usr/share/tomcat8
# sudo mv ~/tmp/apache-tomcat-8.0.28 /usr/share/tomcat8
13/34
Préparation de la machine
Installation de Tomcat
Paramétrages :
# sudo rm -f /usr/share/tomcat
# sudo ln -s /usr/share/tomcat8/apache-tomcat-8.0.28 /usr/share/tomcat
# sudo chown -R tomcat:tomcat /usr/share/tomcat8
# sudo chmod +x /usr/share/tomcat/bin/*.sh
14/34
Préparation de la machine
Installation de Tomcat
Changer le port d'écoute (si nécessaire) :
# sudo nano /usr/share/tomcat8/apache-tomcat-8.0.28/conf/server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
15/34
Préparation de la machine
Installation de Tomcat
Modifier la taille autorisée pour les fichiers WAR :
# sudo nano /usr/share/tomcat8/apache-tomcat-8.0.28/webapps/manager/WEB-INF/web.xml
<multipart-config>
<!-- 50MB max -->
<max-file-size>52428800</max-file-size>
<max-request-size>52428800</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
16/34
Préparation de la machine
Installation de Tomcat
Créer un rôle manager :
# sudo nano /usr/share/tomcat8/apache-tomcat-8.0.28/conf/tomcat-users.xml
<role rolename="tomcat"/>
<role rolename="manager-gui"/>
<user username="user" password="mdp" roles="tomcat,manager-gui"/>
17/34
Préparation de la machine
Installation de Tomcat
Démarrer/arrêter le service :
# sudo /bin/su - tomcat -c /usr/share/tomcat/bin/startup.sh
# sudo /bin/su - tomcat -c /usr/share/tomcat/bin/shutdown.sh
18/34
Préparation de la machine
Installation de Tomcat
Optimiser le démarrage :
# nano /usr/share/tomcat8/apache-tomcat-8.0.28/bin/catalina.sh
Ajouter au début du fichier la ligne :
JAVA_OPTS="-Djava.security.egd=file:/dev/urandom"
19/34
Tomcat est opérationnel
20/34
Démarrage de Fuseki
Déploiement du chier WAR
# cd ~/tmp
# tar xvzf apache-tomcat-8.0.28.tar.gz
# rm apache-tomcat-8.0.28.tar.gz
# sudo cp fuseki.war /usr/share/tomcat8/apache-tomcat-8.0.28/webapps/fuseki.war
Puis démarrer Tomcat :
# sudo /bin/su - tomcat -c /usr/share/tomcat/bin/startup.sh
21/34
Générer du RDF
RDFization / Tripli cation (Agents et bibliographies)
· Convertir une liste d'agents stockée dans un tableau CSV en
triplets RDF
· Créer un lien entre ces agents et leur productions scientifiques
->
https://github.com/juldebar/RDFization_Foaf_Biblio
(https://github.com/juldebar/RDFization_Foaf_Biblio)
22/34
Installation de Fuseki
Préparation
Arrêter Tomcat :
# sudo /bin/su - tomcat -c /usr/share/tomcat/bin/shutdown.sh
Puis télécharger Fuseki :
# cd ~/tmp
# wget http://archive.apache.org/dist/jena/binaries/apache-jena-fuseki-2.3.0.tar.gz
23/34
Installation de Fuseki
Préparation
Créer un répertoire pour Fuseki :
# sudo mkdir /etc/fuseki
# sudo chown tomcat:tomcat /etc/fuseki
Puis pour le stockage des données :
# sudo mkdir /data/fuseki
# sudo chown tomcat:tomcat /data/fuseki
24/34
Installation de Fuseki
Copie des données
Créer un répertoire pour Fuseki :
# sudo cp ~/tmp/xxx /data/fuseki
25/34
Installation de Fuseki
Con guration
Editer le fichier etc/fuseki/config.ttl :
# Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
## Fuseki Server configuration file.
@prefix :
@prefix fuseki:
@prefix rdf:
@prefix rdfs:
@prefix tdb:
@prefix ja:
<#> .
<http://jena.apache.org/fuseki#> .
<http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
<http://www.w3.org/2000/01/rdf-schema#> .
<http://jena.hpl.hp.com/2008/tdb#> .
<http://jena.hpl.hp.com/2005/11/Assembler#> .
[] rdf:type fuseki:Server ;
26/34
Installation de Fuseki
Con guration
Déclaration d'un service, après la ligne # End triples. :
# Déclaration d'un service
fuseki:services (
<#nom_du_service>
).
27/34
Installation de Fuseki
Con guration
Description du service :
# Description du service déclaré prédédemment
<#nom_du_service> rdf:type fuseki:Service ;
fuseki:name
"nom_du_service" ;
# http://host:port/ds
fuseki:serviceQuery
"sparql" ; # SPARQL query service
fuseki:serviceQuery
"query" ;
# SPARQL query service (alt name)
fuseki:serviceUpdate
"update" ; # SPARQL update service
fuseki:serviceUpload
"upload" ; # Non-SPARQL upload service
fuseki:serviceReadWriteGraphStore "data" ;
# SPARQL Graph store protocol (read and write)
# A separate read-only graph store endpoint:
fuseki:serviceReadGraphStore
"get" ;
# SPARQL Graph store protocol (read only)
fuseki:dataset
<#nom_du_dataset> ;
.
28/34
Installation de Fuseki
Con guration
Description du dataset (mode "mémoire") :
# Description du dataset déclaré dans le service ci-dessus
<#nom_du_dataset> rdf:type ja:RDFDataset ;
rdfs:label "label_du_dataset" ;
ja:defaultGraph
29/34
Installation de Fuseki
Con guration
[ rdfs:label "label_du_graph" ;
a ja:MemoryModel ;
ja:content [ja:externalContent <file:/data/fuseki/Agents_ext.rdf> ] ;
ja:content [ja:externalContent <file:/data/fuseki/Biblio_ext.rdf> ] ;
ja:content [ja:externalContent <file:/data/fuseki/Mes_agents.rdf> ] ;
];
.
30/34
Installation de Fuseki
Sécurité
Affichage des datasets dans un serveur en ligne (non localhost)
Editer le fichier etc/fuseki/shiro.ini :
[users]
# Implicitly adds "iniRealm = org.apache.shiro.realm.text.IniRealm"
admin=pw
[roles]
31/34
Installation de Fuseki
Sécurité
[urls]
## Control functions open to anyone
/$/status = anon
/$/ping = anon
## and the rest are restricted to localhost.
## /$/** = localhost
/$/** = authcBasic,user[admin]
32/34
Démonstration en ligne
http://localhost:8080/fuseki
Toggle navigation
Apache
Jena
Fuseki
dataset
manage datasets
help
Server
status:
Dataset:
/dynaserv /datatdb
/dynaserv
query
upload files
edit
info
Please select a dataset.
33/34
Inspire et RDF
Inspire ? Open Data !
Votre organisation gère des données géographiques avec des outils
compatibles Inspire
(http://fr.wikipedia.org/wiki/Infrastructure_d%27information_g%C3%A9ographique_dans_la_Communaut%C3%A9_europ%C3%A
et souhaite les rendre disponibles sans effort sur data.gouv.fr
(https://www.data.gouv.fr).
 Je me connecte ! (/login)
 Catalogues de données
La passerelle Inspire moissonne plusieurs dizaines de catalogues de données issus d'inf rastructures
34/34
Téléchargement