3

私は次のリストを取得しようとしています:

人物A、Aの出生地、人物B、Bの出生地

発祥の地は都市です。

人物Aと人物Bの関係は、人物Aが「影響を受けた」人物Bです。これまでの私のコードは次のとおりです。

SELECT ?person ?birthplace ?influenced ?birthplace2
WHERE {
?person a <http://dbpedia.org/ontology/Person> .
?person dbpedia2:placeOfBirth ?birthplace .
?person <http://dbpedia.org/ontology/influenced> ?influenced.
?person dbpedia2:placeOfBirth ?birthplace2 .
?influenced a <http://dbpedia.org/ontology/Person>.
?country rdf:type dbpedia-owl:Country .
FILTER (str(?birthplace2) = str(?country))
FILTER (str(?birthplace) = str(?country))
}

今は国をやっています。それだけがうまくいくからです。

現在、これは私に同じ出生地の2つの列を与えているだけです。影響を受けた人の出生地を示していません。

理想的には、次のように、各出生都市の緯度と経度も必要です。

人物A、Aの出生地、緯度、経度、人物B、Bの出生地、緯度、経度

しかし、これは質問するには多すぎるかもしれません。申し訳ありませんが、SPARQLは初めてです。

4

1 に答える 1

3

クエリには次のものがあります。

?person dbpedia2:placeOfBirth ?birthplace .
?person <http://dbpedia.org/ontology/influenced> ?influenced.
?person dbpedia2:placeOfBirth ?birthplace2 .

と の両方で?person生まれたということです。私はあなたが意味したと思います:?birthplace?birthplace2

?person dbpedia2:placeOfBirth ?birthplace .
?person <http://dbpedia.org/ontology/influenced> ?influenced.
?influenced dbpedia2:placeOfBirth ?birthplace2 .

各都市の緯度と経度の取得に関しては、現在 dbpedia がダウンしているため、都市のリソースを調べて、それらが地理座標にどのようにマッピングされているかを確認できません。ただし、dbpedia がバックアップされたら、SPARQL 記述クエリを実行できます。

describe <http://dbpedia.org/... rest of resource URI>

そして何が返ってくるか見てください。これにより、場所を引き出すためにどの述語を使用する必要があるかがわかります。optional緯度/経度情報が欠落している場合、SPARQL句で場所を選択するクエリ パターンの一部を配置しない限り、結果にその都市が表示されないことに注意してください。

アップデート

OK、DbPedia が復旧しました。これがあなたが望むものだと思います:

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

SELECT DISTINCT ?person1 ?birthplace1 ?person2 ?birthplace2 
                ?lat1 ?long1 ?lat2 ?long2
WHERE 
{
  ?person1 a dbpedia-owl:Person ;
           dbpedia-owl:birthPlace ?birthplace1 ;
           dbpedia-owl:influenced ?person2 .
  ?person2 dbpedia-owl:birthPlace ?birthplace2 .

  optional {
    ?birthplace1 geo:lat ?lat1 .
    ?birthplace1 geo:long ?long1 .

    ?birthplace2 geo:lat ?lat2 .
    ?birthplace2 geo:long ?long2 .
  }
}

更新 2

クエリはdbpedia/iSparqlで機能します(ここに perma -linkがあります):

iSparql の結果

アップデート 3

都市のみに制限:

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

SELECT DISTINCT ?person1 ?birthplace1 ?person2 ?birthplace2 
                ?lat1 ?long1 ?lat2 ?long2
WHERE 
{
  ?person1 a dbpedia-owl:Person ;
           dbpedia-owl:birthPlace ?birthplace1 ;
           dbpedia-owl:influenced ?person2 .
  ?person2 dbpedia-owl:birthPlace ?birthplace2 .

  ?birthplace1 a dbpedia-owl:City .
  ?birthplace2 a dbpedia-owl:City .

  optional {
    ?birthplace1 geo:lat ?lat1 .
    ?birthplace1 geo:long ?long1 .

    ?birthplace2 geo:lat ?lat2 .
    ?birthplace2 geo:long ?long2 .
  }
}
于 2012-07-06T20:32:58.560 に答える