我需要获得一个匹配Virtuoso图中双引号的SPARQL查询。我使用这样的查询:
SELECT distinct ?o
FROM <http://graph>
WHERE
{
?s ?p ?o.
}
它返回一个包含这些值的列:
http://some.prefix/Symbol
"abcd"
我只需匹配第二个值("abcd"
)。我尝试将此类过滤器添加到WHERE
子句:
FILTER regex(str(?o), "\"")
但它没有返回任何结果。我还尝试'"'
作为正则表达式的第二个参数,以及其他一些东西。它有可能吗?
答案 0 :(得分:2)
"abcd"
是四个字符的字面值。它不包括""
;这些是字符串分隔符,不构成字符串的一部分。
FILTER isLiteral(?o)
应该有用。
答案 1 :(得分:0)
由于您的过滤器无效,"abcd"
中没有双引号。这是一个字符串文字。不确定它是什么类型;所以你可以使用 -
select ?type where { "abcd" a ?type }
- 获取其类型。然后,您可以在查询中将该类型用作过滤器:
SELECT distinct ?o
FROM <http://graph>
WHERE
{
?s ?p ?o .
?o a <whatever type you received in the previous query> .
}