Interrogazione con più di una variabile

Query con più di una variabile

Until now our queries essentially had just one variable, even if additional variables were declared for the label and/or description of the item. Now we will look at queries with more variables.
The following query retrieves items that are part of the Star Wars film series, and the director of each film.

#Film della serie Guerre stellari

SELECT ?item  ?itemLabel ?director
WHERE 
{ 
  ?item wdt:P179 wd:Q22092344.  # l'elemento (item) fa parte di Guerre stellari (serie televisiva)
  ?item wdt:P57 ?director.      # il valore della proprietà regista dell'item viene raccolto dalla variabile regista
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }
}

Spiegazione della query

Nella sezione SELECT abbiamo le variabili ?item e ?director, così come ?itemLabel che recupera l’etichetta per ?item.

Nella sezione WHERE, alle righe 6 e 7, vediamo le condizioni di pattern matching:
?item wdt: P179 wd: Q22092344.
?item wdt:P57 ?director.


SPARQL ricerca elementi Wikidata con istruzioni che corrispondono allo schema definito nella sezione WHERE. Quindi, come prima, la prima riga della nostra sezione WHERE dice: “Trovami oggetti che hanno una dichiarazione con una proprietà P179 (parte di una serie) con il valore Q22092344 (Star Wars (serie di film))”.
La seconda riga dice: “Quindi per ciascuno di questi elementi, trovami la loro proprietà P57 (director) e inserisci il suo valore nella variabile ?director”.
Come abbiamo visto, c’è un AND implicito tra ogni istruzione nella sezione WHERE, ovvero solo i modelli che corrispondono a tutte le istruzioni verranno restituiti da questa query.

Ora eseguiamo la query:

Cosa bisogna aggiungere per vedere i nomi dei direttori? Aggiungilo ed esegui di nuovo la query.

Mostra la soluzione

#Un po’ di sintassi

If we wanted the query to show the name of each director, but not the Q number, we could omit the ?director from the SELECT section and only declare ?directorLabel. This implies there is a ?director variable (which we see in the WHERE section) but it isn’t presented in the query results.

Due o più schemi di corrispondenza

Aggiungere schemi di corrispondenza

Finora le nostre query avevano una sola condizione di corrispondenza dei modelli. Ad esempio, hanno selezionato oggetti che hanno una proprietà P179 (parte di una serie) con un valore di Q22092344 (serie di film di Star Wars). Nella query seguente sono presenti due condizioni di corrispondenza dei modelli:

La query recupera quattro elementi. Questi sono articoli che soddisfano entrambe le condizioni. In altre parole, i modelli hanno una relazione AND tra loro:
?item wdt:P179 wd:Q22092344.
AND
?item wdt:P57 Q38222.

# Un po’ di sintassi

Another way of formulating the above query, using a semicolon to join the two statements:

#Film di Guerre stellari

SELECT ?item  ?itemLabel
WHERE 
{ 
  ?item wdt:P179 wd:Q22092344; 	# l'oggetto (elemento/item) fa parte di Guerre stellari (serie televisiva)
  	   	wdt:P57 wd:Q38222. 		# l'oggetto (elemento/item) ha la proprietà regista con valore George Lucas.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }
}

Poiché sulla riga 6 è presente un punto e virgola, che unisce i due pattern in modo che corrispondano, la variabile ?item viene omessa sulla riga 7.

Valori multipli

Proprietà con più valori

Valori multipli per una proprietà non sono un problema per un database come Wikidata. Non c’è niente di sbagliato nell’avere più valori per la stessa proprietà. Per certe affermazioni – come i figli di una persona o le lingue ufficiali di un paese – è perfettamente ragionevole avere più valori. Essenzialmente si tratta di coppie proprietà-valore aggiuntive.

Ad esempio, per l’elemento Star Wars Episodio V: L’impero colpisce ancora (Q181795) la proprietà dello sceneggiatore ha questi valori:

Una rappresentazione grafica sarebbe:

Una rappresentazione grafica delle proprietà del regista e dello sceneggiatore e dei loro valori per l’elemento Q181795 di Wikidata

La struttura di Wikidata

Tabella vs. Linked Data 

