DBpedia Live FR

Dans le cadre d'un contrat avec la société Vocal-Apps nous avons mis en place pour le compte du ministère de la culture et de la communication le EndPoint DBpedia Live français. Soucieux de partager nos travaux avec la communauté nous avons obtenus l'autorisation de diffuser la document technique ayant permis de mettre sur pied ce service sous licence CC-BY-SA.

Si vous désirez plus d'informations ou que vous souhaitez faire appel à notre expertise sur DBpedia vous pouvez contacter notre développeur à ou au +33 7 62 59 64 17.

Le endpoint est disponible sur http://live.fr.dbpedia.org

Taches globales à effectuer en premier

1) Paquets à installer

aptitude install git tmux maven libcap2-bin apache2 php5 libapache2-mod-php5 mysql-server mysql-client php5-mysql phpmyadmin

2) Configuration d'apache

Exécuter :
 

a2enmod rewrite headers proxy
service apache2 restart

Dans /etc/apache2/sites-enabled/000-default

    Alias /changesets/ "/home/extraction-framework/live/null/" 
        <Directory /home/extraction-framework/live/null> 
                Options Indexes FollowSymLinks MultiViews 
                AllowOverride All 
                Order allow,deny 
                allow from all 
        </Directory> 

Dans /etc/apache2/apache2.conf ajouter à la fin (basé sur le wiki dbpedia) :

ProxyPass          /conductor     http://localhost:8890/conductor 
ProxyPassReverse   /conductor     http://localhost:8890/conductor 
ProxyPass          /about         http://localhost:8890/about 
ProxyPassReverse   /about         http://localhost:8890/about 
ProxyPass          /category      http://localhost:8890/category 
ProxyPassReverse   /category      http://localhost:8890/category 
ProxyPass          /class         http://localhost:8890/class 
ProxyPassReverse   /class         http://localhost:8890/class 
ProxyPass          /data4         http://localhost:8890/data4 
ProxyPassReverse   /data4         http://localhost:8890/data4 
ProxyPass          /data3         http://localhost:8890/data3 
ProxyPassReverse   /data3         http://localhost:8890/data3 
ProxyPass          /data2         http://localhost:8890/data2 
ProxyPassReverse   /data2         http://localhost:8890/data2 
ProxyPass          /data          http://localhost:8890/data 
ProxyPassReverse   /data          http://localhost:8890/data 
ProxyPass          /describe      http://localhost:8890/describe 
ProxyPassReverse   /describe      http://localhost:8890/describe 
ProxyPass          /delta.vsp     http://localhost:8890/delta.vsp 
ProxyPassReverse   /delta.vsp     http://localhost:8890/delta.vsp 
ProxyPass          /fct           http://localhost:8890/fct 
ProxyPassReverse   /fct           http://localhost:8890/fct 
ProxyPass          /isparql       http://localhost:8890/isparql 
ProxyPassReverse   /isparql       http://localhost:8890/isparql 
ProxyPass          /ontology      http://localhost:8890/ontology 
ProxyPassReverse   /ontology      http://localhost:8890/ontology 
ProxyPass          /page          http://localhost:8890/page 
ProxyPassReverse   /page          http://localhost:8890/page 
ProxyPass          /property      http://localhost:8890/property 
ProxyPassReverse   /property      http://localhost:8890/property 
ProxyPass          /rdfdesc       http://localhost:8890/rdfdesc 
ProxyPassReverse   /rdfdesc       http://localhost:8890/rdfdesc 
ProxyPass          /resource      http://localhost:8890/resource 
ProxyPassReverse   /resource      http://localhost:8890/resource 
ProxyPass          /services      http://localhost:8890/services 
ProxyPassReverse   /services      http://localhost:8890/services 
ProxyPass          /snorql        http://localhost:8890/snorql 
ProxyPassReverse   /snorql        http://localhost:8890/snorql 
ProxyPass          /sparql-auth   http://localhost:8890/sparql-auth 
ProxyPassReverse   /sparql-auth   http://localhost:8890/sparql-auth 
ProxyPass          /sparql        http://localhost:8890/sparql 
ProxyPassReverse   /sparql        http://localhost:8890/sparql 
ProxyPass          /statics       http://localhost:8890/statics 
ProxyPassReverse   /statics       http://localhost:8890/statics 
ProxyPass          /void          http://localhost:8890/void 
ProxyPassReverse   /void          http://localhost:8890/void 
ProxyPass          /wikicompany   http://localhost:8890/wikicompany 
ProxyPassReverse   /wikicompany   http://localhost:8890/wikicompany 

