我有三个类别,患者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查询获得此结果?
答案 0 :(得分:5)
您应该将两个条件放在where子句中,例如:
SELECT DISTINCT *
WHERE {
?s a ioi:PseudoPatientID.
?s ?p ns2:DIAB.
?s ?p ns:ASTHMA.
}
假设谓词?p
在两种情况下都相同
如果谓词不相同,你可以:
?p
替换为其他内容,或