У меня есть три класса: идентификатор пациента, астма и диабет. Поэтому мне нужно получить все пациенты, у которых есть как астма, так и диабет.SPARQL запрос, чтобы получить всех пациентов, у которых есть как астма, так и диабет
Я попытался ниже упомянутый запрос,
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 }
}
Но этот запрос дает мне пациентов, которые больны диабетом и пациентов, у которых астма. Это не дает мне общих пациентов, у которых есть как астма, так и диабет.
Я вроде хочу boolean И условия здесь, где я получаю тех, у кого есть диабет и астма.
Как получить этот результат через запрос SPARQL?
Почему здесь переменная?? P? Похоже, было бы более разумно, если бы это было определенное свойство (например, 'hasCondition'). Можете ли вы показать образец своих данных? Мы можем попытаться «исправить» этот запрос, но, не увидев хотя бы образец ваших данных, нет гарантии, что исправление будет правильным. Более того, если астма и диабет являются _классами (а не отдельными лицами), более вероятно, что пациент будет связан с их экземпляром, а не с самим классом. –
Основные тройные шаблоны _is_ и «AND». Если вы хотите что-то, что имеет оба условия, вы бы сделали что-то вроде '? X: hasCondition: Asthma. ? x: hasConditions: Diabetes .', или (даже короче, но эквивалентно) '? x: hasCondition: астма, диабет. Однако вы сказали, что астма и диабет - это _классы, поэтому пациент может быть связан с случаями таких , в котором вы бы использовали '? x: hasCondition/rdf: type: Asthma,: Diabetes .' –