SQL IN()
运算符是否存在SPARQL等价?我过滤了我的结果,现在使用:
FILTER ( lang(?label) = 'en' )
我想要类似的东西:
FILTER ( lang(?label) IN ('en', 'de') )
SPARQL可以实现吗?
答案 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)|| ...
<强>示例:强>
因此, 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>))
}