3) Configuration de MySQL

Attention il faut installer la base MySQL sur une partition ayant assez d'espace disque, dans notre cas nous avons du le mettre dans la partition /home/mysql (éditez la variable datadir dans /etc/mysql/my.cnf )

puis modifiez /etc/mysql/my.cnf

max_allowed_packet=1G
key_buffer=1G
query_cache_size=1G

allez sur http://localhost/phpmyadmin

Créez un utilisateur frwiki et donnez lui les droits sur une base de données frwiki

4) Installation de virutoso

Pour la mise en place du live nous avons du nous baser sur la version Version 6.1.8.3127-pthreads as of Jun 18 2014 tel que conseillé par l'équipe Dbpedia (documentation officielle).

Installation via packets officiels (A SUIVRE)

aptitude install dpkg-dev build-essential autoconf automake libtool flex bison gperf gawk m4 make odbcinst libxml2-dev libssl-dev libreadline-dev
wget http://downloads.sourceforge.net/project/virtuoso/virtuoso/6.1.8/virtuoso-opensource-6.1.8.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fvirtuoso%2Ffiles%2Fvirtuoso%2F6.1.8%2F&ts=1399023732&use_mirror=garr
tar -xzf virtuoso-opensource-6.1.8.tar.gz
cd virtuoso-opensource-6.1.8/
./configure  --with-readline
make
make install

Installation via github (DECONSEILLE)

git clone https://github.com/openlink/virtuoso-opensource.git virtuoso-github
cd virtuoso-github
./autogen.sh
./configure  --with-readline
make
make install

Puis créez votre fichier virtuoso.ini en y apportant les modifs suivantes :

ServerPort                      = 80 
MaxClientConnections            = 100 
NumberOfBuffers          = 4000000 
MaxDirtyBuffers          = 3000000 
DirsAllowed                     = ., /usr/local/share/virtuoso/vad, /home/extraction-framework/datas/frwiki/ 
[URIQA] 
DynamicLocal                    = 1 
DefaultHost                     = localhost:80 

Pour permettre à virtuoso de se lancer sans droits root sur le port 80 :

sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/virtuoso-t

démarer virtuoso en mode virtuoso-t +foreground affin de voir le trace log

/usr/local/virtuoso-opensource/bin/virtuoso-t +foreground +configfile virtuoso.ini

5) Changer la page d'accueil du projet (OBSOLETE)

Lors de la première phase de travail, le projet Apache tournait sur le port 81 et virtuoso sur le port 80. Il était donc nécessaire de demander à virtuoso d'autoriser apache d'afficher la page d'accueil. Ce n'est maintenant plus nécessaire car Apache tourne maintenant sur le port 80 et virtuoso sur son port classique (8890).

Changer la page d'accueil sur http://fr.dbpedia.org/live/

supprimer l'ancien lien vers le / :

Web Applicaiton Server / Virtual Domains & directories / supprimer le / de 0.0.0.0

Lancez isql et entrez la commande suivante :

DB.DBA.VHOST_DEFINE(lpath=>'/', ppath=>'http://ns384501.ovh.net:81/')

II. Mise en place de wikipedia en local

Dans un premier temps il faut installer une copie local qui sera synchronisée avec les serveurs de la fondation mediawiki via le protocole OAI-PMH. Je me suis basé en grande partie sur la documentation mise en ligne par Julien Plu :

1) Installation de MediaWiki

