SPARQL 查询以获取所有患有哮喘和糖尿病的患者

标签 sparql

我有三个类别:患者 ID、哮喘和糖尿病。因此,我需要获取所有患有哮喘和糖尿病的患者 ID。

我尝试了下面提到的查询,

 PREFIX ioi:<http://io-informatics.com/rdf/>
 PREFIX ns:<http://io-informatics.com/rdf/Asthma#>
 PREFIX ns2:<http://io-informatics.com/rdf/Diabetes#>


         SELECT DISTINCT * 
                WHERE {
                ?s a ioi:PseudoPatientID
                {   ?s ?p  ns2:DIAB   }
                  UNION
                {    ?s ?p ns:ASTHMA   }

           } 

但是这个查询给了我患有糖尿病的患者和患有哮喘的患者。它没有给我提供同时患有哮喘和糖尿病的常见患者。

我想要 bool 值 AND 条件,在这里我可以得到那些患有糖尿病和哮喘的人。

如何通过 SPARQL 查询获得此结果?

最佳答案

您应该将两个条件放在 where 子句中,例如:

SELECT DISTINCT * 
    WHERE {
       ?s a ioi:PseudoPatientID.
       ?s ?p ns2:DIAB.
       ?s ?p ns:ASTHMA.
    }

假设谓词?p在两种情况下是相同的。
如果谓词不同,您可以:

  • 将第二个 ?p 替换为其他内容,或者
  • 指定谓词。

关于SPARQL 查询以获取所有患有哮喘和糖尿病的患者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21907555/

相关文章:

aggregate - Sparql group_concat - 停止排序

sparql - Amazon Neptune 中默认使用匿名身份验证吗?

Sparql CONSTRUCT 与 DISTINCT

sparql - RDF - 一个主题属性的多个对象

java - 如何通过使用 jena 给出属性名称来获取 dbpedia 中属性的 namespace ?

sparql - 如何获取所有不具有给定属性的实体?

sparql - DBpedia SPARQL Unicode 查询

java - 在联合查询上构建 RDF 图?

optimization - 具有多个聚合的 SPARQL 查询超出内存限制

sparql - Sparql 的极限