我想要编写一个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" }
}虽然这样做产生的结果看起来几乎是正确的,但当公司在多个交易所上市时,存在一个问题--以下是结果中的一个问题:

请注意,在上面,瑞信被列出了三次,有三种不同的代码。瑞士信贷( Credit )在三家证券交易所上市是正确的,但问题是,在这三种情况下,纽交所都被列为交易所。更糟糕的是,瑞士信贷( Credit )实际上有九行股票,将每一家上市公司与每一家证券交易所联系在一起。正确的列表信息将只包含三个清单,并在瑞士信贷的维基数据页面上提供:

我做错了什么?如何才能使正确的交换与每个代码行相关联?
发布于 2019-02-05 14:48:35
感谢@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" }
}https://stackoverflow.com/questions/54536076
复制相似问题