Attention lors de nos tests nous avons du nous baser sur la version 23 pour que OAI fonctionne. Au moment où vous lancerez cette install, ça marchera peut être avec plus récent (regardez le tuto de Julien Plu pour plus d'infos) .

cd /var/www
git clone https://gerrit.wikimedia.org/r/p/mediawiki/core.git mediawiki
cd mediawiki/extensions
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/timeline.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/CharInsert.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/MobileFrontend.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/CategoryTree.git
git clone  https://gerrit.wikimedia.org/r/mediawiki/extensions/Cite.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Interwiki.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/SyntaxHighlight_GeSHi.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/php/luasandbox.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/InputBox.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/GeoData.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ExpandTemplates.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Babel.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Scribunto.git
git clone  https://gerrit.wikimedia.org/r/mediawiki/extensions/ParserFunctions.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Poem.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/TextExtracts.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ImageMap.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Math.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/wikihiero.git
git clone  https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Mantle.git

Ensuite lancez l'install de MediaWiki via l'interfaceWeb (tuto de Julien Plu pour plus d'infos).

Puis mofidiez LocalSettings.php pour qu'il marche sur le francais => (tuto de Julien Plu pour plus d'infos)

2) Premier chargement des données dans votre mirroir MySQL (A SUIVRE)

Ici vous pouvez vous baser sur le tuto de Julien Plu, tout a fonctionné comme il fallait avec le tuto.


 

2) Chargement des données à la main (ALTERNATIF)

wget https://raw.githubusercontent.com/alexandrutodor/extraction-framework/master/live/scripts/syncwiki/downloadDumps.sh
mkdir /root/workspace/dump/frwiki
sh downloadDumps.sh fr
mkdir tools
wget https://raw.githubusercontent.com/alexandrutodor/extraction-framework/master/live/scripts/syncwiki/databaseImport.sh
sed -n '6,20p' "$wikiPath/extensions/OAI/update_table.sql" | mysql -u $user -p$pass $db
sed -n '33,37p' "$wikiPath/extensions/OAI/update_table.sql" | mysql -u $user -p$pass $db
sh databaseImport.sh wikimirror d$pass wikimirror frwiki-latest $pass (ne pas faire l'importation des données via mwdumper)

Dans notre cas, nous avons eu du mal à charger les fichiers dans MySQL car trop gros, nous avons donc utilisé percona-toolkit pour résoudre le problème

Attention à ne rien faire d'autre sur mysql lors de l'import car vous risqueriez de faire planter mysql (typiquement ne lancez pas databaseImport.sh en même temps)

Lancez les commandes suivantes sur deux terminals en parrallèle

pt-fifo-split --force --lines 11 --statistics $dumpPath-langlinks.sql
pt-fifo-split --force --lines 11 --statistics $dumpPath-templatelinks.sql
while [ -e /tmp/pt-fifo-split ]; do
   time mysql -u $user -p$pass $db < /tmp/pt-fifo-split
   sleep 1;
done

Importation des articles

wget -P /root/tools https://raw.githubusercontent.com/descl/extraction-framework/master/live/scripts/syncwiki/mwimport
cat $dumpPath-page-articles.xml | perl tools/mwimport > $dumpPath-page-articles.sql
mysql -f -u$user -p$pass --default-character-set=utf8 frwiki < $dumpPath-page-articles.sql

modifier le fichier /var/www/mediawiki/maintenance/tables.sql pour remplacer ENGINE=MyISAM par

ENGINE=MyISAM COLLATE='utf8_general_ci';

3) Configuration du protocole OAI-PMH

Ajouter l'extension http://www.zone-project.org/live/oai.tar.gz dans /extensions. Elle a été modifiée par Dimitri;).

Puis modifier LocalSettings.php avec les clés que vous a crée Dimitri.

require_once("$IP/extensions/OAI/OAIHarvest.php"); 
$oaiSourceRepository = "http://[USER]:[PASSWORD]@wikiproxy.aksw.org/fr/oai"; 

# OAI repository for update server 
require( $IP.'/extensions/OAI/OAIRepo.php' ); 
$oaiAuth = true; # broken... squid? php config? wtf 

$wgDebugLogGroups['oai'] = '/var/www/mediawiki/oai.log'; 

4) Lancement de la récupération des données

cd /var/www/mediawiki/extensions/OAI

