JSON DESDE VIRTUOSO + SPARQL + AJAX

La comunicación con un TripleStore desde un aplicativo externo, en su mayoría web, suele ser un inconveniente en algunos casos. Esto por la variada forma de responder y el no existir un estándar para la comunicación.

El presente caso se muestra como extraer información desde un servidor Virtuoso (EndPoint) mediante una petición HTTP, y esperando el resultado en formato JSON, el cual es muy sencillo manejar desde JavaScript.

Virtuoso en su EndPoint (http://mi_servidor:8890/sparql) permite la realización de consultas tanto de forma directa como mediante peticiones HTTP. Pudiendo ser estas un GET (consultas pequeñas) o un POST(consultas mayores a 19000 bytes). Y una de sus principales ventajas es que podemos especificar el formato en que deseamos la respuesta, pudiendo soportar formatos como XML, RDF, JSON y muchos más.

A continuación se muestra una consulta sparql y el resultado de la misma. Este mismo resultado será extraído desde un ambiente web mediante una consulta HTTP realizada por AJAX mediante el framework JQuery.

consulta_sparql
Los archivos utilizados para la demostración son los siguientes:

estructura
Dónde:

peticionHTTP.php: Forma la dirección HTTP la cual se solicitará a Virtuoso.

procesoJS.js: Contiene la consulta SPARQL y la llamada mediante Ajax.

Index.html: Inicia el proceso de la consulta.

Para la realización de la petición HTTP a virtuoso la URL que se construye utiliza los parámetros que se detallan en la imagen. Para este caso estos son los básicos y necesarios.

parametros

Como se puede apreciar, se valida la información de la petición y respuesta recibida por parte del servidor en donde se observa el formato de respuesta.

tipo_respuesta

peticion_console

Y finalmente el resultado se puede visualizar en nuestra página.

resultado_json

Los archivos utilizados los pueden descargar del widget de la página o de este link.

Información adicional la pueden encontrar en el siguiente enlace: http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VOSSparqlProtocol

Saludos.

CONEXIONES PHP – MYSQL & PHP-ACCESS

Siempre es común (indispensable diría yo ;-)) en el desarrollo de aplicaciones bajo php el conectarse a una BD. A continuación algunos ejemplos con dos Bases de Datos distintas:

PHP – MYSQL.

Para la conexión con una base MYSQL lo hacemos de la siguiente manera:

mysql_connect($dbhost, $dbusuario, $dbpassword) or die (“Error al Conectar!”);

Especificamos el nombre de la BD en la que vamos a trabajar:

mysql_select_db($db) or die (“Verifique la Base de Datos”);

Armamos la consulta y extraemos los datos:

$consulta = “SELECT titulo, latitud, longitud, descrip, icono FROM posicion”;

$respuesta = mysql_query ($consulta);

Verificamos si existió algún error o no:

if (!$respuesta) {

$message  = ‘Error en la consulta: ‘ . mysql_error() . “\n”;

$message .= ‘Busqueda: ‘ . $consulta;

die($message);

}

Presentamos la información que acabamos de extraer:

while ($row = mysql_fetch_array($respuesta))

{

$x = $row[1];

$y = $row[2];

$title = $row[0];

$desc = $row[3];

$icon = $row[4];

$info = “$y,$x” . “<br>” . “$title” . “<br>” . “$desc” .” <br>” .”$icon”.”<br>”;

print($info);

}

PHP – ACCESS

La conexión anterior con MySql es muy fácil puesto que php presenta funciones nativas que permiten realizar operaciones con esta, pero en el caso de ACCESS se deberá hacer uso de una librería llamada ADODB que permite conexión con múltiples BD’s:

Creamos el tipo de conexión:

$db_connection = new COM(“ADODB.Connection”);

Cargamos el Drive:

Especificamos aquí la dirección de la Base ACCESS en este caso es el archivo datos.mdb.

$db_connstr = “DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=”. realpath(“d:/datos.mdb”) .” ;UID=;PWD=1234;DefaultDir=”. realpath(“d:/datos.mdb”);

Realizamos la conexión:

$db_connection->open($db_connstr);

Consultamos a la Base:

$rs = $db_connection->execute(“SELECT * FROM posicion”);

Recuperamos la diferentes columnas que posee la consulta que acabamos de ejecutar:

$rs_fld0 = $rs->Fields(“titulo”);

$rs_fld1 = $rs->Fields(“latitud”);

$rs_fld2 = $rs->Fields(“longitud”);

$rs_fld3 = $rs->Fields(“descripcion”);

$rs_fld4 = $rs->Fields(“icono”);

Recorremos las columnas hasta el final y las presentamos:

while (!$rs->EOF) {

$titulo = $rs_fld0->value;

$lat = $rs_fld1->value;

$lon = $rs_fld2->value;

$des = $rs_fld3->value;

$ico = $rs_fld4->value;

$info = “$lon,$lat” . “<br>” . “$titulo” . “<br>” . “$des” .” <br>” .”$ico”.”<br>”;

print($info);

//Avanzamos un registro

$rs->MoveNext();

}

Cerramos tanto el ResulSet como la Conexión:

$rs->Close();

$db_connection->Close();

Como podemos ver los métodos de extracción de datos son diferentes pero útiles, los archivos de ejemplo utilizados puedes encontrarlos en la parte izquierda del blog o aquí.

Saludos.