Per imparare a usare Wikidata Query Service, si deve prima capire la struttura di Wikidata, cioè come si presenta un database di dati collegati.

In questo tutorial, molti esempi saranno basati sui dati presenti nella seguente tabella:

ID elemento TitoloRegistaDurataIncasso al Box office (in $)
wd:Q17738
Guerre stellari: Episodio IV: Una nuova speranza
George Lucas121775398007
wd:Q181795 Guerre stellari: Episodio V: L’Impero colpisce ancoraIrvin Kershner124538400000
wd:Q181803 Guerre stellari: Episodio VI: Il ritorno dello JediRichard Marquand134475100000
wd:Q165713 Guerre stellari: Episodio I – La minaccia fantasmaGeorge Lucas1361027044677
wd:Q181069 Guerre stellari: Episodio II: L’attacco dei cloniGeorge Lucas142649398328
wd:Q42051 Guerre stellari: Episodio III – La vendetta dei SithGeorge Lucas140848800000
wd:Q6074 Guerre stellari: Il risveglio della ForzaJ. J. Abrams1352068223624
wd:Q18486021 Guerre stellari: Gli ultimi JediRian Johnson1521332539889
wd:Q20977110 Guerre stellari: L’ascesa di SkywalkerJ. J. Abrams 141 851058441

Questo è un piccolo set di dati che descrivono in dettaglio alcune informazioni sui film della serie “Guerre stellari” Per ogni film vengono mostrati alcuni attributi o proprietà: il titolo del film, il suo regista, la sua durata (in minuti) e l’incasso al botteghino accumulato dal film (in dollari). Se hai familiarità con Excel o SQL, questo modo di presentare i dati dovrebbe sembrarti familiare. Tuttavia, Wikidata non è un database basato su tabelle, come quello sopra, ma piuttosto ha un formato “Linked Data”. Cosa significa?

In un modello di dati collegati (linked data), i dati nella prima riga della tabella sopra sarebbero rappresentati come:

Wikidata, che utilizza il formato dei linked data, memorizza le informazioni sotto forma di dichiarazioni. Le dichiarazioni, formalmente note come triple “soggetto, predicato, oggetto”, hanno una struttura Oggetto-Proprietà-Valore.

Ad esempio, l’affermazione “Il cielo ha il colore blu” consiste in:
(1) un soggetto (“il cielo”)
(2) un predicato (“ha il colore”)
(3) un oggetto (“blu”).
Allo stesso modo, l’affermazione “Guerre stellari Episodio IV: Una nuova speranza è stato diretto da George Lucas” consiste in (1) un soggetto / oggetto “Guerre stellari Episodio IV: Una nuova speranza”, (2) un predicato / proprietà “è stato diretto da “, e (3) un oggetto / valore “George Lucas”.

Puoi pensare a ciascuna riga nella tabella dati di sopra come un elemento, le intestazioni delle colonne come nomi di proprietà e le celle di dati come valori della proprietà.

Quindi, un altro modo per descrivere questi dati è attraverso le dichiarazioni. Ad esempio, per l’elemento nella prima riga della tabella, i dati possono essere descritti con le istruzioni:

Elemento (item)ProprietàValore
Q17738titoloGuerre stellari Episodio IV: Una nuova speranza
Q17738 registaGeorge Lucas
Q17738 durata121 minutes
Q17738 incasso775398007

Le dichiarazioni descrivono le caratteristiche dettagliate di un oggetto e sono costituite da coppie proprietà-valore, come “regista: George Lucas” o “durata: 121 minuti”.
Le proprietà in Wikidata hanno una P seguita da un numero. Ad esempio, la proprietà “regista” è P57.
Il valore di questa proprietà per l’elemento Q17738 (Guerre stellari Episodio IV: Una nuova speranza) è George Lucas, che è anche un oggetto – Q38222.
Non tutti i valori sono anche elementi. Ad esempio, il valore della proprietà “durata” (P2047) per l’item Q17738 è 121 minuti.

