Retrieving data linked to values

Retrieving data linked to values

So far the values we retrieved in our queries were directly related to the item we were selecting. Suppose we wanted to show the birthplace of the director of each of the Star Wars films.

#Star Wars films

SELECT ?item  ?itemLabel ?directorLabel ?pobLabel
WHERE 
{ 
  ?item wdt:P179 wd:Q22092344. # item is part of the series Star Wars (film series)
  ?item wdt:P57 ?director.     # item’s director property’s value is collected by the director variable
  ?director wdt:P19 ?pob.      # the place of birth of the director is collected in the ?pob variable
 SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }
}

The query selects items that are part of the star wars series, and retrieves each film’s director, and the director’s P19 (place of birth) property and its value.

Importantly, P19 and its value are linked to the director – not to the film! We are retrieving the value (the place of birth) of a property (P19) of a value (the director) of a property (P57) of the item that we are selecting.

Here is a graph view of the data for the film Star Wars Episode V: The Empire Strikes Back (Q181795):

A graph view showing Q119348 (Irving Kershner) as both the object (Value) of the statement regarding the director property of Q181795, and the subject (Item) of the statement regarding the place of birth property.

Item Q181795 is the subject (shown in blue) in the Item-Property-Value statement:
Q181795 – P57 (director) – Q119348 (Irvin Kershner).
Item Q119348 is the value or object (shown in green) of the director property (shown in black).

Item Q119348 is also the subject of the statement:
Q119348 – P19 (place of birth) – Q1345 (Philadelphia)

Now run the query:

# A little bit of syntax

A shorter way of formulating the above query is using square brackets to join the two match patterns on lines 7 and 8. So instead of:
?item wdt:P57 ?director. 
?director wdt:P19 ?dob.

We write:
?item wdt:P57 [wdt:P19 ?dob]. 

What has changed in the results? Why?

This syntax omits the ?director variable, so ?directorLabel is empty.

Exercise

| Exercise: Which films were filmed on location in New Zealand (Q664)?

Hint: Make sure that your query retrieves films for which filming location (P915) is in the administrative territorial entity (P131) of New Zealand.

show solution

The following solution shows the filming locations:

Or, using abbreviated syntax (filming locations not listed):

Note that duplicates are removed from the results using the DISTINCT modifier.

Skip to content