SPARQLクエリを使用してDBpediaリソース(Person)に関する情報を取得しようとしています。私はリソースURIをパラメータ化して、同じクエリを使用して任意のPersonに関するデータを取得したいと考えています。いくつかの属性は特定のリソースに対して存在しないかもしれないので、私はOPTIONALステートメントを利用しています。ここに私のクエリは次のとおりです。SPARQL OPTIONALを正しく使用して、存在する可能性のあるリソースの属性を取得する方法はありますか?
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT DISTINCT ?label ?abstract ?placeOfBirth
?birthPlace ?birthDate ?deathDate ?page ?thumbnail
WHERE {
<http://dbpedia.org/resource/Neil_Simon> rdfs:label ?label ;
dbo:abstract ?abstract ;
foaf:page ?page .
OPTIONAL {
<http://dbpedia.org/resource/Neil_Simon> dbpprop:placeOfBirth ?placeOfBirth ;
dbpprop:birthPlace ?birthPlace ;
dbo:birthDate ?birthDate ;
dbo:deathdate ?deathDate ;
dbo:thumbnail ?thumbnail .
}
FILTER (LANG(?label) = 'en')
FILTER (LANG(?abstract) = 'en')
}
LIMIT 1
私は他の人のために同じクエリを使用している場合、彼らはそれらの性質を持っていないかもしれないので、私は、オプションでラベル、抽象的でページ以外のすべてを残してきました。問題は、これらのオプションの属性のいずれも結果に表示されていないことです。 Neil Simonのケースでは、birthDate、birthPlace、およびサムネイルの値がhttp://dbpedia.org/resource/Neil_Simonであることがわかります。ただし、クエリを実行すると、これらの値が表示されません。DBpedia SPARQL query。私は間違って何をしていますか、オプションでそれらのプロパティをオプションで取得できますか?
もちろん、それは非常に意味があります!私はOPTIONALコンストラクトをそれぞれのプロパティのために別々のものに分割し、完全に動作します。 –
私たちに作業コードを教えてください –