User:Olea/Ejemplos de consultas WDQS

From Wikidata
Jump to navigation Jump to search

Hello SPARQL queries dataset[edit]

Search for thousands example Wikidata queries: https://observablehq.com/@pac02/hello-sparql-queries-dataset

Uso de UNION[edit]

Profesiones y ocupaciones con entrada eswiki:

SELECT DISTINCT ?profesi_n ?profesi_nLabel ?article WHERE {
  {
    ?profesi_n wdt:P31 wd:Q28640.
    ?article schema:about ?profesi_n .
    ?article schema:isPartOf <https://es.wikipedia.org/>.
  } UNION {
      ?profesi_n wdt:P31 wd:Q12737077.
      ?article schema:about ?profesi_n .
      ?article schema:isPartOf <https://es.wikipedia.org/>.                 
  } UNION {
        ?profesi_n wdt:P279 wd:Q28640.
        ?article schema:about ?profesi_n;
        schema:isPartOf <https://es.wikipedia.org/>.
  } UNION {
       ?profesi_n wdt:P279 wd:Q12737077.
       ?article schema:about ?profesi_n;
       schema:isPartOf <https://es.wikipedia.org/>. 
  }

    SERVICE wikibase:label { bd:serviceParam wikibase:language "es". }
             
} ORDER BY ?profesi_nLabel
Try it!

Listar elementos con una referencia determinada[edit]

SELECT ?item ?itemLabel 
WHERE 
{
  ?item p:P31 [ps:P31 wd:Q4989906; prov:wasDerivedFrom/pr:P248 wd:Q5917182]. 
  SERVICE wikibase:label { bd:serviceParam wikibase:language "es".}
}
Try it!

Listar calificadores[edit]

SELECT ?eremitorio ?eremitorioLabel ?id ?codigo ?fecha_ini ?fecha_fin ?epoca WHERE {
  ?eremitorio wdt:P3318 ?id;
    wdt:P8425 ?codigo;
    p:P31 ?statement.
  ?statement a wikibase:BestRank;
             ps:P31 wd:Q513550.

  OPTIONAL { ?statement pq:P580 ?fecha_ini. }
  OPTIONAL { ?statement pq:P582 ?fecha_fin. }
  OPTIONAL { ?statement pq:P1264 ?epoca. }

  SERVICE wikibase:label { bd:serviceParam wikibase:language "es".}
}
Try it!

Consulta a partir de una lista de elementos previos conocidos[edit]

SELECT ?municipio ?municipioLabel ?item ?itemLabel ?itemDescription ?coordenadas ?codigoIAPH WHERE {
  VALUES ?thing { wd:Q1447785 wd:Q1358190 wd:Q1157982 wd:Q1447755 wd:Q1358351 wd:Q695536 wd:Q940842 wd:Q596058 
                  wd:Q1611746 wd:Q1358027 wd:Q1447770 wd:Q1358171 wd:Q1110408 wd:Q1358100 wd:Q1157977 wd:Q1628481 
                  wd:Q1445226 wd:Q1358237 wd:Q1611880 wd:Q1407152 wd:Q1444119 }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "es". }
  ?item wdt:P131 ?thing, ?municipio. 
  ?item wdt:P8425 ?codigoIAPH. 
  FILTER NOT EXISTS { ?item wdt:P625 ?coordenadas. }
}
Try it!

Listar un rango de elementos de una consulta usando OFFSET[edit]

SELECT DISTINCT ?item ?cod_IAPH
WHERE 
{
  ?item (wdt:P131*) wd:Q82142;
    wdt:P8425 ?cod_IAPH.
  ?item wdt:P1435 wd:Q23712. 
}
ORDER BY ?cod_IAPH
OFFSET 500 LIMIT 500
Try it!

List an P31 value with a specific reference[edit]

