API de búsqueda (LFASparql) [02/2015] API de búsqueda (LFASparql) LFASparql es un repositorio JavaScript para buscar fuentes en LOD4ALL. Utilizando LFASparql, serás capaz de cruzar búsquedas de las fuentes de datos registradas en LOD4ALL, así como Subject ?S, Predicate ?P, o Object ?O. En esta página, encontrarás la siguiente información: 1. Cómo utilizar LOD4all API? 2. Código ejemplo 1. ¿Cómo utilizar LOD4all API? Puede utilizar nuestra API siguiendo estos pasos: 1.Importar jQuery y LFASparql LFASparql usa el jQuery internamente. Importar jQuery cuando se utilice LFASparql. La version de jQuery debe ser 1.5 o superior. Para LFASparql, puede descargarla en http://54.72.110.113/lodc/api/lfasparql-1.0.1.js A continuación se muestra un código de ejemplo de cómo importar: <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <script type="text/javascript" src=" http://54.72.110.113/lodc/api/lfasparql-1.0.1.js"></script> 2.Crear una categoría de LFASparql var lfasparql = new LFASparql (); 3. Enviar solicitudes de búsqueda Puede enviar una solicitud a LOD4ALL utilizando el método execute. Los parámetros del método son appID (application ID), claves de búsqueda (subject:S, predicate:P y object:O) y nombres de devolución de llamada “callback” cuando la petición aún no ha sido satisfactoria o fallida. Para la clave de búsqueda, necesitará especificar al menos un tema u objeto. Esto significa que puede realizar las 4 ediciones de patrones siguientes; {S? P? O}, {S P? O}, {? S P O} or {? S? P O}. Además, solo la fuente puede ser S, P y O. Page 1 of 7 http://fujitsu.com/es/linked-open-data-2015 API de búsqueda (LFASparql) [02/2015] // FPlease specify the "xawsaykmcb" for the application ID in a request // {S ?p ?o} lfasparql.execute({ AppID: "xawsaykmcb" , subject: "http://es.dbpedia.org/resource/Curro_Romero", success: getResult, error: getError }); // {S P ?o} lfasparql.execute({ AppID: "xawsaykmcb" , subject: "http://es.dbpedia.org/resource/Curro_Romero", predicate: "http://dbpedia.org/ontology/abstract", success: getResult, error: getError }); // {?s P O} lfasparql.execute({ AppID: "xawsaykmcb" , predicate: "http://www.w3.org/2002/07/owl#sameAs", object: "http://es.dbpedia.org/resource/Curro_Romero", success: getResult, error: getError }); // {?s ?p O} lfasparql.execute({ AppID: "xawsaykmcb" , object: "http://es.dbpedia.org/resource/Curro_Romero", success: getResult, error: getError }); Si desea realizar varias solicitudes a la vez, ejecute el método múltiple “executeMultiple” var queries = []; // {S ?p ?o} queries.push(["http://es.dbpedia.org/resource/Curro_Romero", "", ""]); // {S P ?o} queries.push(["http://es.dbpedia.org/resource/Curro_Romero", "http://dbpedia.org/ontology/abstract", ""]); // {?s P O} queries.push(["", "http://www.w3.org/2002/07/owl#sameAs", "http://es.dbpedia.org/resource/Curro_Romero"]); // {?s ?p O} queries.push(["", "", "http://es.dbpedia.org/resource/Curro_Romero"]); lfasparql.executeMultiple ({ AppID: "xawsaykmcb" , queries: queries, success: getResult, error: getError }); Page 2 of 7 http://fujitsu.com/es/linked-open-data-2015 API de búsqueda (LFASparql) [02/2015] 4.Obtener resultados de búsqueda Como ha sido descrito anteriormente, cuando un resultado es devuelto desde LOD4All, un método específico de parámetros éxito o error será reportado, tal como: a) Si una solicitud es correcta un objeto JavaScript es determinado como un parámetro. El objeto es generado desde JSON (consultar el ejemplo siguiente). b) Si la solicitud resulta fallida, objeto jqXHR, una cadena sobre el estado del error y el estado HTTP es devuelta. Este es la misma función de error que el método ajax en jQuery. Un ejemplo de respuesta es de la siguiente manera: function getResult(data) { for(var i = 0; i < data.length; i++) { console.log("Subject: " + data[i]["s"] + ", Predicate: " + data[i]["p"] + ", Object: " + data[i]["o"]) } } function getError(jqXHR, textStatus, errorThrown) { console.log("textStatus"); } El siguiente formato es JSON de respuesta. En solicitudes múltiples, una lista es descrita encima del resultado. { "p": { "type": "uri", "value": "http://dbpedia.org/ontology/alias" }, "s": { "type": "uri", "value": ""http://es.dbpedia.org/resource/Curro_Romero" }, "o": { "type": "literal", "value": "El Faraón de Camas" } }, { "p": { "type": "uri", "value": "http://es.dbpedia.org/property/alternativa" }, "s": { "type": "uri", "value": "http://es.dbpedia.org/resource/Curro_Romero" }, "o": { "type": "literal", "Value" : "18” } }, …. ] Page 3 of 7 http://fujitsu.com/es/linked-open-data-2015 API de búsqueda (LFASparql) [02/2015] 2. Código ejemplo Código de una única solicitud: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <script type="text/javascript" src=" http://54.72.110.113/lodc/api/lfasparql-1.0.1.js"></script> <script type="text/javascript"> var lfasparql = new LFASparql(); $(document).ready( function() { test(); }); function test() { // {S, ?p, ?o} lfasparql.execute({ appID: "xawsaykmcb", subject: "http://es.dbpedia.org/resource/Curro_Romero", success: getResult, error: getError }); // {S, P, ?o} /*lfasparql.execute({ appID: "xawsaykmcb", subject: "http://es.dbpedia.org/resource/Curro_Romero", predicate: "http://dbpedia.org/ontology/abstract", success: getResult, error: getError });*/ // {?s, P, O} /*lfasparql.execute({ appID: "xawsaykmcb", predicate: "http://www.w3.org/2002/07/owl#sameAs", object: "http://es.dbpedia.org/resource/Curro_Romero", success: getResult, error: getError });*/ // {?s ?p O} /*lfasparql.execute({ appID: "xawsaykmcb", object: "http://es.dbpedia.org/resource/Curro_Romero", success: getResult, error: getError });*/ } function getResult(data) { for (var i = 0; i < data.length; i++) { triple = data[i]; $("#result") .append( "<li>" + Page 4 of 7 http://fujitsu.com/es/linked-open-data-2015 API de búsqueda (LFASparql) [02/2015] triple["s"]["type"] + ": " + triple["s"]["value"] + ", " + triple["p"]["type"] + ": " + triple["p"]["value"] + ", " + triple["o"]["type"] + ": " + triple["o"]["value"] + "</li>" ); } } function getError(jqXHR, textStatus, errorThrown) { console.log(textStatus) } </script> <title>API Test</title> </head> <body> <h3>API Test</h3> <ol id="result"> </ol> </body> </html> Código Múltiple solicitud: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <script type="text/javascript" src=" http://54.72.110.113/lodc/api/lfasparql-1.0.1.js"></script> <script type="text/javascript"> var lfasparql = new LFASparql(); $(document).ready( function() { test(); }); function test() { var queries = []; queries.push(["http://es.dbpedia.org/resource/Curro_Romero", "", ""]); queries.push(["http://es.dbpedia.org/resource/Curro_Romero", "http://dbpedia.org/ontology/abstract", ""]); queries.push(["", "http://www.w3.org/2002/07/owl#sameAs", "http://es.dbpedia.org/resource/Curro_Romero"]); queries.push(["", "", "http://es.dbpedia.org/resource/Curro_Romero"]); lfasparql.executeMultiple({ appID: "xawsaykmcb", queries: queries, success: getResult, error: getError }); } function getResult(data) { for (var i = 0; i < data.length; i++) { for (var j = 0; j < data[i].length; j++) { triple = data[i][j]; Page 5 of 7 http://fujitsu.com/es/linked-open-data-2015 API de búsqueda (LFASparql) [02/2015] $("#result") .append( "<li>" + triple["s"]["type"] + ": " + triple["s"]["value"] + ", " + triple["p"]["type"] + ": " + triple["p"]["value"] + ", " + triple["o"]["type"] + ": " + triple["o"]["value"] + "</li>" ); } } } function getError(jqXHR, textStatus, errorThrown) { console.log(textStatus) } </script> <title>API Test</title> </head> <body> <h3>API Test</h3> <ol id="result"> </ol> </body> </html> Código de solicitud de dos saltos: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <script type="text/javascript" src=" http://54.72.110.113/lodc/api/lfasparql-1.0.1.js"></script> <script type="text/javascript"> var lfasparql = new LFASparql(); // { // http://es.dbpedia.org/resource/Curro_Romero http://dbpedia.org/ontology/wikiPageWikiLink // ?x http://dbpedia.org/ontology/abstract ?y . // } $(document).ready( function() { first_hop(); }); ?x . function first_hop() { lfasparql.execute({ appID: "xawsaykmcb", subject: "http://es.dbpedia.org/resource/Curro_Romero", predicate: "http://dbpedia.org/ontology/wikiPageWikiLink", success: second_hop, error: getError }); } function second_hop(data) { var queries = []; Page 6 of 7 http://fujitsu.com/es/linked-open-data-2015 API de búsqueda (LFASparql) [02/2015] for(var i = 0; i < data.length; i++){ triple = data[i]; if(triple["o"]["type"] == "uri"){ queries.push([triple["o"]["value"], "http://dbpedia.org/ontology/abstract", ""]); } } lfasparql.executeMultiple({ appID: "xawsaykmcb", queries: queries, success: getResult, error: getError }); } function getResult(data) { for (var i = 0; i < data.length; i++) { for (var j = 0; j < data[i].length; j++) { triple = data[i][j]; $("#result") .append( "<li>" + triple["s"]["type"] + ": " + triple["s"]["value"] + ", " + triple["p"]["type"] + ": " + triple["p"]["value"] + ", " + triple["o"]["type"] + ": " + triple["o"]["value"] + "</li>" ); } } } function getError(jqXHR, textStatus, errorThrown) { console.log(textStatus) } </script> <title>API Test</title> </head> <body> <h3>API Test</h3> <ol id="result"> </ol> </body> </html> Contacto FUJITSU Camino Cerro de los Gamos, 1 28224 Pozuelo de Alarcón Madrid (España) Copyright: © Fujitsu Contacto: +34 91 784 90 00 Page 7 of 7 Todos los derechos reservados, especialmente para patentes, patentes de utilidad y patentes de diseño. Se esperan cambios técnicos y de disponibilidad. En este documento pueden aparecer términos de marca registrada, cuyo uso por terceras partes para fines propios podría infringir los derechos de propiedad de marca registrada. http://fujitsu.com/es/linked-open-data-2015