SQL IN()运算符的SPARQL等价性

SQL IN()运算符的SPARQL等价性,sparql,Sparql,SQLIN()运算符是否有SPARQL等价物?我过滤我的结果,现在使用: FILTER ( lang(?label) = 'en' ) 我想要像这样的东西: FILTER ( lang(?label) IN ('en', 'de') ) SPARQL是否可以做到这一点?在SPARQL 1.1中 应该有用 1.1之前的版本需要一个大的析取: FILTER ( (lang(?label) = 'en') || (lang(?label) = 'de') ) 根据官方文件 在 boolean

SQL
IN()
运算符是否有SPARQL等价物?我过滤我的结果,现在使用:

FILTER ( lang(?label) = 'en' )
我想要像这样的东西:

FILTER ( lang(?label) IN ('en', 'de') )
SPARQL是否可以做到这一点?

在SPARQL 1.1中

应该有用

1.1之前的版本需要一个大的析取:

FILTER ( (lang(?label) = 'en') || (lang(?label) = 'de') )
根据官方文件

boolean  rdfTerm IN (expression, ...)
IN运算符测试是否在右侧表达式列表的值中找到左侧的RDF项。测试使用“=”运算符完成,该运算符测试由运算符映射确定的相同值

右边的零项列表是合法的

如果在术语列表的其他地方未找到正在测试的RDF术语,则比较中的错误会导致in表达式产生错误

IN运算符等效于SPARQL表达式:

(lhs=表达式1)| |(lhs=表达式2)| |

示例:

因此,中的操作员接受值列表。因此,下面是一个示例,您可以使用语法中的FILTER+尝试SPARQL:

SELECT ?s1 
WHERE 
{
      ?s1 rdf:type dbpedia-owl:Scientist.
      FILTER (?s1 IN (<http://example.com/#1>,<http://example.com/#2>, <http://example.com/#3>)) 
 }
选择?s1
哪里
{
?s1 rdf:dbpedia型猫头鹰:科学家。
过滤器(?s1英寸(,)
}
SELECT ?s1 
WHERE 
{
      ?s1 rdf:type dbpedia-owl:Scientist.
      FILTER (?s1 IN (<http://example.com/#1>,<http://example.com/#2>, <http://example.com/#3>)) 
 }