私は SPARQL の初心者で、このエンドポイントhttp://spcdata.digitpa.gov.it:8899/sparqlに取り組んでいます。DBpedia グラフからデータを結合したいと考えています。プロパティowl:sameAs
を使用して DBpedia リソースを参照しています。
値が定義されpa:Comune
ているクラスに該当するすべての都市の名前と人口の値を取得したいと考えています。dbp:populationTotal
これが私のクエリです:
PREFIX pa: <http://spcdata.digitpa.gov.it/>
PREFIX rdf: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbp: <http://dbpedia.org/ontology/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT ?label ?populationTotal WHERE {
?s a pa:Comune .
?s rdf:label ?label .
?s owl:sameAs ?sameAs .
?sameAs dbp:populationTotal ?populationTotal .
}
ORDER BY ?label
残念ながら、結果は正しいものの、非常に小さなサブセットしか得られません。私がチェックしたところ、 DBpedia に property の値を参照している自治体が他にもたくさんありますdbp:populationTotal
。すべての異なるスポンジ値で試しましたが、結果は同じです。問題は、別のグラフからデータを取得していることにあると思いますが、どうすればよいかわかりません。
編集: Ian Dickinson の提案の後にこのクエリを試してみましたが、うまくいきました!
PREFIX pa: <http://spcdata.digitpa.gov.it/>
PREFIX rdf: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbp: <http://dbpedia.org/ontology/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT DISTINCT ?label ?sameAs ?populationTotal WHERE {
?s a pa:Comune .
?s rdf:label ?label .
?s owl:sameAs ?sameAs .
FILTER (REGEX(STR(?sameAs), "dbpedia", "i")).
SERVICE <http://dbpedia.org/sparql>
{
?sameAs dbp:populationTotal ?populationTotal .
}
} LIMIT 1700
残念ながら、イタリアには 8000 以上の市町村があるため、結果を制限する必要がありました (したがって、タイムアウトなしで取得できるヒット数が上限の 1700 になります)。