SPARQLステートメントでOPTIONAL句を使用する際に問題が発生しました。私がこのようにdbpediaを調べているとき:
CONSTRUCT { ?guitarist rdfs:label ?name . ?guitarist rdfs:comment ?desc . ?guitarist dbpprop:placeOfBirth ?placebirth }
WHERE {
?guitarist dbpprop:wikiPageUsesTemplate <http://dbpedia.org/resource/Template:Infobox_musical_artist> .
?guitarist rdfs:label ?name .
?guitarist rdfs:comment ?desc .
?guitarist dbpprop:placeOfBirth ?placebirth .
FILTER ( lang(?name) = "en" && lang(?desc) = "en" )
}
ロジャーウォーターズの出生地とその他のデータが返されます。しかし、これに目を向けると、すべてのRoger_Watersレコードが欠落しています。
CONSTRUCT { ?guitarist rdfs:label ?name . ?guitarist rdfs:comment ?desc . ?guitarist dbpprop:placeOfBirth ?placebirth }
WHERE {
?guitarist dbpprop:wikiPageUsesTemplate <http://dbpedia.org/resource/Template:Infobox_musical_artist> .
?guitarist rdfs:label ?name .
?guitarist rdfs:comment ?desc .
OPTIONAL { ?guitarist dbpprop:placeOfBirth ?placebirth }
FILTER ( lang(?name) = "en" && lang(?desc) = "en" )
}
私が間違っていること-OPTIONALを適用した後、完全なレコードが欠落していないと思います...