4

この SPARQL リクエストは、ウィキデータで「ベルリン」と呼ばれるすべての都市を検索します。

SELECT DISTINCT ?item ?itemLabel ?itemDescription WHERE {

  ?type (a | wdt:P279) wd:Q515. # Sub-type of city
  ?item wdt:P31 ?type.

  ?item rdfs:label "Berlin"@en.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}

問題:ゼロの結果が返されます。

一方、以下のリクエストは Q64 (ドイツの首都と都市国家) を正しく検出しますが、ベルリンと呼ばれる他の多くのものも返すため、都市をフィルター処理したいと思います(その後、将来のフェーズでこれらの都市を人口で並べ替えます)。 、しかしそれはこの質問の範囲外です)

SELECT DISTINCT ?item ?itemLabel ?itemDescription WHERE {
  ?item rdfs:label "Berlin"@en.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}

注:このクエリの結果に示されているように、 cityのサブクラスのインスタンス (ベルリンは city のサブクラスである大都市) を取得するための私のコードは正しく機能しているようです。

4

3 に答える 3

4

ウィキデータのバグでした。

ウィキデータのJura1によると、これは誰かの「優先ランク」の実験によって引き起こされたウィキデータのバグでした。

https://www.wikidata.org/wiki/Wikidata:Project_chat/Archive/2016/09#P31_inconsistencyでの議論

バグはたった今修正されました。

于 2016-09-28T07:01:51.633 に答える
1

データセットに含まれるデータに対してのみクエリを実行できます。

クエリの代替を試す場合

SELECT DISTINCT ?item ?itemLabel ?itemDescription ?type1 ?type2 WHERE {
  ?item rdfs:label "Berlin"@en.
  optional{?item rdf:type ?type1 }
  optional{?item wdt:P279 ?type2 }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}

によって接続されておらず、型も返されrdf:typeませんwdt:P279

首都・都市国家ベルリンの実体を見てみると、「のインスタンス」という情報があるのですが、このプロパティは のはずhttps://www.wikidata.org/wiki/Property:P31です。そして、それらのどれもにリンクしていませwd:Q515ん。どこからこのアイデアを得たのだろうか.

しかし、正直なところ、私はウィキデータについてあまり知りません。私には、なぜ nordf:typeが使用されるのか明確ではありませんが、RDF データセットの一般的なパターンは、

?s rdf:type/rdfs:subClassOf* SUPER_CLASS .

利用可能な情報があると仮定した場合rdf:type

于 2016-09-27T11:05:14.887 に答える