es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Optimización del tiempo de espera de la consulta SPARQL en Wikidata.

Quiero recuperar todas las instancias de músicos (Q639669) en una ciudad determinada (P131) nacidos después de 1900. Cuando uso el ejemplo de la ciudad de Wikidata Rotterdam (Q34370), funciona. Sin embargo, si reemplazo la ciudad con una ciudad más grande (por ejemplo, París, Q90), se agotará el tiempo de espera.

¿Hay alguna manera de optimizar esto o dividirlo en fragmentos para realizar consultas repetidas?

En realidad, solo me interesa el número de casos que devuelve (es decir, un solo valor), sin necesidad de toda la información sobre el nombre del artista, etc.

Sería de gran ayuda si alguien puede darme indicaciones para resolver esto. ¡Gracias!

SELECT ?itemLabel ?itemDescription ?birth
WHERE {
  ?item wdt:P106/wdt:P279* wd:Q639669 .
  ?item wdt:P19/wdt:P131* wd:Q34370 .

  OPTIONAL {?item wdt:P569 ?birth}

  filter (?birth > "1900-01-01"^^xsd:dateTime)

  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "en" .
  }
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para optimizar la consulta y evitar tiempos de espera, puedes probar los siguientes enfoques:

    • Utilizar fragmentos de datos más pequeños: Puedes dividir la consulta en fragmentos más pequeños agregando filtros adicionales, como nacidos entre 1900-1910, 1911-1920, etc., para reducir el número de resultados devueltos en cada consulta. Esto puede ayudar a evitar tiempos de espera y reducir la carga en el servidor.
    • Utilizar diferentes URLs de punto final: A veces, diferentes URLs de punto final pueden mejorar el rendimiento de la consulta. Puedes probar diferentes URLs, como query.wikidata.org, wdqs-beta.wmflabs.org o tools.wmflabs.org/sparql en lugar de utilizar la URL de punto final predeterminada.

    • Optimizar la consulta: Puedes optimizar la consulta eliminando cláusulas opcionales y filtros innecesarios. Por ejemplo, eliminar el filtro de fecha de nacimiento opcional puede ayudar a mejorar el rendimiento.

    Además, dado que solo necesitas el número de casos, puedes modificar la consulta para contar el número de elementos devueltos en lugar de recuperar todos los metadatos utilizando la función COUNT() de la siguiente manera:

    SELECT (COUNT(DISTINCT ?item) as ?count)
    WHERE {
      ?item wdt:P106/wdt:P279* wd:Q639669 .
      ?item wdt:P19/wdt:P131* wd:Q34370 .
    
      FILTER(?item wdt:P569 ?birth)
      FILTER(?birth > "1900-01-01"^^xsd:dateTime)
    
      SERVICE wikibase:label {
        bd:serviceParam wikibase:language "en" .
      }
    }
    

    Esta consulta modificada devuelve solo un valor único que es el recuento de instancias de músicos en la ciudad dada nacidos después de 1900.

Comments are closed.