Aiuto:Wikidata/SPARQL
Questa pagina raccoglie una serie di query [[SPARQL]] per Wikidata, con la caratteristica, rispetto ad altre pagine come [[d:Wikidata:SPARQL query service/queries/examples]], di eseguire le ricerche più semplici e fondamentali, orientate agli utenti itwiki e scritte in modo che gli identificativi delle proprietà e i valori da ricercare possono essere facilmente rimpiazzati da quelli che servono di volta in volta all'utente.

Tutte le query visualizzano:
* il numero dell'elemento (Qxxxx)
* l'etichetta in italiano, se quest'ultima non è disponibile, sarà visualizzata quella in inglese, se manca anche questa sarà visualizzato il numero dell'elemento; è ottenuto tramite la riga: <code>SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }</code>
* se la query restituisce troppi risultati il risultato è limitato ai primi 100; è ottenuto tramite la riga: <code>LIMIT 100</code>

Per ottenere solo il numero di risultati sostiture negli esempi la prima riga (SELECT ...) con: <code><nowiki>SELECT (COUNT(?item) AS ?total)</nowiki></code>

== Ricerca degli elementi con una specifica proprietà ==
Esempio di come ricercare gli elementi con una specifica proprietà.
{{SPARQL|query=# Ricerca gli elementi che hanno la proprietà codice municipale norvegese (P2504)
SELECT ?item ?itemLabel ?propVal
WHERE {
  ?item wdt:P2504 ?propVal .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

Ricerca gli elementi che hanno due specifiche proprietà (entrambe).
{{SPARQL|query=# Ricerca gli elementi che hanno sia la proprietà codice municipale norvegese (P2504) che la proprietà identificativo LCNAF (P244)
SELECT ?item ?itemLabel ?propVal ?propVal2
WHERE {
  ?item wdt:P2504 ?propVal .
  ?item wdt:P244 ?propVal2 .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

Ricerca gli elementi che hanno una proprietà e non ne hanno invece un'altra.
{{SPARQL|query=# Ricerca gli elementi che hanno la proprietà codice municipale norvegese (P2504) e non hanno la proprietà identificativo LCNAF (P244)
SELECT ?item ?itemLabel ?propVal
WHERE {
  ?item wdt:P2504 ?propVal .
  MINUS { ?item wdt:P244 [] } .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

== Ricerca degli elementi in base al valore della proprietà ==
Esempi di come ricercare gli elementi in base al valore di una certa proprietà. La query può cambiare a seconda del tipo di proprietà.

=== Proprietà di tipo Elemento ===
Ricerca gli elementi che hanno una proprietà di tipo elemento con uno specifico valore.
{{SPARQL|query=# Ricerca gli elementi che hanno la proprietà "istanza di" (P31) uguale a museo (Q33506)
SELECT ?item ?itemLabel
WHERE {
  ?item wdt:P31 wd:Q33506 .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

=== Proprietà di tipo Stringa ===
Ricerca gli elementi che hanno una proprietà di tipo stringa con uno specifico valore.
{{SPARQL|query=# Ricerca gli elementi che hanno la proprietà codice di lingua Wikimedia (P424) uguale a it
SELECT ?item ?itemLabel
WHERE {
  ?item wdt:P424 "it" .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

=== Proprietà di tipo File multimediale su Commons ===
Ricerca gli elementi che hanno una proprietà di tipo File multimediale su Commons con uno specifico valore.

Occorre:
* anteporre <code><nowiki>http://commons.wikimedia.org/wiki/Special:FilePath/</nowiki></code> al nome del file da ricercare
* sostituire gli spazi con %20
* racchiudere l'URL risultante tra "<" e ">"

{{SPARQL|query=# Ricerca gli elementi che hanno la proprietà logo (P154) uguale a "The GIMP icon - gnome.svg"
SELECT ?item ?itemLabel
WHERE {
  ?item wdt:P154 <http://commons.wikimedia.org/wiki/Special:FilePath/The%20GIMP%20icon%20-%20gnome.svg> .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

=== Proprietà di tipo Forma geografica ===
Ricerca gli elementi che hanno una proprietà di tipo Forma geografica con uno specifico valore.

Occorre:
* anteporre <code><nowiki>http://commons.wikimedia.org/data/main/</nowiki></code> al nome della mappa da ricercare
* sostituire gli spazi con "+"
* racchiudere l'URL risultante tra "<" e ">"

{{SPARQL|query=# Ricerca gli elementi che hanno la proprietà geoshape (P3896) uguale a "Data:United States.map"
SELECT ?item ?itemLabel
WHERE {
  ?item wdt:P3896 <http://commons.wikimedia.org/data/main/Data:United+States.map> .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

=== Proprietà di tipo Coordinate geografiche ===
Ricerca gli elementi che hanno una proprietà di tipo Coordinate geografiche con uno specifico valore.

{{SPARQL|query=# Ricerca gli elementi che hanno una specifica latitudine e longitudine in P625
SELECT ?item ?itemLabel
WHERE {
  ?item p:P625 ?coord .
  ?coord psv:P625 ?coord_node .
  ?coord_node wikibase:geoLatitude "48.858"^^xsd:decimal .  
  ?coord_node wikibase:geoLongitude "2.2953"^^xsd:decimal .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

Non conoscendo a priori la latitudine e la longitudine esatta da ricercare, presumibilmente la ricerca sarà eseguita nei dintorni di un certo punto, come nell'esempio seguente.
{{SPARQL|query=# Ricerca gli elementi entro un chilometro da una specifica latitudine e longitudine in P625
SELECT ?item ?itemLabel ?distance
WHERE {
  SERVICE wikibase:around {
    ?item wdt:P625 ?coord .
    bd:serviceParam wikibase:center "Point(2.2953 48.858)"^^geo:wktLiteral .
    bd:serviceParam wikibase:radius "1" .
    bd:serviceParam wikibase:distance ?distance .
  }   
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

=== Proprietà di tipo Testo monolingua ===
Ricerca gli elementi che hanno una proprietà di tipo Testo monolingua con uno specifico valore.

{{SPARQL|query=# Ricerca gli elementi che hanno la proprietà soprannome (P1449) uguale a "Ville-Lumière"
SELECT ?item ?itemLabel
WHERE {
  ?item wdt:P1449 ?propVal .
  FILTER(STR(?propVal) = "Ville-Lumière") .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

La stessa query precedente ma specificando anche che la lingua utilizzata dev'essere il francese. 

{{SPARQL|query=# Ricerca gli elementi che hanno la proprietà soprannome (P1449) uguale a "Ville-Lumière" e la lingua utilizzata è il francese
SELECT ?item ?itemLabel
WHERE {
  ?item wdt:P1449 ?propVal .
  FILTER(STR(?propVal) = "Ville-Lumière" && LANG(?propVal) = "fr") .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

L'ultima query può essere anche scritta più semplicemente come:

{{SPARQL|query=# Ricerca gli elementi che hanno la proprietà soprannome (P1449) uguale a "Ville-Lumière" e la lingua utilizzata è il francese
SELECT ?item ?itemLabel
WHERE {
  ?item wdt:P1449 "Ville-Lumière"@fr .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

=== Proprietà di tipo Quantità ===
Ricerca gli elementi che hanno una proprietà di tipo Quantità con uno specifico valore.

{{SPARQL|query=# Ricerca gli elementi che hanno la proprietà altezza sul mare (P2044) uguale a "10000"
SELECT ?item ?itemLabel
WHERE {
  ?item p:P2044 ?statement .
  ?statement psv:P2044 ?valuenode .
  ?valuenode wikibase:quantityAmount "10000"^^xsd:decimal .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

La stessa query precedente ma specificando anche che l'unità di misura utilizzata dev'essere il {{WikidataEl|Q3710}}.

{{SPARQL|query=# Ricerca gli elementi che hanno la proprietà altezza sul mare (P2044) uguale a "10000" e l'unità di misura è il piede (Q3710)
SELECT ?item ?itemLabel
WHERE {
  ?item p:P2044 ?statement .
  ?statement psv:P2044 ?valuenode .
  ?valuenode wikibase:quantityUnit wd:Q3710 .
  ?valuenode wikibase:quantityAmount "10000"^^xsd:decimal .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

=== Proprietà di tipo Tabular data ===
Ricerca gli elementi che hanno una proprietà di tipo Tabular data con uno specifico valore.

Occorre:
* anteporre <code><nowiki>http://commons.wikimedia.org/data/main/</nowiki></code> al nome della tabella da ricercare
* sostituire gli spazi con "+"
* racchiudere l'URL risultante tra "<" e ">"

{{SPARQL|query=# Ricerca gli elementi che hanno la popolazione tabellare (P4179) uguale a "Data:Taipei Beitou District Population.tab"
SELECT ?item ?itemLabel
WHERE {
  ?item wdt:P4179 <http://commons.wikimedia.org/data/main/Data:Taipei+Beitou+District+Population.tab> .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

=== Proprietà di tipo Data e ora ===
Ricerca gli elementi che hanno una proprietà di tipo Data e ora con uno specifico valore.
{{SPARQL|query=# Ricerca gli elementi che hanno la proprietà data di nascita (P569) uguale a 4 luglio 1807
SELECT ?item ?itemLabel
WHERE {
  ?item wdt:P569 "1807-07-04T00:00:00Z"^^xsd:dateTime .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

=== Proprietà di tipo URL ===
Ricerca gli elementi che hanno una proprietà di tipo URL con uno specifico valore.

{{SPARQL|query=# Ricerca gli elementi che hanno la proprietà sito web ufficiale (P856) uguale a http://www.example.com
SELECT ?item ?itemLabel
WHERE {
  ?item wdt:P856 <http://www.example.com> .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

=== Proprietà di tipo Identificativo esterno ===
Ricerca gli elementi che hanno una proprietà di tipo Identificativo esterno con uno specifico valore.
{{SPARQL|query=# Ricerca gli elementi che hanno l'identificativo IMDb uguale a tt0068646
SELECT ?item ?itemLabel
WHERE {
  ?item wdt:P345 "tt0068646" .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

=== Proprietà di tipo Espressione matematica ===
Ricerca gli elementi che hanno una proprietà di tipo Espressione matematica con uno specifico valore.

Per questa query c'è ancora qualche problema in risoluzione a [[Phab:T195765]].

== Etichette, descrizioni e alias ==
Ricerca gli elementi che hanno l'etichetta con uno specifico valore.
{{SPARQL|query=# Ricerca gli elementi che hanno l'etichetta in italiano uguale a "Parigi"
SELECT ?item
WHERE {
  ?item rdfs:label "Parigi"@it .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

Ricerca gli elementi che hanno la descrizione con uno specifico valore.
{{SPARQL|query=# Ricerca gli elementi che hanno la descrizione in italiano uguale a "capoluogo della città metropolitana di Milano e della Lombardia"
SELECT ?item ?itemLabel
WHERE {
  ?item schema:description "capoluogo della città metropolitana di Milano e della Lombardia"@it .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

Ricerca gli elementi che hanno un alias con uno specifico valore.
{{SPARQL|query=# Ricerca gli elementi che hanno un alias in italiano uguale a "Città eterna"
SELECT ?item ?itemLabel
WHERE {
  ?item skos:altLabel "Città eterna"@it .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

== Sitelink ==
Tutte le query precedenti possono essere ulteriormente ristrette per:
* avere una voce in itwiki: <code>FILTER EXISTS { ?wit schema:about ?item . ?wit schema:inLanguage "it" }</code>
* non avere una voce in itwiki: <code>FILTER NOT EXISTS { ?wit schema:about ?item . ?wit schema:inLanguage "it" }</code>

Esempi:
{{SPARQL|query=# Ricerca gli elementi che hanno la proprietà codice municipale norvegese (P2504) e una voce in itwiki
SELECT ?item ?itemLabel ?propVal
WHERE {
  ?item wdt:P2504 ?propVal .
  FILTER EXISTS { ?wit schema:about ?item . ?wit schema:inLanguage "it" }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

{{SPARQL|query=# Ricerca gli elementi che hanno la proprietà codice municipale norvegese (P2504) e che non hanno una voce in itwiki
SELECT ?item ?itemLabel ?propVal
WHERE {
  ?item wdt:P2504 ?propVal .
  FILTER NOT EXISTS { ?wit schema:about ?item . ?wit schema:inLanguage "it" }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

== Qualificatori ==
Esempio di come ricercare gli elementi con una specifica proprietà con uno specifico qualificatore.

{{SPARQL|query=
# Ricerca gli elementi che hanno la proprietà via (P669) con qualificatore numero civico (P670)
SELECT ?item ?itemLabel ?qVal
WHERE {
  ?item p:P669 ?statement .
  ?statement pq:P670 ?qVal .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

Esempio di come ricercare gli elementi in base al valore di una certa proprietà (di tipo elemento) e al valore di un suo qualificatore (di tipo stringa).
{{SPARQL|query=
# Ricerca gli elementi che hanno la proprietà via (P669) uguale a via Giuseppe Garibaldi (Q2343106) con qualificatore numero civico (P670) uguale a "1"
SELECT ?item ?itemLabel
WHERE {
  ?item p:P669 ?statement .
  ?statement ps:P669 wd:Q2343106 .
  ?statement pq:P670 "1" .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "it,en" }
}
LIMIT 100
}}

== Riferimenti ==
{{...}}

{{Progetto|Wikidata}}

[[Categoria:Aiuto su Wikidata]]