2016-04-15 50 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