Herramientas de usuario

Herramientas del sitio


es:manual:items:generativos:web-semantica

¡Esta es una revisión vieja del documento!


Uso de la web semántica

Una opcion especialmente interesante, mas allá del uso de bases de datos locales, es la construccion de preguntas mediante bases de datos en repositorios de la denominada web semántica.

Para ello se ha definido la clase siette.util.corpus.WebTable con funciones especificas para construir tablas a partir de consultas SPARQL.

El mayor problema que se afronta al crear una consulta a una base de datos externa es la consistenacia de la información. No siempre se encuentran bases de datos apropiadas para su uso como preguntas. En muchos casos la información es incompleta, y en otros excesiva, dando lugar a preguntas demasiado detalladas que no es lo que se desea para la evaluación. A lo largo de los ejemplos se expondran los problemas mas frecuentes que se encuentran.

Ejemplo 1

El siguiente código corresponde al enunciado de una pregunta generada a partir de una consulta a la Wikidata para identificar las banderas de distintos paises.

<%
String queryString = ""
+"PREFIX wd: <http://www.wikidata.org/entity/>"
+"PREFIX bd: <http://www.bigdata.com/rdf#>"
+"PREFIX wikibase: <http://wikiba.se/ontology#>"
+"PREFIX wdt: <http://www.wikidata.org/prop/direct/>"
+"select distinct ?img ?country ?countryLabel where { "
+"?country wdt:P31 wd:Q6256 . "
+"?country wdt:P41 ?img . "
+"?country wdt:P463 wd:Q1065 . " // Miembro ONU
+"SERVICE wikibase:label { bd:serviceParam wikibase:language \"es\" } ."
+"} ORDER BY ?countryLabel "
;
WebTable table = new WebTable("https://query.wikidata.org/sparql",queryString);
String[] pais = table.select();
String nombre = table.get(pais, "countryLabel" );
String img = table.get(pais, "img" );
String pattern = table.toPattern(nombre, true, Dictionary.LEFT) +"|"+  table.toPattern(nombre, true, Dictionary.RIGHT);
%>
<center>
&iquest;De qu&eacute; pa&iacute;s es esta bandera? <br/>
<IMG src="<%= img %>" width='250' /><br/>
</center>

A partir de esta plantilla se obtienen preguntas como ésta:

La variable queryString contiene una cadena de caracteres con la consulta en el lenguaje SPARQL. La consulta selecciona un número indeterminado de filas con tres columnas que corresponden a los campos de la tabla, que son img, country countryLabel. La consulta se efectúa llamando al servicio de consultas de Wikidata, usando la instrucción:

 WebTable table = new WebTable("https://query.wikidata.org/sparql",queryString);

Al igual que en caso de otras tablas el método select selecciona un elemento al azar. Las variables nombre y img recogen respectivamente el nombre y la imagen de la bandera, que se ha obtenido mediante la consulta en los campos countryLabele img respectivamente.

A partir del nombre se obtiene un patrón de respuesta llamando al método toPattern. 1)

1)
Esto es necesario porque la consulta a veces devuelve nombre nominales como Republica Popular China, que requieren del patrón de respuesta {{Republica} Popular} China para poder aceptar resapuestas simples como China.
es/manual/items/generativos/web-semantica.1622133071.txt.gz · Última modificación: 2021/05/27 16:31 por root

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki