Sparql 查找包含集合中所有值的列表?

Sparql 查找包含集合中所有值的列表?,sparql,rdf,Sparql,Rdf,如何在SPARQL中找到包含一组项的列表?假设我有以下数据: <http://foo.org/test> <http://foo.org/name> ( "new" "fangled" "thing" ) . <http://foo.org/test2> <http://foo.org/name> ( "new" "york" "city" ) . (“新的”有牙的“东西”)。 (“纽约市”)。 如何找到列表中同时包含“new”和“yo

如何在SPARQL中找到包含一组项的列表?假设我有以下数据:

<http://foo.org/test> <http://foo.org/name> ( "new" "fangled" "thing" )  . 
<http://foo.org/test2> <http://foo.org/name> ( "new" "york" "city" )  . 
(“新的”有牙的“东西”)。
(“纽约市”)。
如何找到列表中同时包含“new”和“york”的项目? 以下SPARQL不起作用,因为过滤器作用于?t的每个绑定,而不是所有绑定的集合

前缀rdf:
选择?s?p,其中{
?s/rdf:rest*/rdf:first?t
过滤器(?t=“new”和&&t=“york”)
}
查找具有多个必需值的列表 如果要查找包含所有值的列表,则需要使用更复杂的查询。此查询查找所有具有列表值的值,然后过滤掉列表中没有单词的值。使用块指定单词列表

前缀rdf:
选择{
?s?列表。
筛选器不存在{#--情况并非如此
价值观?单词{“new”“york”}#——任何一个单词
筛选器不存在{#--不存在
?在列表中列出rdf:rest*/rdf:first?单词#。
}
}
}
--------------------------
||
==========================
|  |
--------------------------
在列表中查找替代字符串 另一方面,如果您只是尝试搜索多个选项中的一个,那么您使用的是正确的属性路径,但是您得到了错误的过滤器表达式。您希望字符串等于“new”或“york”。没有字符串同时等于“new”和“york”。您只需执行筛选(?t=“new”| t=“york”)或更好地使用:筛选(?t in(“new”,“york”)。下面是一个完整的示例和结果:

前缀rdf:
选择?s?t{
?s/rdf:rest*/rdf:first?t。
过滤器(?t in(“纽约”))
}
-----------------------------------
|s|t|
===================================
||“新”|
||“约克”|
||“新”|
-----------------------------------

哇,我已经为这个问题绞尽脑汁好几天了。你太棒了,乔希!如果我愿意,我会给你买杯啤酒could@AriesOnTheCusp这甚至可能是一个副本,但这不是一个容易搜索。这有点奇怪,因为您实际上必须搜索某个条件的双重否定,但不能直接搜索该条件。@AriesOnTheCusp这里有一些相同的模式(请参阅答案中的最后一个SPARQL查询),用于检查一些OWL表达式。正确,搜索非常困难。我仍在阅读Sparql 1.1 W3文档,但我确实看到了您引用的其他文章。他们使用了大量的owl:intersectionOf等,我错误地认为整个帖子不适用于我的问题。我一直在想必须有一个更简单的方法。比如他们为什么不添加一个交集或者包含方法/关键字。再次感谢