维基数据&x2B;SPARQL:获取在证券交易所上市的所有公司的股票行情

维基数据&x2B;SPARQL:获取在证券交易所上市的所有公司的股票行情,sparql,wikidata,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 wi

我想编写一个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" }
}
虽然这产生的结果看起来几乎是正确的,但当公司在多个交易所上市时存在一个问题——下面是一个结果中的问题示例: 请注意,在上文中,瑞士信贷是如何以三种不同的股票代码三次上市的。虽然瑞士信贷在三家证券交易所上市是正确的,但问题是纽约证券交易所在这三家交易所中都是上市的。更糟糕的是,瑞士信贷实际上有九行,将每家上市公司与每家证券交易所联系在一起。正确的列表信息将只包含三个列表,并提供在:


我做错了什么?我如何才能获得与每个股票代码行关联的正确交易所?

感谢@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" }
}

?id wdt:P31/wdt:P279*wd:Q783794;p:P414[pq:P249?ticker;ps:P414?exchange]。
您当前的查询为
Q372657
返回9个结果,而不是3个。好的,他比我们快了2个。除了查询模式之外,文本形式的答案是,你必须引用同一个语句并从中获取值,否则你只会得到你得到的,组合hanks@StanislavKralin如果你把它写成一个答案,我会接受它——如果你不接受,然后我会把它写下来作为一个答案,并给你的评论打分。@conradlee好的,请自己写答案!