在 SPARQL 查询中指定具有多个值的交集
Specifying an intersection with multiple values in a SPARQL query
我正在尝试构建一个查询,查询 returns 有两个指定参与者的事件。这些参与者的姓名是使用名字和姓氏的值指定的。
到目前为止,这是我能够想出的唯一可行的解决方案:
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 .
}
...但我想知道是否有更好的方法?
如有任何帮助,我们将不胜感激!
这与 几乎相同,只是在这个中有更多关于您要寻找的人的具体条件(在另一个中,任务是寻找参与者、版主或嘉宾荣誉)。那里的答案会有所帮助。在这种情况下,您可以使其更简单一些。您可以用逗号分隔多个对象(例如,?event hasParticipant ?p1, ?p2)。您可以使用空白节点来避免为人们绑定变量,并且您可以(可能)消除字符串上的数据类型:
SELECT ?event {
?event con:hasParticipant [ con:hasFirstName "Bob" ;
con:hasLastName "Smith" ] ,
[ con:hasFirstName "The" ;
con:hasLastName "Bear" ] .
}
我正在尝试构建一个查询,查询 returns 有两个指定参与者的事件。这些参与者的姓名是使用名字和姓氏的值指定的。 到目前为止,这是我能够想出的唯一可行的解决方案:
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 .
}
...但我想知道是否有更好的方法?
如有任何帮助,我们将不胜感激!
这与
SELECT ?event {
?event con:hasParticipant [ con:hasFirstName "Bob" ;
con:hasLastName "Smith" ] ,
[ con:hasFirstName "The" ;
con:hasLastName "Bear" ] .
}