DISTINCT

DISTINCT – visualizzazione risultati unici

Diamo nuovamente un’occhiata alla query che elenca tutte le opere d’arte (Q838948) dell’universo di Star Wars.

Se esegui la query vedrai che ci sono alcuni duplicati nei risultati: alcuni oggetti, come Q19590955 (Rogue One) e Q6074 (Star Wars Episodio VII: Il risveglio della Forza) appaiono più di una volta.
I modelli di query spesso restituiscono duplicati: ciò può accadere se, ad esempio, si utilizza il modello “?item wdt:P31/wdt:P279* ?class” e sono presenti più percorsi da ?item a ?class: otterrai un nuovo risultato per ciascuno di questi percorsi. Ad esempio, l’elemento Q19590955 (Rogue One) ha sia “film” che “3D film” come valori di P31 e ognuno ha un percorso per la classe “opera d’arte”, quindi l’elemento viene visualizzato due volte nei risultati.

Per eliminare i duplicati, aggiungiamo il modificatore DISTINCT dopo SELECT:

Percorsi di proprietà

Percorsi di proprietà

La costruzione della query che ci consente di selezionare elementi che appartengono alla stessa classe fa uso di percorsi di proprietà. I percorsi delle proprietà sono un’abbreviazione per scrivere un percorso delle proprietà tra due elementi.

Per capire come funziona questa costruzione, dai un’occhiata alla visualizzazione grafica di alcune informazioni sull’oggetto Star Wars: Episodio I – La minaccia fantasma (Q165713):

L’elemento/item Q165713 ha un’istruzione P31 (istanza di) con il valore “lungometraggio” (Q24869). Quindi l’istruzione Elemento-Proprietà-Valore sarebbe:

Q165713 – P31 – Q24869

Il percorso tra Q165713 e Q24869 è il percorso più semplice: una singola proprietà.

L’elemento Q24869 (film lungometraggio) ha la proprietà P279 (sottoclasse di) con il valore Q11424 (film). Quindi l’istruzione Elemento-Proprietà-Valore sarebbe:

Q24869 – P279 – Q11424

Anche il percorso tra Q24869 e Q11424 è solo una singola proprietà.

Gli elementi del percorso possono essere uniti con una barra (/). Quindi un’istruzione di query che utilizza la costruzione wdt:P31/wdt:P279 denota un percorso di proprietà tra due elementi costituiti da P31 (istanza di) e P279 (sottoclasse di).

Tuttavia, se il nostro modello per la corrispondenza fosse:
?item wdt:P31/wdt:P279 wd:Q11424.
la query corrisponderebbe solo agli elementi che sono un’istanza di una sottoclasse di film, ovvero solo agli elementi che hanno un percorso costituito da P31 e P279 all’elemento film (Q11424). Gli elementi la cui proprietà P31 ha il valore Q11424 non verrebbero recuperati perché non corrispondono al modello di costruzione.

La construzione wdt:P31/wdt:P279* sulla riga 6 è un’abbreviazione per dire che esiste una proprietà “istanza di” e quindi qualsiasi numero della proprietà “sottoclasse di” tra ?item e l’elemento “film” (Q11424).

Se rimuovi l’asterisco (*) sulla riga 6 della query precedente ed esegui nuovamente la query, vedrai che la query non recupera quegli elementi che sono essi stessi un’istanza di film (Q11424). L’asterisco (*) dopo l’elemento del percorso significa “zero o più di questo elemento”. Quindi il modello di corrispondenza
?item wdt:P31/wdt:P279* wd:Q11424
dovrebbe corrispondere a:
?item wdt:P31 wd:Q11424.
o
?item wdt:P31/wdt:P279 wd:Q11424.
o
?item wdt:P31/wdt:P279/wdt:P279 wd:Q11424.
o
?item wdt:P31/wdt:P279/wdt:P279/wdt:P279 wd:Q11424.
e così via.

Istanze e classi

Proprietà P31 – “istanza di”

