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

时间:2014-02-20 12:16:32

标签: sparql

我有三个类别,患者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   }

           } 

但是这个问题给了我患有糖尿病的患者和患有哮喘的患者。它不会给我同时患有哮喘和糖尿病的患者。

我有点想要布尔和条件,我得到那些患有糖尿病和哮喘的人。

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

1 个答案:

答案 0 :(得分:5)

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

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

假设谓词?p在两种情况下都相同 如果谓词不相同,你可以:

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