SELECT ?item ?itemLabel 
WHERE 
{
  ?item p:P31 [ps:P31 wd:Q4989906; prov:wasDerivedFrom/pr:P248 wd:Q5917182]. 
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Try it!

Elementos que usan una propiedad que es instancia de una «propiedad de Wikidata»[edit]

SELECT (COUNT(DISTINCT ?protected_area ) AS ?count)
WHERE
{  
  {
    ?prop wdt:P31 wd:Q55978235.
    ?prop wikibase:directClaim ?claim.
    ?protected_area ?claim [].
  }
  UNION 
  {
    ?protected_area wdt:P31/wdt:P279* wd:Q473972.
  }
}
Try it!

Ejemplo de capa en Wikishootme[edit]

?q wdt:P131* wd:Q803684;
    wdt:P3318 ?IAPHid

Buscar una cadena de texto en la etiqueta de un elemento[edit]

La palabra mancomunidad en la etiqueta ES de elementos situados en España:

SELECT ?item ?l ?lang
{
  hint:Query hint:optimizer "None".
  SERVICE wikibase:mwapi {
    bd:serviceParam wikibase:endpoint "www.wikidata.org" .
    bd:serviceParam wikibase:api "Generator" .
    bd:serviceParam mwapi:generator "search" .
    bd:serviceParam mwapi:gsrsearch 'inlabel:Mancomunidad haswbstatement:P17=Q29' .
    bd:serviceParam mwapi:gsrlimit "max" .    
    bd:serviceParam mwapi:gsrnamespace "0" .    
    ?item wikibase:apiOutputItem mwapi:title  .    
  }
  ?item rdfs:label ?l.
  bind(lang(?l) as ?lang)
}
Try it!

La palabra mancomunidad en todas las etiquetas de elementos situados en España:

SELECT ?item ?l ?lang
{
  hint:Query hint:optimizer "None".
  SERVICE wikibase:mwapi {
    bd:serviceParam wikibase:endpoint "www.wikidata.org" .
    bd:serviceParam wikibase:api "Generator" .
    bd:serviceParam mwapi:generator "search" .
    bd:serviceParam mwapi:gsrsearch 'inlabel:Mancomunidad haswbstatement:P17=Q29' .
    bd:serviceParam mwapi:gsrlimit "max" .    
    bd:serviceParam mwapi:gsrnamespace "0" .    
    ?item wikibase:apiOutputItem mwapi:title  .    
  }
  ?item rdfs:label ?l.
  bind(lang(?l) as ?lang)
  FILTER(contains(?l, "Mancomunidad")).  
}
Try it!

Buscar una cadena de texto en la descripción de un elemento[edit]

# todos los elementos sin instanciar de caracterización arqueológica
# y que, por tanto, son probablemente yacimientos arqueológicos

SELECT DISTINCT ?item ?itemLabel ?itemDescription ?codigo ?identificador WHERE {
  ?item wdt:P3318 ?identificador.
  FILTER(NOT EXISTS { ?item wdt:P31 _:b1. })
  ?item wdt:P8425 ?codigo;
    schema:description ?description.
  FILTER(CONTAINS(STR(?description), "arqueológica"))
  SERVICE wikibase:label { bd:serviceParam wikibase:language "es". }
}
ORDER BY (?codigo)
Try it!

Listar enlaces (sitelink) a ESWiki[edit]

SELECT ?article ?articleLabel ?sitelink WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],es". }
  ?article wdt:P131 wd:Q10400.
  ?sitelink schema:about ?article;
    schema:isPartOf <https://es.wikipedia.org/>.
}
Try it!

Extraer la URI a una sentencia/afirmación/statement[edit]

SELECT DISTINCT ?item ?itemLabel ?statement1 ?davalue WHERE {
  ?item p:P4797 ?statement1.
  ?statement1 ps:P4797 _:anyValueP4797.
  ?statement1 ps:P4797 ?davalue.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "es". }
}
Try it!

Listar los nacidos en una región/provincia[edit]

SELECT DISTINCT ?person ?personLabel ?personDescription ?placeofbirthLabel WHERE {
    ?person wdt:P19 ?placeofbirth.
    ?placeofbirth (wdt:P131*) wd:Q81802.
  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "es". }
}
Try it!

Listar todos los nacidos en una provincia/región fallecidos en cualquier campo de concentración nazi[edit]

SELECT DISTINCT ?person ?personLabel ?personDescription ?placeofbirthLabel WHERE {
  ?person wdt:P20 [ wdt:P31 wd:Q328468 ];
          wdt:P19 [ wdt:P131 wd:Q81802 ] .
  OPTIONAL { ?person wdt:P19 ?placeofbirth. }

  SERVICE wikibase:label { bd:serviceParam wikibase:language "es". }
}
Try it!

