2016-04-15 22 views
1

我試圖構建一個查詢,該查詢返回具有兩個命名參與者的事件。這些參與者的姓名是使用名字和姓氏的值指定的。 到目前爲止,這是唯一的解決辦法的工作,我已經能夠拿出:在SPARQL查詢中指定具有多個值的交點

SELECT ?event 
WHERE { 
    ?event con:hasParticipant ?personA . 
    ?personA con:hasFirstName "Bob"^^xsd:string . 
    ?personA con:hasLastName "Smith"^^xsd:string . 
    ?event con:hasParticipant ?personB . 
    ?personB con:hasFirstName "The"^^xsd:string . 
    ?personB con:hasLastName "Bear"^^xsd:string . 
} 

...但我不知道是否有這樣做的更好的辦法?

任何幫助將不勝感激!

+0

這是非常相似的[縮小的SPARQL查詢(HTTP://計算器的.com/q /1281433分之36647451)。任何機會,這是一個班級任務或類似的東西? –

+0

例如,其中一些問題與[本次考試]中的問題看起來非常相似(http://cgi.di.uoa.gr/~pms547/homework/homework1-fdb2010-v3.pdf)。 –

+0

嗨,約書亞,是的,它看起來像我們可能在同一班:)我們必須設計一個本體論併爲它寫一些查詢。 – mpr

回答

0

這與Narrowing down on SPARQL query幾乎完全相同,不同之處在於您在此人尋找的人有更具體的條件(另一個任務是查找參與者,主持人或嘉賓嘉賓)。那裏的答案將有所幫助。在這種情況下,你可以使這個更簡單一些。您可以用逗號分隔多個對象(例如,?event hasParticipant?p1,?p2)。您可以使用空白節點,以避免綁定變量的人來說,你可以(可能)消除對字符串數據類型:

SELECT ?event { 
    ?event con:hasParticipant [ con:hasFirstName "Bob" ; 
           con:hasLastName "Smith" ] , 
           [ con:hasFirstName "The" ; 
           con:hasLastName "Bear" ] . 
} 
+0

非常感謝,這真的很好! – mpr

相關問題