Wikidata SPARQL-获取公司实体及其总部的位置

时间:2019-06-11 08:45:24

标签: sparql rdf wikidata wikidata-api

我在提取公司总部的位置属性时遇到了麻烦。

我的query:查找所有公司或子类,并返回一些基本属性,例如ISIN和URL,以及总部位置。

我尝试使用this example扩展查询的“总部”部分,以返回位置信息,例如城市,国家和coordinate latitude and longitude。但是,我一直无法通过这些值或标签。

谢谢

SELECT
  ?item ?itemLabel ?web ?isin ?hq ?hqloc ?inception

# valueLabel is only useful for properties with item-datatype
WHERE 
{
  ?item p:P31/ps:P31/wdt:P279* wd:Q783794.

  OPTIONAL{?item wdt:P856 ?web.} # get item
  OPTIONAL{?item wdt:P946 ?isin.} # get item
  OPTIONAL{?item wdt:P571 ?inception.} # get item
  OPTIONAL{?item wdt:P159 ?hq.}  

  OPTIONAL{?item p:P159 ?hqItem. # get property
           ?hqItem ps:P159 wd:Q515. # get property-statement wikidata-entity
           ?hqItem pq:P17 ?hqloc. # get country of city
           }

  ?article schema:about ?item .
  ?article schema:inLanguage "en" .
  ?article schema:isPartOf <https://en.wikipedia.org/>. 
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }    
}
LIMIT 10

1 个答案:

答案 0 :(得分:1)

一个更简化的查询,用于选择您提到的某些值:

SELECT
?company ?companyLabel ?isin ?web ?country ?countryLabel ?inception

WHERE 
{
     ?article schema:inLanguage "en" .
     ?article schema:isPartOf <https://en.wikipedia.org/>. 
     ?article schema:about ?company . 

     ?company p:P31/ps:P31/wdt:P279* wd:Q783794.

     ?company wdt:P946 ?isin. 
     OPTIONAL {?company wdt:P856 ?web.}
     OPTIONAL {?company wdt:P571 ?inception.}
     OPTIONAL {?company wdt:P17 ?country.}

     SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }    
} LIMIT 10

我更改了:

  • 更改了一些标签,使其更明确(例如:“?item”->“?company”)
  • 使用P17直接选择国家/地区
  • 我删除了ISIN上的OPTIONAL,以表明存在一些值。您没有得到结果,因为似乎Wikidata上的许多公司实例都缺少该信息。

从这里开始,选择其他值应该很容易。