Herramienta para generar listas CSV desde Wikidata

Wikidata es una base de datos en línea que contiene muchos detalles sobre muchos países, políticos, pinturas, etc. Por ejemplo, para cada uno countrytiene name, flag, mapque son cadenas o URL de imágenes en línea.

¿Cómo puedo simplemente generar un archivo CSV que contenga el tipo de elemento y las propiedades que quiero?

Por ejemplo, si digo que quiero todos countrylos s y sus nameycapital , generaría un archivo CSV como este:

country;capital
India;New Delhi
Brazil;Brasília
...

Cualquier sistema operativo/aplicación web/aplicación está bien. Preferiblemente de código abierto.

No quiero descargar toda la base de datos de Wikidata localmente, por lo que la herramienta tendría que realizar solicitudes al servidor oficial en vivo.

No es una herramienta completa, pero en Perl puede usar Catmandu con el módulo Catmandu::Wikidata para importar Wikidata; y luego Text::CSV para exportar desde cualquier base de datos que haya usado para el almacenamiento de Catmandu

Respuestas (4)

Puede consultar Wikidata con SPARQL en https://query.wikidata.org/ . Creé la herramienta de línea de comandos wdq para facilitar las consultas desde la línea de comandos. Su tarea se puede resolver de la siguiente manera (utilice la versión más reciente 0.4.4). Primero averigüe los identificadores de artículos para el país

$ wdq country
Q6256: country
  distinct region in geography; a broad term that can include political divisio…

y los identificadores de propiedad para capital, bandera, etc.

$ wdq psearch capital
P36: capital
  location (city, municipality) of governmental seat of the country, or adminis…
...

Otra propiedad importante es P31: instance of. También puede encontrar estos identificadores a través de la interfaz web en https://www.wikidata.org/ .

Luego formule y ejecute una consulta en sintaxis SPARQL abreviada:

$ wdq "?country wdt:P31 wd:Q6256 ; wdt:P36 ?capital" 

Para obtener etiquetas además de identificadores y emitir CSV, utilice

$ wdq -fcsv -lcountry,capital "?country wdt:P31 wd:Q6256 ; wdt:P36 ?capital" 

Si solo desea las etiquetas, la forma más fácil de hacerlo es esta (a menos que los países contengan un punto y coma en su nombre):

$ wdq --format "{countryLabel};{capitalLabel}" -lcountry,capital "?country wdt:P31 wd:Q6256 ; wdt:P36 ?capital" 

Por cierto, puede elegir el idioma de salida con la opción -g/ --language. También puede obtener la consulta SPARQL completa para reutilizarla, por ejemplo, en https://query.wikidata.org/ :

$ wdq -lcountry,capital "?country wdt:P31 wd:Q6256 ; wdt:P36 ?capital" -n
PREFIX bd: <http://www.bigdata.com/rdf#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX schema: <http://schema.org/>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
SELECT * WHERE {
    ?country wdt:P31 wd:Q6256 .
    ?country wdt:P36 ?capital .
    SERVICE wikibase:label {
        bd:serviceParam wikibase:language "en" .
        ?capital rdfs:label ?capitalLabel .
    }
    SERVICE wikibase:label {
        bd:serviceParam wikibase:language "en" .
        ?country rdfs:label ?countryLabel .
    }
}

Si lo agregas ?capital wdt:P625 ?coordinate .obtienes un bonito mapa de las capitales del mundo.

Si también instala el módulo Catmandu de Perl , wdq puede importar directamente el conjunto de resultados a una base de datos y/o aplicar más procesamiento posterior y formato de salida.

Debería poder hacer esto bastante rápido usando python y scrapy .

Scrapy es un programa de raspado web de python y python tiene bibliotecas predeterminadas para escribir en archivos csv, por lo que entre los dos está muy lejos.

Ambos son gratuitos, tanto Libre como FOSS.

Preferiría evitar el raspado de pantalla ya que proporcionan una API y son una organización sin fines de lucro. Sigo esperando una solución utilizable por no programadores :-)
@NicolasRaoul si necesita el nivel de flexibilidad que indica, cualquier consulta, salida selectiva, para los que no son programadores, ¡la única opción es un navegador web + lápiz y papel!

Hay muchas herramientas para lograr sus objetivos y las ventajas y desventajas dependen en gran medida de su conjunto de habilidades actual. Por lo tanto, simplemente enumeraré las herramientas que conozco que tendrá para examinar qué herramientas coinciden con los idiomas que conoce y las plataformas a las que tiene acceso. Además, mi experiencia es que todas las herramientas son imperfectas y tendrás que mejorarlas para obtener exactamente lo que necesitas.