Listar todos los elementos en una zona geográfica con el mismo valor de propiedad[edit]

En este caso valores idénticos de INE municipality code (P772) para Galicia (Q3908):

SELECT DISTINCT ?p772 ?item1 ?item1Label ?item2 ?item2Label {
	VALUES ?p131 {wd:Q3908}
    ?item1 wdt:P772 ?p772; wdt:P131* ?p131a .
	?item2 wdt:P772 ?p772; wdt:P131* ?p131b .
    FILTER(?p131a=?p131 || ?p131b=?p131)
	FILTER(STR(?item1)<STR(?item2)) .
	SERVICE wikibase:label { bd:serviceParam wikibase:language "es" } .
}
ORDER BY ?p772
Try it!

(Source)

Truco de aceleración «rutas inversas de propiedad»[edit]

Para evitar timeouts en consultas como

SELECT DISTINCT ?item WHERE {
    ?item (wdt:P31/(wdt:P279*)) wd:Q271669;
      wdt:P131 wd:Q81802.
}
Try it!

Cito: The query is correct, but runs slowly. Using a technique described at Wikidata:SPARQL query service/query optimization#Inverse property paths you can speed up the query and avoid the timeout by reversing the property path like this:

SELECT DISTINCT ?item WHERE {
    ?item wdt:P131* wd:Q81802.
    wd:Q271669 ^wdt:P279*/^wdt:P31 ?item.
}
Try it!

(source)

Todo lo que enlaza a un elemento[edit]

todo, a lo burro, con todas las tripletas que apuntan:

SELECT ?item ?itemLabel ?P31 ?P31Label WHERE {
  ?item ?property wd:Q1631944 .
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Try it!

lo mismo pero filtrando schema:about:

SELECT ?item ?itemLabel ?P31 ?P31Label WHERE {
  ?item ?property wd:Q1631944 .
  MINUS { ?item schema:about wd:Q1631944 }   
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Try it!

y parece que este funciona exactamente igual aunque no termino de comprender el por qué:

SELECT DISTINCT ?item ?itemLabel  WHERE {
  ?item ?property wd:Q1631944.
  ?item wdt:P31 ?P31.

  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Try it!

Obviamente se pueden añadir más condiciones a la consulta.


Y otro ejemplo que me pasan por Telegram que no sé realmente interpretar pq a esta hora estoy empanao :-)

select distinct ?item ?itemLabel {
  ?a ?p1 wd:Q1631944.
  
  # ignore sitelinks
  minus { ?a schema:about wd:Q1631944 }

  # if ?a is a statement node (has a rank), ?p1 is a predicate like ps: or pq:
  # so select triples which use the statement node as a value (?p2 is a p: predicate)
  optional {
    ?a wikibase:rank [].
    ?b ?p2 ?a.
  }

  # if ?a is a reference node, a statement node links to it using prov:wasDerivedFrom
  # again, select triples which use the statement node as a value
  optional {
    ?c ?p3 [ prov:wasDerivedFrom ?a ].
  }

  # assign ?item to the first assigned value out of ?b (ps:/pq:), ?c (pr:) and ?a (wdt: and any cases not caught by the previous two)
  bind (coalesce(?b, ?c, ?a) as ?item)

  service wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
} order by ?itemLabel ?item
Try it!

Todas las entradas del eDBA[edit]

Todas los elementos cuya described at URL (P973) apunta a la web del eDBA.

SELECT DISTINCT ?item ?itemLabel ?itemDescription ?P973 ?lugar_de_nacimiento ?lugar_de_nacimientoLabel ?fecha_de_nacimiento ?lugar_de_fallecimiento ?lugar_de_fallecimientoLabel ?fecha_de_fallecimiento ?sexo_o_g_nero ?sexo_o_g_neroLabel WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "es". }
  ?item wdt:P973 ?P973.
  FILTER(CONTAINS(STR(?P973), "edba.nsf"))
  OPTIONAL { ?item wdt:P19 ?lugar_de_nacimiento. }
  OPTIONAL { ?item wdt:P569 ?fecha_de_nacimiento. }
  OPTIONAL { ?item wdt:P20 ?lugar_de_fallecimiento. }
  OPTIONAL { ?item wdt:P570 ?fecha_de_fallecimiento. }
  OPTIONAL { ?item wdt:P21 ?sexo_o_g_nero. }
}
Try it!

