From 5bebba3e606ba6e7372ea3b0e2a18dc29263e521 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20C=C3=A9r=C3=A8s?= Date: Wed, 27 Nov 2019 03:24:01 -0500 Subject: [PATCH] build_graph: Transforme les uri en page --- data/build_graph.py | 11 ++++++++--- data/fetch/wikimedica.py | 12 +++++++----- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/data/build_graph.py b/data/build_graph.py index 7276de4..6359864 100755 --- a/data/build_graph.py +++ b/data/build_graph.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -from fetch import wikidata +from fetch import wikidata, wikimedica from neo4j import GraphDatabase import json @@ -100,15 +100,20 @@ def align_with_wikimedica(): for entity in align: if 'wikidata_id' in entity: + with driver.session() as session: + wikidata_id = entity['wikidata_id'] + wikidata_page = wikimedica.get_web_page(entity['wikimedica_uri']) + session.run( "MATCH (d {id:$wikidata_id})" "SET d.wikimedia_id = $wikimedica_uri", - wikidata_id=entity['wikidata_id'], - wikimedica_uri=entity['wikimedica_uri'], + wikidata_id=wikidata_id, + wikimedica_uri=wikidata_page, ) + # Conection with Neo4j driver = GraphDatabase.driver(NEO4J_URI, auth=(NEO4J_USR, NEO4J_PSW)) diff --git a/data/fetch/wikimedica.py b/data/fetch/wikimedica.py index 65d991f..0fdb1fa 100644 --- a/data/fetch/wikimedica.py +++ b/data/fetch/wikimedica.py @@ -1,18 +1,20 @@ from .http import session -import rdflib -def request(page, request): +def request(uri, request): """ - Effectue une requête SPARQL sur une page de WikiMedica + Effectue une requête SPARQL depuis une uri de WikiMedica - :param page: Page de WikiMedica ciblé + :param uri: uri de WikiMedica ciblé :param request: Requête SPARQL appliqué :return: Réponse du point d'accés sous forme d'un tableau de dictionaire """ - data = session.get(page, stream=True) + data = session.get(uri, stream=True) g = rdflib.Graph() g.parse(data.raw) qres = g.query(request) return [row.asdict() for row in qres] + +def get_web_page(uri): + return uri.replace("/Special:ExportRDF", "")