Alcune proprietà potrebbero avere valori che non sono elementi. Come indicato, ad esempio, il valore della proprietà “durata” (P2047) per l’articolo Q17738 è “121 minuti”, che è una quantità. Il valore di “data di pubblicazione” (P577) negli Stati Uniti è “25 maggio 1977”, una data. Altri tipi di dati utilizzati di frequente sono le stringhe (una catena di caratteri, come testi o codici), coordinate geografiche e testi monolingua (una stringa che non viene tradotta in altre lingue). Wikidata ha attualmente 27 diversi tipi di dati e puoi trovare maggiori informazioni su di essi qui.

Aggiungere etichette

Servizio etichette

Gli elementi su Wikidata sono identificati da un numero Q univoco. Ogni articolo ha anche un’etichetta, che è il nome principale assegnatogli in una lingua particolare. La seguente query recupera i film della serie Guerre stellari e la loro etichetta.

#Film della serie Guerre stellari

SELECT ?item  ?itemLabel 
WHERE 
{ 
  ?item wdt:P179 wd:Q22092344.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }
}

Spiegazione della query

In the SELECT clause, two variables are stated: ?item and ?itemLabel.

Nella clausola SELECT sono indicate due variabili: ?item e ?itemLabel.
L’etichetta è una stringa speciale: si riferisce all’etichetta dell’elemento che è specificata dal nome della variabile. Se nominassimo la nostra variabile ?x, la variabile per l’etichetta sarebbe ?xLabel, se la chiamassimo ?film, la variabile per l’etichetta sarebbe ?filmLabel e così via.

