Skip to content

Commit

Permalink
Prueba obtencion de datos de wikidata
Browse files Browse the repository at this point in the history
  • Loading branch information
uo283055 committed Feb 18, 2024
1 parent 2332741 commit 2f34182
Showing 1 changed file with 66 additions and 6 deletions.
72 changes: 66 additions & 6 deletions webapp/src/components/Game.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 (

<div>
<h1>Pregunta</h1>
<div>
<Typography component="h1" variant="h5" sx={{ textAlign: 'center' }}>
{questionBody}
Base de pregunta al azar de mongo: {questionBody}
</Typography>

<Button variant="contained" color="primary" onClick={obtenerPreguntaAleatoria}>
pregunta
</Button>

<Typography component="h1" variant="h5" sx={{ textAlign: 'center' }}>
Prueba de Wikidata, pais al azar:{informacionWikidata}
</Typography>

<Button variant="contained" color="primary" onClick={obtenerInformacionWikidata}>
Wikidata
</Button>
</div>
</div>
);
Expand Down

0 comments on commit 2f34182

Please sign in to comment.