基于wikidata的sparql查询

基于wikidata的sparql查询,sparql,wikidata,Sparql,Wikidata,我对sparql非常陌生,我尝试在wikidata上运行3个查询: 非画家和画家学生的人 非画家和学术后代或画家子女的人(注:一个人P的学术后代是P的学生,或P的学生,或……) 是自己的学术后代的人 第一次我被卡住了,我试着: SELECT DISTINCT ?human ?humanLabel WHERE { ?human wdt:P31 wd:Q5. SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_L

我对sparql非常陌生,我尝试在wikidata上运行3个查询:

  • 非画家和画家学生的人
  • 非画家和学术后代或画家子女的人(注:一个人
    P
    的学术后代是
    P
    的学生,或
    P
    的学生,或……)
  • 是自己的学术后代的人
  • 第一次我被卡住了,我试着:

    SELECT DISTINCT ?human ?humanLabel WHERE {
      ?human wdt:P31 wd:Q5.
      SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
      ?human wikibase:statements ?statementcount.
      ?human wdt:P106 ?profession.
      FILTER(?profession != wd:Q1028181)
      FILTER(?statementcount > 50 )
      ?human wdt:P1066 ?teacher.
      ?teacher wdt:P106 ?tprofession.
      FILTER(?tprofession = wd:Q1028181)
      OPTIONAL {  }
    
    }LIMIT 50
    

    但我认为在这一行:
    FILTER(?profession!=wd:Q1028181)
    ,不是针对painter检查所有职业,而是针对第一个职业,因此我得到了输出中有多个职业的画家,因为只针对painter检查第一个职业,但我希望所有这些职业都针对painter检查

    这是正确的。信息缺失是通过
    过滤器不存在{?人类wdt:P106 wd:Q1028181}
    这与什么有关?这些与我们有什么关系?