Información oficial de Wikimedia

  1. Manual: Uso de contenido de Wikipedia
  2. Analizadores alternativos (una excelente lista de muchos tipos diferentes de analizadores, pero muchos de ellos están desactualizados)
  3. Manual:Pywikibot/Scripts Scripts oficiales basados ​​en Python de Wikimedia para realizar tareas

Más herramientas

  1. Maneras de procesar y usar volcados de Wikipedia Una publicación de blog muy antigua que enumera algunas herramientas
  2. DBpedia es una comunidad enfocada en extraer datos estructurados de Wikipedia
  3. Scrapy ya fue mencionado
  4. import.io no es específico de Wikipedia, pero tiene el poder de lograr sus objetivos

Otro pensamiento La información que está buscando casi seguro que ya existe en alguna parte. El libro de hechos mundiales de la CIA, las bases de datos de la ONU y las fuentes de datos abiertas ciertamente tienen esta información.

¡Buena suerte!

Todas estas herramientas no son específicas para Wikidata. Quiero una herramienta diseñada para extraer datos de Wikidata. país/capital es solo un ejemplo, necesito archivos CSV para una amplia gama de cosas, bajo una licencia reutilizable como la que proporciona Wikidata.

1) Vaya a https://query.wikidata.org

2) Introduzca esta consulta SPARQL:

SELECT ?item ?itemLabel ?capitalLabel ?flag ?map
WHERE
{
    ?item wdt:P31 wd:Q6256 .
    OPTIONAL {?item wdt:P36 ?capital}
    OPTIONAL {?item wdt:P41 ?flag}
    OPTIONAL {?item wdt:P242 ?map}
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

Esta consulta puede parecer complicada, pero en realidad es fácil. Podría traducirse a:

Show the item, its human-readable label, and the variables called ?capital, ?flag, ?map  
The item is a country.  
The item's capital is ?capital.  
The item's flag is ?flag.  
The item's map is ?map.  
Use English for human-readable labels.

Hay muchas propiedades como P:36, la mejor manera de encontrar otras es mirar un artículo real , las propiedades están en la columna gris en la sección Estados de cuenta.

3) Presione "Descargar" y luego "CSV"

Resultado:

item,itemLabel,capitalLabel,flag,map
http://www.wikidata.org/entity/Q16,Canada,Ottawa,http://commons.wikimedia.org/wiki/Special:FilePath/Flag%20of%20Canada.svg,http://commons.wikimedia.org/wiki/Special:FilePath/Canada%20%28orthographic%20projection%29.svg
http://www.wikidata.org/entity/Q17,Japan,Tokyo,http://commons.wikimedia.org/wiki/Special:FilePath/Flag%20of%20Japan.svg,http://commons.wikimedia.org/wiki/Special:FilePath/Japan%20%28orthographic%20projection%29.svg
http://www.wikidata.org/entity/Q20,Norway,Oslo,http://commons.wikimedia.org/wiki/Special:FilePath/Flag%20of%20Norway.svg,http://commons.wikimedia.org/wiki/Special:FilePath/Europe-Norway.svg
http://www.wikidata.org/entity/Q27,Ireland,Dublin,http://commons.wikimedia.org/wiki/Special:FilePath/Flag%20of%20Ireland.svg,http://commons.wikimedia.org/wiki/Special:FilePath/EU-Ireland.svg
http://www.wikidata.org/entity/Q28,Hungary,Budapest,http://commons.wikimedia.org/wiki/Special:FilePath/Flag%20of%20Hungary.svg,http://commons.wikimedia.org/wiki/Special:FilePath/EU-Hungary.svg
http://www.wikidata.org/entity/Q29,Spain,Madrid,http://commons.wikimedia.org/wiki/Special:FilePath/Flag%20of%20Spain.svg,http://commons.wikimedia.org/wiki/Special:FilePath/EU-Spain.svg
http://www.wikidata.org/entity/Q30,United States of America,Washington,http://commons.wikimedia.org/wiki/Special:FilePath/Flag%20of%20the%20United%20States.svg,http://commons.wikimedia.org/wiki/Special:FilePath/USA%20orthographic.svg
http://www.wikidata.org/entity/Q31,Belgium,Brussels,http://commons.wikimedia.org/wiki/Special:FilePath/Flag%20of%20Belgium%20%28civil%29.svg,http://commons.wikimedia.org/wiki/Special:FilePath/Europe%20location%20BEL.png
http://www.wikidata.org/entity/Q32,Luxembourg,Luxembourg,http://commons.wikimedia.org/wiki/Special:FilePath/Flag%20of%20Luxembourg.svg,http://commons.wikimedia.org/wiki/Special:FilePath/EU-Luxembourg.svg
[...]