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.
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.
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à.
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". }
}
Ecco la tua prima query SPARQL. Questa semplice query mostra i film che fanno parte della serie Guerre stellari.
#Film della serie Guerre stellari
SELECT ?item
WHERE
{
?item wdt:P179 wd:Q22092344.
}
Codifica a colori WDQS
Il colore WDQS codifica alcune parole SPARQL, che aiutano a comprendere e spiegare il codice SPARQL:
Grigio: la prima riga della query ha un hashtag (#) seguito da un testo grigio. Questo indica un commento, qualcosa che scriviamo che non influisce sulla query stessa. Tutto dopo un “#” è un commento e ignorato da WDQS, ad eccezione di alcuni schemi, che vedremo in altre sezioni.
Rosso: le parole SELECT e WHERE sulle righe 2 e 3 sono visualizzate in maiuscolo rosso. Questo è riservato alle parole della sintassi SPARQL, una specie di “comando”:
SELECT – qui indichiamo i nomi delle variabili che verranno restituite e visualizzate dalla query.
WHERE – qui forniamo lo schema da abbinare ai dati, ovvero definiamo le condizioni per trovare i valori per le variabili nella clausola SELECT, spesso sotto forma di triple che riflettono la struttura Elemento-Proprietà-Valore del database.
Verde: sulle righe 2 e 5, “?item” appare in verde. In SPARQL, i nomi delle variabili sono preceduti da un punto interrogativo e indicati in verde. Quasi ogni stringa può essere un nome di variabile (tranne le parole riservate), come ?film, ?x o ?qualsiasi_nome_di_variabile. Le variabili contengono valori per un uso futuro.
Blu: sulla riga 5, vediamo alcuni termini mostrati in blu. Questi indicano i prefissi. I prefissi sono abbreviazioni di scelta rapida, che consentono di presentare le query in modo più compatto e trasparente. Senza i prefissi avremmo bisogno di specificare l’URL completo per ogni elemento della query.
wdt: un prefisso per le proprietà di Wikidata + il numero della proprietà (P). Senza il prefisso dovremmo fare riferimento a questa proprietà come: http://www.wikidata.org/prop/direct/>:P179
wd: un prefisso per gli elementi Wikidata + il Q-ID del valore. Senza il prefisso dovremmo far precedere il Q-ID di <http://www.wikidata.org/entity/>:Q22092344
Spiegazione dell’interrogazione (query)
Ora andiamo a vedere come funziona la query.
Una query SPARQL è solitamente composta da due o più clausole, che sono parti della query che hanno funzioni diverse. La nostra query SPARQL di base ha due clausole:
La clausola SELECT
La clausola SELECT elenca le variabili che vuoi restituire, in questo caso la variabile ?item. In sostanza, questa riga dice “Troveremo alcuni valori da archiviare in ?item e quindi visualizzeremo quei valori”.
La clausola WHERE
La clausola WHERE specifica le condizioni per le variabili, principalmente sotto forma di triple. SPARQL lavora sulla logica del pattern matching. Il processore SPARQL confronta i modelli dichiarati all’interno della clausola WHERE con le dichiarazioni in tre parti archiviate su Wikidata. La clausola WHERE dice al processore quali valori di proprietà inserire nelle variabili che stai SELEZIONANDO e come estrarre i dati.
Questo modello di query di base di SPARQL riflette la struttura Elemento-Proprità-Valore del database di dati collegato. Il modello per la corrispondenza nella nostra semplice query è dato come un’istruzione: ?oggetto – ha proprietà:parte di una serie – con valore:Guerre stellari (serie di film).
In altre parole, questa query seleziona gli elementi Wikidata che: (1) hanno una proprietà:parte di una serie (P179) e (2) quella proprietà ha come valore “Guerre stellari (serie di film)” (Q22092344). Nota che se passi con il cursore sul prefisso o sul suo elemento associato, l’interfaccia WDQS mostrerà l’etichetta e la descrizione di quella proprietà o elemento.
Premi il pulsante “Esegui Query” per eseguire la query. Scorri all’interno del riquadro per vedere i risultati.
La query recupera il numero Q di ciascuno dei film della serie Guerre stellari, ma non il titolo del film. Nella parte successiva imparerai anche come recuperare i nomi dei film.