Modifier le fichier endlessOAIUpdate.sh pour fixer : SLEEP=900 (attention c'est important pour éviter une surcharge du serveur utilisé aussi pour les autres langues

sh endlessOAIUpdate.sh

Puis rendez-vous sur http://live.fr.dbpedia.org/mediawiki/index.php/Sp%C3%A9cial:Modifications_r%C3%A9centes

Pour voir si le script fonctionne bien.

Voici un exemple d'exécution :

Fetching: http://***:***@wikiproxy.aksw.org/fr/oai?verb=ListRecords&metadataPrefix=mediawiki&resumptionToken=mediawiki%3A106528588 
Unexpected element <sha1>  #N'est pas grave
Unexpected element <model> #N'est pas grave
Unexpected element <format> #N'est pas grave
20140707093921    7613899 [[Discussion:Nação Zumbi/À faire]] #Donne le nom de la page modifiée et ton ID
INSERTING page record      #OK la page a bien étée crée
UPDATING to rev 105245157  #modification de l'enregirstrement
Unexpected element <sha1> 
Unexpected element <model> 
Unexpected element <format> 
20140707093929    3003821 [[Sentier de grande randonnée 14]] 
UPDATING to rev 105245160 
Unexpected element <sha1> 
Unexpected element <model> 
Unexpected element <format> 
20140707093936     221866 [[Discussion:Babouin]] 
INSERTING page record 
UPDATING to rev 105245165 
Unexpected element <sha1> 
Unexpected element <model> 
Unexpected element <format> 

III. Génération des données sémantisées

Avant de pouvoir lancer le script de génération des données pour virtuoso en live il faut faire tourner le script sur un premier dump pour avoir un jeu de données à mettre dans virtuoso. Cette partie est bien documentée par le tuto de Julien Plu ou celui publié sur fr.dbpedia.org par Julien Cojan (merci à lui) mais nous allons la redétailler ici :

1) Récupération du code 

cd /home
git clone https://github.com/dbpedia/extraction-framework.git
cd extraction-framework
mkdir datas
mvn install

2) Téléchargement des données

cp dump/download.minimal.properties dump/download.properties

Modifier le fichier dump/download.properties

base-dir=/home/extraction-framework/datas/
download=fr:pages-articles.xml.bz2 
download=commons:pages-articles.xml.bz2 

Puis lancer le téléchargement :

../run download-ontology
../run download-mappings
../run generate-settings
mvn scala:run -Dlauncher=download -DaddArgs=config=download.properties 

3) Extraction des abstracts

Modifier le fichier dump/extraction.abstracts.properties

base-dir=/home/extraction-framework/datas/ 
languages=fr 

Puis exécuter

../clean-install-run extraction extraction.abstracts.properties

Sur notre serveur, le script a besoin de 3 jours pour générer tous les abstracts…

4) Extraction du dump global

cp dump/extraction.default.properties dump/extraction.properties

Modifiez dans le fichier dump/extraction.properties et supprimez toutes les lignes concernant l'extraction dans les langues autres que le francais

base-dir=/home/extraction-framework/datas/
languages=fr 
unzip=true

5) Installation des dumps dans virtuoso

echo "http://fr.dbpedia.org" > /home/extraction-framework/datas/frwiki/[DateImport]/global.graph
wget -O /usr/local/share/virtuoso/vad/dbpedia_dav.vad https://github.com/dbpedia/dbpedia-vad-i18n/blob/master/dbpedia_dav.vad?raw=true 
wget -O  /usr/local/share/virtuoso/vad/rdf_mappers_dav.vad http://s3.amazonaws.com/opldownload/uda/vad-packages/6.2/virtuoso/rdf_mappers_dav.vad

Dans l'interpréteur isql 🙁plus d'infos)

