如何根据SPARQL中对象的主题选择不同的查询?

时间:2016-12-21 14:14:58

标签: sparql

我们说我有以下数据

subject = david
predicate = knows
object1 = Amy
object2 = Brian

subject = Amy
predicate = gender
object = female

subject = Brian
predicate = gender
object = male

现在我想找到david知道的所有人,但是根据他们的性别执行不同的查询,所以伪代码看起来像这样:

SELECT ?something
WHERE{

david rdf:knows ?person

if{?person rdf:gender "female"} 
{ do this query}
else if {?person rdf:gender "male"}
{do this query} 
}

从我所见过的SPARQL if语句只能打印出信息,不能用来决定执行什么查询。

如果有人知道如何实现上述目标,我将非常感激。

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以执行以下操作:

select ?something where {
   :David :knows ?person

   optional {
     ?person :gender "female" .
     #-- more query
   }
   optional {
     ?person :gender "male" .
     #-- more query
   }
}

两个可选部分都是可选的,只有具有匹配性别的部分才能匹配,所以它本质上是一个条件查询。请注意,如果您有:person :gender "male", "female"之类的数据,并且如果您没有提供性别,那么您将同时执行这两项操作。