2016-12-21 21 views
1

比方說,我有以下數據如何根據SPARQL中的對象的主題選擇不同的查詢?

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中,如果語句只能打印出信息,並且不能用於決定執行什麼查詢。

如果有人知道如何實現上述目標,我將不勝感激。

回答

1

在這種情況下,你可以這樣做:

select ?something where { 
    :David :knows ?person 

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

的選裝件兩者都是可選的,只有一個具有匹配的性別將能夠匹配,所以它本質上是一個條件查詢。請注意,如果您有像:person :gender "male", "female"這樣的數據,則會同時執行這兩項操作,並且如果您沒有提供性別,則不會執行任何操作。

相關問題