set password dba ***;
DB.DBA.RDF_GRAPH_GROUP_CREATE ('http://fr.dbpedia.org',1);
DB.DBA.RDF_GRAPH_GROUP_INS ('http://fr.dbpedia.org','http://fr.dbpedia.org/live');
DB.DBA.RDF_GRAPH_GROUP_INS ('http://fr.dbpedia.org','http://static.fr.dbpedia.org');
DB.DBA.RDF_GRAPH_GROUP_INS ('http://fr.dbpedia.org','http://fr.dbpedia.org/resource/classes#');
DB.DBA.RDF_GRAPH_GROUP_INS ('http://fr.dbpedia.org','http://fr.dbpedia.org');
log_enable(3,1);
registry_set ('dbp_decode_iri',   'on');
registry_set ('dbp_domain',       'http://fr.dbpedia.org');
registry_set ('dbp_graph',        'http://fr.dbpedia.org');
registry_set ('dbp_lang',         'fr'); 
registry_set ('dbp_DynamicLocal', 'off');
registry_set ('dbp_category',     'Catégorie');
registry_set ('dbp_imprint',      'http://dbpedia.fr/doc/Imprint');
registry_set ('dbp_website',      'http://wimmics.inria.fr/projects/dbpedia/');
registry_set ('dbp_lhost',        ':80');
registry_set ('dbp_vhost',        'dbpedia.org');
vad_install('/usr/local/virtuoso-opensource/share/virtuoso/vad/dbpedia_dav.vad', 0);
vad_install('/usr/local/virtuoso-opensource/share/virtuoso/vad/rdf_mappers_dav.vad', 0);
ld_dir('/home/extraction-framework/datas/frwiki/20140626/','*.nt.gz', 'http://static.fr.dbpedia.org');
rdf_loader_run();
exit ;

Et voilà vous devriez avoir sur http://localhost/pages/France du contenus. Pareil pour http://localhost/sparql

IV. Installation de l'Extraction Framework-live

Basé en partie sur le wiki Dbpedia

1) Modifications de la base de données

Dans phpmyadmin créez la base cache du live :

wget https://raw.githubusercontent.com/dbpedia/extraction-framework/master/live/src/main/SQL/dbstructure.sql
mysql wikimirror_cache -u wikimirror_cache -p  < dbstructure.sql
mysql frwiki -uroot -p < OAI/update_table.sql (peut durer très longtemps)
mysql frwiki -uroot -p < OAI/oaiuser_table.sql
mysql frwiki -uroot -p < OAI/oaiharvest_table.sql
mysql frwiki -uroot -p < OAI/oaiaudit_table.sql
echo "INSERT INTO /*$wgDBprefix*/oaiuser(ou_name, ou_password_hash) VALUES ('dbpedia', md5('<aPasswordForLocalOAI>') );" | mysql frwiki -u root -p

2) Configuration des scripts d'extraction live

cd live/
echo "YOUR OAILOCAL PASS" > pw.txt
cp live.default.ini live.ini; cp live.default.xml live.xml ;cp log4j.live.default.properties log4j.live.properties

Modifiez le fichier live.ini

timezone = Europe/Paris 
uploaded_dump_date = 2014-03-31T15:00:00Z
dbpedia_ns = http://fr.dbpedia.org/ 
working_directory = /home/extraction-framework/tmp-live-datas/ 

localApiURL = http://live.fr.dbpedia.org/mediawiki/api.php 

oaiUri = http://live.fr.dbpedia.org/mediawiki/index.php/Special:OAIRepository 
oaiPrefix = oai:live.dbpedia.org:dbpediawiki: 
baseWikiUri = http://live.fr.dbpedia.org/mediawiki/ 

mappingsOAIUri = http://mappings.dbpedia.org/index.php/Special:OAIRepository 
mappingsOaiPrefix = oai:fr.wikipedia.org:frwiki: 
mappingsBaseWikiUri = http://mappings.dbpedia.org/wiki/ 

language = fr 

;Option to use IRIs instead of URIs (default false) 
language_use_IRI = true 

;for english, the default 
dbpedia_ns = http://fr.dbpedia.org/ 
db_meta_ns = http://dbpedia.org/meta/ 

;example for german, might still be changed 
;dbpedia_ns = http://de.dbpedia.org/ 

graphURI = http://fr.dbpedia.org 

;momentarily virtuoso only 
;this is the configuration to load triples into the store 
store.class = virtuoso.jdbc4.Driver 
store.dsn   = jdbc:virtuoso://live.fr.dbpedia.org:1111/charset=UTF-8/log_enable=2 

