'SPARQL select statements where value might not exists
I am trying to select data from a query but it will only work when all the data exists.
I am new to SPARQL and can't seem to get the optional parts of my query working.
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT ?label ?computingPlatform ?developer ?genre ?publisher ?releaseDate ?series
WHERE {
<http://dbpedia.org/resource/Elden_Ring> rdfs:label ?label .
<http://dbpedia.org/resource/Elden_Ring> dbo:computingPlatform ?computingPlatform .
<http://dbpedia.org/resource/Elden_Ring> dbo:developer ?developer .
<http://dbpedia.org/resource/Elden_Ring> dbo:genre ?genre .
<http://dbpedia.org/resource/Elden_Ring> dbo:publisher ?publisher .
<http://dbpedia.org/resource/Elden_Ring> dbo:releaseDate ?releaseDate .
<http://dbpedia.org/resource/Elden_Ring> dbo:series ?series .
}
So looking at the above if for example "developer" didn't exist on the resource the query would return no results.
Solution 1:[1]
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT ?label ?computingPlatform ?developer ?genre ?publisher ?releaseDate ?series
WHERE {
OPTIONAL {<http://dbpedia.org/resource/Elden_Ring> rdfs:label ?label .}
OPTIONAL {<http://dbpedia.org/resource/Elden_Ring> dbo:computingPlatform ?computingPlatform .}
OPTIONAL {<http://dbpedia.org/resource/Elden_Ring> dbo:developer ?developer .}
OPTIONAL {<http://dbpedia.org/resource/Elden_Ring> dbo:genre ?genre .}
OPTIONAL {<http://dbpedia.org/resource/Elden_Ring> dbo:publisher ?publisher .}
OPTIONAL {<http://dbpedia.org/resource/Elden_Ring> dbo:releaseDate ?releaseDate .}
OPTIONAL {<http://dbpedia.org/resource/Elden_Ring> dbo:series ?series .}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Stephen Wolfe |
