DBPedia y Sparql.
April 7, 2010*traducción del artículo original por Peter Murray:
http://wwmm.ch.cam.ac.uk/blogs/murrayrust/?p=332
Antes que nada, dbpedia es un dump de casi toda la información organizada en Wikipedia (infoboxes y categorías).
En dbpedia crearon una versión RDF (Triple Stores) de todo eso. Hasta hace poco, los triple stores tenian problemas de escalabilidad, pero en el WWW2007 muchas personas y organizaciones aseguraron que podrían tratar con varios miles de millones de triples.
En este articulo, accederemos a dbpedia desde la interfaz web de SNORQL. Se sugiere seguir los pasos mientras se lee, nótese que la sintaxis puede volverse algo confusa por momentos, pero si les interesa, se acostumbrarán. [...]
* Nota del traductor: En el artículo original se utiliza Uppsala como ejemplo, en ésta traducción, usaremos Buenos Aires.
Un triple es algo así:
Sujeto – Predicado – Objeto
y alguno o todos los componentes pueden ser URIs absolutos, aquí un ejemplo (en notación N3)
SELECT * WHERE {
:Jorge_Luis_Borges ?predicado :Buenos_Aires .
}
Aquí estamos consultando, que relación tiene Borges con Buenos Aires.
(Nótese que la sintáxis no es exactamente SQL, y no debe omitirse el ‘.’ al final).
El resultado de la consulta anterior es, por ejemplo:
dbpedia2:birthPlace
En términos simples, esto dice que en DBpedia, resource/Jorge_Luis_Borges es el sujeto, birthPlace (Lugar de nacimiento) es el predicado y resource/Buenos_Aires es el objeto.
Esos son simbolos para los nodos en el triple store de dbpedia (graph) y hasta ahora no tiene forma lexica ni semantica.
De todas formas, no sorprende que los humanos podamos interpretar ésto como:
El “Lugar de Nacimiento” de “Jorge Luis Borges” es “Buenos Aires”. dbpedia (y Wikipedia) agregan anotaciones legibles por humanos a éstos componentes para que podamos efectivamente afirmar que “Jorge Luis Borges nació en Buenos Aires”.
Ahora, vamos a ver en qué otras situaciones aparece Buenos Aires como Sujeto y Objeto en dbpedia (Es poco probable que sea un predicado), para comodidad y fácil lectura, se usan prefijos (Prefixes)
PREFIX : <http://dbpedia.org/resource/>
PREFIX dbpedia2: <http://dbpedia.org/property/>
PREFIX dbpedia: <http://dbpedia.org/>
Así, <http://dbpedia.org/resource/Buenos_Aires> pasa a ser :Buenos_Aires
y <http://dbpedia.org/propoerty/birthplace> sería dbpedia2:birthplace
dbpedia tiene varios URIs de nomenclaciones bien reconocidos y SNORQL preconfigura varios como prefijos:
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX : <http://dbpedia.org/resource/>
PREFIX dbpedia2: <http://dbpedia.org/property/>
PREFIX dbpedia: <http://dbpedia.org/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
Entonces, practiquemos una consulta sencilla – “listar todos los triples donde :Buenos_Aires sea el sujeto”
SELECT * WHERE {
:Buenos_Aires ?predicado ?objeto .
}
Esto devuelve gran cantidad de triples, de los cuales Buenos Aires es el sujeto, algunos ejemplos:
Predicado Objeto dbpedia2:populationTotal 3050728 rdf:type dbpedia:ontology/Place rdf:type dbpedia:class/yago/CapitalsInSouthAmerica rdfs:label "ブエノスアイレス"@ja rdfs:label "Буэнос-Айрес"@ru rdfs:label "Buenos Aires"@es owl:sameAs <http://data.nytimes.com/53816717781055122081>
Los predicados son tipos de información en Wikipedia, generalmente Categorías.
Esto se está formalizando de forma rapida y creciente y representará una forma común de etiquetar objetos bien descriptos.
Entonces Buenos Aires tiene una Población Total de 3050728 habitantes, es un Lugar, es una Capital de Sudamérica, en Japonés se escribe ブエノスアイレス, en ruso Буэнос-Айрес, el sujeto es el mismo descrito en
El objeto puede ser un URI o una cadena de texto, valor numérico, etc.
Ahora probaremos :Buenos_Aires como objeto – “Algo que tenga como objeto del predicado a Buenos Aires”.
SELECT * WHERE { ?sujeto ?predicado :Buenos_Aires . }
Aquí una pequeña e ilustrativa selección de los resultados:
Sujeto Predicado :Luciana_Salazar dbpedia:ontology/Person/birthPlace :Julio_Argentino_Roca dbpedia:ontology/Person/deathPlace :Manuel_Belgrano dbpedia:ontology/Person/deathPlace :Popego dbpedia:ontology/foundationPlace :Los_Natas dbpedia:ontology/homeTown :Argentinos_Juniors dbpedia:ontology/SoccerClub/ground :Colegio_Nacional_de_Buenos_Aires dbpedia:ontology/EducationalInstitution/city :Avenida_General_Paz dbpedia:ontology/Road/beltwayCity
Podrán ver lo poderoso que resulta ésto hasta ahora: “decime todo sobre de X” y en formato entedible por una máquina.
Pero cuando enlacemos éstos resultados, podemos obtener mucho más: “Encontrar todas las personas que nacieron y murieron en Buenos Aires y decirme todo sobre ellos” (Bueno, todos los que estén cargados en Wikipedia):
SELECT ?sujeto ?predicado ?objeto
WHERE {
?sujeto dbpedia:deathplace :Buenos_Aires .
?sujeto dbpedia:birthplace :Buenos_Aires .
?sujeto ?predicado ?objeto .
}
Y ésto recién empieza!
Quien pruebe y consiga resultados interesantes, cuénteme!

April 16, 2010 a las 4:59 pm
hola!!
qué tal.Bueno te quería preguntar ,fernando y sé que estás harto de éste tema,de un script sencillo para una web sencilla que no es de “piratería” estilo linksharing.
algo como:
http://web.archive.org/web/20060409201020/http://www.taringa.net/
saludos y perdon,pero me gustaría algo así.
April 19, 2010 a las 11:49 am
Buena cypher!!! aguante tu web!
Comu WTF was here!