store.user  = dba 
store.pw    = YOUR PASS FOR VIRTUOSO 

cache.class = com.mysql.jdbc.Driver 
cache.dsn   = jdbc:mysql://localhost/wikimirror_cache 
cache.user  = wikimirror_cache 
cache.pw    = YOUR PASS FOR MySQL 

;dryRun doesn't update the store, but instead prints out the sparul 
dryRun=false 
;additionally the sparul can be written to files 
;if you want files only turn dryRun to true 
;doesnot have any effect currently 
writeSPARULtoFiles = true 
outputdirs[]=files/SPARUL 

linkeddataresourceprefix = http://fr.dbpedia.org/live/resource/ 

…

3) Lancement du script

Vérifiez que le fichier live.xml correspond à ce qui vous intéresse

../run live config=live.ini !! bingo !!

Tout a fonctionné et le process de mise à jour en live fonctionne.

Pour vérifier, vous devez aller voir dans le dossier /home/extraction-framework/live/null/2014/*/*/ il devrait y avoir des fichiers 000000.removed.nt.gz et 000001.added.nt.gz qui sont générés au fil de l'update. Si uniquement des fichiers added sont générés c'est que OAI fonctionne mal chez vous et vous devez vérifier votre version.


 

4) Comment relancer l'extraction live de 0

Si vous souhaitez recommencer le process de 0 :

