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.

Operatore UNION

Corrispondenza del modello con una relazione OR

Nella sezione precedente abbiamo visto che se ci sono due condizioni di corrispondenza dei modelli, hanno una relazione AND: la query restituirà solo gli elementi che corrispondono a entrambi i modelli. Se vogliamo avere una relazione OR tra le condizioni, utilizziamo l’operatore UNION. La seguente query recupera gli elementi che fanno parte della serie di film di Star Wars oppure della serie di film di Star Trek.

Recupero di un valore di istruzione

Query che recuperano un valore di istruzione

Come mostrato nell’introduzione, Wikidata memorizza le informazioni sotto forma di dichiarazioni che hanno una struttura Elemento-Proprietà-Valore.

Nel nostro primo esempio, la nostra query restituisce elementi Wikidata che corrispondono al nostro modello di query: corrispondono a una specifica combinazione di Proprietà e Valore, ovvero hanno una proprietà P179 (parte di una serie) con un valore di Q22092344 (serie di film di Guerre stellari). In altre parole, la variabile con il nome “item” raccoglie quegli elementi Wikidata che hanno un’istruzione che corrisponde al modello:

?oggetto – ha proprietà:parte di una serie – con valore:Guerre stellari (serie di film)

In questo caso, viene recuperata la parte dell’elemento di una dichiarazione di corrispondenza. Ma le query non devono necessariamente restituire la prima parte (Elemento) delle istruzioni.

Nella seguente query, la variabile ?actor raccoglie i valori della proprietà membro del cast (P161) dell’elemento Guerre stellari Episodio IV: Una nuova speranza (Q17738). Vale a dire, la variabile raccoglie la terza parte (l’oggetto) delle affermazioni:

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.

Visualizzazione Image Grid

Image Grid View

WDQS può visualizzare i risultati delle nostre query in diversi formati. Finora abbiamo sempre visto i risultati in formato tabella. Riprendiamo l’esercizio precedente:

Dopo aver eseguito la query, scorrere fino ai risultati. Sopra la tabella, fai clic sulla freccia accanto all’occhio. Apparirà un menu a discesa. Scegli “Image grid” dal menu e WDQS visualizzerà il logo di ogni elemento, con i risultati di ogni elemento sotto.

Un altro modo per visualizzare i risultati nella visualizzazione Image grid consiste nello specificarlo nella query stessa. Il codice sulla riga 1, dopo il segno dell’hashtag, dice alla query che i risultati della query devono essere mostrati non come una tabella, ma come una griglia con immagini.

Non è necessario ricordare il codice esatto per la griglia dell’immagine: grazie alla funzione di autocompletamento di WDQS, una volta digitato un hashtag nella finestra della query, un menu a tendina suggerirà le diverse opzioni di visualizzazione.

La clausola OPTIONAL

Valori mancanti e clausola OPTIONAL

Come abbiamo visto, quando c’è più di un pattern da abbinare nella clausola WHERE, c’è un AND implicito tra le istruzioni, in modo tale che solo i pattern che corrispondono a tutte le istruzioni verranno restituiti dalla query. Ad esempio, nell’ultimo esercizio, c’erano tre modelli di corrispondenza:

#Film della serie Guerre stellari

SELECT ?item ?itemLabel ?directorLabel ?cost
WHERE 
{ 
  ?item wdt:P179 wd:Q22092344.             # l'elemento (item) fa parte della serie Star Wars (serie di film)
  ?item wdt:P57 ?director.                 # il valore della proprietà regista dell'item viene raccolto dalla variabile regista
  OPTIONAL {?item wdt:P2130 ?cost.}        # il valore della proprietà costo di produzione dell'item viene raccolto dalla variabile costo
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }
}

Le affermazioni alle righe 6, 7 e 8 hanno una relazione AND tra di loro. Pertanto, un articolo sarà considerato una corrispondenza solo se ha una proprietà P179 (parte di una serie) con un valore di Q22092344 (serie di film Guerre stellari), nonché una proprietà P57 (regista) e una proprietà P2130 (costo) . Se un elemento non corrisponde a una di queste affermazioni (ad esempio, non ha il costo della proprietà), viene ignorato dalla query.

SPARQL è un linguaggio di query di corrispondenza dei modelli. Le query SPARQL restituiranno dati solo quando il pattern nella clausola WHERE corrisponde esattamente al pattern nei dati che stai interrogando. Ma molti set di dati hanno valori mancanti e i dati sono una corrispondenza per la query solo se sono presenti dati validi in ogni parte dell’istruzione dichiarata all’interno di WHERE. Ciò significa che SPARQL non restituirà un elemento a cui manca il nome della proprietà o il valore richiesto in WHERE.

La parola chiave OPTIONAL all’interno della clausola WHERE indica i modelli facoltativi che vorresti abbinare nei dati. OPTIONAL consente di cercare dati che possono essere o meno presenti.

Esegui nuovamente la query con costo come variabile facoltativa.

Un altro esercizio

| Esercizio: Mostra regista e costo (P2130) di ogni film della serie Star Wars

mostra soluzione

o utilizzando una sintassi diversa (vedi la spiegazione qui):

Una precedente query che ha recuperato ogni film di Star Wars e il suo regista ha restituito 9 risultati. Questa query corrente restituisce solo 8 risultati. Come mai?

Perché alcuni articoli non hanno un costo (P2130) come proprietà e vengono quindi ignorati dalla query.

Esercizio: più di una variabile

| Esercizio: scrivi una query per mostrare il regista e sceneggiatore (P58) di ogni film della serie di film di Star Wars

mostra soluzione

oppure, utilizzando una sintassi diversa (vedi spiegazione qui):

La precedente query che elencava il regista di ogni film di Guerre stellari ha restituito 9 risultati. Questa query restituisce 16 risultati. Come mai?

Perché ci sono più sceneggiatori per alcuni dei film. Quindi otteniamo una riga per ogni sceneggiatore.

Skip to content