SQL IN()运算符的SPARQL等价

时间:2011-08-27 13:32:11

标签: sparql

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

FILTER ( lang(?label) = 'en' )

我想要类似的东西:

FILTER ( lang(?label) IN ('en', 'de') )

SPARQL可以实现吗?

2 个答案:

答案 0 :(得分:9)

在SPARQL 1.1中yes

FILTER ( lang(?label) IN ('en', 'de') )

应该有用。

Pre-1.1你需要一个很大的分离:

FILTER ( (lang(?label) = 'en') || (lang(?label) = 'de') )

答案 1 :(得分:1)

根据官方W3C文档,

<强> IN

boolean  rdfTerm IN (expression, ...)

IN运算符测试左侧的RDF项是否在右侧的表达式列表的值中找到。测试用&#34; =&#34;完成。运算符,它测试相同的值,由运算符映射确定。

右侧的零条款清单是合法的。

如果在术语列表的其他位置找不到正在测试的RDF术语,则比较错误会导致IN表达式引发错误。

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

(lhs = expression1)|| (lhs = expression2)|| ...

<强>示例:

enter image description here

因此, IN 运算符接受值列表。因此,下面是一个示例,您可以使用 FILTER + IN 语法尝试使用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>)) 
 }