rm -rf /home/extraction-framework/tmp-live-datas/*

et videz la table DBPEDIA_CACHE

V. procédures bonnes à connaitre

1) Vider la base virtuoso

delete from db.dba.load_list;
SPARQL CLEAR GRAPH <http://fr.dbpedia.org>;

2) Mettre à jour un mirroir mediawiki local

Vider les tables image imagelinks langlinks i10n_cache page revision text updates

mysql -u $user -p$pass $db -e "SET GLOBAL autocommit=0;SET GLOBAL unique_checks=0;SET GLOBAL foreign_key_checks=0;"
wget http://dumps.wikimedia.org/frwiki/20140417/frwiki-20140417-imagelinks.sql.gz 
wget http://dumps.wikimedia.org/frwiki/20140417/frwiki-20140417-image.sql.gz
wget http://dumps.wikimedia.org/frwiki/20140417/frwiki-20140417-langlinks.sql.gz
wget http://dumps.wikimedia.org/frwiki/20140417/frwiki-20140417-templatelinks.sql.gz
wget http://dumps.wikimedia.org/frwiki/20140417/frwiki-20140417-pages-articles.xml.bz2
gunzip *.gz
bunzip2 *.bz2
cat $dumpPath-pages-articles.xml | perl tools/mwimport > $dumpPath-pages-articles.sql
mysql -f -u$user -p$pass --default-character-set=utf8 frwiki < $dumpPath-pages-articles.sql 

mysql -u $user -p$pass $db < "$dumpPath-image.sql"
while [ -e /tmp/pt-fifo-split ]; do
   time mysql -u $user -p$pass $db < /tmp/pt-fifo-split
   sleep 1;
done;

Sur un autre terminal :

pt-fifo-split --force --lines 1 --offset 37 --statistics $dumpPath-imagelinks.sql
pt-fifo-split --force --lines 3 --offset 53 --statistics $dumpPath-image.sql
pt-fifo-split --force --lines 3 --offset 37 --statistics $dumpPath-langlinks.sql
pt-fifo-split --force --lines 1 --offset 37 --statistics $dumpPath-templatelinks.sql

3) Mettre à jour un endpoint local virtuoso

La solution la plus rapide et la plus efficace est de supprimer toutes les données du endpoint et de recommmencer. (Passer par du delete sparql ou sql n'est pas assez efficace et continuer d'utiliser de l'espace disque inutile). (Attention ça supprime toute la configuration)

Couper le endpoint

cd /home/virtuoso/db
rm virtuoso.db virtuoso.log virtuoso.pxa virtuoso.trx

démarrer le endpoint

entrer dans isql

set password dba ***** ;
delete from db.dba.load_list;
log_enable(3,1);
SPARQL CLEAR GRAPH <http://fr.dbpedia.org>;
vad_uninstall('dbpedia/1.4.0');
registry_set ('dbp_decode_iri',   'on');
registry_set ('dbp_domain',       'http://fr.dbpedia.org/live');
registry_set ('dbp_graph',        'http://fr.dbpedia.org');
registry_set ('dbp_lang',         'fr'); 
registry_set ('dbp_DynamicLocal', 'on');
registry_set ('dbp_category',     'Catégorie');
registry_set ('dbp_imprint',      'http://dbpedia.fr/doc/Imprint');
registry_set ('dbp_website',      'http://wimmics.inria.fr/projects/dbpedia/');
registry_set ('dbp_lhost',        ':80');
registry_set ('dbp_vhost',        'http://fr.dbpedia.org');
vad_install('/usr/local/share/virtuoso/vad/dbpedia_dav.vad', 0);
select http_enable_gz (0);
ld_dir('/home/extraction-framework/datas/frwiki/20140417/','*.nt.gz', 'http://fr.dbpedia.org');
rdf_loader_run(); #pour charger les triplets
Done. -- 805267 msec. (13 minutes)
Exit;

4) Comment recréer le plugin dbpedia_vad avec sa nouvelle interface

En se basant sur http://dbpv.wordpress.com/2013/07/23/building-the-dbpedia-virtuoso-plugin/

mon plugin est dispo sur https://github.com/descl/dbpedia-vad-i18n il contient toutes les modifs que j'ai du faire pour le faire marcher sur le Francais :

diff --git a/dbpedia/vsp/dbpv/js/app.js b/dbpedia/vsp/dbpv/js/app.js
index ca239d7..740aa64 100644
--- a/dbpedia/vsp/dbpv/js/app.js
+++ b/dbpedia/vsp/dbpv/js/app.js
@@ -4,13 +4,13 @@ dbpv.run(function($rootScope) {
        $rootScope.localprefix = "";
 
        
-       $rootScope.localgraph = "http://dbpedia.org";
-       $rootScope.endpointgraph = ["http://dbpedia.org"];
-       $rootScope.endpoint = "http://live.dbpedia.org/sparql";
+       $rootScope.localgraph = "http://fr.dbpedia.org";
+       $rootScope.endpointgraph = ["http://fr.dbpedia.org"];
+       $rootScope.endpoint = "http://live.fr.dbpedia.org/sparql";
        $rootScope.encodegraph = true;
 
-       $rootScope.owlgraph = "http://dbpedia.org";
-       $rootScope.owlendpoint = "http://live.dbpedia.org/sparql";
+       $rootScope.owlgraph = "http://fr.dbpedia.org";
+       $rootScope.owlendpoint = "http://live.fr.dbpedia.org/sparql";
        
        $rootScope.lookupgraph = "http://dbpedia.org";
        $rootScope.lookupendpoint = "http://lookup.dbpedia.org/api/search";
@@ -21,8 +21,8 @@ dbpv.run(function($rootScope) {
                dbpv_prefixes = dbp_prefixes;
        }
 
-       $rootScope.primary_lang = "en";
-       $rootScope.fallback_lang = "en";
+       $rootScope.primary_lang = "fr";
+       $rootScope.fallback_lang = "fr";
 
        //LOADING SETTTINGS FROM THE VSP        
        if (typeof(dbp_settings) != 'undefined' && dbp_settings !== undefined) {
diff --git a/dbpedia/vsp/description.vsp b/dbpedia/vsp/description.vsp
index 4fbbcd8..57f460b 100644
--- a/dbpedia/vsp/description.vsp
+++ b/dbpedia/vsp/description.vsp
@@ -107,7 +107,7 @@
   }
 
   host := http_request_header (http_request_header (), 'Host');  
-  project_name := 'dbpedia.org';
+  project_name := 'fr.dbpedia.org';
 
   -- setup default graph (project_home_page)
   project_home_page := registry_get ('dbp_graph');
@@ -412,7 +412,7 @@ if (new_site = '0') {
        </div>
        <div class="navbar">
                <div class="dbp-logo">
-                       <img ng-src="/statics/css/200px-dbpedia.png"></img>
+                       <img ng-src="/statics/dbpedia_logoFR.png"></img>
                </div>
                <div id="searchbar" ng-controller="LookupCtrl"> 
  
@@ -490,7 +490,7 @@ if (new_site = '0') {
      </div> <!-- hd_l -->
      <div id="hd_r">
        <a href="<?=registry_get('dbp_imprint') ?>" title="About DBpedia">
-         <img src="/statics/dbpedia_logo.png" height="64" alt="About DBpedia"/>
+         <img src="/statics/dbpedia_logoFR.png" height="64" alt="About DBpedia"/>
        </a>
      </div> <!-- hd_r -->
   </div> <!-- header -->

5) Mise en place de statistiques

Sur http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VirtTipsAndTricksRecording on trouve un début d'informations.

En premier il faut activer le log http virtuoso avec :

[HTTPServer]
HTTPLogFile                = /var/log/virtuoso/http15022012.log

Puis redémarer virtuoso.

Ensuite on va utiliser AwStats pour rendre ces logs jolis : (tuto)

apt-get install awstats
cp /etc/awstats/awstats.conf /etc/awstats/awstats.dbpedia.org.conf
vim  /etc/awstats/awstats.dbpedia.org.conf 
LogFile="/var/log/virtuoso/http%DD%MM%YYYY.log" 
SiteDomain="live.fr.dbpedia.org" 
/usr/lib/cgi-bin/awstats.pl -config=dbpedia.org -update

Les stats sont alors visibles sur http://live.fr.dbpedia.org/cgi-bin/awstats.pl?config=dbpedia.org

 

 

VIII. Les différents chapitres de Dbpedia à travers l'Europe

Cas portugais

N'a pas été mis en place car pas d'accès aux datas.

http://sourceforge.net/p/dbpedia/mailman/message/27728139/

Cas italien

On Mar 7, 2012 5:24 PM, "Marco Amadori" <marco.amadori@...> wrote:
> INice to have but not urgent: If all above will go well, are there
> info about generating a dbpedia Live (italian)?

You need access to the stream of updates of Wikipedia. I've heard it is
hard to obtain, but Mohammed (main dev of dbpedia-live) might be able to
help.

Cas francais

On 01/09/2012 12:00 PM, Julien Cojan wrote:
> Last, I am also interested about the DBpedia Live mechanism (to run it 
> on french pages).
> Is there a more detailed documentation of this system than on 
> http://wiki.dbpedia.org/DBpediaLive ?
> As it is explained on the DBpediaLive page, it stands on the OAI-PMH 
> protocol.
> It seems that the access to this protocol is open on the wiki 
> mappings.dbpedia.org, but it seems restricted on Wikipedia, as well as 
> on http://live.dbpedia.org/syncwiki/.
> Is there some other way to get the live updates of wikipedia pages ?

We have already contacted Wikipedia maintainers regarding that issue, 
and they told us that using the APIs, to get the recent changes, is the 
new trend they are adopting.
You can find more information about those APIs in [1].
We are planning also to use this method in DBpedia.

You should also request a bot account. Instructions and policies are 
mentioned in [2].
[1]  http://www.mediawiki.org/wiki/API:Recentchanges
[2]  http://en.wikipedia.org/wiki/Wikipedia:Bots

http://sourceforge.net/p/dbpedia/mailman/message/30764106/ après échanges directs par mail il en ressort qu'il a laissé tomber par manque de temps et n'a pas non plus eu accès aux données wikimedia

http://sourceforge.net/p/dbpedia/mailman/dbpedia-developers/thread/CAC1xrVRVOHYCfG9es-VpcHGSQ5yaA2bMk6oSbHiBH_7mLZ1Zmw%40mail.gmail.com/#msg30856560

Cas allemand

http://sourceforge.net/p/dbpedia/mailman/message/27723974/

ils ont réussi à demander un accès à wikimedia le thread est très long et intéressant. Il y a des explications sur le lancement du processus

Dimitri s'en occupe au quotidien à ce que j'ai compris et il a l'air de très bien s'en occuper. Il est à l'origine de l'accès à l'OAI de la fondation.


 

Merci de m'avoir lu, Christophe