首页 > 解决方案 > SPARQL 查询项共享不同的属性

问题描述

SPARQL 的新手,我正在尝试在 Wikidata 中查询与另一个项目共享至少 k 个不同值的所有项目。例如,以下示例试图列出与 COVID-19 (wd:Q84263196) 具有至少三种不同症状 (wdt:P780) 的所有疾病,并列出每种疾病及其所有共有症状。以下查询接近:

SELECT DISTINCT ?item ?itemLabel ?symptom1Label ?symptom2Label ?symptom3Label
WHERE 
{
 ?item wdt:P780 ?symptom1, ?symptom2, ?symptom3.
  wd:Q84263196 wdt:P780 ?symptom1, ?symptom2, ?symptom3.
  FILTER (?symptom1 != ?symptom2)
  FILTER (?symptom1 != ?symptom3)
  FILTER (?symptom2 != ?symptom3)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }
} 
LIMIT 50

但输出显示了三种(常见)症状的所有不同组合。例如,

Q2840 influenza headache    cough   fatigue
Q2840 influenza headache    cough   nasal congestion
...

而所需的输出应列出每种疾病/症状组合一次(以长形式或宽形式)。

标签: sparqlwikidata

解决方案


推荐阅读