【问题标题】:How to choose a different query based on the subject of an object in SPARQL?如何根据 SPARQL 中对象的主题选择不同的查询?
【发布时间】:2016-12-21 14:14:57
【问题描述】:

假设我有以下数据

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

subject = Amy
predicate = gender
object = female

subject = Brian
predicate = gender
object = male

现在我想找到大卫认识的所有人,但会根据他们的性别执行不同的查询,所以伪代码看起来像这样:

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 语句只能打印出信息,不能用于决定要执行的查询。

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

【问题讨论】:

    标签: sparql


    【解决方案1】:

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

    select ?something where {
       :David :knows ?person
    
       optional {
         ?person :gender "female" .
         #-- more query
       }
       optional {
         ?person :gender "male" .
         #-- more query
       }
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-25
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 2011-10-31
      相关资源
      最近更新 更多