0

dbpediaからデータを取得したい。エンティティのURLがあり、ローカリゼーションに関する情報を取得したい。今、私はこのようにクエリを呼び出します:

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX dbo: <http://dbpedia.org/ontology/>

SELECT DISTINCT * WHERE 
{
  <{0}> rdfs:label ?label . 
    OPTIONAL {
     <{0}> geo:lat ?lat ;
     geo:long ?long .
    } .
    OPTIONAL {
     <{0}> dbo:Country ?dboCountry 
    } . 
    OPTIONAL {
     <{0}> dbpedia-owl:country ?dbpediaContry .
     ?dbpediaContry dbpprop:cctld ?ccTLD
    }. 
    OPTIONAL {
     <{0}> dbpprop:country  ?dbpropContry
    }
    FILTER ( lang(?label) = "en" )
}

URLごとに({0}をurlに置き換えます)。しかし、私はそれを最適化し、1つのクエリでより多くのエンティティの結果を取得したいと思います。また、各行にURLを設定しないことは可能ですか?

よろしくPiotr

4

1 に答える 1

1

うーん、私はすでに両方の質問に対する答えを見つけたようです。これを知っていますか(http://en.wikipedia.org/wiki/Rubber_duck_debugging)解決策は次のとおりです。

 SELECT DISTINCT *

        WHERE {
            ?uri rdfs:label ?label .
            OPTIONAL { ?uri geo:lat ?lat .
                       ?uri geo:long ?long} .
  
        FILTER (?uri IN ({0}, {1}, ...)  )
        }

多分それは他の誰かのために役立つでしょう?または多分誰かがより良い解決策を知っていますか?

于 2012-09-18T20:55:08.663 に答える