La maggior parte delle proprietà di Wikidata descrivono le caratteristiche di un oggetto: l’oggetto per Guerre stellari Episodio IV: Una nuova speranza (Q17738) ha la proprietà direttore (P57), ha una certa durata (P2047), ha il costo di produzione (P2130), e così via. Ma spesso siamo interessati a cos’è una cosa. La maggior parte degli elementi di Wikidata ha almeno un’istruzione con la proprietà P31 – istanza di – che ci dice la classe di cui questo item è un particolare esempio e membro:

  • Guerre stellari Episodio IV: Una nuova speranza (Q17738) è un’istanza di un film (Q11424).
  • Guerre stellari (Q22092344) è un’istanza di una serie di film (Q24856).
  • Guerre stellari (Q462) è un’istanza di un franchise multimediale (Q196600).

Da notare che un articolo non è limitato ad un’istruzione P31. Per esempio, Guerre stellari: Episodio VIII – L’Ultimo Jedi (Q18486021) è un’istanza di un film (Q11424) e anche un’istanza di un film 3D (Q229390).

Si noti inoltre che le dichiarazioni P31 mirano a fare le distinzioni più generali e relegare altri dati ad altre proprietà:
George Lucas (Q38222) è un’istanza di umano (Q5).
Potremmo anche affermare che George Lucas è un esempio di regista (Q2526255), perché Lucas è ovviamente un esempio e un membro della classe dei registi. Tuttavia, la strategia di classificazione consiste nell’impostare l’istruzione “istanza di” sul valore più generale e includere informazioni più specifiche con altre proprietà. Ad esempio, che Lucas sia un regista cinematografico viene fornito con una dichiarazione utilizzando la proprietà dell’occupazione (P106).

Proprietà P279 – “sottoclasse di”

Quindi, mentre Q17738 (Star Wars: Episodio IV – Una nuova speranza) rappresenta un film particolare, ha un regista particolare (George Lucas), una durata specifica (121 minuti), un elenco di membri del cast (Carrie Fisher, Harrison Ford, … ), e così via – il film item (Q11424) è un concetto generale. I film possono avere registi, durate e membri del cast, ma il concetto generale di “film” non ha alcun regista, durata o membri del cast particolari.

I concetti generali ricevono la proprietà della sottoclasse (P279) e possono averne più di una. Per esempio:

  • Film (Q11424) è una sottoclasse di opere d’arte visive (Q4502142), ma anche di opere audiovisive (Q2431196).
  • Le serie di film (Q24856) sono una sottoclasse di serie di opere creative (Q7725310), opere d’arte (Q838948), opere audiovisive (Q2431196) e franchise multimediali (Q196600).

Il significato della distinzione istanza/sottoclasse

Supponiamo di volere un elenco di tutti i film che si svolgono nell’universo immaginario di Guerre stellari. Potremmo eseguire la seguente query:

La query restituisce solo 10 film. Chiaramente, nei risultati mancano alcuni film, come Star Wars: Episodio I – La minaccia fantasma (Q165713). Come mai? 

Perché alcuni articoli hanno “lungometraggio” (Q24869) come valore della loro dichiarazione P31. “Film” è una sottoclasse di “film” (Q11424), ma per quanto riguarda la query il pattern nella parte WHERE della query non corrisponde a quello dell’elemento, e quindi elementi che non sono un’istanza di ” film” non corrispondono e non vengono recuperati.

Potremmo usare il costrutto UNION per selezionare film che siano un’istanza di “film” o un’istanza di “lungometraggio”:

Questa query recupera più risultati, ma è ancora possibile che ci siano elementi rilevanti (cioè, film che si svolgono nell’universo Guerre stellari) che hanno una proprietà “istanza di” con un valore che è qualche altra sottoclasse di film – film d’azione, Film in 3D, film epico… Elencare tutte le diverse sottoclassi di film nelle dichiarazioni dell’UNION non è una strategia molto buona. Una soluzione più generale è mostrata nella successiva sezione.

Skip to content