我正在尝试查询拥有 Linkedin 标识符、ISINS、LEI 或英文网站的企业。如果可能的话,我只想要每个公司一行数据。
我正在努力解决最后一部分,我想我成功地确定了我只想填充英文网站,但实际的 URL 并未填充在结果中。
SELECT DISTINCT ?item ?itemLabel ?linkedin ?isin ?lei ?website WHERE {
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
{
SELECT DISTINCT ?item ?linkedin ?isin ?lei ?website WHERE {
?item wdt:P31 wd:Q4830453.
{
?item wdt:P4264 ?linkedin.}
UNION
{
?item wdt:P946 ?isin.}
UNION
{
?item wdt:P1278 ?lei.}
UNION
{
?item wdt:P856 ?statement0.
?statement0 p:P856 [ps:P856 ?website ; pq:P407 wd:Q1860] }
}
LIMIT 100
}
}
其他数据正在填充,但网站没有。我还获得了每个公司的多条记录。
对于与网站有关的内容,请注意
是错的。只需使用
?item p:P856 [ps:P856 ?website ; pq:P407 wd:Q1860] .
. 查看Wikidata:SPARQL 教程§限定符以了解如何查询限定符。您可以通过以下方式更正您的查询:首先仅选择
?item
具有至少一个此类语句 (usingUNION
),然后使用 usingOPTIONAL
获取所有且仅实际为每个 指定的语句?item
。结果查询将类似于:
注意:
GROUP_CONCAT
。LIMIT 100
您可能会得到不完整的结果(例如,同一家公司可能同时拥有 P4264 和 P946,但可能只有第一个出现在前 100 个结果中)。为了解决此问题,您应该移出该LIMIT
命令。