Wikidata + SPARQL:获取在证券交易所上市的所有公司的股票报价

时间:2019-02-05 13:58:18

标签: sparql wikidata

我想编写一个SPARQL查询,该查询为我提供所有在证券交易所上市的公司实例的wikidata_id,标签,证券交易所和股票代码。

到目前为止,我的查询看起来像

SELECT DISTINCT ?id ?idLabel ?exchangeLabel ?tickerLabel
WHERE {
  ?id wdt:P31/wdt:P279* wd:Q783794 ;
      wdt:P414 ?exchange ;
      p:P414 [pq:P249 ?ticker].
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

虽然这会产生几乎似乎正确的结果,但是当公司在多个交易所上市时会出现问题-这是结果中问题的一个示例: enter image description here 请注意,在上面的方法中,瑞士信贷被列出了三次,并带有三个不同的代码。虽然瑞士信贷已在三个证券交易所上市是正确的,但问题是在这三个案例中纽约证券交易所都被列为交易所。更糟糕的是,瑞士信贷实际上有九行,将每个上市与每个证券交易所相关联。正确的列表信息将仅包含三个列表,并在Credit Suisse's wikidata page上提供: enter image description here

我在做什么错?如何获得与每个股票行情相关联的正确交易所?

1 个答案:

答案 0 :(得分:1)

感谢@StansilavKralin(在对我的问题的评论中),我可以提供答案:

SELECT DISTINCT ?id ?idLabel ?exchangeLabel ?tickerLabel
WHERE {
  ?id wdt:P31/wdt:P279* wd:Q783794 ; p:P414 [pq:P249 ?ticker; ps:P414 ?exchange ] .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}