You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SPARQL从Wikidata获取企业的可读行业与国家名称?

修改SPARQL查询以显示行业、国家的可读名称

原查询返回的行业(?industry)和国家(?country)字段是Wikidata的实体链接(如wd:Q30),需要通过获取实体的英文标签来显示可读名称,同时补充推特用户名的获取逻辑,以下是修改后的查询:

SELECT ?item ?name ?twSn ?twId ?industryLabel ?countryLabel
WHERE {
  ?item wdt:P31 wd:Q4830453.
  OPTIONAL { ?item rdfs:label ?name FILTER (lang(?name) = "en") . }
  # 获取推特用户名(ps:P2002)和用户ID(pq:P6552)
  OPTIONAL { 
    ?item p:P2002 ?twitterStmt . 
    ?twitterStmt ps:P2002 ?twSn .
    ?twitterStmt pq:P6552 ?twId . 
  }
  OPTIONAL { ?item wdt:P452 ?industry . }
  OPTIONAL { ?item wdt:P17 ?country . }
  # 自动为实体生成英文标签
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
} 
LIMIT 100

关键修改说明:

  • 明确返回字段:将SELECT *改为指定字段列表,确保结果列完全匹配需求格式。
  • 补全推特数据:添加?twitterStmt ps:P2002 ?twSn,从推特声明中提取实际用户名(原查询仅获取了用户ID)。
  • 自动获取标签:使用wikibase:label服务,自动为行业、国家实体生成对应英文标签(字段名后缀Label),无需手动编写标签过滤逻辑,简化查询。

手动获取标签的替代方案(不使用服务):

若偏好手动控制标签获取逻辑,可替换为以下写法:

SELECT ?item ?name ?twSn ?twId ?industryLabel ?countryLabel
WHERE {
  ?item wdt:P31 wd:Q4830453.
  OPTIONAL { ?item rdfs:label ?name FILTER (lang(?name) = "en") . }
  OPTIONAL { 
    ?item p:P2002 ?twitterStmt . 
    ?twitterStmt ps:P2002 ?twSn .
    ?twitterStmt pq:P6552 ?twId . 
  }
  OPTIONAL { 
    ?item wdt:P452 ?industry . 
    ?industry rdfs:label ?industryLabel FILTER (lang(?industryLabel) = "en") .
  }
  OPTIONAL { 
    ?item wdt:P17 ?country . 
    ?country rdfs:label ?countryLabel FILTER (lang(?countryLabel) = "en") .
  }
} 
LIMIT 100

内容的提问来源于stack exchange,提问作者Carbo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:45:33