Nella clausola WHERE vediamo lo stesso schema di selezione di prima:
? articolo wdt: P179 wd: Q22092344.
Inoltre, vediamo in rosso il comando SERVICE seguito dal testo (in blu):
wikibase:label { bd:serviceParam wikibase:language “[AUTO_LANGUAGE]”.

Questo frammento di codice è una sorta di collegamento a un servizio che recupera le etichette degli elementi. In altre parole, se una variabile in SELECT è denominata ?NAMELabel, WDQS recupera l’etichetta per l’elemento nella variabile ?NAME. Questo servizio specializzato è molto utile, in quanto riduce la complessità delle query SPARQL che sarebbero altrimenti necessarie per ottenere lo stesso effetto.

Cos’è AUTO_LANGUAGE?

La lingua predefinita per WDQS è l’inglese, come indicato nell’angolo in alto a destra. Questo influisce sia sulla lingua dell’interfaccia WDQS, sia sull’etichetta recuperata per gli elementi.

Esegui la query. Quindi cambia la lingua automatica ed esegui di nuovo la query.

Aggiungere la descrizione

Recupero della descrizione di un elemento

Come spiegato in precedenza nell’introduzione a Wikidata, ogni elemento su Wikidata ha un numero Q univoco. Gli articoli hanno anche un’etichetta in una o più lingue. Inoltre, un elemento può anche avere una descrizione, una breve frase in una particolare lingua. Poiché le etichette degli articoli non sono necessariamente univoche, la descrizione di un articolo Wikidata è progettata per disambiguare gli articoli con etichette uguali o simili. Nemmeno una descrizione deve essere univoca; tuttavia nessun articolo può avere sia la stessa etichetta che la stessa descrizione.

In WDQS, la stringa “Descrizione”, come la stringa “Etichetta”, è una stringa speciale riservata che serve a recuperare la descrizione dell’elemento specificato dal nome della variabile. In altre parole, se una variabile nella clausola SELECT è denominata ?NAMEDescription, WDQS produce la descrizione per l’elemento nella variabile ?NAME.

La seguente query recupera i film della serie Guerre Stellari, la loro etichetta e la loro descrizione.

Introduzione a Wikidata

Che cos’è Wikidata?

Wikidata è il progetto internazionale di Wikimedia, che mira ad essere il più grande database gratuito, proprio come Wikipedia è diventata la fonte di conoscenza più popolare al mondo.

Wikidata è un database di conoscenze gratuita e aperta che può essere letta e modificata sia da esseri umani che da macchine. Wikidata funge da archivio centrale per i dati strutturati dei suoi progetti fratelli Wikimedia, inclusi Wikipedia, Wikivoyage, Wiktionary, Wikisource e altri.

Oltre ai semplici progetti Wikimedia, Wikidata fornisce anche supporto a molti altri siti e servizi! Il contenuto di Wikidata è disponibile con una licenza gratuita, esportato utilizzando formati standard e può essere collegato ad altri set di dati aperti sul web dei dati collegati.

Wikidata/i linked data spiegati

Wikidata è un archivio centralizzato costituito principalmente da elementi (oggetti o item). Un elemento è una cosa, un’entità, un concetto. Può essere un oggetto, una persona, un evento, un luogo, un’opera d’arte, ma anche concetti più astratti come l’amore o il socialismo. Gli elementi sono identificati in modo univoco da una Q seguita da un numero.

Ad esempio, l’elemento Q17738 rappresenta il film del 1977 “Guerre stellari”. Ogni elemento ha anche un’etichetta, che è la denominazione principale assegnatale in una particolare lingua. Ciò consente di tradurre le informazioni di base necessarie per identificare l’argomento trattato dall’elemento senza privilegiare alcuna lingua.

Le etichette degli elementi non devono essere univoche. Ad esempio, Guerre stellari (Q462) rappresenta la serie di film e il franchise multimediale di Guerre stellari, mentre Guerre stellari (Q54317) rappresenta il videogioco del 1983. La descrizione in un elemento di Wikidata è una breve frase progettata per disambiguare elementi con etichette uguali o simili. Una descrizione non deve essere univoca; più elementi possono avere la stessa descrizione, tuttavia due elementi non possono avere sia la stessa etichetta che la stessa descrizione.

Esercizio: interrogazione semplice

| Esercizio: elenca gli elementi, compresa l’etichetta e la descrizione, che fanno parte della serie di film di Harry Potter (Q216930)

Scrivi la tua query SPARQL nella finestra sottostante usando SELECT e WHERE.

Premi il pulsante “Esegui” per eseguire la tua query.

Mostra la soluzione

Etichetta in lingua diversa. Queste piccole differenze vanno bene; sono i risultati che contano.

Premi il pulsante “Esegui” per eseguire la query.

Completamento automatico

Funzione di ricerca integrata WDQS

Il frammento di codice per Wikidata Label Service non è facile da ricordare. Fortunatamente, WDQS offre un’ottima soluzione: autocompletamento. Nella finestra WDQS, ogni volta che si preme Ctrl+Spazio (o Alt+Invio) in qualsiasi punto della query, un menu a discesa offrirà suggerimenti per il codice che potrebbe essere appropriato; selezionare il suggerimento corretto con i tasti freccia su/giù e premere Invio per selezionarlo.

Ad esempio, invece di scrivere

SERVICE wikibase:label { bd:serviceParam wikibase:language “[AUTO_LANGUAGE]”.}

puoi semplicemente digitare SERV, premere Ctrl+Spazio e il primo suggerimento sarà il codice di servizio dell’etichetta completo. Premi semplicemente Invio per accettarlo. Potresti voler cambiare il codice per recuperare le etichette in lingue specifiche.

Il completamento automatico può anche cercare i numeri Q per gli articoli o i numeri P per le proprietà. Se digiti uno dei prefissi Wikidata, come wd: (per elementi) o wdt: (per proprietà) e scrivi il testo in seguito, Ctrl+Spazio cercherà quel testo in Wikidata e suggerirà risultati per elementi e proprietà.

Specificare la lingua dell’etichetta

Scelta dell’etichetta in una o più lingue

Un altro modo per specificare la lingua dell’etichetta recuperata consiste nell’indicarla nel frammento (snippet) di codice SERVICE invece che in “AUTO LANGUAGE”.

Ad esempio, nella query seguente, verranno recuperate e presentate le etichette olandesi (nl):

#Film della serie Guerre stellari

SELECT ?item  ?itemLabel 
WHERE 
{ 
  ?item wdt:P179 wd:Q22092344.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "nl". }
}

È possibile specificare diverse lingue e l’ordine in cui vengono recuperate le etichette. Ad esempio, la seguente query recupera prima l’etichetta francese (fr), ma se non è presente alcuna etichetta in francese, verrà recuperata l’etichetta tedesca (de) e se manca anche quella verrà mostrata l’etichetta italiana (it), e così via.

#Film della serie Guerre stellari

SELECT ?item  ?itemLabel 
WHERE 
{ 
  ?item wdt:P179 wd:Q22092344.
SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,de,it,es,no,pt". }
}
Skip to content