Ejemplo de optimización de consulta[edit]

Si así acabamos en timeout

SELECT ?item ?itemLabel  WHERE {
  ?item (wdt:P131*) wd:Q5783.
  wd:Q69873044 ^wdt:P1435 ?item.
  FILTER NOT EXISTS { ?item wdt:P3318 ?P3318. }
}
Try it!

con subselect y consejos lo resolvemos en un plis:

SELECT ?item ?itemLabel
WITH { SELECT ?item { ?item wdt:P1435 wd:Q69873044  } } AS %sub
WHERE
{
  include %sub
  ?item wdt:P131* wd:Q5783 . hint:Prior hint:gearing "forward" .
  FILTER NOT EXISTS { ?item wdt:P3318 ?P3318 }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
}
Try it!

Listados en ESwiki y ENwiki[edit]

SELECT ?MUNICIPIO ?MUNICIPIOLabel ?MUNICIPIODescription ?coordenadas ?estatus_patrimonialLabel ?ESwiki ?ENwiki WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "es". }
  ?MUNICIPIO wdt:P131 wd:Q1631944.
  OPTIONAL { ?MUNICIPIO wdt:P625 ?coordenadas. }
  OPTIONAL {
    ?ESwiki schema:about ?MUNICIPIO;
      schema:isPartOf <https://es.wikipedia.org/>.
  }
  OPTIONAL {
    ?ENwiki schema:about ?MUNICIPIO;
      schema:isPartOf <https://en.wikipedia.org/>.
  }
  OPTIONAL { ?MUNICIPIO wdt:P1435 ?estatus_patrimonial. }
}
Try it!

Todos los elementos en una localización administrativa[edit]

Que usen located in the administrative territorial entity (P131) o location (P276). Ojo que es probable tenga que ser refinada.

SELECT DISTINCT ?municipio ?municipioLabel ?municipioDescription ?coordenadas ?imagen WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "es". }
  { ?municipio (wdt:P131*) wd:Q5277. }
  UNION
  { ?municipio (wdt:P276*) wd:Q5277. }
  OPTIONAL { ?municipio wdt:P625 ?coordenadas. }
  OPTIONAL { ?municipio wdt:P18 ?imagen. }
}
Try it!

Consulta de elementos geolocalizados alrededor de un punto predeterminado[edit]

SELECT ?place ?placeLabel ?dist (SAMPLE(?image) AS ?image)
      WHERE
      {
        SERVICE wikibase:around {
            ?place wdt:P625 ?location .
            bd:serviceParam wikibase:center "Point(${longitude} ${latitude})"^^geo:wktLiteral .
            bd:serviceParam wikibase:radius "10" .
        }
        ?place wdt:P1435 ?monument .
        OPTIONAL { ?place wdt:P18 ?image . }
        SERVICE wikibase:label { bd:serviceParam wikibase:language "${langs.map(lang => lang.code).join(',')}" }
        BIND(geof:distance("Point(${longitude} ${latitude})"^^geo:wktLiteral, ?location) as ?dist) 
      }
      GROUP BY ?place ?placeLabel ?dist
      ORDER BY ?dist
Try it!

Elementos geolocalizados alrededor de Alamedilla (Q1631944)[edit]

SELECT ?item ?itemLabel ?distance ?location WHERE {
  wd:Q1631944 wdt:P625 ?destino.
  SERVICE wikibase:around {
    ?item wdt:P625 ?location.
    bd:serviceParam wikibase:center ?destino;
      wikibase:radius "20";
      wikibase:distance ?distance.
  }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Try it!

Consultar los elementos que tienen determinada cadena como valor para una propiedad determinada[edit]

En este ejemplo buscamos «ourism»:

SELECT ?item ?itemLabel ?P1282 WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
  OPTIONAL { ?item wdt:P1282 ?P1282. }
  FILTER(CONTAINS(?P1282, "ourism"))
}
Try it!


Todas las clases de playas alrededor de la ciudad de Almería[edit]

