From 2f341828d593e150bdca4395abd493aa5ba56e76 Mon Sep 17 00:00:00 2001 From: uo283055 Date: Sun, 18 Feb 2024 21:00:15 +0100 Subject: [PATCH] Prueba obtencion de datos de wikidata --- webapp/src/components/Game.js | 72 ++++++++++++++++++++++++++++++++--- 1 file changed, 66 insertions(+), 6 deletions(-) diff --git a/webapp/src/components/Game.js b/webapp/src/components/Game.js index 83654ae4..2d6b8ccc 100644 --- a/webapp/src/components/Game.js +++ b/webapp/src/components/Game.js @@ -36,26 +36,86 @@ const Game=() =>{ } }; + + + - //obtenerPreguntaAleatoria(); - //obtenerInformacionWikidata(); - /* useEffect(() => { - obtenerPreguntaAleatoria(); - }, []);*/ + // Obtener info de wikidata segun el tipo de la pregunta y la respuesta para esa pregunta + //questionType, answerType + const obtenerInformacionWikidata = async () => { + + try { + // Consulta SPARQL//obtengo + const sparqlQuery = ` + SELECT ?country ?countryLabel + WHERE { + ?country wdt:P31 wd:Q6256. # P31 instancias de -> wd:Q6256 (paĆ­s) + SERVICE wikibase:label { + bd:serviceParam wikibase:language "[AUTO_LANGUAGE],es". + } + } + ORDER BY RAND() + LIMIT 150 + `; + + // URL del punto de acceso SPARQL de Wikidata + const apiUrl = `https://query.wikidata.org/sparql?query=${encodeURIComponent(sparqlQuery)}`; + + const headers = { "Accept": "application/json" }; + + //obtengo datos api + // Realizar la solicitud con la cabecera adecuada para la API de consulta SPARQL de Wikidata + const respuestaWikidata = await fetch(apiUrl, {headers}); + + + if (respuestaWikidata.ok) { + const data = await respuestaWikidata.json();//obtengo los datos en json + + //saco uno de los elementos al azar + const numEles = data.results.bindings.length; + const index = Math.floor(Math.random() * numEles);//index al azar + const result = data.results.bindings[index]; + + setInformacionWikidata(result.countryLabel.value); + } else { + console.error("Error al realizar la consulta en Wikidata. Estado de respuesta:", respuestaWikidata.status); + } + } catch (error) { + console.error("Error al realizar la consulta en Wikidata", error); + } + }; + + + //obtenerInformacionWikidata(); + /* useEffect(() => { + obtenerPreguntaAleatoria(); + }, []);*/ + + + //obtenerPreguntaAleatoria(); + return (

Pregunta

- {questionBody} + Base de pregunta al azar de mongo: {questionBody} + + + Prueba de Wikidata, pais al azar:{informacionWikidata} + + +
);