SELECT DISTINCT ?item ?itemLabel ?imagen (SAMPLE(?coords) AS ?coords) ?P131 ?P131Label WHERE {
  wd:Q10400 wdt:P625 ?lugar.
  VALUES ?clase {
    wd:Q40080 wd:Q38051384 wd:Q53800413 wd:Q28060956
    wd:Q28060923 wd:Q3390872 wd:Q98375039 wd:Q57409799 wd:Q35800652 wd:Q35101126
    wd:Q24633899 wd:Q18751767 wd:Q17155155 wd:Q15849385 wd:Q12353867 wd:Q11959973
    wd:Q11941943 wd:Q9089165 wd:Q7900097 wd:Q7493708 wd:Q6881911 wd:Q5655097
    wd:Q4831654 wd:Q2892735 wd:Q1059407 wd:Q847935 wd:Q573367 wd:Q567998
  }
  SERVICE wikibase:around {
    ?item wdt:P625 ?coords.
    bd:serviceParam wikibase:center ?lugar;
      wikibase:radius "20".
  }
  { ?item wdt:P31 ?clase. }

  SERVICE wikibase:label { bd:serviceParam wikibase:language "es". }
  OPTIONAL { ?item wdt:P18 ?imagen. }
  OPTIONAL { ?item wdt:P131 ?P131. }
}
GROUP BY ?item ?itemLabel ?imagen ?P131 ?P131Label
Try it!

Todos los artículos académicos con P31= scholarly article (Q13442814)[edit]

SELECT (COUNT(*) AS ?total) WHERE { _:b3 wdt:P31 wd:Q13442814. }
Try it!

filtrar elementos por cadena de texto en la URL[edit]

# properties with equivalent in CIDOC-CRM
SELECT DISTINCT ?item ?itemLabel ?cidocURL WHERE {
  ?item wdt:P1628 ?cidocURL.
  FILTER(REGEX(STR(?cidocURL), "cidoc-crm"))
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Try it!

Filtrar por calificadores[edit]

Ejemplo con todos los municipios españoles desaparecidos:

SELECT ?item ?itemLabel WHERE {
  ?item (wdt:P31/(wdt:P279*)) wd:Q2074737;
    p:P31 ?statement.
  ?statement ps:P31 ?municipio;
    pq:P582 ?fechafin.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "es". }
}
Try it!

y la variante de todos los municipios que sí existen:

SELECT DISTINCT ?item ?itemLabel ?c_digo_INE ?identificador_GeoNames WHERE {
  ?item (wdt:P31/(wdt:P279*)) wd:Q2074737.
  FILTER(NOT EXISTS { ?item wdt:P582 ?fecha_de_fin. })
  MINUS {
    ?item p:P31 ?statement.
    ?statement ps:P31 ?municipio;
      pq:P582 ?fechafin.
  }
  MINUS { ?item wdt:P31 wd:Q55863584. }
  MINUS { ?item wdt:P31 wd:Q19730508. }  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "es". }
  OPTIONAL { ?item wdt:P772 ?c_digo_INE. }
  OPTIONAL { ?item wdt:P1566 ?identificador_GeoNames. }
}
Try it!


Todas las obras de Rainer Werner Fassbinder (Q44426)[edit]

SELECT DISTINCT ?movie ?movieLabel ?instancia_deLabel WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en,de". }
  VALUES ?ocupacion {
    wdt:P57 wdt:P161 wdt:P58 wdt:P344 wdt:P86 wdt:P162
  }
  ?movie ?ocupacion ?Fassbinder.
  ?movie wdt:P31/wdt:P279* ?obra_audiovisual.
  OPTIONAL { ?movie wdt:P31 ?instancia_de. }
  BIND(wd:Q44426 AS ?Fassbinder)
  BIND(wd:Q2431196 AS ?obra_audiovisual)
}
ORDER BY (?movie)
Try it!


Empotrar un gráfico de tarta con una plantilla[edit]

Consultar el ejemplo User:Olea/Patrimonio andaluz#Patrimonio inmueble

Extraer sitelinks y contadores[edit]

Una consulta muy compleja que robé por ahí aplicada a Listeria: Usuario:Olea/Ejemplo avanzado de Listeria.

Usando el graph builder de WDQS[edit]

Con un ejemplo no trivial que extrae calificadores de colores de las partes de un colibrí: https://w.wiki/65rq

(OjO: una especie puede tener partes con más de un color, así que aunque la tabla queda preciosa en la práctica hay colores que se sobre escriben)